brintos

brintos / llvm-project-archived public Read only

0
0
Text · 12.3 KiB · 003feb6 Raw
284 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -mattr=+d,+zvfh,+v -target-abi=ilp32d \3; RUN:     -verify-machineinstrs < %s | FileCheck %s4; RUN: llc -mtriple=riscv64 -mattr=+d,+zvfh,+v -target-abi=lp64d \5; RUN:     -verify-machineinstrs < %s | FileCheck %s6 7define <2 x half> @vfadd_vv_v2f16(<2 x half> %va, <2 x half> %vb) strictfp {8; CHECK-LABEL: vfadd_vv_v2f16:9; CHECK:       # %bb.0: # %entry10; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma11; CHECK-NEXT:    vfadd.vv v8, v8, v912; CHECK-NEXT:    ret13entry:14  %vc = call <2 x half> @llvm.experimental.constrained.fadd.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"round.dynamic", metadata !"fpexcept.ignore")15  ret <2 x half> %vc16}17 18define <2 x half> @vfadd_vf_v2f16(<2 x half> %va, half %b) strictfp {19; CHECK-LABEL: vfadd_vf_v2f16:20; CHECK:       # %bb.0:21; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma22; CHECK-NEXT:    vfadd.vf v8, v8, fa023; CHECK-NEXT:    ret24  %head = insertelement <2 x half> poison, half %b, i32 025  %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer26  %vc = call <2 x half> @llvm.experimental.constrained.fadd.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"round.dynamic", metadata !"fpexcept.ignore")27  ret <2 x half> %vc28}29 30define <4 x half> @vfadd_vv_v4f16(<4 x half> %va, <4 x half> %vb) strictfp {31; CHECK-LABEL: vfadd_vv_v4f16:32; CHECK:       # %bb.0: # %entry33; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma34; CHECK-NEXT:    vfadd.vv v8, v8, v935; CHECK-NEXT:    ret36entry:37  %vc = call <4 x half> @llvm.experimental.constrained.fadd.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"round.dynamic", metadata !"fpexcept.ignore")38  ret <4 x half> %vc39}40 41define <4 x half> @vfadd_vf_v4f16(<4 x half> %va, half %b) strictfp {42; CHECK-LABEL: vfadd_vf_v4f16:43; CHECK:       # %bb.0:44; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma45; CHECK-NEXT:    vfadd.vf v8, v8, fa046; CHECK-NEXT:    ret47  %head = insertelement <4 x half> poison, half %b, i32 048  %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer49  %vc = call <4 x half> @llvm.experimental.constrained.fadd.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"round.dynamic", metadata !"fpexcept.ignore")50  ret <4 x half> %vc51}52 53define <8 x half> @vfadd_vv_v8f16(<8 x half> %va, <8 x half> %vb) strictfp {54; CHECK-LABEL: vfadd_vv_v8f16:55; CHECK:       # %bb.0: # %entry56; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma57; CHECK-NEXT:    vfadd.vv v8, v8, v958; CHECK-NEXT:    ret59entry:60  %vc = call <8 x half> @llvm.experimental.constrained.fadd.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"round.dynamic", metadata !"fpexcept.ignore")61  ret <8 x half> %vc62}63 64define <8 x half> @vfadd_vf_v8f16(<8 x half> %va, half %b) strictfp {65; CHECK-LABEL: vfadd_vf_v8f16:66; CHECK:       # %bb.0:67; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma68; CHECK-NEXT:    vfadd.vf v8, v8, fa069; CHECK-NEXT:    ret70  %head = insertelement <8 x half> poison, half %b, i32 071  %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer72  %vc = call <8 x half> @llvm.experimental.constrained.fadd.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"round.dynamic", metadata !"fpexcept.ignore")73  ret <8 x half> %vc74}75 76define <16 x half> @vfadd_vv_v16f16(<16 x half> %va, <16 x half> %vb) strictfp {77; CHECK-LABEL: vfadd_vv_v16f16:78; CHECK:       # %bb.0: # %entry79; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma80; CHECK-NEXT:    vfadd.vv v8, v8, v1081; CHECK-NEXT:    ret82entry:83  %vc = call <16 x half> @llvm.experimental.constrained.fadd.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"round.dynamic", metadata !"fpexcept.ignore")84  ret <16 x half> %vc85}86 87define <16 x half> @vfadd_vf_v16f16(<16 x half> %va, half %b) strictfp {88; CHECK-LABEL: vfadd_vf_v16f16:89; CHECK:       # %bb.0:90; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma91; CHECK-NEXT:    vfadd.vf v8, v8, fa092; CHECK-NEXT:    ret93  %head = insertelement <16 x half> poison, half %b, i32 094  %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer95  %vc = call <16 x half> @llvm.experimental.constrained.fadd.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"round.dynamic", metadata !"fpexcept.ignore")96  ret <16 x half> %vc97}98 99define <32 x half> @vfadd_vv_v32f16(<32 x half> %va, <32 x half> %vb) strictfp {100; CHECK-LABEL: vfadd_vv_v32f16:101; CHECK:       # %bb.0: # %entry102; CHECK-NEXT:    li a0, 32103; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma104; CHECK-NEXT:    vfadd.vv v8, v8, v12105; CHECK-NEXT:    ret106entry:107  %vc = call <32 x half> @llvm.experimental.constrained.fadd.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"round.dynamic", metadata !"fpexcept.ignore")108  ret <32 x half> %vc109}110 111define <32 x half> @vfadd_vf_v32f16(<32 x half> %va, half %b) strictfp {112; CHECK-LABEL: vfadd_vf_v32f16:113; CHECK:       # %bb.0:114; CHECK-NEXT:    li a0, 32115; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma116; CHECK-NEXT:    vfadd.vf v8, v8, fa0117; CHECK-NEXT:    ret118  %head = insertelement <32 x half> poison, half %b, i32 0119  %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer120  %vc = call <32 x half> @llvm.experimental.constrained.fadd.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"round.dynamic", metadata !"fpexcept.ignore")121  ret <32 x half> %vc122}123 124define <2 x float> @vfadd_vv_v2f32(<2 x float> %va, <2 x float> %vb) strictfp {125; CHECK-LABEL: vfadd_vv_v2f32:126; CHECK:       # %bb.0: # %entry127; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma128; CHECK-NEXT:    vfadd.vv v8, v8, v9129; CHECK-NEXT:    ret130entry:131  %vc = call <2 x float> @llvm.experimental.constrained.fadd.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"round.dynamic", metadata !"fpexcept.ignore")132  ret <2 x float> %vc133}134 135define <2 x float> @vfadd_vf_v2f32(<2 x float> %va, float %b) strictfp {136; CHECK-LABEL: vfadd_vf_v2f32:137; CHECK:       # %bb.0:138; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma139; CHECK-NEXT:    vfadd.vf v8, v8, fa0140; CHECK-NEXT:    ret141  %head = insertelement <2 x float> poison, float %b, i32 0142  %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer143  %vc = call <2 x float> @llvm.experimental.constrained.fadd.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"round.dynamic", metadata !"fpexcept.ignore")144  ret <2 x float> %vc145}146 147define <4 x float> @vfadd_vv_v4f32(<4 x float> %va, <4 x float> %vb) strictfp {148; CHECK-LABEL: vfadd_vv_v4f32:149; CHECK:       # %bb.0: # %entry150; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma151; CHECK-NEXT:    vfadd.vv v8, v8, v9152; CHECK-NEXT:    ret153entry:154  %vc = call <4 x float> @llvm.experimental.constrained.fadd.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"round.dynamic", metadata !"fpexcept.ignore")155  ret <4 x float> %vc156}157 158define <4 x float> @vfadd_vf_v4f32(<4 x float> %va, float %b) strictfp {159; CHECK-LABEL: vfadd_vf_v4f32:160; CHECK:       # %bb.0:161; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma162; CHECK-NEXT:    vfadd.vf v8, v8, fa0163; CHECK-NEXT:    ret164  %head = insertelement <4 x float> poison, float %b, i32 0165  %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer166  %vc = call <4 x float> @llvm.experimental.constrained.fadd.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"round.dynamic", metadata !"fpexcept.ignore")167  ret <4 x float> %vc168}169 170define <8 x float> @vfadd_vv_v8f32(<8 x float> %va, <8 x float> %vb) strictfp {171; CHECK-LABEL: vfadd_vv_v8f32:172; CHECK:       # %bb.0: # %entry173; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma174; CHECK-NEXT:    vfadd.vv v8, v8, v10175; CHECK-NEXT:    ret176entry:177  %vc = call <8 x float> @llvm.experimental.constrained.fadd.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"round.dynamic", metadata !"fpexcept.ignore")178  ret <8 x float> %vc179}180 181define <8 x float> @vfadd_vf_v8f32(<8 x float> %va, float %b) strictfp {182; CHECK-LABEL: vfadd_vf_v8f32:183; CHECK:       # %bb.0:184; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma185; CHECK-NEXT:    vfadd.vf v8, v8, fa0186; CHECK-NEXT:    ret187  %head = insertelement <8 x float> poison, float %b, i32 0188  %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer189  %vc = call <8 x float> @llvm.experimental.constrained.fadd.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"round.dynamic", metadata !"fpexcept.ignore")190  ret <8 x float> %vc191}192 193define <16 x float> @vfadd_vv_v16f32(<16 x float> %va, <16 x float> %vb) strictfp {194; CHECK-LABEL: vfadd_vv_v16f32:195; CHECK:       # %bb.0: # %entry196; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma197; CHECK-NEXT:    vfadd.vv v8, v8, v12198; CHECK-NEXT:    ret199entry:200  %vc = call <16 x float> @llvm.experimental.constrained.fadd.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"round.dynamic", metadata !"fpexcept.ignore")201  ret <16 x float> %vc202}203 204define <16 x float> @vfadd_vf_v16f32(<16 x float> %va, float %b) strictfp {205; CHECK-LABEL: vfadd_vf_v16f32:206; CHECK:       # %bb.0:207; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma208; CHECK-NEXT:    vfadd.vf v8, v8, fa0209; CHECK-NEXT:    ret210  %head = insertelement <16 x float> poison, float %b, i32 0211  %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer212  %vc = call <16 x float> @llvm.experimental.constrained.fadd.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"round.dynamic", metadata !"fpexcept.ignore")213  ret <16 x float> %vc214}215 216define <2 x double> @vfadd_vv_v2f64(<2 x double> %va, <2 x double> %vb) strictfp {217; CHECK-LABEL: vfadd_vv_v2f64:218; CHECK:       # %bb.0: # %entry219; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma220; CHECK-NEXT:    vfadd.vv v8, v8, v9221; CHECK-NEXT:    ret222entry:223  %vc = call <2 x double> @llvm.experimental.constrained.fadd.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"round.dynamic", metadata !"fpexcept.ignore")224  ret <2 x double> %vc225}226 227define <2 x double> @vfadd_vf_v2f64(<2 x double> %va, double %b) strictfp {228; CHECK-LABEL: vfadd_vf_v2f64:229; CHECK:       # %bb.0:230; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma231; CHECK-NEXT:    vfadd.vf v8, v8, fa0232; CHECK-NEXT:    ret233  %head = insertelement <2 x double> poison, double %b, i32 0234  %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer235  %vc = call <2 x double> @llvm.experimental.constrained.fadd.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"round.dynamic", metadata !"fpexcept.ignore")236  ret <2 x double> %vc237}238 239define <4 x double> @vfadd_vv_v4f64(<4 x double> %va, <4 x double> %vb) strictfp {240; CHECK-LABEL: vfadd_vv_v4f64:241; CHECK:       # %bb.0: # %entry242; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma243; CHECK-NEXT:    vfadd.vv v8, v8, v10244; CHECK-NEXT:    ret245entry:246  %vc = call <4 x double> @llvm.experimental.constrained.fadd.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"round.dynamic", metadata !"fpexcept.ignore")247  ret <4 x double> %vc248}249 250define <4 x double> @vfadd_vf_v4f64(<4 x double> %va, double %b) strictfp {251; CHECK-LABEL: vfadd_vf_v4f64:252; CHECK:       # %bb.0:253; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma254; CHECK-NEXT:    vfadd.vf v8, v8, fa0255; CHECK-NEXT:    ret256  %head = insertelement <4 x double> poison, double %b, i32 0257  %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer258  %vc = call <4 x double> @llvm.experimental.constrained.fadd.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"round.dynamic", metadata !"fpexcept.ignore")259  ret <4 x double> %vc260}261 262define <8 x double> @vfadd_vv_v8f64(<8 x double> %va, <8 x double> %vb) strictfp {263; CHECK-LABEL: vfadd_vv_v8f64:264; CHECK:       # %bb.0: # %entry265; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma266; CHECK-NEXT:    vfadd.vv v8, v8, v12267; CHECK-NEXT:    ret268entry:269  %vc = call <8 x double> @llvm.experimental.constrained.fadd.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"round.dynamic", metadata !"fpexcept.ignore")270  ret <8 x double> %vc271}272 273define <8 x double> @vfadd_vf_v8f64(<8 x double> %va, double %b) strictfp {274; CHECK-LABEL: vfadd_vf_v8f64:275; CHECK:       # %bb.0:276; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma277; CHECK-NEXT:    vfadd.vf v8, v8, fa0278; CHECK-NEXT:    ret279  %head = insertelement <8 x double> poison, double %b, i32 0280  %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer281  %vc = call <8 x double> @llvm.experimental.constrained.fadd.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"round.dynamic", metadata !"fpexcept.ignore")282  ret <8 x double> %vc283}284