brintos

brintos / llvm-project-archived public Read only

0
0
Text · 32.3 KiB · a985788 Raw
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