735 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -mattr=+d,+zvfh,+v,+m -target-abi=ilp32d \3; RUN: -verify-machineinstrs < %s | FileCheck %s4; RUN: llc -mtriple=riscv64 -mattr=+d,+zvfh,+v,+m -target-abi=lp64d \5; RUN: -verify-machineinstrs < %s | FileCheck %s6 7define <2 x half> @vfma_vv_v2f16(<2 x half> %va, <2 x half> %b, <2 x half> %c, <2 x i1> %m, i32 zeroext %evl) {8; CHECK-LABEL: vfma_vv_v2f16:9; CHECK: # %bb.0:10; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma11; CHECK-NEXT: vfmadd.vv v9, v8, v10, v0.t12; CHECK-NEXT: vmv1r.v v8, v913; CHECK-NEXT: ret14 %v = call <2 x half> @llvm.vp.fmuladd.v2f16(<2 x half> %va, <2 x half> %b, <2 x half> %c, <2 x i1> %m, i32 %evl)15 ret <2 x half> %v16}17 18define <2 x half> @vfma_vv_v2f16_unmasked(<2 x half> %va, <2 x half> %b, <2 x half> %c, i32 zeroext %evl) {19; CHECK-LABEL: vfma_vv_v2f16_unmasked:20; CHECK: # %bb.0:21; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma22; CHECK-NEXT: vfmadd.vv v8, v9, v1023; CHECK-NEXT: ret24 %v = call <2 x half> @llvm.vp.fmuladd.v2f16(<2 x half> %va, <2 x half> %b, <2 x half> %c, <2 x i1> splat (i1 true), i32 %evl)25 ret <2 x half> %v26}27 28define <2 x half> @vfma_vf_v2f16(<2 x half> %va, half %b, <2 x half> %vc, <2 x i1> %m, i32 zeroext %evl) {29; CHECK-LABEL: vfma_vf_v2f16:30; CHECK: # %bb.0:31; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma32; CHECK-NEXT: vfmadd.vf v8, fa0, v9, v0.t33; CHECK-NEXT: ret34 %elt.head = insertelement <2 x half> poison, half %b, i32 035 %vb = shufflevector <2 x half> %elt.head, <2 x half> poison, <2 x i32> zeroinitializer36 %v = call <2 x half> @llvm.vp.fmuladd.v2f16(<2 x half> %va, <2 x half> %vb, <2 x half> %vc, <2 x i1> %m, i32 %evl)37 ret <2 x half> %v38}39 40define <2 x half> @vfma_vf_v2f16_unmasked(<2 x half> %va, half %b, <2 x half> %vc, i32 zeroext %evl) {41; CHECK-LABEL: vfma_vf_v2f16_unmasked:42; CHECK: # %bb.0:43; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma44; CHECK-NEXT: vfmadd.vf v8, fa0, v945; CHECK-NEXT: ret46 %elt.head = insertelement <2 x half> poison, half %b, i32 047 %vb = shufflevector <2 x half> %elt.head, <2 x half> poison, <2 x i32> zeroinitializer48 %v = call <2 x half> @llvm.vp.fmuladd.v2f16(<2 x half> %va, <2 x half> %vb, <2 x half> %vc, <2 x i1> splat (i1 true), i32 %evl)49 ret <2 x half> %v50}51 52define <4 x half> @vfma_vv_v4f16(<4 x half> %va, <4 x half> %b, <4 x half> %c, <4 x i1> %m, i32 zeroext %evl) {53; CHECK-LABEL: vfma_vv_v4f16:54; CHECK: # %bb.0:55; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma56; CHECK-NEXT: vfmadd.vv v9, v8, v10, v0.t57; CHECK-NEXT: vmv1r.v v8, v958; CHECK-NEXT: ret59 %v = call <4 x half> @llvm.vp.fmuladd.v4f16(<4 x half> %va, <4 x half> %b, <4 x half> %c, <4 x i1> %m, i32 %evl)60 ret <4 x half> %v61}62 63define <4 x half> @vfma_vv_v4f16_unmasked(<4 x half> %va, <4 x half> %b, <4 x half> %c, i32 zeroext %evl) {64; CHECK-LABEL: vfma_vv_v4f16_unmasked:65; CHECK: # %bb.0:66; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma67; CHECK-NEXT: vfmadd.vv v8, v9, v1068; CHECK-NEXT: ret69 %v = call <4 x half> @llvm.vp.fmuladd.v4f16(<4 x half> %va, <4 x half> %b, <4 x half> %c, <4 x i1> splat (i1 true), i32 %evl)70 ret <4 x half> %v71}72 73define <4 x half> @vfma_vf_v4f16(<4 x half> %va, half %b, <4 x half> %vc, <4 x i1> %m, i32 zeroext %evl) {74; CHECK-LABEL: vfma_vf_v4f16:75; CHECK: # %bb.0:76; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma77; CHECK-NEXT: vfmadd.vf v8, fa0, v9, v0.t78; CHECK-NEXT: ret79 %elt.head = insertelement <4 x half> poison, half %b, i32 080 %vb = shufflevector <4 x half> %elt.head, <4 x half> poison, <4 x i32> zeroinitializer81 %v = call <4 x half> @llvm.vp.fmuladd.v4f16(<4 x half> %va, <4 x half> %vb, <4 x half> %vc, <4 x i1> %m, i32 %evl)82 ret <4 x half> %v83}84 85define <4 x half> @vfma_vf_v4f16_unmasked(<4 x half> %va, half %b, <4 x half> %vc, i32 zeroext %evl) {86; CHECK-LABEL: vfma_vf_v4f16_unmasked:87; CHECK: # %bb.0:88; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma89; CHECK-NEXT: vfmadd.vf v8, fa0, v990; CHECK-NEXT: ret91 %elt.head = insertelement <4 x half> poison, half %b, i32 092 %vb = shufflevector <4 x half> %elt.head, <4 x half> poison, <4 x i32> zeroinitializer93 %v = call <4 x half> @llvm.vp.fmuladd.v4f16(<4 x half> %va, <4 x half> %vb, <4 x half> %vc, <4 x i1> splat (i1 true), i32 %evl)94 ret <4 x half> %v95}96 97define <8 x half> @vfma_vv_v8f16(<8 x half> %va, <8 x half> %b, <8 x half> %c, <8 x i1> %m, i32 zeroext %evl) {98; CHECK-LABEL: vfma_vv_v8f16:99; CHECK: # %bb.0:100; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma101; CHECK-NEXT: vfmadd.vv v9, v8, v10, v0.t102; CHECK-NEXT: vmv.v.v v8, v9103; CHECK-NEXT: ret104 %v = call <8 x half> @llvm.vp.fmuladd.v8f16(<8 x half> %va, <8 x half> %b, <8 x half> %c, <8 x i1> %m, i32 %evl)105 ret <8 x half> %v106}107 108define <8 x half> @vfma_vv_v8f16_unmasked(<8 x half> %va, <8 x half> %b, <8 x half> %c, i32 zeroext %evl) {109; CHECK-LABEL: vfma_vv_v8f16_unmasked:110; CHECK: # %bb.0:111; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma112; CHECK-NEXT: vfmadd.vv v8, v9, v10113; CHECK-NEXT: ret114 %v = call <8 x half> @llvm.vp.fmuladd.v8f16(<8 x half> %va, <8 x half> %b, <8 x half> %c, <8 x i1> splat (i1 true), i32 %evl)115 ret <8 x half> %v116}117 118define <8 x half> @vfma_vf_v8f16(<8 x half> %va, half %b, <8 x half> %vc, <8 x i1> %m, i32 zeroext %evl) {119; CHECK-LABEL: vfma_vf_v8f16:120; CHECK: # %bb.0:121; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma122; CHECK-NEXT: vfmadd.vf v8, fa0, v9, v0.t123; CHECK-NEXT: ret124 %elt.head = insertelement <8 x half> poison, half %b, i32 0125 %vb = shufflevector <8 x half> %elt.head, <8 x half> poison, <8 x i32> zeroinitializer126 %v = call <8 x half> @llvm.vp.fmuladd.v8f16(<8 x half> %va, <8 x half> %vb, <8 x half> %vc, <8 x i1> %m, i32 %evl)127 ret <8 x half> %v128}129 130define <8 x half> @vfma_vf_v8f16_unmasked(<8 x half> %va, half %b, <8 x half> %vc, i32 zeroext %evl) {131; CHECK-LABEL: vfma_vf_v8f16_unmasked:132; CHECK: # %bb.0:133; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma134; CHECK-NEXT: vfmadd.vf v8, fa0, v9135; CHECK-NEXT: ret136 %elt.head = insertelement <8 x half> poison, half %b, i32 0137 %vb = shufflevector <8 x half> %elt.head, <8 x half> poison, <8 x i32> zeroinitializer138 %v = call <8 x half> @llvm.vp.fmuladd.v8f16(<8 x half> %va, <8 x half> %vb, <8 x half> %vc, <8 x i1> splat (i1 true), i32 %evl)139 ret <8 x half> %v140}141 142define <16 x half> @vfma_vv_v16f16(<16 x half> %va, <16 x half> %b, <16 x half> %c, <16 x i1> %m, i32 zeroext %evl) {143; CHECK-LABEL: vfma_vv_v16f16:144; CHECK: # %bb.0:145; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma146; CHECK-NEXT: vfmadd.vv v10, v8, v12, v0.t147; CHECK-NEXT: vmv.v.v v8, v10148; CHECK-NEXT: ret149 %v = call <16 x half> @llvm.vp.fmuladd.v16f16(<16 x half> %va, <16 x half> %b, <16 x half> %c, <16 x i1> %m, i32 %evl)150 ret <16 x half> %v151}152 153define <16 x half> @vfma_vv_v16f16_unmasked(<16 x half> %va, <16 x half> %b, <16 x half> %c, i32 zeroext %evl) {154; CHECK-LABEL: vfma_vv_v16f16_unmasked:155; CHECK: # %bb.0:156; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma157; CHECK-NEXT: vfmadd.vv v8, v10, v12158; CHECK-NEXT: ret159 %v = call <16 x half> @llvm.vp.fmuladd.v16f16(<16 x half> %va, <16 x half> %b, <16 x half> %c, <16 x i1> splat (i1 true), i32 %evl)160 ret <16 x half> %v161}162 163define <16 x half> @vfma_vf_v16f16(<16 x half> %va, half %b, <16 x half> %vc, <16 x i1> %m, i32 zeroext %evl) {164; CHECK-LABEL: vfma_vf_v16f16:165; CHECK: # %bb.0:166; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma167; CHECK-NEXT: vfmadd.vf v8, fa0, v10, v0.t168; CHECK-NEXT: ret169 %elt.head = insertelement <16 x half> poison, half %b, i32 0170 %vb = shufflevector <16 x half> %elt.head, <16 x half> poison, <16 x i32> zeroinitializer171 %v = call <16 x half> @llvm.vp.fmuladd.v16f16(<16 x half> %va, <16 x half> %vb, <16 x half> %vc, <16 x i1> %m, i32 %evl)172 ret <16 x half> %v173}174 175define <16 x half> @vfma_vf_v16f16_unmasked(<16 x half> %va, half %b, <16 x half> %vc, i32 zeroext %evl) {176; CHECK-LABEL: vfma_vf_v16f16_unmasked:177; CHECK: # %bb.0:178; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma179; CHECK-NEXT: vfmadd.vf v8, fa0, v10180; CHECK-NEXT: ret181 %elt.head = insertelement <16 x half> poison, half %b, i32 0182 %vb = shufflevector <16 x half> %elt.head, <16 x half> poison, <16 x i32> zeroinitializer183 %v = call <16 x half> @llvm.vp.fmuladd.v16f16(<16 x half> %va, <16 x half> %vb, <16 x half> %vc, <16 x i1> splat (i1 true), i32 %evl)184 ret <16 x half> %v185}186 187define <2 x float> @vfma_vv_v2f32(<2 x float> %va, <2 x float> %b, <2 x float> %c, <2 x i1> %m, i32 zeroext %evl) {188; CHECK-LABEL: vfma_vv_v2f32:189; CHECK: # %bb.0:190; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma191; CHECK-NEXT: vfmadd.vv v9, v8, v10, v0.t192; CHECK-NEXT: vmv1r.v v8, v9193; CHECK-NEXT: ret194 %v = call <2 x float> @llvm.vp.fmuladd.v2f32(<2 x float> %va, <2 x float> %b, <2 x float> %c, <2 x i1> %m, i32 %evl)195 ret <2 x float> %v196}197 198define <2 x float> @vfma_vv_v2f32_unmasked(<2 x float> %va, <2 x float> %b, <2 x float> %c, i32 zeroext %evl) {199; CHECK-LABEL: vfma_vv_v2f32_unmasked:200; CHECK: # %bb.0:201; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma202; CHECK-NEXT: vfmadd.vv v8, v9, v10203; CHECK-NEXT: ret204 %v = call <2 x float> @llvm.vp.fmuladd.v2f32(<2 x float> %va, <2 x float> %b, <2 x float> %c, <2 x i1> splat (i1 true), i32 %evl)205 ret <2 x float> %v206}207 208define <2 x float> @vfma_vf_v2f32(<2 x float> %va, float %b, <2 x float> %vc, <2 x i1> %m, i32 zeroext %evl) {209; CHECK-LABEL: vfma_vf_v2f32:210; CHECK: # %bb.0:211; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma212; CHECK-NEXT: vfmadd.vf v8, fa0, v9, v0.t213; CHECK-NEXT: ret214 %elt.head = insertelement <2 x float> poison, float %b, i32 0215 %vb = shufflevector <2 x float> %elt.head, <2 x float> poison, <2 x i32> zeroinitializer216 %v = call <2 x float> @llvm.vp.fmuladd.v2f32(<2 x float> %va, <2 x float> %vb, <2 x float> %vc, <2 x i1> %m, i32 %evl)217 ret <2 x float> %v218}219 220define <2 x float> @vfma_vf_v2f32_unmasked(<2 x float> %va, float %b, <2 x float> %vc, i32 zeroext %evl) {221; CHECK-LABEL: vfma_vf_v2f32_unmasked:222; CHECK: # %bb.0:223; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma224; CHECK-NEXT: vfmadd.vf v8, fa0, v9225; CHECK-NEXT: ret226 %elt.head = insertelement <2 x float> poison, float %b, i32 0227 %vb = shufflevector <2 x float> %elt.head, <2 x float> poison, <2 x i32> zeroinitializer228 %v = call <2 x float> @llvm.vp.fmuladd.v2f32(<2 x float> %va, <2 x float> %vb, <2 x float> %vc, <2 x i1> splat (i1 true), i32 %evl)229 ret <2 x float> %v230}231 232define <4 x float> @vfma_vv_v4f32(<4 x float> %va, <4 x float> %b, <4 x float> %c, <4 x i1> %m, i32 zeroext %evl) {233; CHECK-LABEL: vfma_vv_v4f32:234; CHECK: # %bb.0:235; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma236; CHECK-NEXT: vfmadd.vv v9, v8, v10, v0.t237; CHECK-NEXT: vmv.v.v v8, v9238; CHECK-NEXT: ret239 %v = call <4 x float> @llvm.vp.fmuladd.v4f32(<4 x float> %va, <4 x float> %b, <4 x float> %c, <4 x i1> %m, i32 %evl)240 ret <4 x float> %v241}242 243define <4 x float> @vfma_vv_v4f32_unmasked(<4 x float> %va, <4 x float> %b, <4 x float> %c, i32 zeroext %evl) {244; CHECK-LABEL: vfma_vv_v4f32_unmasked:245; CHECK: # %bb.0:246; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma247; CHECK-NEXT: vfmadd.vv v8, v9, v10248; CHECK-NEXT: ret249 %v = call <4 x float> @llvm.vp.fmuladd.v4f32(<4 x float> %va, <4 x float> %b, <4 x float> %c, <4 x i1> splat (i1 true), i32 %evl)250 ret <4 x float> %v251}252 253define <4 x float> @vfma_vf_v4f32(<4 x float> %va, float %b, <4 x float> %vc, <4 x i1> %m, i32 zeroext %evl) {254; CHECK-LABEL: vfma_vf_v4f32:255; CHECK: # %bb.0:256; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma257; CHECK-NEXT: vfmadd.vf v8, fa0, v9, v0.t258; CHECK-NEXT: ret259 %elt.head = insertelement <4 x float> poison, float %b, i32 0260 %vb = shufflevector <4 x float> %elt.head, <4 x float> poison, <4 x i32> zeroinitializer261 %v = call <4 x float> @llvm.vp.fmuladd.v4f32(<4 x float> %va, <4 x float> %vb, <4 x float> %vc, <4 x i1> %m, i32 %evl)262 ret <4 x float> %v263}264 265define <4 x float> @vfma_vf_v4f32_unmasked(<4 x float> %va, float %b, <4 x float> %vc, i32 zeroext %evl) {266; CHECK-LABEL: vfma_vf_v4f32_unmasked:267; CHECK: # %bb.0:268; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma269; CHECK-NEXT: vfmadd.vf v8, fa0, v9270; CHECK-NEXT: ret271 %elt.head = insertelement <4 x float> poison, float %b, i32 0272 %vb = shufflevector <4 x float> %elt.head, <4 x float> poison, <4 x i32> zeroinitializer273 %v = call <4 x float> @llvm.vp.fmuladd.v4f32(<4 x float> %va, <4 x float> %vb, <4 x float> %vc, <4 x i1> splat (i1 true), i32 %evl)274 ret <4 x float> %v275}276 277define <8 x float> @vfma_vv_v8f32(<8 x float> %va, <8 x float> %b, <8 x float> %c, <8 x i1> %m, i32 zeroext %evl) {278; CHECK-LABEL: vfma_vv_v8f32:279; CHECK: # %bb.0:280; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma281; CHECK-NEXT: vfmadd.vv v10, v8, v12, v0.t282; CHECK-NEXT: vmv.v.v v8, v10283; CHECK-NEXT: ret284 %v = call <8 x float> @llvm.vp.fmuladd.v8f32(<8 x float> %va, <8 x float> %b, <8 x float> %c, <8 x i1> %m, i32 %evl)285 ret <8 x float> %v286}287 288define <8 x float> @vfma_vv_v8f32_unmasked(<8 x float> %va, <8 x float> %b, <8 x float> %c, i32 zeroext %evl) {289; CHECK-LABEL: vfma_vv_v8f32_unmasked:290; CHECK: # %bb.0:291; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma292; CHECK-NEXT: vfmadd.vv v8, v10, v12293; CHECK-NEXT: ret294 %v = call <8 x float> @llvm.vp.fmuladd.v8f32(<8 x float> %va, <8 x float> %b, <8 x float> %c, <8 x i1> splat (i1 true), i32 %evl)295 ret <8 x float> %v296}297 298define <8 x float> @vfma_vf_v8f32(<8 x float> %va, float %b, <8 x float> %vc, <8 x i1> %m, i32 zeroext %evl) {299; CHECK-LABEL: vfma_vf_v8f32:300; CHECK: # %bb.0:301; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma302; CHECK-NEXT: vfmadd.vf v8, fa0, v10, v0.t303; CHECK-NEXT: ret304 %elt.head = insertelement <8 x float> poison, float %b, i32 0305 %vb = shufflevector <8 x float> %elt.head, <8 x float> poison, <8 x i32> zeroinitializer306 %v = call <8 x float> @llvm.vp.fmuladd.v8f32(<8 x float> %va, <8 x float> %vb, <8 x float> %vc, <8 x i1> %m, i32 %evl)307 ret <8 x float> %v308}309 310define <8 x float> @vfma_vf_v8f32_unmasked(<8 x float> %va, float %b, <8 x float> %vc, i32 zeroext %evl) {311; CHECK-LABEL: vfma_vf_v8f32_unmasked:312; CHECK: # %bb.0:313; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma314; CHECK-NEXT: vfmadd.vf v8, fa0, v10315; CHECK-NEXT: ret316 %elt.head = insertelement <8 x float> poison, float %b, i32 0317 %vb = shufflevector <8 x float> %elt.head, <8 x float> poison, <8 x i32> zeroinitializer318 %v = call <8 x float> @llvm.vp.fmuladd.v8f32(<8 x float> %va, <8 x float> %vb, <8 x float> %vc, <8 x i1> splat (i1 true), i32 %evl)319 ret <8 x float> %v320}321 322define <16 x float> @vfma_vv_v16f32(<16 x float> %va, <16 x float> %b, <16 x float> %c, <16 x i1> %m, i32 zeroext %evl) {323; CHECK-LABEL: vfma_vv_v16f32:324; CHECK: # %bb.0:325; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma326; CHECK-NEXT: vfmadd.vv v12, v8, v16, v0.t327; CHECK-NEXT: vmv.v.v v8, v12328; CHECK-NEXT: ret329 %v = call <16 x float> @llvm.vp.fmuladd.v16f32(<16 x float> %va, <16 x float> %b, <16 x float> %c, <16 x i1> %m, i32 %evl)330 ret <16 x float> %v331}332 333define <16 x float> @vfma_vv_v16f32_unmasked(<16 x float> %va, <16 x float> %b, <16 x float> %c, i32 zeroext %evl) {334; CHECK-LABEL: vfma_vv_v16f32_unmasked:335; CHECK: # %bb.0:336; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma337; CHECK-NEXT: vfmadd.vv v8, v12, v16338; CHECK-NEXT: ret339 %v = call <16 x float> @llvm.vp.fmuladd.v16f32(<16 x float> %va, <16 x float> %b, <16 x float> %c, <16 x i1> splat (i1 true), i32 %evl)340 ret <16 x float> %v341}342 343define <16 x float> @vfma_vf_v16f32(<16 x float> %va, float %b, <16 x float> %vc, <16 x i1> %m, i32 zeroext %evl) {344; CHECK-LABEL: vfma_vf_v16f32:345; CHECK: # %bb.0:346; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma347; CHECK-NEXT: vfmadd.vf v8, fa0, v12, v0.t348; CHECK-NEXT: ret349 %elt.head = insertelement <16 x float> poison, float %b, i32 0350 %vb = shufflevector <16 x float> %elt.head, <16 x float> poison, <16 x i32> zeroinitializer351 %v = call <16 x float> @llvm.vp.fmuladd.v16f32(<16 x float> %va, <16 x float> %vb, <16 x float> %vc, <16 x i1> %m, i32 %evl)352 ret <16 x float> %v353}354 355define <16 x float> @vfma_vf_v16f32_unmasked(<16 x float> %va, float %b, <16 x float> %vc, i32 zeroext %evl) {356; CHECK-LABEL: vfma_vf_v16f32_unmasked:357; CHECK: # %bb.0:358; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma359; CHECK-NEXT: vfmadd.vf v8, fa0, v12360; CHECK-NEXT: ret361 %elt.head = insertelement <16 x float> poison, float %b, i32 0362 %vb = shufflevector <16 x float> %elt.head, <16 x float> poison, <16 x i32> zeroinitializer363 %v = call <16 x float> @llvm.vp.fmuladd.v16f32(<16 x float> %va, <16 x float> %vb, <16 x float> %vc, <16 x i1> splat (i1 true), i32 %evl)364 ret <16 x float> %v365}366 367define <2 x double> @vfma_vv_v2f64(<2 x double> %va, <2 x double> %b, <2 x double> %c, <2 x i1> %m, i32 zeroext %evl) {368; CHECK-LABEL: vfma_vv_v2f64:369; CHECK: # %bb.0:370; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma371; CHECK-NEXT: vfmadd.vv v9, v8, v10, v0.t372; CHECK-NEXT: vmv.v.v v8, v9373; CHECK-NEXT: ret374 %v = call <2 x double> @llvm.vp.fmuladd.v2f64(<2 x double> %va, <2 x double> %b, <2 x double> %c, <2 x i1> %m, i32 %evl)375 ret <2 x double> %v376}377 378define <2 x double> @vfma_vv_v2f64_unmasked(<2 x double> %va, <2 x double> %b, <2 x double> %c, i32 zeroext %evl) {379; CHECK-LABEL: vfma_vv_v2f64_unmasked:380; CHECK: # %bb.0:381; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma382; CHECK-NEXT: vfmadd.vv v8, v9, v10383; CHECK-NEXT: ret384 %v = call <2 x double> @llvm.vp.fmuladd.v2f64(<2 x double> %va, <2 x double> %b, <2 x double> %c, <2 x i1> splat (i1 true), i32 %evl)385 ret <2 x double> %v386}387 388define <2 x double> @vfma_vf_v2f64(<2 x double> %va, double %b, <2 x double> %vc, <2 x i1> %m, i32 zeroext %evl) {389; CHECK-LABEL: vfma_vf_v2f64:390; CHECK: # %bb.0:391; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma392; CHECK-NEXT: vfmadd.vf v8, fa0, v9, v0.t393; CHECK-NEXT: ret394 %elt.head = insertelement <2 x double> poison, double %b, i32 0395 %vb = shufflevector <2 x double> %elt.head, <2 x double> poison, <2 x i32> zeroinitializer396 %v = call <2 x double> @llvm.vp.fmuladd.v2f64(<2 x double> %va, <2 x double> %vb, <2 x double> %vc, <2 x i1> %m, i32 %evl)397 ret <2 x double> %v398}399 400define <2 x double> @vfma_vf_v2f64_unmasked(<2 x double> %va, double %b, <2 x double> %vc, i32 zeroext %evl) {401; CHECK-LABEL: vfma_vf_v2f64_unmasked:402; CHECK: # %bb.0:403; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma404; CHECK-NEXT: vfmadd.vf v8, fa0, v9405; CHECK-NEXT: ret406 %elt.head = insertelement <2 x double> poison, double %b, i32 0407 %vb = shufflevector <2 x double> %elt.head, <2 x double> poison, <2 x i32> zeroinitializer408 %v = call <2 x double> @llvm.vp.fmuladd.v2f64(<2 x double> %va, <2 x double> %vb, <2 x double> %vc, <2 x i1> splat (i1 true), i32 %evl)409 ret <2 x double> %v410}411 412define <4 x double> @vfma_vv_v4f64(<4 x double> %va, <4 x double> %b, <4 x double> %c, <4 x i1> %m, i32 zeroext %evl) {413; CHECK-LABEL: vfma_vv_v4f64:414; CHECK: # %bb.0:415; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma416; CHECK-NEXT: vfmadd.vv v10, v8, v12, v0.t417; CHECK-NEXT: vmv.v.v v8, v10418; CHECK-NEXT: ret419 %v = call <4 x double> @llvm.vp.fmuladd.v4f64(<4 x double> %va, <4 x double> %b, <4 x double> %c, <4 x i1> %m, i32 %evl)420 ret <4 x double> %v421}422 423define <4 x double> @vfma_vv_v4f64_unmasked(<4 x double> %va, <4 x double> %b, <4 x double> %c, i32 zeroext %evl) {424; CHECK-LABEL: vfma_vv_v4f64_unmasked:425; CHECK: # %bb.0:426; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma427; CHECK-NEXT: vfmadd.vv v8, v10, v12428; CHECK-NEXT: ret429 %v = call <4 x double> @llvm.vp.fmuladd.v4f64(<4 x double> %va, <4 x double> %b, <4 x double> %c, <4 x i1> splat (i1 true), i32 %evl)430 ret <4 x double> %v431}432 433define <4 x double> @vfma_vf_v4f64(<4 x double> %va, double %b, <4 x double> %vc, <4 x i1> %m, i32 zeroext %evl) {434; CHECK-LABEL: vfma_vf_v4f64:435; CHECK: # %bb.0:436; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma437; CHECK-NEXT: vfmadd.vf v8, fa0, v10, v0.t438; CHECK-NEXT: ret439 %elt.head = insertelement <4 x double> poison, double %b, i32 0440 %vb = shufflevector <4 x double> %elt.head, <4 x double> poison, <4 x i32> zeroinitializer441 %v = call <4 x double> @llvm.vp.fmuladd.v4f64(<4 x double> %va, <4 x double> %vb, <4 x double> %vc, <4 x i1> %m, i32 %evl)442 ret <4 x double> %v443}444 445define <4 x double> @vfma_vf_v4f64_unmasked(<4 x double> %va, double %b, <4 x double> %vc, i32 zeroext %evl) {446; CHECK-LABEL: vfma_vf_v4f64_unmasked:447; CHECK: # %bb.0:448; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma449; CHECK-NEXT: vfmadd.vf v8, fa0, v10450; CHECK-NEXT: ret451 %elt.head = insertelement <4 x double> poison, double %b, i32 0452 %vb = shufflevector <4 x double> %elt.head, <4 x double> poison, <4 x i32> zeroinitializer453 %v = call <4 x double> @llvm.vp.fmuladd.v4f64(<4 x double> %va, <4 x double> %vb, <4 x double> %vc, <4 x i1> splat (i1 true), i32 %evl)454 ret <4 x double> %v455}456 457define <8 x double> @vfma_vv_v8f64(<8 x double> %va, <8 x double> %b, <8 x double> %c, <8 x i1> %m, i32 zeroext %evl) {458; CHECK-LABEL: vfma_vv_v8f64:459; CHECK: # %bb.0:460; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma461; CHECK-NEXT: vfmadd.vv v12, v8, v16, v0.t462; CHECK-NEXT: vmv.v.v v8, v12463; CHECK-NEXT: ret464 %v = call <8 x double> @llvm.vp.fmuladd.v8f64(<8 x double> %va, <8 x double> %b, <8 x double> %c, <8 x i1> %m, i32 %evl)465 ret <8 x double> %v466}467 468define <8 x double> @vfma_vv_v8f64_unmasked(<8 x double> %va, <8 x double> %b, <8 x double> %c, i32 zeroext %evl) {469; CHECK-LABEL: vfma_vv_v8f64_unmasked:470; CHECK: # %bb.0:471; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma472; CHECK-NEXT: vfmadd.vv v8, v12, v16473; CHECK-NEXT: ret474 %v = call <8 x double> @llvm.vp.fmuladd.v8f64(<8 x double> %va, <8 x double> %b, <8 x double> %c, <8 x i1> splat (i1 true), i32 %evl)475 ret <8 x double> %v476}477 478define <8 x double> @vfma_vf_v8f64(<8 x double> %va, double %b, <8 x double> %vc, <8 x i1> %m, i32 zeroext %evl) {479; CHECK-LABEL: vfma_vf_v8f64:480; CHECK: # %bb.0:481; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma482; CHECK-NEXT: vfmadd.vf v8, fa0, v12, v0.t483; CHECK-NEXT: ret484 %elt.head = insertelement <8 x double> poison, double %b, i32 0485 %vb = shufflevector <8 x double> %elt.head, <8 x double> poison, <8 x i32> zeroinitializer486 %v = call <8 x double> @llvm.vp.fmuladd.v8f64(<8 x double> %va, <8 x double> %vb, <8 x double> %vc, <8 x i1> %m, i32 %evl)487 ret <8 x double> %v488}489 490define <8 x double> @vfma_vf_v8f64_unmasked(<8 x double> %va, double %b, <8 x double> %vc, i32 zeroext %evl) {491; CHECK-LABEL: vfma_vf_v8f64_unmasked:492; CHECK: # %bb.0:493; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma494; CHECK-NEXT: vfmadd.vf v8, fa0, v12495; CHECK-NEXT: ret496 %elt.head = insertelement <8 x double> poison, double %b, i32 0497 %vb = shufflevector <8 x double> %elt.head, <8 x double> poison, <8 x i32> zeroinitializer498 %v = call <8 x double> @llvm.vp.fmuladd.v8f64(<8 x double> %va, <8 x double> %vb, <8 x double> %vc, <8 x i1> splat (i1 true), i32 %evl)499 ret <8 x double> %v500}501 502define <15 x double> @vfma_vv_v15f64(<15 x double> %va, <15 x double> %b, <15 x double> %c, <15 x i1> %m, i32 zeroext %evl) {503; CHECK-LABEL: vfma_vv_v15f64:504; CHECK: # %bb.0:505; CHECK-NEXT: vsetivli zero, 16, e64, m8, ta, ma506; CHECK-NEXT: vle64.v v24, (a0)507; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma508; CHECK-NEXT: vfmadd.vv v16, v8, v24, v0.t509; CHECK-NEXT: vmv.v.v v8, v16510; CHECK-NEXT: ret511 %v = call <15 x double> @llvm.vp.fmuladd.v15f64(<15 x double> %va, <15 x double> %b, <15 x double> %c, <15 x i1> %m, i32 %evl)512 ret <15 x double> %v513}514 515define <15 x double> @vfma_vv_v15f64_unmasked(<15 x double> %va, <15 x double> %b, <15 x double> %c, i32 zeroext %evl) {516; CHECK-LABEL: vfma_vv_v15f64_unmasked:517; CHECK: # %bb.0:518; CHECK-NEXT: vsetivli zero, 16, e64, m8, ta, ma519; CHECK-NEXT: vle64.v v24, (a0)520; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma521; CHECK-NEXT: vfmadd.vv v8, v16, v24522; CHECK-NEXT: ret523 %v = call <15 x double> @llvm.vp.fmuladd.v15f64(<15 x double> %va, <15 x double> %b, <15 x double> %c, <15 x i1> splat (i1 true), i32 %evl)524 ret <15 x double> %v525}526 527define <16 x double> @vfma_vv_v16f64(<16 x double> %va, <16 x double> %b, <16 x double> %c, <16 x i1> %m, i32 zeroext %evl) {528; CHECK-LABEL: vfma_vv_v16f64:529; CHECK: # %bb.0:530; CHECK-NEXT: vsetivli zero, 16, e64, m8, ta, ma531; CHECK-NEXT: vle64.v v24, (a0)532; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma533; CHECK-NEXT: vfmadd.vv v16, v8, v24, v0.t534; CHECK-NEXT: vmv.v.v v8, v16535; CHECK-NEXT: ret536 %v = call <16 x double> @llvm.vp.fmuladd.v16f64(<16 x double> %va, <16 x double> %b, <16 x double> %c, <16 x i1> %m, i32 %evl)537 ret <16 x double> %v538}539 540define <16 x double> @vfma_vv_v16f64_unmasked(<16 x double> %va, <16 x double> %b, <16 x double> %c, i32 zeroext %evl) {541; CHECK-LABEL: vfma_vv_v16f64_unmasked:542; CHECK: # %bb.0:543; CHECK-NEXT: vsetivli zero, 16, e64, m8, ta, ma544; CHECK-NEXT: vle64.v v24, (a0)545; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma546; CHECK-NEXT: vfmadd.vv v8, v16, v24547; CHECK-NEXT: ret548 %v = call <16 x double> @llvm.vp.fmuladd.v16f64(<16 x double> %va, <16 x double> %b, <16 x double> %c, <16 x i1> splat (i1 true), i32 %evl)549 ret <16 x double> %v550}551 552define <16 x double> @vfma_vf_v16f64(<16 x double> %va, double %b, <16 x double> %vc, <16 x i1> %m, i32 zeroext %evl) {553; CHECK-LABEL: vfma_vf_v16f64:554; CHECK: # %bb.0:555; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma556; CHECK-NEXT: vfmadd.vf v8, fa0, v16, v0.t557; CHECK-NEXT: ret558 %elt.head = insertelement <16 x double> poison, double %b, i32 0559 %vb = shufflevector <16 x double> %elt.head, <16 x double> poison, <16 x i32> zeroinitializer560 %v = call <16 x double> @llvm.vp.fmuladd.v16f64(<16 x double> %va, <16 x double> %vb, <16 x double> %vc, <16 x i1> %m, i32 %evl)561 ret <16 x double> %v562}563 564define <16 x double> @vfma_vf_v16f64_unmasked(<16 x double> %va, double %b, <16 x double> %vc, i32 zeroext %evl) {565; CHECK-LABEL: vfma_vf_v16f64_unmasked:566; CHECK: # %bb.0:567; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma568; CHECK-NEXT: vfmadd.vf v8, fa0, v16569; CHECK-NEXT: ret570 %elt.head = insertelement <16 x double> poison, double %b, i32 0571 %vb = shufflevector <16 x double> %elt.head, <16 x double> poison, <16 x i32> zeroinitializer572 %v = call <16 x double> @llvm.vp.fmuladd.v16f64(<16 x double> %va, <16 x double> %vb, <16 x double> %vc, <16 x i1> splat (i1 true), i32 %evl)573 ret <16 x double> %v574}575 576define <32 x double> @vfma_vv_v32f64(<32 x double> %va, <32 x double> %b, <32 x double> %c, <32 x i1> %m, i32 zeroext %evl) {577; CHECK-LABEL: vfma_vv_v32f64:578; CHECK: # %bb.0:579; CHECK-NEXT: addi sp, sp, -16580; CHECK-NEXT: .cfi_def_cfa_offset 16581; CHECK-NEXT: csrr a1, vlenb582; CHECK-NEXT: slli a1, a1, 5583; CHECK-NEXT: sub sp, sp, a1584; CHECK-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x20, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 32 * vlenb585; CHECK-NEXT: csrr a1, vlenb586; CHECK-NEXT: li a3, 24587; CHECK-NEXT: mul a1, a1, a3588; CHECK-NEXT: add a1, sp, a1589; CHECK-NEXT: addi a1, a1, 16590; CHECK-NEXT: vs8r.v v16, (a1) # vscale x 64-byte Folded Spill591; CHECK-NEXT: csrr a1, vlenb592; CHECK-NEXT: slli a1, a1, 4593; CHECK-NEXT: add a1, sp, a1594; CHECK-NEXT: addi a1, a1, 16595; CHECK-NEXT: vs8r.v v8, (a1) # vscale x 64-byte Folded Spill596; CHECK-NEXT: addi a1, a2, 128597; CHECK-NEXT: vsetivli zero, 16, e64, m8, ta, ma598; CHECK-NEXT: vle64.v v24, (a2)599; CHECK-NEXT: addi a2, a0, 128600; CHECK-NEXT: vle64.v v8, (a1)601; CHECK-NEXT: csrr a1, vlenb602; CHECK-NEXT: slli a1, a1, 3603; CHECK-NEXT: add a1, sp, a1604; CHECK-NEXT: addi a1, a1, 16605; CHECK-NEXT: vs8r.v v8, (a1) # vscale x 64-byte Folded Spill606; CHECK-NEXT: vle64.v v8, (a2)607; CHECK-NEXT: addi a1, sp, 16608; CHECK-NEXT: vs8r.v v8, (a1) # vscale x 64-byte Folded Spill609; CHECK-NEXT: vle64.v v8, (a0)610; CHECK-NEXT: li a1, 16611; CHECK-NEXT: mv a0, a4612; CHECK-NEXT: vsetivli zero, 2, e8, mf4, ta, ma613; CHECK-NEXT: vslidedown.vi v7, v0, 2614; CHECK-NEXT: bltu a4, a1, .LBB50_2615; CHECK-NEXT: # %bb.1:616; CHECK-NEXT: li a0, 16617; CHECK-NEXT: .LBB50_2:618; CHECK-NEXT: csrr a1, vlenb619; CHECK-NEXT: slli a1, a1, 4620; CHECK-NEXT: add a1, sp, a1621; CHECK-NEXT: addi a1, a1, 16622; CHECK-NEXT: vl8r.v v16, (a1) # vscale x 64-byte Folded Reload623; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma624; CHECK-NEXT: vfmadd.vv v8, v16, v24, v0.t625; CHECK-NEXT: csrr a0, vlenb626; CHECK-NEXT: slli a0, a0, 4627; CHECK-NEXT: add a0, sp, a0628; CHECK-NEXT: addi a0, a0, 16629; CHECK-NEXT: vs8r.v v8, (a0) # vscale x 64-byte Folded Spill630; CHECK-NEXT: addi a0, a4, -16631; CHECK-NEXT: sltu a1, a4, a0632; CHECK-NEXT: addi a1, a1, -1633; CHECK-NEXT: and a0, a1, a0634; CHECK-NEXT: vmv1r.v v0, v7635; CHECK-NEXT: csrr a1, vlenb636; CHECK-NEXT: li a2, 24637; CHECK-NEXT: mul a1, a1, a2638; CHECK-NEXT: add a1, sp, a1639; CHECK-NEXT: addi a1, a1, 16640; CHECK-NEXT: vl8r.v v16, (a1) # vscale x 64-byte Folded Reload641; CHECK-NEXT: csrr a1, vlenb642; CHECK-NEXT: slli a1, a1, 3643; CHECK-NEXT: add a1, sp, a1644; CHECK-NEXT: addi a1, a1, 16645; CHECK-NEXT: vl8r.v v24, (a1) # vscale x 64-byte Folded Reload646; CHECK-NEXT: addi a1, sp, 16647; CHECK-NEXT: vl8r.v v8, (a1) # vscale x 64-byte Folded Reload648; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma649; CHECK-NEXT: vfmadd.vv v8, v16, v24, v0.t650; CHECK-NEXT: vmv.v.v v16, v8651; CHECK-NEXT: csrr a0, vlenb652; CHECK-NEXT: slli a0, a0, 4653; CHECK-NEXT: add a0, sp, a0654; CHECK-NEXT: addi a0, a0, 16655; CHECK-NEXT: vl8r.v v8, (a0) # vscale x 64-byte Folded Reload656; CHECK-NEXT: csrr a0, vlenb657; CHECK-NEXT: slli a0, a0, 5658; CHECK-NEXT: add sp, sp, a0659; CHECK-NEXT: .cfi_def_cfa sp, 16660; CHECK-NEXT: addi sp, sp, 16661; CHECK-NEXT: .cfi_def_cfa_offset 0662; CHECK-NEXT: ret663 %v = call <32 x double> @llvm.vp.fmuladd.v32f64(<32 x double> %va, <32 x double> %b, <32 x double> %c, <32 x i1> %m, i32 %evl)664 ret <32 x double> %v665}666 667define <32 x double> @vfma_vv_v32f64_unmasked(<32 x double> %va, <32 x double> %b, <32 x double> %c, i32 zeroext %evl) {668; CHECK-LABEL: vfma_vv_v32f64_unmasked:669; CHECK: # %bb.0:670; CHECK-NEXT: addi sp, sp, -16671; CHECK-NEXT: .cfi_def_cfa_offset 16672; CHECK-NEXT: csrr a1, vlenb673; CHECK-NEXT: li a3, 24674; CHECK-NEXT: mul a1, a1, a3675; CHECK-NEXT: sub sp, sp, a1676; CHECK-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x18, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 24 * vlenb677; CHECK-NEXT: csrr a1, vlenb678; CHECK-NEXT: slli a1, a1, 4679; CHECK-NEXT: add a1, sp, a1680; CHECK-NEXT: addi a1, a1, 16681; CHECK-NEXT: vs8r.v v16, (a1) # vscale x 64-byte Folded Spill682; CHECK-NEXT: csrr a1, vlenb683; CHECK-NEXT: slli a1, a1, 3684; CHECK-NEXT: add a1, sp, a1685; CHECK-NEXT: addi a1, a1, 16686; CHECK-NEXT: vs8r.v v8, (a1) # vscale x 64-byte Folded Spill687; CHECK-NEXT: addi a1, a2, 128688; CHECK-NEXT: vsetivli zero, 16, e64, m8, ta, ma689; CHECK-NEXT: vle64.v v16, (a2)690; CHECK-NEXT: addi a2, a0, 128691; CHECK-NEXT: vle64.v v8, (a1)692; CHECK-NEXT: addi a1, sp, 16693; CHECK-NEXT: vs8r.v v8, (a1) # vscale x 64-byte Folded Spill694; CHECK-NEXT: vle64.v v24, (a2)695; CHECK-NEXT: vle64.v v0, (a0)696; CHECK-NEXT: li a1, 16697; CHECK-NEXT: mv a0, a4698; CHECK-NEXT: bltu a4, a1, .LBB51_2699; CHECK-NEXT: # %bb.1:700; CHECK-NEXT: li a0, 16701; CHECK-NEXT: .LBB51_2:702; CHECK-NEXT: csrr a1, vlenb703; CHECK-NEXT: slli a1, a1, 3704; CHECK-NEXT: add a1, sp, a1705; CHECK-NEXT: addi a1, a1, 16706; CHECK-NEXT: vl8r.v v8, (a1) # vscale x 64-byte Folded Reload707; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma708; CHECK-NEXT: vfmadd.vv v0, v8, v16709; CHECK-NEXT: addi a0, a4, -16710; CHECK-NEXT: sltu a1, a4, a0711; CHECK-NEXT: addi a1, a1, -1712; CHECK-NEXT: and a0, a1, a0713; CHECK-NEXT: csrr a1, vlenb714; CHECK-NEXT: slli a1, a1, 4715; CHECK-NEXT: add a1, sp, a1716; CHECK-NEXT: addi a1, a1, 16717; CHECK-NEXT: vl8r.v v16, (a1) # vscale x 64-byte Folded Reload718; CHECK-NEXT: addi a1, sp, 16719; CHECK-NEXT: vl8r.v v8, (a1) # vscale x 64-byte Folded Reload720; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma721; CHECK-NEXT: vfmadd.vv v24, v16, v8722; CHECK-NEXT: vmv8r.v v8, v0723; CHECK-NEXT: vmv.v.v v16, v24724; CHECK-NEXT: csrr a0, vlenb725; CHECK-NEXT: li a1, 24726; CHECK-NEXT: mul a0, a0, a1727; CHECK-NEXT: add sp, sp, a0728; CHECK-NEXT: .cfi_def_cfa sp, 16729; CHECK-NEXT: addi sp, sp, 16730; CHECK-NEXT: .cfi_def_cfa_offset 0731; CHECK-NEXT: ret732 %v = call <32 x double> @llvm.vp.fmuladd.v32f64(<32 x double> %va, <32 x double> %b, <32 x double> %c, <32 x i1> splat (i1 true), i32 %evl)733 ret <32 x double> %v734}735