brintos

brintos / llvm-project-archived public Read only

0
0
Text · 453.5 KiB · 03de2c9 Raw
7130 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 <vscale x 1 x half> @vfma_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %b, <vscale x 1 x half> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {8; CHECK-LABEL: vfma_vv_nxv1f16: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 <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %b, <vscale x 1 x half> %c, <vscale x 1 x i1> %m, i32 %evl)15  ret <vscale x 1 x half> %v16}17 18define <vscale x 1 x half> @vfma_vv_nxv1f16_unmasked(<vscale x 1 x half> %va, <vscale x 1 x half> %b, <vscale x 1 x half> %c, i32 zeroext %evl) {19; CHECK-LABEL: vfma_vv_nxv1f16_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 <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %b, <vscale x 1 x half> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)25  ret <vscale x 1 x half> %v26}27 28define <vscale x 1 x half> @vfma_vf_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {29; CHECK-LABEL: vfma_vf_nxv1f16: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 <vscale x 1 x half> poison, half %b, i32 035  %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer36  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 %evl)37  ret <vscale x 1 x half> %v38}39 40define <vscale x 1 x half> @vfma_vf_nxv1f16_commute(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {41; CHECK-LABEL: vfma_vf_nxv1f16_commute:42; CHECK:       # %bb.0:43; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma44; CHECK-NEXT:    vfmadd.vf v8, fa0, v9, v0.t45; CHECK-NEXT:    ret46  %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 047  %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer48  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %va, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 %evl)49  ret <vscale x 1 x half> %v50}51 52define <vscale x 1 x half> @vfma_vf_nxv1f16_unmasked(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, i32 zeroext %evl) {53; CHECK-LABEL: vfma_vf_nxv1f16_unmasked:54; CHECK:       # %bb.0:55; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma56; CHECK-NEXT:    vfmadd.vf v8, fa0, v957; CHECK-NEXT:    ret58  %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 059  %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer60  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, <vscale x 1 x half> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)61  ret <vscale x 1 x half> %v62}63 64define <vscale x 1 x half> @vfma_vf_nxv1f16_unmasked_commute(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, i32 zeroext %evl) {65; CHECK-LABEL: vfma_vf_nxv1f16_unmasked_commute:66; CHECK:       # %bb.0:67; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma68; CHECK-NEXT:    vfmadd.vf v8, fa0, v969; CHECK-NEXT:    ret70  %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 071  %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer72  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %va, <vscale x 1 x half> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)73  ret <vscale x 1 x half> %v74}75 76define <vscale x 2 x half> @vfma_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %b, <vscale x 2 x half> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {77; CHECK-LABEL: vfma_vv_nxv2f16:78; CHECK:       # %bb.0:79; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma80; CHECK-NEXT:    vfmadd.vv v9, v8, v10, v0.t81; CHECK-NEXT:    vmv1r.v v8, v982; CHECK-NEXT:    ret83  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %b, <vscale x 2 x half> %c, <vscale x 2 x i1> %m, i32 %evl)84  ret <vscale x 2 x half> %v85}86 87define <vscale x 2 x half> @vfma_vv_nxv2f16_unmasked(<vscale x 2 x half> %va, <vscale x 2 x half> %b, <vscale x 2 x half> %c, i32 zeroext %evl) {88; CHECK-LABEL: vfma_vv_nxv2f16_unmasked:89; CHECK:       # %bb.0:90; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma91; CHECK-NEXT:    vfmadd.vv v8, v9, v1092; CHECK-NEXT:    ret93  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %b, <vscale x 2 x half> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)94  ret <vscale x 2 x half> %v95}96 97define <vscale x 2 x half> @vfma_vf_nxv2f16(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {98; CHECK-LABEL: vfma_vf_nxv2f16:99; CHECK:       # %bb.0:100; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma101; CHECK-NEXT:    vfmadd.vf v8, fa0, v9, v0.t102; CHECK-NEXT:    ret103  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0104  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer105  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 %evl)106  ret <vscale x 2 x half> %v107}108 109define <vscale x 2 x half> @vfma_vf_nxv2f16_commute(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {110; CHECK-LABEL: vfma_vf_nxv2f16_commute:111; CHECK:       # %bb.0:112; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma113; CHECK-NEXT:    vfmadd.vf v8, fa0, v9, v0.t114; CHECK-NEXT:    ret115  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0116  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer117  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x half> %va, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 %evl)118  ret <vscale x 2 x half> %v119}120 121define <vscale x 2 x half> @vfma_vf_nxv2f16_unmasked(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, i32 zeroext %evl) {122; CHECK-LABEL: vfma_vf_nxv2f16_unmasked:123; CHECK:       # %bb.0:124; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma125; CHECK-NEXT:    vfmadd.vf v8, fa0, v9126; CHECK-NEXT:    ret127  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0128  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer129  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, <vscale x 2 x half> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)130  ret <vscale x 2 x half> %v131}132 133define <vscale x 2 x half> @vfma_vf_nxv2f16_unmasked_commute(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, i32 zeroext %evl) {134; CHECK-LABEL: vfma_vf_nxv2f16_unmasked_commute:135; CHECK:       # %bb.0:136; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma137; CHECK-NEXT:    vfmadd.vf v8, fa0, v9138; CHECK-NEXT:    ret139  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0140  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer141  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x half> %va, <vscale x 2 x half> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)142  ret <vscale x 2 x half> %v143}144 145define <vscale x 4 x half> @vfma_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %b, <vscale x 4 x half> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {146; CHECK-LABEL: vfma_vv_nxv4f16:147; CHECK:       # %bb.0:148; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma149; CHECK-NEXT:    vfmadd.vv v9, v8, v10, v0.t150; CHECK-NEXT:    vmv.v.v v8, v9151; CHECK-NEXT:    ret152  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %b, <vscale x 4 x half> %c, <vscale x 4 x i1> %m, i32 %evl)153  ret <vscale x 4 x half> %v154}155 156define <vscale x 4 x half> @vfma_vv_nxv4f16_unmasked(<vscale x 4 x half> %va, <vscale x 4 x half> %b, <vscale x 4 x half> %c, i32 zeroext %evl) {157; CHECK-LABEL: vfma_vv_nxv4f16_unmasked:158; CHECK:       # %bb.0:159; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma160; CHECK-NEXT:    vfmadd.vv v8, v9, v10161; CHECK-NEXT:    ret162  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %b, <vscale x 4 x half> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)163  ret <vscale x 4 x half> %v164}165 166define <vscale x 4 x half> @vfma_vf_nxv4f16(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {167; CHECK-LABEL: vfma_vf_nxv4f16:168; CHECK:       # %bb.0:169; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma170; CHECK-NEXT:    vfmadd.vf v8, fa0, v9, v0.t171; CHECK-NEXT:    ret172  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0173  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer174  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 %evl)175  ret <vscale x 4 x half> %v176}177 178define <vscale x 4 x half> @vfma_vf_nxv4f16_commute(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {179; CHECK-LABEL: vfma_vf_nxv4f16_commute:180; CHECK:       # %bb.0:181; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma182; CHECK-NEXT:    vfmadd.vf v8, fa0, v9, v0.t183; CHECK-NEXT:    ret184  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0185  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer186  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x half> %va, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 %evl)187  ret <vscale x 4 x half> %v188}189 190define <vscale x 4 x half> @vfma_vf_nxv4f16_unmasked(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, i32 zeroext %evl) {191; CHECK-LABEL: vfma_vf_nxv4f16_unmasked:192; CHECK:       # %bb.0:193; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma194; CHECK-NEXT:    vfmadd.vf v8, fa0, v9195; CHECK-NEXT:    ret196  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0197  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer198  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, <vscale x 4 x half> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)199  ret <vscale x 4 x half> %v200}201 202define <vscale x 4 x half> @vfma_vf_nxv4f16_unmasked_commute(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, i32 zeroext %evl) {203; CHECK-LABEL: vfma_vf_nxv4f16_unmasked_commute:204; CHECK:       # %bb.0:205; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma206; CHECK-NEXT:    vfmadd.vf v8, fa0, v9207; CHECK-NEXT:    ret208  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0209  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer210  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x half> %va, <vscale x 4 x half> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)211  ret <vscale x 4 x half> %v212}213 214define <vscale x 8 x half> @vfma_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %b, <vscale x 8 x half> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {215; CHECK-LABEL: vfma_vv_nxv8f16:216; CHECK:       # %bb.0:217; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma218; CHECK-NEXT:    vfmadd.vv v10, v8, v12, v0.t219; CHECK-NEXT:    vmv.v.v v8, v10220; CHECK-NEXT:    ret221  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %b, <vscale x 8 x half> %c, <vscale x 8 x i1> %m, i32 %evl)222  ret <vscale x 8 x half> %v223}224 225define <vscale x 8 x half> @vfma_vv_nxv8f16_unmasked(<vscale x 8 x half> %va, <vscale x 8 x half> %b, <vscale x 8 x half> %c, i32 zeroext %evl) {226; CHECK-LABEL: vfma_vv_nxv8f16_unmasked:227; CHECK:       # %bb.0:228; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma229; CHECK-NEXT:    vfmadd.vv v8, v10, v12230; CHECK-NEXT:    ret231  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %b, <vscale x 8 x half> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)232  ret <vscale x 8 x half> %v233}234 235define <vscale x 8 x half> @vfma_vf_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {236; CHECK-LABEL: vfma_vf_nxv8f16:237; CHECK:       # %bb.0:238; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma239; CHECK-NEXT:    vfmadd.vf v8, fa0, v10, v0.t240; CHECK-NEXT:    ret241  %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0242  %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer243  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 %evl)244  ret <vscale x 8 x half> %v245}246 247define <vscale x 8 x half> @vfma_vf_nxv8f16_commute(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {248; CHECK-LABEL: vfma_vf_nxv8f16_commute:249; CHECK:       # %bb.0:250; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma251; CHECK-NEXT:    vfmadd.vf v8, fa0, v10, v0.t252; CHECK-NEXT:    ret253  %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0254  %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer255  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %va, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 %evl)256  ret <vscale x 8 x half> %v257}258 259define <vscale x 8 x half> @vfma_vf_nxv8f16_unmasked(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, i32 zeroext %evl) {260; CHECK-LABEL: vfma_vf_nxv8f16_unmasked:261; CHECK:       # %bb.0:262; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma263; CHECK-NEXT:    vfmadd.vf v8, fa0, v10264; CHECK-NEXT:    ret265  %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0266  %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer267  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, <vscale x 8 x half> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)268  ret <vscale x 8 x half> %v269}270 271define <vscale x 8 x half> @vfma_vf_nxv8f16_unmasked_commute(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, i32 zeroext %evl) {272; CHECK-LABEL: vfma_vf_nxv8f16_unmasked_commute:273; CHECK:       # %bb.0:274; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma275; CHECK-NEXT:    vfmadd.vf v8, fa0, v10276; CHECK-NEXT:    ret277  %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0278  %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer279  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %va, <vscale x 8 x half> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)280  ret <vscale x 8 x half> %v281}282 283define <vscale x 16 x half> @vfma_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %b, <vscale x 16 x half> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {284; CHECK-LABEL: vfma_vv_nxv16f16:285; CHECK:       # %bb.0:286; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma287; CHECK-NEXT:    vfmadd.vv v12, v8, v16, v0.t288; CHECK-NEXT:    vmv.v.v v8, v12289; CHECK-NEXT:    ret290  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %b, <vscale x 16 x half> %c, <vscale x 16 x i1> %m, i32 %evl)291  ret <vscale x 16 x half> %v292}293 294define <vscale x 16 x half> @vfma_vv_nxv16f16_unmasked(<vscale x 16 x half> %va, <vscale x 16 x half> %b, <vscale x 16 x half> %c, i32 zeroext %evl) {295; CHECK-LABEL: vfma_vv_nxv16f16_unmasked:296; CHECK:       # %bb.0:297; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma298; CHECK-NEXT:    vfmadd.vv v8, v12, v16299; CHECK-NEXT:    ret300  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %b, <vscale x 16 x half> %c, <vscale x 16 x i1> splat (i1 true), i32 %evl)301  ret <vscale x 16 x half> %v302}303 304define <vscale x 16 x half> @vfma_vf_nxv16f16(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {305; CHECK-LABEL: vfma_vf_nxv16f16:306; CHECK:       # %bb.0:307; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma308; CHECK-NEXT:    vfmadd.vf v8, fa0, v12, v0.t309; CHECK-NEXT:    ret310  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0311  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer312  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 %evl)313  ret <vscale x 16 x half> %v314}315 316define <vscale x 16 x half> @vfma_vf_nxv16f16_commute(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {317; CHECK-LABEL: vfma_vf_nxv16f16_commute:318; CHECK:       # %bb.0:319; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma320; CHECK-NEXT:    vfmadd.vf v8, fa0, v12, v0.t321; CHECK-NEXT:    ret322  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0323  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer324  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x half> %va, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 %evl)325  ret <vscale x 16 x half> %v326}327 328define <vscale x 16 x half> @vfma_vf_nxv16f16_unmasked(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, i32 zeroext %evl) {329; CHECK-LABEL: vfma_vf_nxv16f16_unmasked:330; CHECK:       # %bb.0:331; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma332; CHECK-NEXT:    vfmadd.vf v8, fa0, v12333; CHECK-NEXT:    ret334  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0335  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer336  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, <vscale x 16 x half> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)337  ret <vscale x 16 x half> %v338}339 340define <vscale x 16 x half> @vfma_vf_nxv16f16_unmasked_commute(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, i32 zeroext %evl) {341; CHECK-LABEL: vfma_vf_nxv16f16_unmasked_commute:342; CHECK:       # %bb.0:343; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma344; CHECK-NEXT:    vfmadd.vf v8, fa0, v12345; CHECK-NEXT:    ret346  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0347  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer348  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x half> %va, <vscale x 16 x half> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)349  ret <vscale x 16 x half> %v350}351 352define <vscale x 32 x half> @vfma_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %b, <vscale x 32 x half> %c, <vscale x 32 x i1> %m, i32 zeroext %evl) {353; CHECK-LABEL: vfma_vv_nxv32f16:354; CHECK:       # %bb.0:355; CHECK-NEXT:    vl8re16.v v24, (a0)356; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma357; CHECK-NEXT:    vfmadd.vv v16, v8, v24, v0.t358; CHECK-NEXT:    vmv.v.v v8, v16359; CHECK-NEXT:    ret360  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %b, <vscale x 32 x half> %c, <vscale x 32 x i1> %m, i32 %evl)361  ret <vscale x 32 x half> %v362}363 364define <vscale x 32 x half> @vfma_vv_nxv32f16_unmasked(<vscale x 32 x half> %va, <vscale x 32 x half> %b, <vscale x 32 x half> %c, i32 zeroext %evl) {365; CHECK-LABEL: vfma_vv_nxv32f16_unmasked:366; CHECK:       # %bb.0:367; CHECK-NEXT:    vl8re16.v v24, (a0)368; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma369; CHECK-NEXT:    vfmadd.vv v8, v16, v24370; CHECK-NEXT:    ret371  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %b, <vscale x 32 x half> %c, <vscale x 32 x i1> splat (i1 true), i32 %evl)372  ret <vscale x 32 x half> %v373}374 375define <vscale x 32 x half> @vfma_vf_nxv32f16(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 zeroext %evl) {376; CHECK-LABEL: vfma_vf_nxv32f16:377; CHECK:       # %bb.0:378; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma379; CHECK-NEXT:    vfmadd.vf v8, fa0, v16, v0.t380; CHECK-NEXT:    ret381  %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0382  %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer383  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 %evl)384  ret <vscale x 32 x half> %v385}386 387define <vscale x 32 x half> @vfma_vf_nxv32f16_commute(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 zeroext %evl) {388; CHECK-LABEL: vfma_vf_nxv32f16_commute:389; CHECK:       # %bb.0:390; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma391; CHECK-NEXT:    vfmadd.vf v8, fa0, v16, v0.t392; CHECK-NEXT:    ret393  %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0394  %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer395  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x half> %va, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 %evl)396  ret <vscale x 32 x half> %v397}398 399define <vscale x 32 x half> @vfma_vf_nxv32f16_unmasked(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, i32 zeroext %evl) {400; CHECK-LABEL: vfma_vf_nxv32f16_unmasked:401; CHECK:       # %bb.0:402; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma403; CHECK-NEXT:    vfmadd.vf v8, fa0, v16404; CHECK-NEXT:    ret405  %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0406  %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer407  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, <vscale x 32 x half> %vc, <vscale x 32 x i1> splat (i1 true), i32 %evl)408  ret <vscale x 32 x half> %v409}410 411define <vscale x 32 x half> @vfma_vf_nxv32f16_unmasked_commute(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, i32 zeroext %evl) {412; CHECK-LABEL: vfma_vf_nxv32f16_unmasked_commute:413; CHECK:       # %bb.0:414; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma415; CHECK-NEXT:    vfmadd.vf v8, fa0, v16416; CHECK-NEXT:    ret417  %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0418  %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer419  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x half> %va, <vscale x 32 x half> %vc, <vscale x 32 x i1> splat (i1 true), i32 %evl)420  ret <vscale x 32 x half> %v421}422 423define <vscale x 1 x float> @vfma_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %b, <vscale x 1 x float> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {424; CHECK-LABEL: vfma_vv_nxv1f32:425; CHECK:       # %bb.0:426; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma427; CHECK-NEXT:    vfmadd.vv v9, v8, v10, v0.t428; CHECK-NEXT:    vmv1r.v v8, v9429; CHECK-NEXT:    ret430  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %b, <vscale x 1 x float> %c, <vscale x 1 x i1> %m, i32 %evl)431  ret <vscale x 1 x float> %v432}433 434define <vscale x 1 x float> @vfma_vv_nxv1f32_unmasked(<vscale x 1 x float> %va, <vscale x 1 x float> %b, <vscale x 1 x float> %c, i32 zeroext %evl) {435; CHECK-LABEL: vfma_vv_nxv1f32_unmasked:436; CHECK:       # %bb.0:437; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma438; CHECK-NEXT:    vfmadd.vv v8, v9, v10439; CHECK-NEXT:    ret440  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %b, <vscale x 1 x float> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)441  ret <vscale x 1 x float> %v442}443 444define <vscale x 1 x float> @vfma_vf_nxv1f32(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {445; CHECK-LABEL: vfma_vf_nxv1f32:446; CHECK:       # %bb.0:447; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma448; CHECK-NEXT:    vfmadd.vf v8, fa0, v9, v0.t449; CHECK-NEXT:    ret450  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0451  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer452  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 %evl)453  ret <vscale x 1 x float> %v454}455 456define <vscale x 1 x float> @vfma_vf_nxv1f32_commute(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {457; CHECK-LABEL: vfma_vf_nxv1f32_commute:458; CHECK:       # %bb.0:459; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma460; CHECK-NEXT:    vfmadd.vf v8, fa0, v9, v0.t461; CHECK-NEXT:    ret462  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0463  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer464  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x float> %va, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 %evl)465  ret <vscale x 1 x float> %v466}467 468define <vscale x 1 x float> @vfma_vf_nxv1f32_unmasked(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, i32 zeroext %evl) {469; CHECK-LABEL: vfma_vf_nxv1f32_unmasked:470; CHECK:       # %bb.0:471; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma472; CHECK-NEXT:    vfmadd.vf v8, fa0, v9473; CHECK-NEXT:    ret474  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0475  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer476  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, <vscale x 1 x float> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)477  ret <vscale x 1 x float> %v478}479 480define <vscale x 1 x float> @vfma_vf_nxv1f32_unmasked_commute(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, i32 zeroext %evl) {481; CHECK-LABEL: vfma_vf_nxv1f32_unmasked_commute:482; CHECK:       # %bb.0:483; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma484; CHECK-NEXT:    vfmadd.vf v8, fa0, v9485; CHECK-NEXT:    ret486  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0487  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer488  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x float> %va, <vscale x 1 x float> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)489  ret <vscale x 1 x float> %v490}491 492define <vscale x 2 x float> @vfma_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %b, <vscale x 2 x float> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {493; CHECK-LABEL: vfma_vv_nxv2f32:494; CHECK:       # %bb.0:495; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma496; CHECK-NEXT:    vfmadd.vv v9, v8, v10, v0.t497; CHECK-NEXT:    vmv.v.v v8, v9498; CHECK-NEXT:    ret499  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %b, <vscale x 2 x float> %c, <vscale x 2 x i1> %m, i32 %evl)500  ret <vscale x 2 x float> %v501}502 503define <vscale x 2 x float> @vfma_vv_nxv2f32_unmasked(<vscale x 2 x float> %va, <vscale x 2 x float> %b, <vscale x 2 x float> %c, i32 zeroext %evl) {504; CHECK-LABEL: vfma_vv_nxv2f32_unmasked:505; CHECK:       # %bb.0:506; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma507; CHECK-NEXT:    vfmadd.vv v8, v9, v10508; CHECK-NEXT:    ret509  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %b, <vscale x 2 x float> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)510  ret <vscale x 2 x float> %v511}512 513define <vscale x 2 x float> @vfma_vf_nxv2f32(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {514; CHECK-LABEL: vfma_vf_nxv2f32:515; CHECK:       # %bb.0:516; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma517; CHECK-NEXT:    vfmadd.vf v8, fa0, v9, v0.t518; CHECK-NEXT:    ret519  %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0520  %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer521  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 %evl)522  ret <vscale x 2 x float> %v523}524 525define <vscale x 2 x float> @vfma_vf_nxv2f32_commute(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {526; CHECK-LABEL: vfma_vf_nxv2f32_commute:527; CHECK:       # %bb.0:528; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma529; CHECK-NEXT:    vfmadd.vf v8, fa0, v9, v0.t530; CHECK-NEXT:    ret531  %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0532  %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer533  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x float> %va, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 %evl)534  ret <vscale x 2 x float> %v535}536 537define <vscale x 2 x float> @vfma_vf_nxv2f32_unmasked(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, i32 zeroext %evl) {538; CHECK-LABEL: vfma_vf_nxv2f32_unmasked:539; CHECK:       # %bb.0:540; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma541; CHECK-NEXT:    vfmadd.vf v8, fa0, v9542; CHECK-NEXT:    ret543  %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0544  %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer545  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, <vscale x 2 x float> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)546  ret <vscale x 2 x float> %v547}548 549define <vscale x 2 x float> @vfma_vf_nxv2f32_unmasked_commute(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, i32 zeroext %evl) {550; CHECK-LABEL: vfma_vf_nxv2f32_unmasked_commute:551; CHECK:       # %bb.0:552; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma553; CHECK-NEXT:    vfmadd.vf v8, fa0, v9554; CHECK-NEXT:    ret555  %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0556  %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer557  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x float> %va, <vscale x 2 x float> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)558  ret <vscale x 2 x float> %v559}560 561define <vscale x 4 x float> @vfma_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %b, <vscale x 4 x float> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {562; CHECK-LABEL: vfma_vv_nxv4f32:563; CHECK:       # %bb.0:564; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma565; CHECK-NEXT:    vfmadd.vv v10, v8, v12, v0.t566; CHECK-NEXT:    vmv.v.v v8, v10567; CHECK-NEXT:    ret568  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %b, <vscale x 4 x float> %c, <vscale x 4 x i1> %m, i32 %evl)569  ret <vscale x 4 x float> %v570}571 572define <vscale x 4 x float> @vfma_vv_nxv4f32_unmasked(<vscale x 4 x float> %va, <vscale x 4 x float> %b, <vscale x 4 x float> %c, i32 zeroext %evl) {573; CHECK-LABEL: vfma_vv_nxv4f32_unmasked:574; CHECK:       # %bb.0:575; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma576; CHECK-NEXT:    vfmadd.vv v8, v10, v12577; CHECK-NEXT:    ret578  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %b, <vscale x 4 x float> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)579  ret <vscale x 4 x float> %v580}581 582define <vscale x 4 x float> @vfma_vf_nxv4f32(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {583; CHECK-LABEL: vfma_vf_nxv4f32:584; CHECK:       # %bb.0:585; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma586; CHECK-NEXT:    vfmadd.vf v8, fa0, v10, v0.t587; CHECK-NEXT:    ret588  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0589  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer590  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 %evl)591  ret <vscale x 4 x float> %v592}593 594define <vscale x 4 x float> @vfma_vf_nxv4f32_commute(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {595; CHECK-LABEL: vfma_vf_nxv4f32_commute:596; CHECK:       # %bb.0:597; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma598; CHECK-NEXT:    vfmadd.vf v8, fa0, v10, v0.t599; CHECK-NEXT:    ret600  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0601  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer602  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x float> %va, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 %evl)603  ret <vscale x 4 x float> %v604}605 606define <vscale x 4 x float> @vfma_vf_nxv4f32_unmasked(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, i32 zeroext %evl) {607; CHECK-LABEL: vfma_vf_nxv4f32_unmasked:608; CHECK:       # %bb.0:609; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma610; CHECK-NEXT:    vfmadd.vf v8, fa0, v10611; CHECK-NEXT:    ret612  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0613  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer614  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, <vscale x 4 x float> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)615  ret <vscale x 4 x float> %v616}617 618define <vscale x 4 x float> @vfma_vf_nxv4f32_unmasked_commute(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, i32 zeroext %evl) {619; CHECK-LABEL: vfma_vf_nxv4f32_unmasked_commute:620; CHECK:       # %bb.0:621; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma622; CHECK-NEXT:    vfmadd.vf v8, fa0, v10623; CHECK-NEXT:    ret624  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0625  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer626  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x float> %va, <vscale x 4 x float> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)627  ret <vscale x 4 x float> %v628}629 630define <vscale x 8 x float> @vfma_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %b, <vscale x 8 x float> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {631; CHECK-LABEL: vfma_vv_nxv8f32:632; CHECK:       # %bb.0:633; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma634; CHECK-NEXT:    vfmadd.vv v12, v8, v16, v0.t635; CHECK-NEXT:    vmv.v.v v8, v12636; CHECK-NEXT:    ret637  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %b, <vscale x 8 x float> %c, <vscale x 8 x i1> %m, i32 %evl)638  ret <vscale x 8 x float> %v639}640 641define <vscale x 8 x float> @vfma_vv_nxv8f32_unmasked(<vscale x 8 x float> %va, <vscale x 8 x float> %b, <vscale x 8 x float> %c, i32 zeroext %evl) {642; CHECK-LABEL: vfma_vv_nxv8f32_unmasked:643; CHECK:       # %bb.0:644; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma645; CHECK-NEXT:    vfmadd.vv v8, v12, v16646; CHECK-NEXT:    ret647  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %b, <vscale x 8 x float> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)648  ret <vscale x 8 x float> %v649}650 651define <vscale x 8 x float> @vfma_vf_nxv8f32(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {652; CHECK-LABEL: vfma_vf_nxv8f32:653; CHECK:       # %bb.0:654; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma655; CHECK-NEXT:    vfmadd.vf v8, fa0, v12, v0.t656; CHECK-NEXT:    ret657  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0658  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer659  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 %evl)660  ret <vscale x 8 x float> %v661}662 663define <vscale x 8 x float> @vfma_vf_nxv8f32_commute(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {664; CHECK-LABEL: vfma_vf_nxv8f32_commute:665; CHECK:       # %bb.0:666; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma667; CHECK-NEXT:    vfmadd.vf v8, fa0, v12, v0.t668; CHECK-NEXT:    ret669  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0670  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer671  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x float> %va, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 %evl)672  ret <vscale x 8 x float> %v673}674 675define <vscale x 8 x float> @vfma_vf_nxv8f32_unmasked(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, i32 zeroext %evl) {676; CHECK-LABEL: vfma_vf_nxv8f32_unmasked:677; CHECK:       # %bb.0:678; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma679; CHECK-NEXT:    vfmadd.vf v8, fa0, v12680; CHECK-NEXT:    ret681  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0682  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer683  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, <vscale x 8 x float> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)684  ret <vscale x 8 x float> %v685}686 687define <vscale x 8 x float> @vfma_vf_nxv8f32_unmasked_commute(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, i32 zeroext %evl) {688; CHECK-LABEL: vfma_vf_nxv8f32_unmasked_commute:689; CHECK:       # %bb.0:690; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma691; CHECK-NEXT:    vfmadd.vf v8, fa0, v12692; CHECK-NEXT:    ret693  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0694  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer695  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x float> %va, <vscale x 8 x float> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)696  ret <vscale x 8 x float> %v697}698 699define <vscale x 16 x float> @vfma_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %b, <vscale x 16 x float> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {700; CHECK-LABEL: vfma_vv_nxv16f32:701; CHECK:       # %bb.0:702; CHECK-NEXT:    vl8re32.v v24, (a0)703; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma704; CHECK-NEXT:    vfmadd.vv v16, v8, v24, v0.t705; CHECK-NEXT:    vmv.v.v v8, v16706; CHECK-NEXT:    ret707  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %b, <vscale x 16 x float> %c, <vscale x 16 x i1> %m, i32 %evl)708  ret <vscale x 16 x float> %v709}710 711define <vscale x 16 x float> @vfma_vv_nxv16f32_unmasked(<vscale x 16 x float> %va, <vscale x 16 x float> %b, <vscale x 16 x float> %c, i32 zeroext %evl) {712; CHECK-LABEL: vfma_vv_nxv16f32_unmasked:713; CHECK:       # %bb.0:714; CHECK-NEXT:    vl8re32.v v24, (a0)715; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma716; CHECK-NEXT:    vfmadd.vv v8, v16, v24717; CHECK-NEXT:    ret718  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %b, <vscale x 16 x float> %c, <vscale x 16 x i1> splat (i1 true), i32 %evl)719  ret <vscale x 16 x float> %v720}721 722define <vscale x 16 x float> @vfma_vf_nxv16f32(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {723; CHECK-LABEL: vfma_vf_nxv16f32:724; CHECK:       # %bb.0:725; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma726; CHECK-NEXT:    vfmadd.vf v8, fa0, v16, v0.t727; CHECK-NEXT:    ret728  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0729  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer730  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 %evl)731  ret <vscale x 16 x float> %v732}733 734define <vscale x 16 x float> @vfma_vf_nxv16f32_commute(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {735; CHECK-LABEL: vfma_vf_nxv16f32_commute:736; CHECK:       # %bb.0:737; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma738; CHECK-NEXT:    vfmadd.vf v8, fa0, v16, v0.t739; CHECK-NEXT:    ret740  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0741  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer742  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x float> %va, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 %evl)743  ret <vscale x 16 x float> %v744}745 746define <vscale x 16 x float> @vfma_vf_nxv16f32_unmasked(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, i32 zeroext %evl) {747; CHECK-LABEL: vfma_vf_nxv16f32_unmasked:748; CHECK:       # %bb.0:749; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma750; CHECK-NEXT:    vfmadd.vf v8, fa0, v16751; CHECK-NEXT:    ret752  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0753  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer754  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, <vscale x 16 x float> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)755  ret <vscale x 16 x float> %v756}757 758define <vscale x 16 x float> @vfma_vf_nxv16f32_unmasked_commute(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, i32 zeroext %evl) {759; CHECK-LABEL: vfma_vf_nxv16f32_unmasked_commute:760; CHECK:       # %bb.0:761; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma762; CHECK-NEXT:    vfmadd.vf v8, fa0, v16763; CHECK-NEXT:    ret764  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0765  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer766  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x float> %va, <vscale x 16 x float> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)767  ret <vscale x 16 x float> %v768}769 770define <vscale x 1 x double> @vfma_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %b, <vscale x 1 x double> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {771; CHECK-LABEL: vfma_vv_nxv1f64:772; CHECK:       # %bb.0:773; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma774; CHECK-NEXT:    vfmadd.vv v9, v8, v10, v0.t775; CHECK-NEXT:    vmv.v.v v8, v9776; CHECK-NEXT:    ret777  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %b, <vscale x 1 x double> %c, <vscale x 1 x i1> %m, i32 %evl)778  ret <vscale x 1 x double> %v779}780 781define <vscale x 1 x double> @vfma_vv_nxv1f64_unmasked(<vscale x 1 x double> %va, <vscale x 1 x double> %b, <vscale x 1 x double> %c, i32 zeroext %evl) {782; CHECK-LABEL: vfma_vv_nxv1f64_unmasked:783; CHECK:       # %bb.0:784; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma785; CHECK-NEXT:    vfmadd.vv v8, v9, v10786; CHECK-NEXT:    ret787  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %b, <vscale x 1 x double> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)788  ret <vscale x 1 x double> %v789}790 791define <vscale x 1 x double> @vfma_vf_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {792; CHECK-LABEL: vfma_vf_nxv1f64:793; CHECK:       # %bb.0:794; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma795; CHECK-NEXT:    vfmadd.vf v8, fa0, v9, v0.t796; CHECK-NEXT:    ret797  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0798  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer799  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 %evl)800  ret <vscale x 1 x double> %v801}802 803define <vscale x 1 x double> @vfma_vf_nxv1f64_commute(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {804; CHECK-LABEL: vfma_vf_nxv1f64_commute:805; CHECK:       # %bb.0:806; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma807; CHECK-NEXT:    vfmadd.vf v8, fa0, v9, v0.t808; CHECK-NEXT:    ret809  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0810  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer811  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %va, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 %evl)812  ret <vscale x 1 x double> %v813}814 815define <vscale x 1 x double> @vfma_vf_nxv1f64_unmasked(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, i32 zeroext %evl) {816; CHECK-LABEL: vfma_vf_nxv1f64_unmasked:817; CHECK:       # %bb.0:818; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma819; CHECK-NEXT:    vfmadd.vf v8, fa0, v9820; CHECK-NEXT:    ret821  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0822  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer823  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, <vscale x 1 x double> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)824  ret <vscale x 1 x double> %v825}826 827define <vscale x 1 x double> @vfma_vf_nxv1f64_unmasked_commute(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, i32 zeroext %evl) {828; CHECK-LABEL: vfma_vf_nxv1f64_unmasked_commute:829; CHECK:       # %bb.0:830; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma831; CHECK-NEXT:    vfmadd.vf v8, fa0, v9832; CHECK-NEXT:    ret833  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0834  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer835  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %va, <vscale x 1 x double> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)836  ret <vscale x 1 x double> %v837}838 839define <vscale x 2 x double> @vfma_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %b, <vscale x 2 x double> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {840; CHECK-LABEL: vfma_vv_nxv2f64:841; CHECK:       # %bb.0:842; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma843; CHECK-NEXT:    vfmadd.vv v10, v8, v12, v0.t844; CHECK-NEXT:    vmv.v.v v8, v10845; CHECK-NEXT:    ret846  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %b, <vscale x 2 x double> %c, <vscale x 2 x i1> %m, i32 %evl)847  ret <vscale x 2 x double> %v848}849 850define <vscale x 2 x double> @vfma_vv_nxv2f64_unmasked(<vscale x 2 x double> %va, <vscale x 2 x double> %b, <vscale x 2 x double> %c, i32 zeroext %evl) {851; CHECK-LABEL: vfma_vv_nxv2f64_unmasked:852; CHECK:       # %bb.0:853; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma854; CHECK-NEXT:    vfmadd.vv v8, v10, v12855; CHECK-NEXT:    ret856  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %b, <vscale x 2 x double> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)857  ret <vscale x 2 x double> %v858}859 860define <vscale x 2 x double> @vfma_vf_nxv2f64(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {861; CHECK-LABEL: vfma_vf_nxv2f64:862; CHECK:       # %bb.0:863; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma864; CHECK-NEXT:    vfmadd.vf v8, fa0, v10, v0.t865; CHECK-NEXT:    ret866  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0867  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer868  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 %evl)869  ret <vscale x 2 x double> %v870}871 872define <vscale x 2 x double> @vfma_vf_nxv2f64_commute(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {873; CHECK-LABEL: vfma_vf_nxv2f64_commute:874; CHECK:       # %bb.0:875; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma876; CHECK-NEXT:    vfmadd.vf v8, fa0, v10, v0.t877; CHECK-NEXT:    ret878  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0879  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer880  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x double> %va, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 %evl)881  ret <vscale x 2 x double> %v882}883 884define <vscale x 2 x double> @vfma_vf_nxv2f64_unmasked(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, i32 zeroext %evl) {885; CHECK-LABEL: vfma_vf_nxv2f64_unmasked:886; CHECK:       # %bb.0:887; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma888; CHECK-NEXT:    vfmadd.vf v8, fa0, v10889; CHECK-NEXT:    ret890  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0891  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer892  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, <vscale x 2 x double> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)893  ret <vscale x 2 x double> %v894}895 896define <vscale x 2 x double> @vfma_vf_nxv2f64_unmasked_commute(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, i32 zeroext %evl) {897; CHECK-LABEL: vfma_vf_nxv2f64_unmasked_commute:898; CHECK:       # %bb.0:899; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma900; CHECK-NEXT:    vfmadd.vf v8, fa0, v10901; CHECK-NEXT:    ret902  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0903  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer904  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x double> %va, <vscale x 2 x double> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)905  ret <vscale x 2 x double> %v906}907 908define <vscale x 4 x double> @vfma_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %b, <vscale x 4 x double> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {909; CHECK-LABEL: vfma_vv_nxv4f64:910; CHECK:       # %bb.0:911; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma912; CHECK-NEXT:    vfmadd.vv v12, v8, v16, v0.t913; CHECK-NEXT:    vmv.v.v v8, v12914; CHECK-NEXT:    ret915  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %b, <vscale x 4 x double> %c, <vscale x 4 x i1> %m, i32 %evl)916  ret <vscale x 4 x double> %v917}918 919define <vscale x 4 x double> @vfma_vv_nxv4f64_unmasked(<vscale x 4 x double> %va, <vscale x 4 x double> %b, <vscale x 4 x double> %c, i32 zeroext %evl) {920; CHECK-LABEL: vfma_vv_nxv4f64_unmasked:921; CHECK:       # %bb.0:922; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma923; CHECK-NEXT:    vfmadd.vv v8, v12, v16924; CHECK-NEXT:    ret925  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %b, <vscale x 4 x double> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)926  ret <vscale x 4 x double> %v927}928 929define <vscale x 4 x double> @vfma_vf_nxv4f64(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {930; CHECK-LABEL: vfma_vf_nxv4f64:931; CHECK:       # %bb.0:932; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma933; CHECK-NEXT:    vfmadd.vf v8, fa0, v12, v0.t934; CHECK-NEXT:    ret935  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0936  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer937  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 %evl)938  ret <vscale x 4 x double> %v939}940 941define <vscale x 4 x double> @vfma_vf_nxv4f64_commute(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {942; CHECK-LABEL: vfma_vf_nxv4f64_commute:943; CHECK:       # %bb.0:944; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma945; CHECK-NEXT:    vfmadd.vf v8, fa0, v12, v0.t946; CHECK-NEXT:    ret947  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0948  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer949  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x double> %va, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 %evl)950  ret <vscale x 4 x double> %v951}952 953define <vscale x 4 x double> @vfma_vf_nxv4f64_unmasked(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, i32 zeroext %evl) {954; CHECK-LABEL: vfma_vf_nxv4f64_unmasked:955; CHECK:       # %bb.0:956; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma957; CHECK-NEXT:    vfmadd.vf v8, fa0, v12958; CHECK-NEXT:    ret959  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0960  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer961  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, <vscale x 4 x double> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)962  ret <vscale x 4 x double> %v963}964 965define <vscale x 4 x double> @vfma_vf_nxv4f64_unmasked_commute(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, i32 zeroext %evl) {966; CHECK-LABEL: vfma_vf_nxv4f64_unmasked_commute:967; CHECK:       # %bb.0:968; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma969; CHECK-NEXT:    vfmadd.vf v8, fa0, v12970; CHECK-NEXT:    ret971  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0972  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer973  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x double> %va, <vscale x 4 x double> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)974  ret <vscale x 4 x double> %v975}976 977define <vscale x 7 x double> @vfma_vv_nxv7f64(<vscale x 7 x double> %va, <vscale x 7 x double> %b, <vscale x 7 x double> %c, <vscale x 7 x i1> %m, i32 zeroext %evl) {978; CHECK-LABEL: vfma_vv_nxv7f64:979; CHECK:       # %bb.0:980; CHECK-NEXT:    vl8re64.v v24, (a0)981; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, ma982; CHECK-NEXT:    vfmadd.vv v16, v8, v24, v0.t983; CHECK-NEXT:    vmv.v.v v8, v16984; CHECK-NEXT:    ret985  %v = call <vscale x 7 x double> @llvm.vp.fmuladd.nxv7f64(<vscale x 7 x double> %va, <vscale x 7 x double> %b, <vscale x 7 x double> %c, <vscale x 7 x i1> %m, i32 %evl)986  ret <vscale x 7 x double> %v987}988 989define <vscale x 7 x double> @vfma_vv_nxv7f64_unmasked(<vscale x 7 x double> %va, <vscale x 7 x double> %b, <vscale x 7 x double> %c, i32 zeroext %evl) {990; CHECK-LABEL: vfma_vv_nxv7f64_unmasked:991; CHECK:       # %bb.0:992; CHECK-NEXT:    vl8re64.v v24, (a0)993; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, ma994; CHECK-NEXT:    vfmadd.vv v8, v16, v24995; CHECK-NEXT:    ret996  %v = call <vscale x 7 x double> @llvm.vp.fmuladd.nxv7f64(<vscale x 7 x double> %va, <vscale x 7 x double> %b, <vscale x 7 x double> %c, <vscale x 7 x i1> splat (i1 true), i32 %evl)997  ret <vscale x 7 x double> %v998}999 1000define <vscale x 8 x double> @vfma_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %b, <vscale x 8 x double> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {1001; CHECK-LABEL: vfma_vv_nxv8f64:1002; CHECK:       # %bb.0:1003; CHECK-NEXT:    vl8re64.v v24, (a0)1004; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, ma1005; CHECK-NEXT:    vfmadd.vv v16, v8, v24, v0.t1006; CHECK-NEXT:    vmv.v.v v8, v161007; CHECK-NEXT:    ret1008  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %b, <vscale x 8 x double> %c, <vscale x 8 x i1> %m, i32 %evl)1009  ret <vscale x 8 x double> %v1010}1011 1012define <vscale x 8 x double> @vfma_vv_nxv8f64_unmasked(<vscale x 8 x double> %va, <vscale x 8 x double> %b, <vscale x 8 x double> %c, i32 zeroext %evl) {1013; CHECK-LABEL: vfma_vv_nxv8f64_unmasked:1014; CHECK:       # %bb.0:1015; CHECK-NEXT:    vl8re64.v v24, (a0)1016; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, ma1017; CHECK-NEXT:    vfmadd.vv v8, v16, v241018; CHECK-NEXT:    ret1019  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %b, <vscale x 8 x double> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)1020  ret <vscale x 8 x double> %v1021}1022 1023define <vscale x 8 x double> @vfma_vf_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {1024; CHECK-LABEL: vfma_vf_nxv8f64:1025; CHECK:       # %bb.0:1026; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma1027; CHECK-NEXT:    vfmadd.vf v8, fa0, v16, v0.t1028; CHECK-NEXT:    ret1029  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 01030  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer1031  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 %evl)1032  ret <vscale x 8 x double> %v1033}1034 1035define <vscale x 8 x double> @vfma_vf_nxv8f64_commute(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {1036; CHECK-LABEL: vfma_vf_nxv8f64_commute:1037; CHECK:       # %bb.0:1038; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma1039; CHECK-NEXT:    vfmadd.vf v8, fa0, v16, v0.t1040; CHECK-NEXT:    ret1041  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 01042  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer1043  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %va, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 %evl)1044  ret <vscale x 8 x double> %v1045}1046 1047define <vscale x 8 x double> @vfma_vf_nxv8f64_unmasked(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, i32 zeroext %evl) {1048; CHECK-LABEL: vfma_vf_nxv8f64_unmasked:1049; CHECK:       # %bb.0:1050; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma1051; CHECK-NEXT:    vfmadd.vf v8, fa0, v161052; CHECK-NEXT:    ret1053  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 01054  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer1055  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, <vscale x 8 x double> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)1056  ret <vscale x 8 x double> %v1057}1058 1059define <vscale x 8 x double> @vfma_vf_nxv8f64_unmasked_commute(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, i32 zeroext %evl) {1060; CHECK-LABEL: vfma_vf_nxv8f64_unmasked_commute:1061; CHECK:       # %bb.0:1062; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma1063; CHECK-NEXT:    vfmadd.vf v8, fa0, v161064; CHECK-NEXT:    ret1065  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 01066  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer1067  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %va, <vscale x 8 x double> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)1068  ret <vscale x 8 x double> %v1069}1070 1071define <vscale x 16 x double> @vfma_vv_nxv16f64(<vscale x 16 x double> %va, <vscale x 16 x double> %b, <vscale x 16 x double> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {1072; CHECK-LABEL: vfma_vv_nxv16f64:1073; CHECK:       # %bb.0:1074; CHECK-NEXT:    addi sp, sp, -161075; CHECK-NEXT:    .cfi_def_cfa_offset 161076; CHECK-NEXT:    csrr a1, vlenb1077; CHECK-NEXT:    li a3, 481078; CHECK-NEXT:    mul a1, a1, a31079; CHECK-NEXT:    sub sp, sp, a11080; CHECK-NEXT:    .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x30, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 48 * vlenb1081; CHECK-NEXT:    vsetvli a1, zero, e8, mf4, ta, ma1082; CHECK-NEXT:    vmv1r.v v7, v01083; CHECK-NEXT:    csrr a1, vlenb1084; CHECK-NEXT:    li a3, 241085; CHECK-NEXT:    mul a1, a1, a31086; CHECK-NEXT:    add a1, sp, a11087; CHECK-NEXT:    addi a1, a1, 161088; CHECK-NEXT:    vs8r.v v16, (a1) # vscale x 64-byte Folded Spill1089; CHECK-NEXT:    csrr a1, vlenb1090; CHECK-NEXT:    slli a1, a1, 51091; CHECK-NEXT:    add a1, sp, a11092; CHECK-NEXT:    addi a1, a1, 161093; CHECK-NEXT:    vs8r.v v8, (a1) # vscale x 64-byte Folded Spill1094; CHECK-NEXT:    csrr a1, vlenb1095; CHECK-NEXT:    srli a3, a1, 31096; CHECK-NEXT:    slli a5, a1, 31097; CHECK-NEXT:    sub a6, a4, a11098; CHECK-NEXT:    add a7, a2, a51099; CHECK-NEXT:    add a5, a0, a51100; CHECK-NEXT:    vl8re64.v v8, (a7)1101; CHECK-NEXT:    csrr a7, vlenb1102; CHECK-NEXT:    slli a7, a7, 31103; CHECK-NEXT:    add a7, sp, a71104; CHECK-NEXT:    addi a7, a7, 161105; CHECK-NEXT:    vs8r.v v8, (a7) # vscale x 64-byte Folded Spill1106; CHECK-NEXT:    sltu a7, a4, a61107; CHECK-NEXT:    addi a7, a7, -11108; CHECK-NEXT:    vl8re64.v v8, (a5)1109; CHECK-NEXT:    csrr a5, vlenb1110; CHECK-NEXT:    li t0, 401111; CHECK-NEXT:    mul a5, a5, t01112; CHECK-NEXT:    add a5, sp, a51113; CHECK-NEXT:    addi a5, a5, 161114; CHECK-NEXT:    vs8r.v v8, (a5) # vscale x 64-byte Folded Spill1115; CHECK-NEXT:    vl8re64.v v8, (a2)1116; CHECK-NEXT:    csrr a2, vlenb1117; CHECK-NEXT:    slli a2, a2, 41118; CHECK-NEXT:    add a2, sp, a21119; CHECK-NEXT:    addi a2, a2, 161120; CHECK-NEXT:    vs8r.v v8, (a2) # vscale x 64-byte Folded Spill1121; CHECK-NEXT:    vl8re64.v v8, (a0)1122; CHECK-NEXT:    addi a0, sp, 161123; CHECK-NEXT:    vs8r.v v8, (a0) # vscale x 64-byte Folded Spill1124; CHECK-NEXT:    vslidedown.vx v0, v0, a31125; CHECK-NEXT:    and a0, a7, a61126; CHECK-NEXT:    csrr a2, vlenb1127; CHECK-NEXT:    li a3, 241128; CHECK-NEXT:    mul a2, a2, a31129; CHECK-NEXT:    add a2, sp, a21130; CHECK-NEXT:    addi a2, a2, 161131; CHECK-NEXT:    vl8r.v v16, (a2) # vscale x 64-byte Folded Reload1132; CHECK-NEXT:    csrr a2, vlenb1133; CHECK-NEXT:    slli a2, a2, 31134; CHECK-NEXT:    add a2, sp, a21135; CHECK-NEXT:    addi a2, a2, 161136; CHECK-NEXT:    vl8r.v v24, (a2) # vscale x 64-byte Folded Reload1137; CHECK-NEXT:    csrr a2, vlenb1138; CHECK-NEXT:    li a3, 401139; CHECK-NEXT:    mul a2, a2, a31140; CHECK-NEXT:    add a2, sp, a21141; CHECK-NEXT:    addi a2, a2, 161142; CHECK-NEXT:    vl8r.v v8, (a2) # vscale x 64-byte Folded Reload1143; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma1144; CHECK-NEXT:    vfmadd.vv v8, v16, v24, v0.t1145; CHECK-NEXT:    csrr a0, vlenb1146; CHECK-NEXT:    li a2, 401147; CHECK-NEXT:    mul a0, a0, a21148; CHECK-NEXT:    add a0, sp, a01149; CHECK-NEXT:    addi a0, a0, 161150; CHECK-NEXT:    vs8r.v v8, (a0) # vscale x 64-byte Folded Spill1151; CHECK-NEXT:    bltu a4, a1, .LBB92_21152; CHECK-NEXT:  # %bb.1:1153; CHECK-NEXT:    mv a4, a11154; CHECK-NEXT:  .LBB92_2:1155; CHECK-NEXT:    vmv1r.v v0, v71156; CHECK-NEXT:    csrr a0, vlenb1157; CHECK-NEXT:    slli a0, a0, 51158; CHECK-NEXT:    add a0, sp, a01159; CHECK-NEXT:    addi a0, a0, 161160; CHECK-NEXT:    vl8r.v v16, (a0) # vscale x 64-byte Folded Reload1161; CHECK-NEXT:    csrr a0, vlenb1162; CHECK-NEXT:    slli a0, a0, 41163; CHECK-NEXT:    add a0, sp, a01164; CHECK-NEXT:    addi a0, a0, 161165; CHECK-NEXT:    vl8r.v v24, (a0) # vscale x 64-byte Folded Reload1166; CHECK-NEXT:    addi a0, sp, 161167; CHECK-NEXT:    vl8r.v v8, (a0) # vscale x 64-byte Folded Reload1168; CHECK-NEXT:    vsetvli zero, a4, e64, m8, ta, ma1169; CHECK-NEXT:    vfmadd.vv v8, v16, v24, v0.t1170; CHECK-NEXT:    csrr a0, vlenb1171; CHECK-NEXT:    li a1, 401172; CHECK-NEXT:    mul a0, a0, a11173; CHECK-NEXT:    add a0, sp, a01174; CHECK-NEXT:    addi a0, a0, 161175; CHECK-NEXT:    vl8r.v v16, (a0) # vscale x 64-byte Folded Reload1176; CHECK-NEXT:    csrr a0, vlenb1177; CHECK-NEXT:    li a1, 481178; CHECK-NEXT:    mul a0, a0, a11179; CHECK-NEXT:    add sp, sp, a01180; CHECK-NEXT:    .cfi_def_cfa sp, 161181; CHECK-NEXT:    addi sp, sp, 161182; CHECK-NEXT:    .cfi_def_cfa_offset 01183; CHECK-NEXT:    ret1184  %v = call <vscale x 16 x double> @llvm.vp.fmuladd.nxv16f64(<vscale x 16 x double> %va, <vscale x 16 x double> %b, <vscale x 16 x double> %c, <vscale x 16 x i1> %m, i32 %evl)1185  ret <vscale x 16 x double> %v1186}1187 1188define <vscale x 16 x double> @vfma_vv_nxv16f64_unmasked(<vscale x 16 x double> %va, <vscale x 16 x double> %b, <vscale x 16 x double> %c, i32 zeroext %evl) {1189; CHECK-LABEL: vfma_vv_nxv16f64_unmasked:1190; CHECK:       # %bb.0:1191; CHECK-NEXT:    addi sp, sp, -161192; CHECK-NEXT:    .cfi_def_cfa_offset 161193; CHECK-NEXT:    csrr a1, vlenb1194; CHECK-NEXT:    slli a1, a1, 51195; CHECK-NEXT:    sub sp, sp, a11196; CHECK-NEXT:    .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x20, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 32 * vlenb1197; CHECK-NEXT:    csrr a1, vlenb1198; CHECK-NEXT:    slli a1, a1, 41199; CHECK-NEXT:    add a1, sp, a11200; CHECK-NEXT:    addi a1, a1, 161201; CHECK-NEXT:    vs8r.v v16, (a1) # vscale x 64-byte Folded Spill1202; CHECK-NEXT:    csrr a1, vlenb1203; CHECK-NEXT:    li a3, 241204; CHECK-NEXT:    mul a1, a1, a31205; CHECK-NEXT:    add a1, sp, a11206; CHECK-NEXT:    addi a1, a1, 161207; CHECK-NEXT:    vs8r.v v8, (a1) # vscale x 64-byte Folded Spill1208; CHECK-NEXT:    csrr a1, vlenb1209; CHECK-NEXT:    slli a3, a1, 31210; CHECK-NEXT:    add a5, a2, a31211; CHECK-NEXT:    vl8re64.v v8, (a5)1212; CHECK-NEXT:    csrr a5, vlenb1213; CHECK-NEXT:    slli a5, a5, 31214; CHECK-NEXT:    add a5, sp, a51215; CHECK-NEXT:    addi a5, a5, 161216; CHECK-NEXT:    vs8r.v v8, (a5) # vscale x 64-byte Folded Spill1217; CHECK-NEXT:    sub a5, a4, a11218; CHECK-NEXT:    add a3, a0, a31219; CHECK-NEXT:    vl8re64.v v24, (a3)1220; CHECK-NEXT:    sltu a3, a4, a51221; CHECK-NEXT:    vl8re64.v v8, (a2)1222; CHECK-NEXT:    addi a2, sp, 161223; CHECK-NEXT:    vs8r.v v8, (a2) # vscale x 64-byte Folded Spill1224; CHECK-NEXT:    vl8re64.v v0, (a0)1225; CHECK-NEXT:    addi a3, a3, -11226; CHECK-NEXT:    and a3, a3, a51227; CHECK-NEXT:    csrr a0, vlenb1228; CHECK-NEXT:    slli a0, a0, 41229; CHECK-NEXT:    add a0, sp, a01230; CHECK-NEXT:    addi a0, a0, 161231; CHECK-NEXT:    vl8r.v v16, (a0) # vscale x 64-byte Folded Reload1232; CHECK-NEXT:    csrr a0, vlenb1233; CHECK-NEXT:    slli a0, a0, 31234; CHECK-NEXT:    add a0, sp, a01235; CHECK-NEXT:    addi a0, a0, 161236; CHECK-NEXT:    vl8r.v v8, (a0) # vscale x 64-byte Folded Reload1237; CHECK-NEXT:    vsetvli zero, a3, e64, m8, ta, ma1238; CHECK-NEXT:    vfmadd.vv v24, v16, v81239; CHECK-NEXT:    bltu a4, a1, .LBB93_21240; CHECK-NEXT:  # %bb.1:1241; CHECK-NEXT:    mv a4, a11242; CHECK-NEXT:  .LBB93_2:1243; CHECK-NEXT:    csrr a0, vlenb1244; CHECK-NEXT:    li a1, 241245; CHECK-NEXT:    mul a0, a0, a11246; CHECK-NEXT:    add a0, sp, a01247; CHECK-NEXT:    addi a0, a0, 161248; CHECK-NEXT:    vl8r.v v16, (a0) # vscale x 64-byte Folded Reload1249; CHECK-NEXT:    addi a0, sp, 161250; CHECK-NEXT:    vl8r.v v8, (a0) # vscale x 64-byte Folded Reload1251; CHECK-NEXT:    vsetvli zero, a4, e64, m8, ta, ma1252; CHECK-NEXT:    vfmadd.vv v0, v16, v81253; CHECK-NEXT:    vmv.v.v v8, v01254; CHECK-NEXT:    vmv8r.v v16, v241255; CHECK-NEXT:    csrr a0, vlenb1256; CHECK-NEXT:    slli a0, a0, 51257; CHECK-NEXT:    add sp, sp, a01258; CHECK-NEXT:    .cfi_def_cfa sp, 161259; CHECK-NEXT:    addi sp, sp, 161260; CHECK-NEXT:    .cfi_def_cfa_offset 01261; CHECK-NEXT:    ret1262  %v = call <vscale x 16 x double> @llvm.vp.fmuladd.nxv16f64(<vscale x 16 x double> %va, <vscale x 16 x double> %b, <vscale x 16 x double> %c, <vscale x 16 x i1> splat (i1 true), i32 %evl)1263  ret <vscale x 16 x double> %v1264}1265 1266define <vscale x 1 x half> @vfmsub_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %b, <vscale x 1 x half> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {1267; CHECK-LABEL: vfmsub_vv_nxv1f16:1268; CHECK:       # %bb.0:1269; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma1270; CHECK-NEXT:    vfmsub.vv v9, v8, v10, v0.t1271; CHECK-NEXT:    vmv1r.v v8, v91272; CHECK-NEXT:    ret1273  %negc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %c, <vscale x 1 x i1> %m, i32 %evl)1274  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %b, <vscale x 1 x half> %negc, <vscale x 1 x i1> %m, i32 %evl)1275  ret <vscale x 1 x half> %v1276}1277 1278define <vscale x 1 x half> @vfmsub_vv_nxv1f16_unmasked(<vscale x 1 x half> %va, <vscale x 1 x half> %b, <vscale x 1 x half> %c, i32 zeroext %evl) {1279; CHECK-LABEL: vfmsub_vv_nxv1f16_unmasked:1280; CHECK:       # %bb.0:1281; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma1282; CHECK-NEXT:    vfmsub.vv v8, v9, v101283; CHECK-NEXT:    ret1284  %negc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)1285  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %b, <vscale x 1 x half> %negc, <vscale x 1 x i1> splat (i1 true), i32 %evl)1286  ret <vscale x 1 x half> %v1287}1288 1289define <vscale x 1 x half> @vfmsub_vf_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {1290; CHECK-LABEL: vfmsub_vf_nxv1f16:1291; CHECK:       # %bb.0:1292; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma1293; CHECK-NEXT:    vfmsub.vf v8, fa0, v9, v0.t1294; CHECK-NEXT:    ret1295  %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 01296  %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer1297  %negvc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 %evl)1298  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, <vscale x 1 x half> %negvc, <vscale x 1 x i1> %m, i32 %evl)1299  ret <vscale x 1 x half> %v1300}1301 1302define <vscale x 1 x half> @vfmsub_vf_nxv1f16_commute(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {1303; CHECK-LABEL: vfmsub_vf_nxv1f16_commute:1304; CHECK:       # %bb.0:1305; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma1306; CHECK-NEXT:    vfmsub.vf v8, fa0, v9, v0.t1307; CHECK-NEXT:    ret1308  %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 01309  %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer1310  %negvc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 %evl)1311  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %va, <vscale x 1 x half> %negvc, <vscale x 1 x i1> %m, i32 %evl)1312  ret <vscale x 1 x half> %v1313}1314 1315define <vscale x 1 x half> @vfmsub_vf_nxv1f16_unmasked(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, i32 zeroext %evl) {1316; CHECK-LABEL: vfmsub_vf_nxv1f16_unmasked:1317; CHECK:       # %bb.0:1318; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma1319; CHECK-NEXT:    vfmsub.vf v8, fa0, v91320; CHECK-NEXT:    ret1321  %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 01322  %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer1323  %negvc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)1324  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, <vscale x 1 x half> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)1325  ret <vscale x 1 x half> %v1326}1327 1328define <vscale x 1 x half> @vfmsub_vf_nxv1f16_unmasked_commute(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, i32 zeroext %evl) {1329; CHECK-LABEL: vfmsub_vf_nxv1f16_unmasked_commute:1330; CHECK:       # %bb.0:1331; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma1332; CHECK-NEXT:    vfmsub.vf v8, fa0, v91333; CHECK-NEXT:    ret1334  %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 01335  %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer1336  %negvc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)1337  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %va, <vscale x 1 x half> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)1338  ret <vscale x 1 x half> %v1339}1340 1341define <vscale x 1 x half> @vfnmadd_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %b, <vscale x 1 x half> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {1342; CHECK-LABEL: vfnmadd_vv_nxv1f16:1343; CHECK:       # %bb.0:1344; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma1345; CHECK-NEXT:    vfnmadd.vv v9, v8, v10, v0.t1346; CHECK-NEXT:    vmv1r.v v8, v91347; CHECK-NEXT:    ret1348  %negb = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %b, <vscale x 1 x i1> %m, i32 %evl)1349  %negc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %c, <vscale x 1 x i1> %m, i32 %evl)1350  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %negb, <vscale x 1 x half> %negc, <vscale x 1 x i1> %m, i32 %evl)1351  ret <vscale x 1 x half> %v1352}1353 1354define <vscale x 1 x half> @vfnmadd_vv_nxv1f16_commuted(<vscale x 1 x half> %va, <vscale x 1 x half> %b, <vscale x 1 x half> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {1355; CHECK-LABEL: vfnmadd_vv_nxv1f16_commuted:1356; CHECK:       # %bb.0:1357; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma1358; CHECK-NEXT:    vfnmadd.vv v8, v9, v10, v0.t1359; CHECK-NEXT:    ret1360  %negb = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %b, <vscale x 1 x i1> %m, i32 %evl)1361  %negc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %c, <vscale x 1 x i1> %m, i32 %evl)1362  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %negb, <vscale x 1 x half> %va, <vscale x 1 x half> %negc, <vscale x 1 x i1> %m, i32 %evl)1363  ret <vscale x 1 x half> %v1364}1365 1366define <vscale x 1 x half> @vfnmadd_vv_nxv1f16_unmasked(<vscale x 1 x half> %va, <vscale x 1 x half> %b, <vscale x 1 x half> %c, i32 zeroext %evl) {1367; CHECK-LABEL: vfnmadd_vv_nxv1f16_unmasked:1368; CHECK:       # %bb.0:1369; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma1370; CHECK-NEXT:    vfnmadd.vv v8, v9, v101371; CHECK-NEXT:    ret1372  %negb = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)1373  %negc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)1374  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %negb, <vscale x 1 x half> %negc, <vscale x 1 x i1> splat (i1 true), i32 %evl)1375  ret <vscale x 1 x half> %v1376}1377 1378define <vscale x 1 x half> @vfnmadd_vv_nxv1f16_unmasked_commuted(<vscale x 1 x half> %va, <vscale x 1 x half> %b, <vscale x 1 x half> %c, i32 zeroext %evl) {1379; CHECK-LABEL: vfnmadd_vv_nxv1f16_unmasked_commuted:1380; CHECK:       # %bb.0:1381; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma1382; CHECK-NEXT:    vfnmadd.vv v8, v9, v101383; CHECK-NEXT:    ret1384  %negb = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)1385  %negc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)1386  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %negb, <vscale x 1 x half> %va, <vscale x 1 x half> %negc, <vscale x 1 x i1> splat (i1 true), i32 %evl)1387  ret <vscale x 1 x half> %v1388}1389 1390define <vscale x 1 x half> @vfnmadd_vf_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {1391; CHECK-LABEL: vfnmadd_vf_nxv1f16:1392; CHECK:       # %bb.0:1393; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma1394; CHECK-NEXT:    vfnmadd.vf v8, fa0, v9, v0.t1395; CHECK-NEXT:    ret1396  %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 01397  %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer1398  %negva = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x i1> %m, i32 %evl)1399  %negvc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 %evl)1400  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %negva, <vscale x 1 x half> %vb, <vscale x 1 x half> %negvc, <vscale x 1 x i1> %m, i32 %evl)1401  ret <vscale x 1 x half> %v1402}1403 1404define <vscale x 1 x half> @vfnmadd_vf_nxv1f16_commute(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {1405; CHECK-LABEL: vfnmadd_vf_nxv1f16_commute:1406; CHECK:       # %bb.0:1407; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma1408; CHECK-NEXT:    vfnmadd.vf v8, fa0, v9, v0.t1409; CHECK-NEXT:    ret1410  %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 01411  %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer1412  %negva = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x i1> %m, i32 %evl)1413  %negvc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 %evl)1414  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %negva, <vscale x 1 x half> %negvc, <vscale x 1 x i1> %m, i32 %evl)1415  ret <vscale x 1 x half> %v1416}1417 1418define <vscale x 1 x half> @vfnmadd_vf_nxv1f16_unmasked(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, i32 zeroext %evl) {1419; CHECK-LABEL: vfnmadd_vf_nxv1f16_unmasked:1420; CHECK:       # %bb.0:1421; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma1422; CHECK-NEXT:    vfnmadd.vf v8, fa0, v91423; CHECK-NEXT:    ret1424  %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 01425  %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer1426  %negva = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x i1> splat (i1 true), i32 %evl)1427  %negvc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)1428  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %negva, <vscale x 1 x half> %vb, <vscale x 1 x half> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)1429  ret <vscale x 1 x half> %v1430}1431 1432define <vscale x 1 x half> @vfnmadd_vf_nxv1f16_unmasked_commute(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, i32 zeroext %evl) {1433; CHECK-LABEL: vfnmadd_vf_nxv1f16_unmasked_commute:1434; CHECK:       # %bb.0:1435; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma1436; CHECK-NEXT:    vfnmadd.vf v8, fa0, v91437; CHECK-NEXT:    ret1438  %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 01439  %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer1440  %negva = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x i1> splat (i1 true), i32 %evl)1441  %negvc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)1442  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %negva, <vscale x 1 x half> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)1443  ret <vscale x 1 x half> %v1444}1445 1446define <vscale x 1 x half> @vfnmadd_vf_nxv1f16_neg_splat(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {1447; CHECK-LABEL: vfnmadd_vf_nxv1f16_neg_splat:1448; CHECK:       # %bb.0:1449; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma1450; CHECK-NEXT:    vfnmadd.vf v8, fa0, v9, v0.t1451; CHECK-NEXT:    ret1452  %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 01453  %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer1454  %negvb = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x i1> %m, i32 %evl)1455  %negvc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 %evl)1456  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %negvb, <vscale x 1 x half> %negvc, <vscale x 1 x i1> %m, i32 %evl)1457  ret <vscale x 1 x half> %v1458}1459 1460define <vscale x 1 x half> @vfnmadd_vf_nxv1f16_neg_splat_commute(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {1461; CHECK-LABEL: vfnmadd_vf_nxv1f16_neg_splat_commute:1462; CHECK:       # %bb.0:1463; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma1464; CHECK-NEXT:    vfnmadd.vf v8, fa0, v9, v0.t1465; CHECK-NEXT:    ret1466  %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 01467  %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer1468  %negvb = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x i1> %m, i32 %evl)1469  %negvc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 %evl)1470  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %negvb, <vscale x 1 x half> %va, <vscale x 1 x half> %negvc, <vscale x 1 x i1> %m, i32 %evl)1471  ret <vscale x 1 x half> %v1472}1473 1474define <vscale x 1 x half> @vfnmadd_vf_nxv1f16_neg_splat_unmasked(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, i32 zeroext %evl) {1475; CHECK-LABEL: vfnmadd_vf_nxv1f16_neg_splat_unmasked:1476; CHECK:       # %bb.0:1477; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma1478; CHECK-NEXT:    vfnmadd.vf v8, fa0, v91479; CHECK-NEXT:    ret1480  %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 01481  %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer1482  %negvb = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)1483  %negvc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)1484  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %negvb, <vscale x 1 x half> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)1485  ret <vscale x 1 x half> %v1486}1487 1488define <vscale x 1 x half> @vfnmadd_vf_nxv1f16_neg_splat_unmasked_commute(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, i32 zeroext %evl) {1489; CHECK-LABEL: vfnmadd_vf_nxv1f16_neg_splat_unmasked_commute:1490; CHECK:       # %bb.0:1491; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma1492; CHECK-NEXT:    vfnmadd.vf v8, fa0, v91493; CHECK-NEXT:    ret1494  %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 01495  %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer1496  %negvb = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)1497  %negvc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)1498  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %negvb, <vscale x 1 x half> %va, <vscale x 1 x half> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)1499  ret <vscale x 1 x half> %v1500}1501 1502define <vscale x 1 x half> @vfnmsub_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %b, <vscale x 1 x half> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {1503; CHECK-LABEL: vfnmsub_vv_nxv1f16:1504; CHECK:       # %bb.0:1505; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma1506; CHECK-NEXT:    vfnmadd.vv v9, v8, v10, v0.t1507; CHECK-NEXT:    vmv1r.v v8, v91508; CHECK-NEXT:    ret1509  %negb = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %b, <vscale x 1 x i1> %m, i32 %evl)1510  %negc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %c, <vscale x 1 x i1> %m, i32 %evl)1511  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %negb, <vscale x 1 x half> %negc, <vscale x 1 x i1> %m, i32 %evl)1512  ret <vscale x 1 x half> %v1513}1514 1515define <vscale x 1 x half> @vfnmsub_vv_nxv1f16_commuted(<vscale x 1 x half> %va, <vscale x 1 x half> %b, <vscale x 1 x half> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {1516; CHECK-LABEL: vfnmsub_vv_nxv1f16_commuted:1517; CHECK:       # %bb.0:1518; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma1519; CHECK-NEXT:    vfnmadd.vv v8, v9, v10, v0.t1520; CHECK-NEXT:    ret1521  %negb = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %b, <vscale x 1 x i1> %m, i32 %evl)1522  %negc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %c, <vscale x 1 x i1> %m, i32 %evl)1523  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %negb, <vscale x 1 x half> %va, <vscale x 1 x half> %negc, <vscale x 1 x i1> %m, i32 %evl)1524  ret <vscale x 1 x half> %v1525}1526 1527define <vscale x 1 x half> @vfnmsub_vv_nxv1f16_unmasked(<vscale x 1 x half> %va, <vscale x 1 x half> %b, <vscale x 1 x half> %c, i32 zeroext %evl) {1528; CHECK-LABEL: vfnmsub_vv_nxv1f16_unmasked:1529; CHECK:       # %bb.0:1530; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma1531; CHECK-NEXT:    vfnmadd.vv v8, v9, v101532; CHECK-NEXT:    ret1533  %negb = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)1534  %negc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)1535  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %negb, <vscale x 1 x half> %negc, <vscale x 1 x i1> splat (i1 true), i32 %evl)1536  ret <vscale x 1 x half> %v1537}1538 1539define <vscale x 1 x half> @vfnmsub_vv_nxv1f16_unmasked_commuted(<vscale x 1 x half> %va, <vscale x 1 x half> %b, <vscale x 1 x half> %c, i32 zeroext %evl) {1540; CHECK-LABEL: vfnmsub_vv_nxv1f16_unmasked_commuted:1541; CHECK:       # %bb.0:1542; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma1543; CHECK-NEXT:    vfnmadd.vv v8, v9, v101544; CHECK-NEXT:    ret1545  %negb = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)1546  %negc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)1547  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %negb, <vscale x 1 x half> %va, <vscale x 1 x half> %negc, <vscale x 1 x i1> splat (i1 true), i32 %evl)1548  ret <vscale x 1 x half> %v1549}1550 1551define <vscale x 1 x half> @vfnmsub_vf_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {1552; CHECK-LABEL: vfnmsub_vf_nxv1f16:1553; CHECK:       # %bb.0:1554; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma1555; CHECK-NEXT:    vfnmsub.vf v8, fa0, v9, v0.t1556; CHECK-NEXT:    ret1557  %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 01558  %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer1559  %negva = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x i1> %m, i32 %evl)1560  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %negva, <vscale x 1 x half> %vb, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 %evl)1561  ret <vscale x 1 x half> %v1562}1563 1564define <vscale x 1 x half> @vfnmsub_vf_nxv1f16_commute(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {1565; CHECK-LABEL: vfnmsub_vf_nxv1f16_commute:1566; CHECK:       # %bb.0:1567; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma1568; CHECK-NEXT:    vfnmsub.vf v8, fa0, v9, v0.t1569; CHECK-NEXT:    ret1570  %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 01571  %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer1572  %negva = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x i1> %m, i32 %evl)1573  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %negva, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 %evl)1574  ret <vscale x 1 x half> %v1575}1576 1577define <vscale x 1 x half> @vfnmsub_vf_nxv1f16_unmasked(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, i32 zeroext %evl) {1578; CHECK-LABEL: vfnmsub_vf_nxv1f16_unmasked:1579; CHECK:       # %bb.0:1580; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma1581; CHECK-NEXT:    vfnmsub.vf v8, fa0, v91582; CHECK-NEXT:    ret1583  %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 01584  %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer1585  %negva = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x i1> splat (i1 true), i32 %evl)1586  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %negva, <vscale x 1 x half> %vb, <vscale x 1 x half> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)1587  ret <vscale x 1 x half> %v1588}1589 1590define <vscale x 1 x half> @vfnmsub_vf_nxv1f16_unmasked_commute(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, i32 zeroext %evl) {1591; CHECK-LABEL: vfnmsub_vf_nxv1f16_unmasked_commute:1592; CHECK:       # %bb.0:1593; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma1594; CHECK-NEXT:    vfnmsub.vf v8, fa0, v91595; CHECK-NEXT:    ret1596  %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 01597  %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer1598  %negva = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x i1> splat (i1 true), i32 %evl)1599  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %negva, <vscale x 1 x half> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)1600  ret <vscale x 1 x half> %v1601}1602 1603define <vscale x 1 x half> @vfnmsub_vf_nxv1f16_neg_splat(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {1604; CHECK-LABEL: vfnmsub_vf_nxv1f16_neg_splat:1605; CHECK:       # %bb.0:1606; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma1607; CHECK-NEXT:    vfnmsub.vf v8, fa0, v9, v0.t1608; CHECK-NEXT:    ret1609  %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 01610  %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer1611  %negvb = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x i1> %m, i32 %evl)1612  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %negvb, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 %evl)1613  ret <vscale x 1 x half> %v1614}1615 1616define <vscale x 1 x half> @vfnmsub_vf_nxv1f16_neg_splat_commute(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {1617; CHECK-LABEL: vfnmsub_vf_nxv1f16_neg_splat_commute:1618; CHECK:       # %bb.0:1619; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma1620; CHECK-NEXT:    vfnmsub.vf v8, fa0, v9, v0.t1621; CHECK-NEXT:    ret1622  %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 01623  %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer1624  %negvb = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x i1> %m, i32 %evl)1625  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %negvb, <vscale x 1 x half> %va, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 %evl)1626  ret <vscale x 1 x half> %v1627}1628 1629define <vscale x 1 x half> @vfnmsub_vf_nxv1f16_neg_splat_unmasked(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, i32 zeroext %evl) {1630; CHECK-LABEL: vfnmsub_vf_nxv1f16_neg_splat_unmasked:1631; CHECK:       # %bb.0:1632; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma1633; CHECK-NEXT:    vfnmsub.vf v8, fa0, v91634; CHECK-NEXT:    ret1635  %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 01636  %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer1637  %negvb = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)1638  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %negvb, <vscale x 1 x half> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)1639  ret <vscale x 1 x half> %v1640}1641 1642define <vscale x 1 x half> @vfnmsub_vf_nxv1f16_neg_splat_unmasked_commute(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, i32 zeroext %evl) {1643; CHECK-LABEL: vfnmsub_vf_nxv1f16_neg_splat_unmasked_commute:1644; CHECK:       # %bb.0:1645; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma1646; CHECK-NEXT:    vfnmsub.vf v8, fa0, v91647; CHECK-NEXT:    ret1648  %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 01649  %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer1650  %negvb = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)1651  %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %negvb, <vscale x 1 x half> %va, <vscale x 1 x half> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)1652  ret <vscale x 1 x half> %v1653}1654 1655define <vscale x 2 x half> @vfmsub_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %b, <vscale x 2 x half> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {1656; CHECK-LABEL: vfmsub_vv_nxv2f16:1657; CHECK:       # %bb.0:1658; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma1659; CHECK-NEXT:    vfmsub.vv v9, v8, v10, v0.t1660; CHECK-NEXT:    vmv1r.v v8, v91661; CHECK-NEXT:    ret1662  %negc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %c, <vscale x 2 x i1> %m, i32 %evl)1663  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %b, <vscale x 2 x half> %negc, <vscale x 2 x i1> %m, i32 %evl)1664  ret <vscale x 2 x half> %v1665}1666 1667define <vscale x 2 x half> @vfmsub_vv_nxv2f16_unmasked(<vscale x 2 x half> %va, <vscale x 2 x half> %b, <vscale x 2 x half> %c, i32 zeroext %evl) {1668; CHECK-LABEL: vfmsub_vv_nxv2f16_unmasked:1669; CHECK:       # %bb.0:1670; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma1671; CHECK-NEXT:    vfmsub.vv v8, v9, v101672; CHECK-NEXT:    ret1673  %negc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)1674  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %b, <vscale x 2 x half> %negc, <vscale x 2 x i1> splat (i1 true), i32 %evl)1675  ret <vscale x 2 x half> %v1676}1677 1678define <vscale x 2 x half> @vfmsub_vf_nxv2f16(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {1679; CHECK-LABEL: vfmsub_vf_nxv2f16:1680; CHECK:       # %bb.0:1681; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma1682; CHECK-NEXT:    vfmsub.vf v8, fa0, v9, v0.t1683; CHECK-NEXT:    ret1684  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 01685  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer1686  %negvc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 %evl)1687  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, <vscale x 2 x half> %negvc, <vscale x 2 x i1> %m, i32 %evl)1688  ret <vscale x 2 x half> %v1689}1690 1691define <vscale x 2 x half> @vfmsub_vf_nxv2f16_commute(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {1692; CHECK-LABEL: vfmsub_vf_nxv2f16_commute:1693; CHECK:       # %bb.0:1694; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma1695; CHECK-NEXT:    vfmsub.vf v8, fa0, v9, v0.t1696; CHECK-NEXT:    ret1697  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 01698  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer1699  %negvc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 %evl)1700  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x half> %va, <vscale x 2 x half> %negvc, <vscale x 2 x i1> %m, i32 %evl)1701  ret <vscale x 2 x half> %v1702}1703 1704define <vscale x 2 x half> @vfmsub_vf_nxv2f16_unmasked(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, i32 zeroext %evl) {1705; CHECK-LABEL: vfmsub_vf_nxv2f16_unmasked:1706; CHECK:       # %bb.0:1707; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma1708; CHECK-NEXT:    vfmsub.vf v8, fa0, v91709; CHECK-NEXT:    ret1710  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 01711  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer1712  %negvc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)1713  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, <vscale x 2 x half> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)1714  ret <vscale x 2 x half> %v1715}1716 1717define <vscale x 2 x half> @vfmsub_vf_nxv2f16_unmasked_commute(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, i32 zeroext %evl) {1718; CHECK-LABEL: vfmsub_vf_nxv2f16_unmasked_commute:1719; CHECK:       # %bb.0:1720; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma1721; CHECK-NEXT:    vfmsub.vf v8, fa0, v91722; CHECK-NEXT:    ret1723  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 01724  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer1725  %negvc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)1726  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x half> %va, <vscale x 2 x half> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)1727  ret <vscale x 2 x half> %v1728}1729 1730define <vscale x 2 x half> @vfnmadd_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %b, <vscale x 2 x half> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {1731; CHECK-LABEL: vfnmadd_vv_nxv2f16:1732; CHECK:       # %bb.0:1733; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma1734; CHECK-NEXT:    vfnmadd.vv v9, v8, v10, v0.t1735; CHECK-NEXT:    vmv1r.v v8, v91736; CHECK-NEXT:    ret1737  %negb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %b, <vscale x 2 x i1> %m, i32 %evl)1738  %negc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %c, <vscale x 2 x i1> %m, i32 %evl)1739  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %negb, <vscale x 2 x half> %negc, <vscale x 2 x i1> %m, i32 %evl)1740  ret <vscale x 2 x half> %v1741}1742 1743define <vscale x 2 x half> @vfnmadd_vv_nxv2f16_commuted(<vscale x 2 x half> %va, <vscale x 2 x half> %b, <vscale x 2 x half> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {1744; CHECK-LABEL: vfnmadd_vv_nxv2f16_commuted:1745; CHECK:       # %bb.0:1746; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma1747; CHECK-NEXT:    vfnmadd.vv v8, v9, v10, v0.t1748; CHECK-NEXT:    ret1749  %negb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %b, <vscale x 2 x i1> %m, i32 %evl)1750  %negc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %c, <vscale x 2 x i1> %m, i32 %evl)1751  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %negb, <vscale x 2 x half> %va, <vscale x 2 x half> %negc, <vscale x 2 x i1> %m, i32 %evl)1752  ret <vscale x 2 x half> %v1753}1754 1755define <vscale x 2 x half> @vfnmadd_vv_nxv2f16_unmasked(<vscale x 2 x half> %va, <vscale x 2 x half> %b, <vscale x 2 x half> %c, i32 zeroext %evl) {1756; CHECK-LABEL: vfnmadd_vv_nxv2f16_unmasked:1757; CHECK:       # %bb.0:1758; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma1759; CHECK-NEXT:    vfnmadd.vv v8, v9, v101760; CHECK-NEXT:    ret1761  %negb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)1762  %negc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)1763  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %negb, <vscale x 2 x half> %negc, <vscale x 2 x i1> splat (i1 true), i32 %evl)1764  ret <vscale x 2 x half> %v1765}1766 1767define <vscale x 2 x half> @vfnmadd_vv_nxv2f16_unmasked_commuted(<vscale x 2 x half> %va, <vscale x 2 x half> %b, <vscale x 2 x half> %c, i32 zeroext %evl) {1768; CHECK-LABEL: vfnmadd_vv_nxv2f16_unmasked_commuted:1769; CHECK:       # %bb.0:1770; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma1771; CHECK-NEXT:    vfnmadd.vv v8, v9, v101772; CHECK-NEXT:    ret1773  %negb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)1774  %negc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)1775  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %negb, <vscale x 2 x half> %va, <vscale x 2 x half> %negc, <vscale x 2 x i1> splat (i1 true), i32 %evl)1776  ret <vscale x 2 x half> %v1777}1778 1779define <vscale x 2 x half> @vfnmadd_vf_nxv2f16(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {1780; CHECK-LABEL: vfnmadd_vf_nxv2f16:1781; CHECK:       # %bb.0:1782; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma1783; CHECK-NEXT:    vfnmadd.vf v8, fa0, v9, v0.t1784; CHECK-NEXT:    ret1785  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 01786  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer1787  %negva = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x i1> %m, i32 %evl)1788  %negvc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 %evl)1789  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %negva, <vscale x 2 x half> %vb, <vscale x 2 x half> %negvc, <vscale x 2 x i1> %m, i32 %evl)1790  ret <vscale x 2 x half> %v1791}1792 1793define <vscale x 2 x half> @vfnmadd_vf_nxv2f16_commute(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {1794; CHECK-LABEL: vfnmadd_vf_nxv2f16_commute:1795; CHECK:       # %bb.0:1796; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma1797; CHECK-NEXT:    vfnmadd.vf v8, fa0, v9, v0.t1798; CHECK-NEXT:    ret1799  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 01800  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer1801  %negva = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x i1> %m, i32 %evl)1802  %negvc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 %evl)1803  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x half> %negva, <vscale x 2 x half> %negvc, <vscale x 2 x i1> %m, i32 %evl)1804  ret <vscale x 2 x half> %v1805}1806 1807define <vscale x 2 x half> @vfnmadd_vf_nxv2f16_unmasked(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, i32 zeroext %evl) {1808; CHECK-LABEL: vfnmadd_vf_nxv2f16_unmasked:1809; CHECK:       # %bb.0:1810; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma1811; CHECK-NEXT:    vfnmadd.vf v8, fa0, v91812; CHECK-NEXT:    ret1813  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 01814  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer1815  %negva = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x i1> splat (i1 true), i32 %evl)1816  %negvc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)1817  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %negva, <vscale x 2 x half> %vb, <vscale x 2 x half> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)1818  ret <vscale x 2 x half> %v1819}1820 1821define <vscale x 2 x half> @vfnmadd_vf_nxv2f16_unmasked_commute(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, i32 zeroext %evl) {1822; CHECK-LABEL: vfnmadd_vf_nxv2f16_unmasked_commute:1823; CHECK:       # %bb.0:1824; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma1825; CHECK-NEXT:    vfnmadd.vf v8, fa0, v91826; CHECK-NEXT:    ret1827  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 01828  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer1829  %negva = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x i1> splat (i1 true), i32 %evl)1830  %negvc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)1831  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x half> %negva, <vscale x 2 x half> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)1832  ret <vscale x 2 x half> %v1833}1834 1835define <vscale x 2 x half> @vfnmadd_vf_nxv2f16_neg_splat(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {1836; CHECK-LABEL: vfnmadd_vf_nxv2f16_neg_splat:1837; CHECK:       # %bb.0:1838; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma1839; CHECK-NEXT:    vfnmadd.vf v8, fa0, v9, v0.t1840; CHECK-NEXT:    ret1841  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 01842  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer1843  %negvb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x i1> %m, i32 %evl)1844  %negvc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 %evl)1845  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %negvb, <vscale x 2 x half> %negvc, <vscale x 2 x i1> %m, i32 %evl)1846  ret <vscale x 2 x half> %v1847}1848 1849define <vscale x 2 x half> @vfnmadd_vf_nxv2f16_neg_splat_commute(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {1850; CHECK-LABEL: vfnmadd_vf_nxv2f16_neg_splat_commute:1851; CHECK:       # %bb.0:1852; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma1853; CHECK-NEXT:    vfnmadd.vf v8, fa0, v9, v0.t1854; CHECK-NEXT:    ret1855  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 01856  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer1857  %negvb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x i1> %m, i32 %evl)1858  %negvc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 %evl)1859  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %negvb, <vscale x 2 x half> %va, <vscale x 2 x half> %negvc, <vscale x 2 x i1> %m, i32 %evl)1860  ret <vscale x 2 x half> %v1861}1862 1863define <vscale x 2 x half> @vfnmadd_vf_nxv2f16_neg_splat_unmasked(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, i32 zeroext %evl) {1864; CHECK-LABEL: vfnmadd_vf_nxv2f16_neg_splat_unmasked:1865; CHECK:       # %bb.0:1866; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma1867; CHECK-NEXT:    vfnmadd.vf v8, fa0, v91868; CHECK-NEXT:    ret1869  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 01870  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer1871  %negvb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)1872  %negvc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)1873  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %negvb, <vscale x 2 x half> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)1874  ret <vscale x 2 x half> %v1875}1876 1877define <vscale x 2 x half> @vfnmadd_vf_nxv2f16_neg_splat_unmasked_commute(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, i32 zeroext %evl) {1878; CHECK-LABEL: vfnmadd_vf_nxv2f16_neg_splat_unmasked_commute:1879; CHECK:       # %bb.0:1880; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma1881; CHECK-NEXT:    vfnmadd.vf v8, fa0, v91882; CHECK-NEXT:    ret1883  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 01884  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer1885  %negvb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)1886  %negvc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)1887  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %negvb, <vscale x 2 x half> %va, <vscale x 2 x half> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)1888  ret <vscale x 2 x half> %v1889}1890 1891define <vscale x 2 x half> @vfnmsub_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %b, <vscale x 2 x half> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {1892; CHECK-LABEL: vfnmsub_vv_nxv2f16:1893; CHECK:       # %bb.0:1894; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma1895; CHECK-NEXT:    vfnmadd.vv v9, v8, v10, v0.t1896; CHECK-NEXT:    vmv1r.v v8, v91897; CHECK-NEXT:    ret1898  %negb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %b, <vscale x 2 x i1> %m, i32 %evl)1899  %negc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %c, <vscale x 2 x i1> %m, i32 %evl)1900  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %negb, <vscale x 2 x half> %negc, <vscale x 2 x i1> %m, i32 %evl)1901  ret <vscale x 2 x half> %v1902}1903 1904define <vscale x 2 x half> @vfnmsub_vv_nxv2f16_commuted(<vscale x 2 x half> %va, <vscale x 2 x half> %b, <vscale x 2 x half> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {1905; CHECK-LABEL: vfnmsub_vv_nxv2f16_commuted:1906; CHECK:       # %bb.0:1907; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma1908; CHECK-NEXT:    vfnmadd.vv v8, v9, v10, v0.t1909; CHECK-NEXT:    ret1910  %negb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %b, <vscale x 2 x i1> %m, i32 %evl)1911  %negc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %c, <vscale x 2 x i1> %m, i32 %evl)1912  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %negb, <vscale x 2 x half> %va, <vscale x 2 x half> %negc, <vscale x 2 x i1> %m, i32 %evl)1913  ret <vscale x 2 x half> %v1914}1915 1916define <vscale x 2 x half> @vfnmsub_vv_nxv2f16_unmasked(<vscale x 2 x half> %va, <vscale x 2 x half> %b, <vscale x 2 x half> %c, i32 zeroext %evl) {1917; CHECK-LABEL: vfnmsub_vv_nxv2f16_unmasked:1918; CHECK:       # %bb.0:1919; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma1920; CHECK-NEXT:    vfnmadd.vv v8, v9, v101921; CHECK-NEXT:    ret1922  %negb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)1923  %negc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)1924  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %negb, <vscale x 2 x half> %negc, <vscale x 2 x i1> splat (i1 true), i32 %evl)1925  ret <vscale x 2 x half> %v1926}1927 1928define <vscale x 2 x half> @vfnmsub_vv_nxv2f16_unmasked_commuted(<vscale x 2 x half> %va, <vscale x 2 x half> %b, <vscale x 2 x half> %c, i32 zeroext %evl) {1929; CHECK-LABEL: vfnmsub_vv_nxv2f16_unmasked_commuted:1930; CHECK:       # %bb.0:1931; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma1932; CHECK-NEXT:    vfnmadd.vv v8, v9, v101933; CHECK-NEXT:    ret1934  %negb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)1935  %negc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)1936  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %negb, <vscale x 2 x half> %va, <vscale x 2 x half> %negc, <vscale x 2 x i1> splat (i1 true), i32 %evl)1937  ret <vscale x 2 x half> %v1938}1939 1940define <vscale x 2 x half> @vfnmsub_vf_nxv2f16(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {1941; CHECK-LABEL: vfnmsub_vf_nxv2f16:1942; CHECK:       # %bb.0:1943; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma1944; CHECK-NEXT:    vfnmsub.vf v8, fa0, v9, v0.t1945; CHECK-NEXT:    ret1946  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 01947  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer1948  %negva = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x i1> %m, i32 %evl)1949  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %negva, <vscale x 2 x half> %vb, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 %evl)1950  ret <vscale x 2 x half> %v1951}1952 1953define <vscale x 2 x half> @vfnmsub_vf_nxv2f16_commute(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {1954; CHECK-LABEL: vfnmsub_vf_nxv2f16_commute:1955; CHECK:       # %bb.0:1956; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma1957; CHECK-NEXT:    vfnmsub.vf v8, fa0, v9, v0.t1958; CHECK-NEXT:    ret1959  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 01960  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer1961  %negva = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x i1> %m, i32 %evl)1962  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x half> %negva, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 %evl)1963  ret <vscale x 2 x half> %v1964}1965 1966define <vscale x 2 x half> @vfnmsub_vf_nxv2f16_unmasked(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, i32 zeroext %evl) {1967; CHECK-LABEL: vfnmsub_vf_nxv2f16_unmasked:1968; CHECK:       # %bb.0:1969; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma1970; CHECK-NEXT:    vfnmsub.vf v8, fa0, v91971; CHECK-NEXT:    ret1972  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 01973  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer1974  %negva = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x i1> splat (i1 true), i32 %evl)1975  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %negva, <vscale x 2 x half> %vb, <vscale x 2 x half> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)1976  ret <vscale x 2 x half> %v1977}1978 1979define <vscale x 2 x half> @vfnmsub_vf_nxv2f16_unmasked_commute(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, i32 zeroext %evl) {1980; CHECK-LABEL: vfnmsub_vf_nxv2f16_unmasked_commute:1981; CHECK:       # %bb.0:1982; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma1983; CHECK-NEXT:    vfnmsub.vf v8, fa0, v91984; CHECK-NEXT:    ret1985  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 01986  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer1987  %negva = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x i1> splat (i1 true), i32 %evl)1988  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x half> %negva, <vscale x 2 x half> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)1989  ret <vscale x 2 x half> %v1990}1991 1992define <vscale x 2 x half> @vfnmsub_vf_nxv2f16_neg_splat(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {1993; CHECK-LABEL: vfnmsub_vf_nxv2f16_neg_splat:1994; CHECK:       # %bb.0:1995; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma1996; CHECK-NEXT:    vfnmsub.vf v8, fa0, v9, v0.t1997; CHECK-NEXT:    ret1998  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 01999  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer2000  %negvb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x i1> %m, i32 %evl)2001  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %negvb, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 %evl)2002  ret <vscale x 2 x half> %v2003}2004 2005define <vscale x 2 x half> @vfnmsub_vf_nxv2f16_neg_splat_commute(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {2006; CHECK-LABEL: vfnmsub_vf_nxv2f16_neg_splat_commute:2007; CHECK:       # %bb.0:2008; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma2009; CHECK-NEXT:    vfnmsub.vf v8, fa0, v9, v0.t2010; CHECK-NEXT:    ret2011  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 02012  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer2013  %negvb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x i1> %m, i32 %evl)2014  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %negvb, <vscale x 2 x half> %va, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 %evl)2015  ret <vscale x 2 x half> %v2016}2017 2018define <vscale x 2 x half> @vfnmsub_vf_nxv2f16_neg_splat_unmasked(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, i32 zeroext %evl) {2019; CHECK-LABEL: vfnmsub_vf_nxv2f16_neg_splat_unmasked:2020; CHECK:       # %bb.0:2021; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma2022; CHECK-NEXT:    vfnmsub.vf v8, fa0, v92023; CHECK-NEXT:    ret2024  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 02025  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer2026  %negvb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)2027  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %negvb, <vscale x 2 x half> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)2028  ret <vscale x 2 x half> %v2029}2030 2031define <vscale x 2 x half> @vfnmsub_vf_nxv2f16_neg_splat_unmasked_commute(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, i32 zeroext %evl) {2032; CHECK-LABEL: vfnmsub_vf_nxv2f16_neg_splat_unmasked_commute:2033; CHECK:       # %bb.0:2034; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma2035; CHECK-NEXT:    vfnmsub.vf v8, fa0, v92036; CHECK-NEXT:    ret2037  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 02038  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer2039  %negvb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)2040  %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %negvb, <vscale x 2 x half> %va, <vscale x 2 x half> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)2041  ret <vscale x 2 x half> %v2042}2043 2044define <vscale x 4 x half> @vfmsub_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %b, <vscale x 4 x half> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {2045; CHECK-LABEL: vfmsub_vv_nxv4f16:2046; CHECK:       # %bb.0:2047; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma2048; CHECK-NEXT:    vfmsub.vv v9, v8, v10, v0.t2049; CHECK-NEXT:    vmv.v.v v8, v92050; CHECK-NEXT:    ret2051  %negc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %c, <vscale x 4 x i1> %m, i32 %evl)2052  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %b, <vscale x 4 x half> %negc, <vscale x 4 x i1> %m, i32 %evl)2053  ret <vscale x 4 x half> %v2054}2055 2056define <vscale x 4 x half> @vfmsub_vv_nxv4f16_unmasked(<vscale x 4 x half> %va, <vscale x 4 x half> %b, <vscale x 4 x half> %c, i32 zeroext %evl) {2057; CHECK-LABEL: vfmsub_vv_nxv4f16_unmasked:2058; CHECK:       # %bb.0:2059; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma2060; CHECK-NEXT:    vfmsub.vv v8, v9, v102061; CHECK-NEXT:    ret2062  %negc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)2063  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %b, <vscale x 4 x half> %negc, <vscale x 4 x i1> splat (i1 true), i32 %evl)2064  ret <vscale x 4 x half> %v2065}2066 2067define <vscale x 4 x half> @vfmsub_vf_nxv4f16(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {2068; CHECK-LABEL: vfmsub_vf_nxv4f16:2069; CHECK:       # %bb.0:2070; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma2071; CHECK-NEXT:    vfmsub.vf v8, fa0, v9, v0.t2072; CHECK-NEXT:    ret2073  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 02074  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer2075  %negvc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 %evl)2076  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, <vscale x 4 x half> %negvc, <vscale x 4 x i1> %m, i32 %evl)2077  ret <vscale x 4 x half> %v2078}2079 2080define <vscale x 4 x half> @vfmsub_vf_nxv4f16_commute(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {2081; CHECK-LABEL: vfmsub_vf_nxv4f16_commute:2082; CHECK:       # %bb.0:2083; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma2084; CHECK-NEXT:    vfmsub.vf v8, fa0, v9, v0.t2085; CHECK-NEXT:    ret2086  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 02087  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer2088  %negvc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 %evl)2089  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x half> %va, <vscale x 4 x half> %negvc, <vscale x 4 x i1> %m, i32 %evl)2090  ret <vscale x 4 x half> %v2091}2092 2093define <vscale x 4 x half> @vfmsub_vf_nxv4f16_unmasked(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, i32 zeroext %evl) {2094; CHECK-LABEL: vfmsub_vf_nxv4f16_unmasked:2095; CHECK:       # %bb.0:2096; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma2097; CHECK-NEXT:    vfmsub.vf v8, fa0, v92098; CHECK-NEXT:    ret2099  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 02100  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer2101  %negvc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)2102  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, <vscale x 4 x half> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)2103  ret <vscale x 4 x half> %v2104}2105 2106define <vscale x 4 x half> @vfmsub_vf_nxv4f16_unmasked_commute(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, i32 zeroext %evl) {2107; CHECK-LABEL: vfmsub_vf_nxv4f16_unmasked_commute:2108; CHECK:       # %bb.0:2109; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma2110; CHECK-NEXT:    vfmsub.vf v8, fa0, v92111; CHECK-NEXT:    ret2112  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 02113  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer2114  %negvc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)2115  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x half> %va, <vscale x 4 x half> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)2116  ret <vscale x 4 x half> %v2117}2118 2119define <vscale x 4 x half> @vfnmadd_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %b, <vscale x 4 x half> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {2120; CHECK-LABEL: vfnmadd_vv_nxv4f16:2121; CHECK:       # %bb.0:2122; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma2123; CHECK-NEXT:    vfnmadd.vv v9, v8, v10, v0.t2124; CHECK-NEXT:    vmv.v.v v8, v92125; CHECK-NEXT:    ret2126  %negb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %b, <vscale x 4 x i1> %m, i32 %evl)2127  %negc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %c, <vscale x 4 x i1> %m, i32 %evl)2128  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %negb, <vscale x 4 x half> %negc, <vscale x 4 x i1> %m, i32 %evl)2129  ret <vscale x 4 x half> %v2130}2131 2132define <vscale x 4 x half> @vfnmadd_vv_nxv4f16_commuted(<vscale x 4 x half> %va, <vscale x 4 x half> %b, <vscale x 4 x half> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {2133; CHECK-LABEL: vfnmadd_vv_nxv4f16_commuted:2134; CHECK:       # %bb.0:2135; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma2136; CHECK-NEXT:    vfnmadd.vv v8, v9, v10, v0.t2137; CHECK-NEXT:    ret2138  %negb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %b, <vscale x 4 x i1> %m, i32 %evl)2139  %negc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %c, <vscale x 4 x i1> %m, i32 %evl)2140  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %negb, <vscale x 4 x half> %va, <vscale x 4 x half> %negc, <vscale x 4 x i1> %m, i32 %evl)2141  ret <vscale x 4 x half> %v2142}2143 2144define <vscale x 4 x half> @vfnmadd_vv_nxv4f16_unmasked(<vscale x 4 x half> %va, <vscale x 4 x half> %b, <vscale x 4 x half> %c, i32 zeroext %evl) {2145; CHECK-LABEL: vfnmadd_vv_nxv4f16_unmasked:2146; CHECK:       # %bb.0:2147; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma2148; CHECK-NEXT:    vfnmadd.vv v8, v9, v102149; CHECK-NEXT:    ret2150  %negb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)2151  %negc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)2152  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %negb, <vscale x 4 x half> %negc, <vscale x 4 x i1> splat (i1 true), i32 %evl)2153  ret <vscale x 4 x half> %v2154}2155 2156define <vscale x 4 x half> @vfnmadd_vv_nxv4f16_unmasked_commuted(<vscale x 4 x half> %va, <vscale x 4 x half> %b, <vscale x 4 x half> %c, i32 zeroext %evl) {2157; CHECK-LABEL: vfnmadd_vv_nxv4f16_unmasked_commuted:2158; CHECK:       # %bb.0:2159; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma2160; CHECK-NEXT:    vfnmadd.vv v8, v9, v102161; CHECK-NEXT:    ret2162  %negb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)2163  %negc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)2164  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %negb, <vscale x 4 x half> %va, <vscale x 4 x half> %negc, <vscale x 4 x i1> splat (i1 true), i32 %evl)2165  ret <vscale x 4 x half> %v2166}2167 2168define <vscale x 4 x half> @vfnmadd_vf_nxv4f16(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {2169; CHECK-LABEL: vfnmadd_vf_nxv4f16:2170; CHECK:       # %bb.0:2171; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma2172; CHECK-NEXT:    vfnmadd.vf v8, fa0, v9, v0.t2173; CHECK-NEXT:    ret2174  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 02175  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer2176  %negva = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x i1> %m, i32 %evl)2177  %negvc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 %evl)2178  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %negva, <vscale x 4 x half> %vb, <vscale x 4 x half> %negvc, <vscale x 4 x i1> %m, i32 %evl)2179  ret <vscale x 4 x half> %v2180}2181 2182define <vscale x 4 x half> @vfnmadd_vf_nxv4f16_commute(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {2183; CHECK-LABEL: vfnmadd_vf_nxv4f16_commute:2184; CHECK:       # %bb.0:2185; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma2186; CHECK-NEXT:    vfnmadd.vf v8, fa0, v9, v0.t2187; CHECK-NEXT:    ret2188  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 02189  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer2190  %negva = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x i1> %m, i32 %evl)2191  %negvc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 %evl)2192  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x half> %negva, <vscale x 4 x half> %negvc, <vscale x 4 x i1> %m, i32 %evl)2193  ret <vscale x 4 x half> %v2194}2195 2196define <vscale x 4 x half> @vfnmadd_vf_nxv4f16_unmasked(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, i32 zeroext %evl) {2197; CHECK-LABEL: vfnmadd_vf_nxv4f16_unmasked:2198; CHECK:       # %bb.0:2199; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma2200; CHECK-NEXT:    vfnmadd.vf v8, fa0, v92201; CHECK-NEXT:    ret2202  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 02203  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer2204  %negva = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x i1> splat (i1 true), i32 %evl)2205  %negvc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)2206  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %negva, <vscale x 4 x half> %vb, <vscale x 4 x half> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)2207  ret <vscale x 4 x half> %v2208}2209 2210define <vscale x 4 x half> @vfnmadd_vf_nxv4f16_unmasked_commute(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, i32 zeroext %evl) {2211; CHECK-LABEL: vfnmadd_vf_nxv4f16_unmasked_commute:2212; CHECK:       # %bb.0:2213; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma2214; CHECK-NEXT:    vfnmadd.vf v8, fa0, v92215; CHECK-NEXT:    ret2216  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 02217  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer2218  %negva = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x i1> splat (i1 true), i32 %evl)2219  %negvc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)2220  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x half> %negva, <vscale x 4 x half> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)2221  ret <vscale x 4 x half> %v2222}2223 2224define <vscale x 4 x half> @vfnmadd_vf_nxv4f16_neg_splat(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {2225; CHECK-LABEL: vfnmadd_vf_nxv4f16_neg_splat:2226; CHECK:       # %bb.0:2227; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma2228; CHECK-NEXT:    vfnmadd.vf v8, fa0, v9, v0.t2229; CHECK-NEXT:    ret2230  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 02231  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer2232  %negvb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x i1> %m, i32 %evl)2233  %negvc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 %evl)2234  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %negvb, <vscale x 4 x half> %negvc, <vscale x 4 x i1> %m, i32 %evl)2235  ret <vscale x 4 x half> %v2236}2237 2238define <vscale x 4 x half> @vfnmadd_vf_nxv4f16_neg_splat_commute(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {2239; CHECK-LABEL: vfnmadd_vf_nxv4f16_neg_splat_commute:2240; CHECK:       # %bb.0:2241; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma2242; CHECK-NEXT:    vfnmadd.vf v8, fa0, v9, v0.t2243; CHECK-NEXT:    ret2244  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 02245  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer2246  %negvb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x i1> %m, i32 %evl)2247  %negvc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 %evl)2248  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %negvb, <vscale x 4 x half> %va, <vscale x 4 x half> %negvc, <vscale x 4 x i1> %m, i32 %evl)2249  ret <vscale x 4 x half> %v2250}2251 2252define <vscale x 4 x half> @vfnmadd_vf_nxv4f16_neg_splat_unmasked(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, i32 zeroext %evl) {2253; CHECK-LABEL: vfnmadd_vf_nxv4f16_neg_splat_unmasked:2254; CHECK:       # %bb.0:2255; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma2256; CHECK-NEXT:    vfnmadd.vf v8, fa0, v92257; CHECK-NEXT:    ret2258  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 02259  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer2260  %negvb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)2261  %negvc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)2262  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %negvb, <vscale x 4 x half> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)2263  ret <vscale x 4 x half> %v2264}2265 2266define <vscale x 4 x half> @vfnmadd_vf_nxv4f16_neg_splat_unmasked_commute(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, i32 zeroext %evl) {2267; CHECK-LABEL: vfnmadd_vf_nxv4f16_neg_splat_unmasked_commute:2268; CHECK:       # %bb.0:2269; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma2270; CHECK-NEXT:    vfnmadd.vf v8, fa0, v92271; CHECK-NEXT:    ret2272  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 02273  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer2274  %negvb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)2275  %negvc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)2276  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %negvb, <vscale x 4 x half> %va, <vscale x 4 x half> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)2277  ret <vscale x 4 x half> %v2278}2279 2280define <vscale x 4 x half> @vfnmsub_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %b, <vscale x 4 x half> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {2281; CHECK-LABEL: vfnmsub_vv_nxv4f16:2282; CHECK:       # %bb.0:2283; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma2284; CHECK-NEXT:    vfnmadd.vv v9, v8, v10, v0.t2285; CHECK-NEXT:    vmv.v.v v8, v92286; CHECK-NEXT:    ret2287  %negb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %b, <vscale x 4 x i1> %m, i32 %evl)2288  %negc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %c, <vscale x 4 x i1> %m, i32 %evl)2289  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %negb, <vscale x 4 x half> %negc, <vscale x 4 x i1> %m, i32 %evl)2290  ret <vscale x 4 x half> %v2291}2292 2293define <vscale x 4 x half> @vfnmsub_vv_nxv4f16_commuted(<vscale x 4 x half> %va, <vscale x 4 x half> %b, <vscale x 4 x half> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {2294; CHECK-LABEL: vfnmsub_vv_nxv4f16_commuted:2295; CHECK:       # %bb.0:2296; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma2297; CHECK-NEXT:    vfnmadd.vv v8, v9, v10, v0.t2298; CHECK-NEXT:    ret2299  %negb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %b, <vscale x 4 x i1> %m, i32 %evl)2300  %negc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %c, <vscale x 4 x i1> %m, i32 %evl)2301  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %negb, <vscale x 4 x half> %va, <vscale x 4 x half> %negc, <vscale x 4 x i1> %m, i32 %evl)2302  ret <vscale x 4 x half> %v2303}2304 2305define <vscale x 4 x half> @vfnmsub_vv_nxv4f16_unmasked(<vscale x 4 x half> %va, <vscale x 4 x half> %b, <vscale x 4 x half> %c, i32 zeroext %evl) {2306; CHECK-LABEL: vfnmsub_vv_nxv4f16_unmasked:2307; CHECK:       # %bb.0:2308; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma2309; CHECK-NEXT:    vfnmadd.vv v8, v9, v102310; CHECK-NEXT:    ret2311  %negb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)2312  %negc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)2313  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %negb, <vscale x 4 x half> %negc, <vscale x 4 x i1> splat (i1 true), i32 %evl)2314  ret <vscale x 4 x half> %v2315}2316 2317define <vscale x 4 x half> @vfnmsub_vv_nxv4f16_unmasked_commuted(<vscale x 4 x half> %va, <vscale x 4 x half> %b, <vscale x 4 x half> %c, i32 zeroext %evl) {2318; CHECK-LABEL: vfnmsub_vv_nxv4f16_unmasked_commuted:2319; CHECK:       # %bb.0:2320; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma2321; CHECK-NEXT:    vfnmadd.vv v8, v9, v102322; CHECK-NEXT:    ret2323  %negb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)2324  %negc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)2325  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %negb, <vscale x 4 x half> %va, <vscale x 4 x half> %negc, <vscale x 4 x i1> splat (i1 true), i32 %evl)2326  ret <vscale x 4 x half> %v2327}2328 2329define <vscale x 4 x half> @vfnmsub_vf_nxv4f16(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {2330; CHECK-LABEL: vfnmsub_vf_nxv4f16:2331; CHECK:       # %bb.0:2332; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma2333; CHECK-NEXT:    vfnmsub.vf v8, fa0, v9, v0.t2334; CHECK-NEXT:    ret2335  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 02336  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer2337  %negva = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x i1> %m, i32 %evl)2338  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %negva, <vscale x 4 x half> %vb, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 %evl)2339  ret <vscale x 4 x half> %v2340}2341 2342define <vscale x 4 x half> @vfnmsub_vf_nxv4f16_commute(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {2343; CHECK-LABEL: vfnmsub_vf_nxv4f16_commute:2344; CHECK:       # %bb.0:2345; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma2346; CHECK-NEXT:    vfnmsub.vf v8, fa0, v9, v0.t2347; CHECK-NEXT:    ret2348  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 02349  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer2350  %negva = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x i1> %m, i32 %evl)2351  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x half> %negva, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 %evl)2352  ret <vscale x 4 x half> %v2353}2354 2355define <vscale x 4 x half> @vfnmsub_vf_nxv4f16_unmasked(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, i32 zeroext %evl) {2356; CHECK-LABEL: vfnmsub_vf_nxv4f16_unmasked:2357; CHECK:       # %bb.0:2358; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma2359; CHECK-NEXT:    vfnmsub.vf v8, fa0, v92360; CHECK-NEXT:    ret2361  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 02362  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer2363  %negva = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x i1> splat (i1 true), i32 %evl)2364  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %negva, <vscale x 4 x half> %vb, <vscale x 4 x half> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)2365  ret <vscale x 4 x half> %v2366}2367 2368define <vscale x 4 x half> @vfnmsub_vf_nxv4f16_unmasked_commute(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, i32 zeroext %evl) {2369; CHECK-LABEL: vfnmsub_vf_nxv4f16_unmasked_commute:2370; CHECK:       # %bb.0:2371; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma2372; CHECK-NEXT:    vfnmsub.vf v8, fa0, v92373; CHECK-NEXT:    ret2374  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 02375  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer2376  %negva = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x i1> splat (i1 true), i32 %evl)2377  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x half> %negva, <vscale x 4 x half> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)2378  ret <vscale x 4 x half> %v2379}2380 2381define <vscale x 4 x half> @vfnmsub_vf_nxv4f16_neg_splat(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {2382; CHECK-LABEL: vfnmsub_vf_nxv4f16_neg_splat:2383; CHECK:       # %bb.0:2384; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma2385; CHECK-NEXT:    vfnmsub.vf v8, fa0, v9, v0.t2386; CHECK-NEXT:    ret2387  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 02388  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer2389  %negvb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x i1> %m, i32 %evl)2390  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %negvb, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 %evl)2391  ret <vscale x 4 x half> %v2392}2393 2394define <vscale x 4 x half> @vfnmsub_vf_nxv4f16_neg_splat_commute(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {2395; CHECK-LABEL: vfnmsub_vf_nxv4f16_neg_splat_commute:2396; CHECK:       # %bb.0:2397; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma2398; CHECK-NEXT:    vfnmsub.vf v8, fa0, v9, v0.t2399; CHECK-NEXT:    ret2400  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 02401  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer2402  %negvb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x i1> %m, i32 %evl)2403  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %negvb, <vscale x 4 x half> %va, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 %evl)2404  ret <vscale x 4 x half> %v2405}2406 2407define <vscale x 4 x half> @vfnmsub_vf_nxv4f16_neg_splat_unmasked(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, i32 zeroext %evl) {2408; CHECK-LABEL: vfnmsub_vf_nxv4f16_neg_splat_unmasked:2409; CHECK:       # %bb.0:2410; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma2411; CHECK-NEXT:    vfnmsub.vf v8, fa0, v92412; CHECK-NEXT:    ret2413  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 02414  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer2415  %negvb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)2416  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %negvb, <vscale x 4 x half> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)2417  ret <vscale x 4 x half> %v2418}2419 2420define <vscale x 4 x half> @vfnmsub_vf_nxv4f16_neg_splat_unmasked_commute(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, i32 zeroext %evl) {2421; CHECK-LABEL: vfnmsub_vf_nxv4f16_neg_splat_unmasked_commute:2422; CHECK:       # %bb.0:2423; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma2424; CHECK-NEXT:    vfnmsub.vf v8, fa0, v92425; CHECK-NEXT:    ret2426  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 02427  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer2428  %negvb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)2429  %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %negvb, <vscale x 4 x half> %va, <vscale x 4 x half> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)2430  ret <vscale x 4 x half> %v2431}2432 2433define <vscale x 8 x half> @vfmsub_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %b, <vscale x 8 x half> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {2434; CHECK-LABEL: vfmsub_vv_nxv8f16:2435; CHECK:       # %bb.0:2436; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma2437; CHECK-NEXT:    vfmsub.vv v10, v8, v12, v0.t2438; CHECK-NEXT:    vmv.v.v v8, v102439; CHECK-NEXT:    ret2440  %negc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %c, <vscale x 8 x i1> %m, i32 %evl)2441  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %b, <vscale x 8 x half> %negc, <vscale x 8 x i1> %m, i32 %evl)2442  ret <vscale x 8 x half> %v2443}2444 2445define <vscale x 8 x half> @vfmsub_vv_nxv8f16_unmasked(<vscale x 8 x half> %va, <vscale x 8 x half> %b, <vscale x 8 x half> %c, i32 zeroext %evl) {2446; CHECK-LABEL: vfmsub_vv_nxv8f16_unmasked:2447; CHECK:       # %bb.0:2448; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma2449; CHECK-NEXT:    vfmsub.vv v8, v10, v122450; CHECK-NEXT:    ret2451  %negc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)2452  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %b, <vscale x 8 x half> %negc, <vscale x 8 x i1> splat (i1 true), i32 %evl)2453  ret <vscale x 8 x half> %v2454}2455 2456define <vscale x 8 x half> @vfmsub_vf_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {2457; CHECK-LABEL: vfmsub_vf_nxv8f16:2458; CHECK:       # %bb.0:2459; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma2460; CHECK-NEXT:    vfmsub.vf v8, fa0, v10, v0.t2461; CHECK-NEXT:    ret2462  %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 02463  %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2464  %negvc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 %evl)2465  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, <vscale x 8 x half> %negvc, <vscale x 8 x i1> %m, i32 %evl)2466  ret <vscale x 8 x half> %v2467}2468 2469define <vscale x 8 x half> @vfmsub_vf_nxv8f16_commute(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {2470; CHECK-LABEL: vfmsub_vf_nxv8f16_commute:2471; CHECK:       # %bb.0:2472; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma2473; CHECK-NEXT:    vfmsub.vf v8, fa0, v10, v0.t2474; CHECK-NEXT:    ret2475  %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 02476  %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2477  %negvc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 %evl)2478  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %va, <vscale x 8 x half> %negvc, <vscale x 8 x i1> %m, i32 %evl)2479  ret <vscale x 8 x half> %v2480}2481 2482define <vscale x 8 x half> @vfmsub_vf_nxv8f16_unmasked(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, i32 zeroext %evl) {2483; CHECK-LABEL: vfmsub_vf_nxv8f16_unmasked:2484; CHECK:       # %bb.0:2485; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma2486; CHECK-NEXT:    vfmsub.vf v8, fa0, v102487; CHECK-NEXT:    ret2488  %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 02489  %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2490  %negvc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)2491  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, <vscale x 8 x half> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)2492  ret <vscale x 8 x half> %v2493}2494 2495define <vscale x 8 x half> @vfmsub_vf_nxv8f16_unmasked_commute(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, i32 zeroext %evl) {2496; CHECK-LABEL: vfmsub_vf_nxv8f16_unmasked_commute:2497; CHECK:       # %bb.0:2498; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma2499; CHECK-NEXT:    vfmsub.vf v8, fa0, v102500; CHECK-NEXT:    ret2501  %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 02502  %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2503  %negvc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)2504  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %va, <vscale x 8 x half> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)2505  ret <vscale x 8 x half> %v2506}2507 2508define <vscale x 8 x half> @vfnmadd_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %b, <vscale x 8 x half> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {2509; CHECK-LABEL: vfnmadd_vv_nxv8f16:2510; CHECK:       # %bb.0:2511; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma2512; CHECK-NEXT:    vfnmadd.vv v10, v8, v12, v0.t2513; CHECK-NEXT:    vmv.v.v v8, v102514; CHECK-NEXT:    ret2515  %negb = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %b, <vscale x 8 x i1> %m, i32 %evl)2516  %negc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %c, <vscale x 8 x i1> %m, i32 %evl)2517  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %negb, <vscale x 8 x half> %negc, <vscale x 8 x i1> %m, i32 %evl)2518  ret <vscale x 8 x half> %v2519}2520 2521define <vscale x 8 x half> @vfnmadd_vv_nxv8f16_commuted(<vscale x 8 x half> %va, <vscale x 8 x half> %b, <vscale x 8 x half> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {2522; CHECK-LABEL: vfnmadd_vv_nxv8f16_commuted:2523; CHECK:       # %bb.0:2524; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma2525; CHECK-NEXT:    vfnmadd.vv v8, v10, v12, v0.t2526; CHECK-NEXT:    ret2527  %negb = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %b, <vscale x 8 x i1> %m, i32 %evl)2528  %negc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %c, <vscale x 8 x i1> %m, i32 %evl)2529  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %negb, <vscale x 8 x half> %va, <vscale x 8 x half> %negc, <vscale x 8 x i1> %m, i32 %evl)2530  ret <vscale x 8 x half> %v2531}2532 2533define <vscale x 8 x half> @vfnmadd_vv_nxv8f16_unmasked(<vscale x 8 x half> %va, <vscale x 8 x half> %b, <vscale x 8 x half> %c, i32 zeroext %evl) {2534; CHECK-LABEL: vfnmadd_vv_nxv8f16_unmasked:2535; CHECK:       # %bb.0:2536; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma2537; CHECK-NEXT:    vfnmadd.vv v8, v10, v122538; CHECK-NEXT:    ret2539  %negb = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)2540  %negc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)2541  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %negb, <vscale x 8 x half> %negc, <vscale x 8 x i1> splat (i1 true), i32 %evl)2542  ret <vscale x 8 x half> %v2543}2544 2545define <vscale x 8 x half> @vfnmadd_vv_nxv8f16_unmasked_commuted(<vscale x 8 x half> %va, <vscale x 8 x half> %b, <vscale x 8 x half> %c, i32 zeroext %evl) {2546; CHECK-LABEL: vfnmadd_vv_nxv8f16_unmasked_commuted:2547; CHECK:       # %bb.0:2548; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma2549; CHECK-NEXT:    vfnmadd.vv v8, v10, v122550; CHECK-NEXT:    ret2551  %negb = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)2552  %negc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)2553  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %negb, <vscale x 8 x half> %va, <vscale x 8 x half> %negc, <vscale x 8 x i1> splat (i1 true), i32 %evl)2554  ret <vscale x 8 x half> %v2555}2556 2557define <vscale x 8 x half> @vfnmadd_vf_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {2558; CHECK-LABEL: vfnmadd_vf_nxv8f16:2559; CHECK:       # %bb.0:2560; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma2561; CHECK-NEXT:    vfnmadd.vf v8, fa0, v10, v0.t2562; CHECK-NEXT:    ret2563  %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 02564  %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2565  %negva = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x i1> %m, i32 %evl)2566  %negvc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 %evl)2567  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %negva, <vscale x 8 x half> %vb, <vscale x 8 x half> %negvc, <vscale x 8 x i1> %m, i32 %evl)2568  ret <vscale x 8 x half> %v2569}2570 2571define <vscale x 8 x half> @vfnmadd_vf_nxv8f16_commute(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {2572; CHECK-LABEL: vfnmadd_vf_nxv8f16_commute:2573; CHECK:       # %bb.0:2574; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma2575; CHECK-NEXT:    vfnmadd.vf v8, fa0, v10, v0.t2576; CHECK-NEXT:    ret2577  %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 02578  %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2579  %negva = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x i1> %m, i32 %evl)2580  %negvc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 %evl)2581  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %negva, <vscale x 8 x half> %negvc, <vscale x 8 x i1> %m, i32 %evl)2582  ret <vscale x 8 x half> %v2583}2584 2585define <vscale x 8 x half> @vfnmadd_vf_nxv8f16_unmasked(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, i32 zeroext %evl) {2586; CHECK-LABEL: vfnmadd_vf_nxv8f16_unmasked:2587; CHECK:       # %bb.0:2588; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma2589; CHECK-NEXT:    vfnmadd.vf v8, fa0, v102590; CHECK-NEXT:    ret2591  %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 02592  %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2593  %negva = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x i1> splat (i1 true), i32 %evl)2594  %negvc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)2595  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %negva, <vscale x 8 x half> %vb, <vscale x 8 x half> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)2596  ret <vscale x 8 x half> %v2597}2598 2599define <vscale x 8 x half> @vfnmadd_vf_nxv8f16_unmasked_commute(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, i32 zeroext %evl) {2600; CHECK-LABEL: vfnmadd_vf_nxv8f16_unmasked_commute:2601; CHECK:       # %bb.0:2602; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma2603; CHECK-NEXT:    vfnmadd.vf v8, fa0, v102604; CHECK-NEXT:    ret2605  %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 02606  %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2607  %negva = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x i1> splat (i1 true), i32 %evl)2608  %negvc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)2609  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %negva, <vscale x 8 x half> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)2610  ret <vscale x 8 x half> %v2611}2612 2613define <vscale x 8 x half> @vfnmadd_vf_nxv8f16_neg_splat(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {2614; CHECK-LABEL: vfnmadd_vf_nxv8f16_neg_splat:2615; CHECK:       # %bb.0:2616; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma2617; CHECK-NEXT:    vfnmadd.vf v8, fa0, v10, v0.t2618; CHECK-NEXT:    ret2619  %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 02620  %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2621  %negvb = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x i1> %m, i32 %evl)2622  %negvc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 %evl)2623  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %negvb, <vscale x 8 x half> %negvc, <vscale x 8 x i1> %m, i32 %evl)2624  ret <vscale x 8 x half> %v2625}2626 2627define <vscale x 8 x half> @vfnmadd_vf_nxv8f16_neg_splat_commute(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {2628; CHECK-LABEL: vfnmadd_vf_nxv8f16_neg_splat_commute:2629; CHECK:       # %bb.0:2630; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma2631; CHECK-NEXT:    vfnmadd.vf v8, fa0, v10, v0.t2632; CHECK-NEXT:    ret2633  %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 02634  %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2635  %negvb = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x i1> %m, i32 %evl)2636  %negvc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 %evl)2637  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %negvb, <vscale x 8 x half> %va, <vscale x 8 x half> %negvc, <vscale x 8 x i1> %m, i32 %evl)2638  ret <vscale x 8 x half> %v2639}2640 2641define <vscale x 8 x half> @vfnmadd_vf_nxv8f16_neg_splat_unmasked(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, i32 zeroext %evl) {2642; CHECK-LABEL: vfnmadd_vf_nxv8f16_neg_splat_unmasked:2643; CHECK:       # %bb.0:2644; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma2645; CHECK-NEXT:    vfnmadd.vf v8, fa0, v102646; CHECK-NEXT:    ret2647  %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 02648  %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2649  %negvb = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)2650  %negvc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)2651  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %negvb, <vscale x 8 x half> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)2652  ret <vscale x 8 x half> %v2653}2654 2655define <vscale x 8 x half> @vfnmadd_vf_nxv8f16_neg_splat_unmasked_commute(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, i32 zeroext %evl) {2656; CHECK-LABEL: vfnmadd_vf_nxv8f16_neg_splat_unmasked_commute:2657; CHECK:       # %bb.0:2658; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma2659; CHECK-NEXT:    vfnmadd.vf v8, fa0, v102660; CHECK-NEXT:    ret2661  %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 02662  %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2663  %negvb = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)2664  %negvc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)2665  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %negvb, <vscale x 8 x half> %va, <vscale x 8 x half> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)2666  ret <vscale x 8 x half> %v2667}2668 2669define <vscale x 8 x half> @vfnmsub_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %b, <vscale x 8 x half> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {2670; CHECK-LABEL: vfnmsub_vv_nxv8f16:2671; CHECK:       # %bb.0:2672; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma2673; CHECK-NEXT:    vfnmadd.vv v10, v8, v12, v0.t2674; CHECK-NEXT:    vmv.v.v v8, v102675; CHECK-NEXT:    ret2676  %negb = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %b, <vscale x 8 x i1> %m, i32 %evl)2677  %negc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %c, <vscale x 8 x i1> %m, i32 %evl)2678  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %negb, <vscale x 8 x half> %negc, <vscale x 8 x i1> %m, i32 %evl)2679  ret <vscale x 8 x half> %v2680}2681 2682define <vscale x 8 x half> @vfnmsub_vv_nxv8f16_commuted(<vscale x 8 x half> %va, <vscale x 8 x half> %b, <vscale x 8 x half> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {2683; CHECK-LABEL: vfnmsub_vv_nxv8f16_commuted:2684; CHECK:       # %bb.0:2685; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma2686; CHECK-NEXT:    vfnmadd.vv v8, v10, v12, v0.t2687; CHECK-NEXT:    ret2688  %negb = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %b, <vscale x 8 x i1> %m, i32 %evl)2689  %negc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %c, <vscale x 8 x i1> %m, i32 %evl)2690  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %negb, <vscale x 8 x half> %va, <vscale x 8 x half> %negc, <vscale x 8 x i1> %m, i32 %evl)2691  ret <vscale x 8 x half> %v2692}2693 2694define <vscale x 8 x half> @vfnmsub_vv_nxv8f16_unmasked(<vscale x 8 x half> %va, <vscale x 8 x half> %b, <vscale x 8 x half> %c, i32 zeroext %evl) {2695; CHECK-LABEL: vfnmsub_vv_nxv8f16_unmasked:2696; CHECK:       # %bb.0:2697; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma2698; CHECK-NEXT:    vfnmadd.vv v8, v10, v122699; CHECK-NEXT:    ret2700  %negb = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)2701  %negc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)2702  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %negb, <vscale x 8 x half> %negc, <vscale x 8 x i1> splat (i1 true), i32 %evl)2703  ret <vscale x 8 x half> %v2704}2705 2706define <vscale x 8 x half> @vfnmsub_vv_nxv8f16_unmasked_commuted(<vscale x 8 x half> %va, <vscale x 8 x half> %b, <vscale x 8 x half> %c, i32 zeroext %evl) {2707; CHECK-LABEL: vfnmsub_vv_nxv8f16_unmasked_commuted:2708; CHECK:       # %bb.0:2709; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma2710; CHECK-NEXT:    vfnmadd.vv v8, v10, v122711; CHECK-NEXT:    ret2712  %negb = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)2713  %negc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)2714  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %negb, <vscale x 8 x half> %va, <vscale x 8 x half> %negc, <vscale x 8 x i1> splat (i1 true), i32 %evl)2715  ret <vscale x 8 x half> %v2716}2717 2718define <vscale x 8 x half> @vfnmsub_vf_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {2719; CHECK-LABEL: vfnmsub_vf_nxv8f16:2720; CHECK:       # %bb.0:2721; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma2722; CHECK-NEXT:    vfnmsub.vf v8, fa0, v10, v0.t2723; CHECK-NEXT:    ret2724  %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 02725  %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2726  %negva = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x i1> %m, i32 %evl)2727  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %negva, <vscale x 8 x half> %vb, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 %evl)2728  ret <vscale x 8 x half> %v2729}2730 2731define <vscale x 8 x half> @vfnmsub_vf_nxv8f16_commute(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {2732; CHECK-LABEL: vfnmsub_vf_nxv8f16_commute:2733; CHECK:       # %bb.0:2734; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma2735; CHECK-NEXT:    vfnmsub.vf v8, fa0, v10, v0.t2736; CHECK-NEXT:    ret2737  %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 02738  %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2739  %negva = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x i1> %m, i32 %evl)2740  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %negva, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 %evl)2741  ret <vscale x 8 x half> %v2742}2743 2744define <vscale x 8 x half> @vfnmsub_vf_nxv8f16_unmasked(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, i32 zeroext %evl) {2745; CHECK-LABEL: vfnmsub_vf_nxv8f16_unmasked:2746; CHECK:       # %bb.0:2747; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma2748; CHECK-NEXT:    vfnmsub.vf v8, fa0, v102749; CHECK-NEXT:    ret2750  %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 02751  %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2752  %negva = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x i1> splat (i1 true), i32 %evl)2753  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %negva, <vscale x 8 x half> %vb, <vscale x 8 x half> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)2754  ret <vscale x 8 x half> %v2755}2756 2757define <vscale x 8 x half> @vfnmsub_vf_nxv8f16_unmasked_commute(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, i32 zeroext %evl) {2758; CHECK-LABEL: vfnmsub_vf_nxv8f16_unmasked_commute:2759; CHECK:       # %bb.0:2760; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma2761; CHECK-NEXT:    vfnmsub.vf v8, fa0, v102762; CHECK-NEXT:    ret2763  %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 02764  %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2765  %negva = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x i1> splat (i1 true), i32 %evl)2766  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %negva, <vscale x 8 x half> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)2767  ret <vscale x 8 x half> %v2768}2769 2770define <vscale x 8 x half> @vfnmsub_vf_nxv8f16_neg_splat(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {2771; CHECK-LABEL: vfnmsub_vf_nxv8f16_neg_splat:2772; CHECK:       # %bb.0:2773; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma2774; CHECK-NEXT:    vfnmsub.vf v8, fa0, v10, v0.t2775; CHECK-NEXT:    ret2776  %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 02777  %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2778  %negvb = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x i1> %m, i32 %evl)2779  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %negvb, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 %evl)2780  ret <vscale x 8 x half> %v2781}2782 2783define <vscale x 8 x half> @vfnmsub_vf_nxv8f16_neg_splat_commute(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {2784; CHECK-LABEL: vfnmsub_vf_nxv8f16_neg_splat_commute:2785; CHECK:       # %bb.0:2786; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma2787; CHECK-NEXT:    vfnmsub.vf v8, fa0, v10, v0.t2788; CHECK-NEXT:    ret2789  %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 02790  %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2791  %negvb = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x i1> %m, i32 %evl)2792  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %negvb, <vscale x 8 x half> %va, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 %evl)2793  ret <vscale x 8 x half> %v2794}2795 2796define <vscale x 8 x half> @vfnmsub_vf_nxv8f16_neg_splat_unmasked(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, i32 zeroext %evl) {2797; CHECK-LABEL: vfnmsub_vf_nxv8f16_neg_splat_unmasked:2798; CHECK:       # %bb.0:2799; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma2800; CHECK-NEXT:    vfnmsub.vf v8, fa0, v102801; CHECK-NEXT:    ret2802  %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 02803  %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2804  %negvb = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)2805  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %negvb, <vscale x 8 x half> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)2806  ret <vscale x 8 x half> %v2807}2808 2809define <vscale x 8 x half> @vfnmsub_vf_nxv8f16_neg_splat_unmasked_commute(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, i32 zeroext %evl) {2810; CHECK-LABEL: vfnmsub_vf_nxv8f16_neg_splat_unmasked_commute:2811; CHECK:       # %bb.0:2812; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma2813; CHECK-NEXT:    vfnmsub.vf v8, fa0, v102814; CHECK-NEXT:    ret2815  %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 02816  %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2817  %negvb = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)2818  %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %negvb, <vscale x 8 x half> %va, <vscale x 8 x half> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)2819  ret <vscale x 8 x half> %v2820}2821 2822define <vscale x 16 x half> @vfmsub_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %b, <vscale x 16 x half> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {2823; CHECK-LABEL: vfmsub_vv_nxv16f16:2824; CHECK:       # %bb.0:2825; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma2826; CHECK-NEXT:    vfmsub.vv v12, v8, v16, v0.t2827; CHECK-NEXT:    vmv.v.v v8, v122828; CHECK-NEXT:    ret2829  %negc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %c, <vscale x 16 x i1> %m, i32 %evl)2830  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %b, <vscale x 16 x half> %negc, <vscale x 16 x i1> %m, i32 %evl)2831  ret <vscale x 16 x half> %v2832}2833 2834define <vscale x 16 x half> @vfmsub_vv_nxv16f16_unmasked(<vscale x 16 x half> %va, <vscale x 16 x half> %b, <vscale x 16 x half> %c, i32 zeroext %evl) {2835; CHECK-LABEL: vfmsub_vv_nxv16f16_unmasked:2836; CHECK:       # %bb.0:2837; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma2838; CHECK-NEXT:    vfmsub.vv v8, v12, v162839; CHECK-NEXT:    ret2840  %negc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %c, <vscale x 16 x i1> splat (i1 true), i32 %evl)2841  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %b, <vscale x 16 x half> %negc, <vscale x 16 x i1> splat (i1 true), i32 %evl)2842  ret <vscale x 16 x half> %v2843}2844 2845define <vscale x 16 x half> @vfmsub_vf_nxv16f16(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {2846; CHECK-LABEL: vfmsub_vf_nxv16f16:2847; CHECK:       # %bb.0:2848; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma2849; CHECK-NEXT:    vfmsub.vf v8, fa0, v12, v0.t2850; CHECK-NEXT:    ret2851  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 02852  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2853  %negvc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 %evl)2854  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, <vscale x 16 x half> %negvc, <vscale x 16 x i1> %m, i32 %evl)2855  ret <vscale x 16 x half> %v2856}2857 2858define <vscale x 16 x half> @vfmsub_vf_nxv16f16_commute(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {2859; CHECK-LABEL: vfmsub_vf_nxv16f16_commute:2860; CHECK:       # %bb.0:2861; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma2862; CHECK-NEXT:    vfmsub.vf v8, fa0, v12, v0.t2863; CHECK-NEXT:    ret2864  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 02865  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2866  %negvc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 %evl)2867  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x half> %va, <vscale x 16 x half> %negvc, <vscale x 16 x i1> %m, i32 %evl)2868  ret <vscale x 16 x half> %v2869}2870 2871define <vscale x 16 x half> @vfmsub_vf_nxv16f16_unmasked(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, i32 zeroext %evl) {2872; CHECK-LABEL: vfmsub_vf_nxv16f16_unmasked:2873; CHECK:       # %bb.0:2874; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma2875; CHECK-NEXT:    vfmsub.vf v8, fa0, v122876; CHECK-NEXT:    ret2877  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 02878  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2879  %negvc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)2880  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, <vscale x 16 x half> %negvc, <vscale x 16 x i1> splat (i1 true), i32 %evl)2881  ret <vscale x 16 x half> %v2882}2883 2884define <vscale x 16 x half> @vfmsub_vf_nxv16f16_unmasked_commute(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, i32 zeroext %evl) {2885; CHECK-LABEL: vfmsub_vf_nxv16f16_unmasked_commute:2886; CHECK:       # %bb.0:2887; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma2888; CHECK-NEXT:    vfmsub.vf v8, fa0, v122889; CHECK-NEXT:    ret2890  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 02891  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2892  %negvc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)2893  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x half> %va, <vscale x 16 x half> %negvc, <vscale x 16 x i1> splat (i1 true), i32 %evl)2894  ret <vscale x 16 x half> %v2895}2896 2897define <vscale x 16 x half> @vfnmadd_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %b, <vscale x 16 x half> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {2898; CHECK-LABEL: vfnmadd_vv_nxv16f16:2899; CHECK:       # %bb.0:2900; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma2901; CHECK-NEXT:    vfnmadd.vv v12, v8, v16, v0.t2902; CHECK-NEXT:    vmv.v.v v8, v122903; CHECK-NEXT:    ret2904  %negb = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %b, <vscale x 16 x i1> %m, i32 %evl)2905  %negc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %c, <vscale x 16 x i1> %m, i32 %evl)2906  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %negb, <vscale x 16 x half> %negc, <vscale x 16 x i1> %m, i32 %evl)2907  ret <vscale x 16 x half> %v2908}2909 2910define <vscale x 16 x half> @vfnmadd_vv_nxv16f16_commuted(<vscale x 16 x half> %va, <vscale x 16 x half> %b, <vscale x 16 x half> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {2911; CHECK-LABEL: vfnmadd_vv_nxv16f16_commuted:2912; CHECK:       # %bb.0:2913; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma2914; CHECK-NEXT:    vfnmadd.vv v8, v12, v16, v0.t2915; CHECK-NEXT:    ret2916  %negb = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %b, <vscale x 16 x i1> %m, i32 %evl)2917  %negc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %c, <vscale x 16 x i1> %m, i32 %evl)2918  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %negb, <vscale x 16 x half> %va, <vscale x 16 x half> %negc, <vscale x 16 x i1> %m, i32 %evl)2919  ret <vscale x 16 x half> %v2920}2921 2922define <vscale x 16 x half> @vfnmadd_vv_nxv16f16_unmasked(<vscale x 16 x half> %va, <vscale x 16 x half> %b, <vscale x 16 x half> %c, i32 zeroext %evl) {2923; CHECK-LABEL: vfnmadd_vv_nxv16f16_unmasked:2924; CHECK:       # %bb.0:2925; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma2926; CHECK-NEXT:    vfnmadd.vv v8, v12, v162927; CHECK-NEXT:    ret2928  %negb = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %b, <vscale x 16 x i1> splat (i1 true), i32 %evl)2929  %negc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %c, <vscale x 16 x i1> splat (i1 true), i32 %evl)2930  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %negb, <vscale x 16 x half> %negc, <vscale x 16 x i1> splat (i1 true), i32 %evl)2931  ret <vscale x 16 x half> %v2932}2933 2934define <vscale x 16 x half> @vfnmadd_vv_nxv16f16_unmasked_commuted(<vscale x 16 x half> %va, <vscale x 16 x half> %b, <vscale x 16 x half> %c, i32 zeroext %evl) {2935; CHECK-LABEL: vfnmadd_vv_nxv16f16_unmasked_commuted:2936; CHECK:       # %bb.0:2937; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma2938; CHECK-NEXT:    vfnmadd.vv v8, v12, v162939; CHECK-NEXT:    ret2940  %negb = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %b, <vscale x 16 x i1> splat (i1 true), i32 %evl)2941  %negc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %c, <vscale x 16 x i1> splat (i1 true), i32 %evl)2942  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %negb, <vscale x 16 x half> %va, <vscale x 16 x half> %negc, <vscale x 16 x i1> splat (i1 true), i32 %evl)2943  ret <vscale x 16 x half> %v2944}2945 2946define <vscale x 16 x half> @vfnmadd_vf_nxv16f16(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {2947; CHECK-LABEL: vfnmadd_vf_nxv16f16:2948; CHECK:       # %bb.0:2949; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma2950; CHECK-NEXT:    vfnmadd.vf v8, fa0, v12, v0.t2951; CHECK-NEXT:    ret2952  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 02953  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2954  %negva = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x i1> %m, i32 %evl)2955  %negvc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 %evl)2956  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %negva, <vscale x 16 x half> %vb, <vscale x 16 x half> %negvc, <vscale x 16 x i1> %m, i32 %evl)2957  ret <vscale x 16 x half> %v2958}2959 2960define <vscale x 16 x half> @vfnmadd_vf_nxv16f16_commute(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {2961; CHECK-LABEL: vfnmadd_vf_nxv16f16_commute:2962; CHECK:       # %bb.0:2963; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma2964; CHECK-NEXT:    vfnmadd.vf v8, fa0, v12, v0.t2965; CHECK-NEXT:    ret2966  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 02967  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2968  %negva = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x i1> %m, i32 %evl)2969  %negvc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 %evl)2970  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x half> %negva, <vscale x 16 x half> %negvc, <vscale x 16 x i1> %m, i32 %evl)2971  ret <vscale x 16 x half> %v2972}2973 2974define <vscale x 16 x half> @vfnmadd_vf_nxv16f16_unmasked(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, i32 zeroext %evl) {2975; CHECK-LABEL: vfnmadd_vf_nxv16f16_unmasked:2976; CHECK:       # %bb.0:2977; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma2978; CHECK-NEXT:    vfnmadd.vf v8, fa0, v122979; CHECK-NEXT:    ret2980  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 02981  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2982  %negva = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x i1> splat (i1 true), i32 %evl)2983  %negvc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)2984  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %negva, <vscale x 16 x half> %vb, <vscale x 16 x half> %negvc, <vscale x 16 x i1> splat (i1 true), i32 %evl)2985  ret <vscale x 16 x half> %v2986}2987 2988define <vscale x 16 x half> @vfnmadd_vf_nxv16f16_unmasked_commute(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, i32 zeroext %evl) {2989; CHECK-LABEL: vfnmadd_vf_nxv16f16_unmasked_commute:2990; CHECK:       # %bb.0:2991; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma2992; CHECK-NEXT:    vfnmadd.vf v8, fa0, v122993; CHECK-NEXT:    ret2994  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 02995  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2996  %negva = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x i1> splat (i1 true), i32 %evl)2997  %negvc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)2998  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x half> %negva, <vscale x 16 x half> %negvc, <vscale x 16 x i1> splat (i1 true), i32 %evl)2999  ret <vscale x 16 x half> %v3000}3001 3002define <vscale x 16 x half> @vfnmadd_vf_nxv16f16_neg_splat(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {3003; CHECK-LABEL: vfnmadd_vf_nxv16f16_neg_splat:3004; CHECK:       # %bb.0:3005; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma3006; CHECK-NEXT:    vfnmadd.vf v8, fa0, v12, v0.t3007; CHECK-NEXT:    ret3008  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 03009  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer3010  %negvb = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x i1> %m, i32 %evl)3011  %negvc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 %evl)3012  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %negvb, <vscale x 16 x half> %negvc, <vscale x 16 x i1> %m, i32 %evl)3013  ret <vscale x 16 x half> %v3014}3015 3016define <vscale x 16 x half> @vfnmadd_vf_nxv16f16_neg_splat_commute(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {3017; CHECK-LABEL: vfnmadd_vf_nxv16f16_neg_splat_commute:3018; CHECK:       # %bb.0:3019; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma3020; CHECK-NEXT:    vfnmadd.vf v8, fa0, v12, v0.t3021; CHECK-NEXT:    ret3022  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 03023  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer3024  %negvb = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x i1> %m, i32 %evl)3025  %negvc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 %evl)3026  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %negvb, <vscale x 16 x half> %va, <vscale x 16 x half> %negvc, <vscale x 16 x i1> %m, i32 %evl)3027  ret <vscale x 16 x half> %v3028}3029 3030define <vscale x 16 x half> @vfnmadd_vf_nxv16f16_neg_splat_unmasked(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, i32 zeroext %evl) {3031; CHECK-LABEL: vfnmadd_vf_nxv16f16_neg_splat_unmasked:3032; CHECK:       # %bb.0:3033; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma3034; CHECK-NEXT:    vfnmadd.vf v8, fa0, v123035; CHECK-NEXT:    ret3036  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 03037  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer3038  %negvb = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x i1> splat (i1 true), i32 %evl)3039  %negvc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)3040  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %negvb, <vscale x 16 x half> %negvc, <vscale x 16 x i1> splat (i1 true), i32 %evl)3041  ret <vscale x 16 x half> %v3042}3043 3044define <vscale x 16 x half> @vfnmadd_vf_nxv16f16_neg_splat_unmasked_commute(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, i32 zeroext %evl) {3045; CHECK-LABEL: vfnmadd_vf_nxv16f16_neg_splat_unmasked_commute:3046; CHECK:       # %bb.0:3047; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma3048; CHECK-NEXT:    vfnmadd.vf v8, fa0, v123049; CHECK-NEXT:    ret3050  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 03051  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer3052  %negvb = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x i1> splat (i1 true), i32 %evl)3053  %negvc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)3054  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %negvb, <vscale x 16 x half> %va, <vscale x 16 x half> %negvc, <vscale x 16 x i1> splat (i1 true), i32 %evl)3055  ret <vscale x 16 x half> %v3056}3057 3058define <vscale x 16 x half> @vfnmsub_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %b, <vscale x 16 x half> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {3059; CHECK-LABEL: vfnmsub_vv_nxv16f16:3060; CHECK:       # %bb.0:3061; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma3062; CHECK-NEXT:    vfnmadd.vv v12, v8, v16, v0.t3063; CHECK-NEXT:    vmv.v.v v8, v123064; CHECK-NEXT:    ret3065  %negb = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %b, <vscale x 16 x i1> %m, i32 %evl)3066  %negc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %c, <vscale x 16 x i1> %m, i32 %evl)3067  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %negb, <vscale x 16 x half> %negc, <vscale x 16 x i1> %m, i32 %evl)3068  ret <vscale x 16 x half> %v3069}3070 3071define <vscale x 16 x half> @vfnmsub_vv_nxv16f16_commuted(<vscale x 16 x half> %va, <vscale x 16 x half> %b, <vscale x 16 x half> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {3072; CHECK-LABEL: vfnmsub_vv_nxv16f16_commuted:3073; CHECK:       # %bb.0:3074; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma3075; CHECK-NEXT:    vfnmadd.vv v8, v12, v16, v0.t3076; CHECK-NEXT:    ret3077  %negb = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %b, <vscale x 16 x i1> %m, i32 %evl)3078  %negc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %c, <vscale x 16 x i1> %m, i32 %evl)3079  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %negb, <vscale x 16 x half> %va, <vscale x 16 x half> %negc, <vscale x 16 x i1> %m, i32 %evl)3080  ret <vscale x 16 x half> %v3081}3082 3083define <vscale x 16 x half> @vfnmsub_vv_nxv16f16_unmasked(<vscale x 16 x half> %va, <vscale x 16 x half> %b, <vscale x 16 x half> %c, i32 zeroext %evl) {3084; CHECK-LABEL: vfnmsub_vv_nxv16f16_unmasked:3085; CHECK:       # %bb.0:3086; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma3087; CHECK-NEXT:    vfnmadd.vv v8, v12, v163088; CHECK-NEXT:    ret3089  %negb = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %b, <vscale x 16 x i1> splat (i1 true), i32 %evl)3090  %negc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %c, <vscale x 16 x i1> splat (i1 true), i32 %evl)3091  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %negb, <vscale x 16 x half> %negc, <vscale x 16 x i1> splat (i1 true), i32 %evl)3092  ret <vscale x 16 x half> %v3093}3094 3095define <vscale x 16 x half> @vfnmsub_vv_nxv16f16_unmasked_commuted(<vscale x 16 x half> %va, <vscale x 16 x half> %b, <vscale x 16 x half> %c, i32 zeroext %evl) {3096; CHECK-LABEL: vfnmsub_vv_nxv16f16_unmasked_commuted:3097; CHECK:       # %bb.0:3098; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma3099; CHECK-NEXT:    vfnmadd.vv v8, v12, v163100; CHECK-NEXT:    ret3101  %negb = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %b, <vscale x 16 x i1> splat (i1 true), i32 %evl)3102  %negc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %c, <vscale x 16 x i1> splat (i1 true), i32 %evl)3103  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %negb, <vscale x 16 x half> %va, <vscale x 16 x half> %negc, <vscale x 16 x i1> splat (i1 true), i32 %evl)3104  ret <vscale x 16 x half> %v3105}3106 3107define <vscale x 16 x half> @vfnmsub_vf_nxv16f16(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {3108; CHECK-LABEL: vfnmsub_vf_nxv16f16:3109; CHECK:       # %bb.0:3110; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma3111; CHECK-NEXT:    vfnmsub.vf v8, fa0, v12, v0.t3112; CHECK-NEXT:    ret3113  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 03114  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer3115  %negva = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x i1> %m, i32 %evl)3116  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %negva, <vscale x 16 x half> %vb, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 %evl)3117  ret <vscale x 16 x half> %v3118}3119 3120define <vscale x 16 x half> @vfnmsub_vf_nxv16f16_commute(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {3121; CHECK-LABEL: vfnmsub_vf_nxv16f16_commute:3122; CHECK:       # %bb.0:3123; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma3124; CHECK-NEXT:    vfnmsub.vf v8, fa0, v12, v0.t3125; CHECK-NEXT:    ret3126  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 03127  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer3128  %negva = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x i1> %m, i32 %evl)3129  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x half> %negva, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 %evl)3130  ret <vscale x 16 x half> %v3131}3132 3133define <vscale x 16 x half> @vfnmsub_vf_nxv16f16_unmasked(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, i32 zeroext %evl) {3134; CHECK-LABEL: vfnmsub_vf_nxv16f16_unmasked:3135; CHECK:       # %bb.0:3136; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma3137; CHECK-NEXT:    vfnmsub.vf v8, fa0, v123138; CHECK-NEXT:    ret3139  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 03140  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer3141  %negva = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x i1> splat (i1 true), i32 %evl)3142  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %negva, <vscale x 16 x half> %vb, <vscale x 16 x half> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)3143  ret <vscale x 16 x half> %v3144}3145 3146define <vscale x 16 x half> @vfnmsub_vf_nxv16f16_unmasked_commute(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, i32 zeroext %evl) {3147; CHECK-LABEL: vfnmsub_vf_nxv16f16_unmasked_commute:3148; CHECK:       # %bb.0:3149; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma3150; CHECK-NEXT:    vfnmsub.vf v8, fa0, v123151; CHECK-NEXT:    ret3152  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 03153  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer3154  %negva = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x i1> splat (i1 true), i32 %evl)3155  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x half> %negva, <vscale x 16 x half> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)3156  ret <vscale x 16 x half> %v3157}3158 3159define <vscale x 16 x half> @vfnmsub_vf_nxv16f16_neg_splat(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {3160; CHECK-LABEL: vfnmsub_vf_nxv16f16_neg_splat:3161; CHECK:       # %bb.0:3162; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma3163; CHECK-NEXT:    vfnmsub.vf v8, fa0, v12, v0.t3164; CHECK-NEXT:    ret3165  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 03166  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer3167  %negvb = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x i1> %m, i32 %evl)3168  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %negvb, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 %evl)3169  ret <vscale x 16 x half> %v3170}3171 3172define <vscale x 16 x half> @vfnmsub_vf_nxv16f16_neg_splat_commute(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {3173; CHECK-LABEL: vfnmsub_vf_nxv16f16_neg_splat_commute:3174; CHECK:       # %bb.0:3175; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma3176; CHECK-NEXT:    vfnmsub.vf v8, fa0, v12, v0.t3177; CHECK-NEXT:    ret3178  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 03179  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer3180  %negvb = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x i1> %m, i32 %evl)3181  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %negvb, <vscale x 16 x half> %va, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 %evl)3182  ret <vscale x 16 x half> %v3183}3184 3185define <vscale x 16 x half> @vfnmsub_vf_nxv16f16_neg_splat_unmasked(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, i32 zeroext %evl) {3186; CHECK-LABEL: vfnmsub_vf_nxv16f16_neg_splat_unmasked:3187; CHECK:       # %bb.0:3188; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma3189; CHECK-NEXT:    vfnmsub.vf v8, fa0, v123190; CHECK-NEXT:    ret3191  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 03192  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer3193  %negvb = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x i1> splat (i1 true), i32 %evl)3194  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %negvb, <vscale x 16 x half> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)3195  ret <vscale x 16 x half> %v3196}3197 3198define <vscale x 16 x half> @vfnmsub_vf_nxv16f16_neg_splat_unmasked_commute(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, i32 zeroext %evl) {3199; CHECK-LABEL: vfnmsub_vf_nxv16f16_neg_splat_unmasked_commute:3200; CHECK:       # %bb.0:3201; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma3202; CHECK-NEXT:    vfnmsub.vf v8, fa0, v123203; CHECK-NEXT:    ret3204  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 03205  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer3206  %negvb = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x i1> splat (i1 true), i32 %evl)3207  %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %negvb, <vscale x 16 x half> %va, <vscale x 16 x half> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)3208  ret <vscale x 16 x half> %v3209}3210 3211define <vscale x 32 x half> @vfmsub_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %b, <vscale x 32 x half> %c, <vscale x 32 x i1> %m, i32 zeroext %evl) {3212; CHECK-LABEL: vfmsub_vv_nxv32f16:3213; CHECK:       # %bb.0:3214; CHECK-NEXT:    vl8re16.v v24, (a0)3215; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma3216; CHECK-NEXT:    vfmsub.vv v16, v8, v24, v0.t3217; CHECK-NEXT:    vmv.v.v v8, v163218; CHECK-NEXT:    ret3219  %negc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %c, <vscale x 32 x i1> %m, i32 %evl)3220  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %b, <vscale x 32 x half> %negc, <vscale x 32 x i1> %m, i32 %evl)3221  ret <vscale x 32 x half> %v3222}3223 3224define <vscale x 32 x half> @vfmsub_vv_nxv32f16_unmasked(<vscale x 32 x half> %va, <vscale x 32 x half> %b, <vscale x 32 x half> %c, i32 zeroext %evl) {3225; CHECK-LABEL: vfmsub_vv_nxv32f16_unmasked:3226; CHECK:       # %bb.0:3227; CHECK-NEXT:    vl8re16.v v24, (a0)3228; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma3229; CHECK-NEXT:    vfmsub.vv v8, v16, v243230; CHECK-NEXT:    ret3231  %negc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %c, <vscale x 32 x i1> splat (i1 true), i32 %evl)3232  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %b, <vscale x 32 x half> %negc, <vscale x 32 x i1> splat (i1 true), i32 %evl)3233  ret <vscale x 32 x half> %v3234}3235 3236define <vscale x 32 x half> @vfmsub_vf_nxv32f16(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 zeroext %evl) {3237; CHECK-LABEL: vfmsub_vf_nxv32f16:3238; CHECK:       # %bb.0:3239; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma3240; CHECK-NEXT:    vfmsub.vf v8, fa0, v16, v0.t3241; CHECK-NEXT:    ret3242  %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 03243  %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3244  %negvc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 %evl)3245  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, <vscale x 32 x half> %negvc, <vscale x 32 x i1> %m, i32 %evl)3246  ret <vscale x 32 x half> %v3247}3248 3249define <vscale x 32 x half> @vfmsub_vf_nxv32f16_commute(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 zeroext %evl) {3250; CHECK-LABEL: vfmsub_vf_nxv32f16_commute:3251; CHECK:       # %bb.0:3252; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma3253; CHECK-NEXT:    vfmsub.vf v8, fa0, v16, v0.t3254; CHECK-NEXT:    ret3255  %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 03256  %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3257  %negvc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 %evl)3258  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x half> %va, <vscale x 32 x half> %negvc, <vscale x 32 x i1> %m, i32 %evl)3259  ret <vscale x 32 x half> %v3260}3261 3262define <vscale x 32 x half> @vfmsub_vf_nxv32f16_unmasked(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, i32 zeroext %evl) {3263; CHECK-LABEL: vfmsub_vf_nxv32f16_unmasked:3264; CHECK:       # %bb.0:3265; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma3266; CHECK-NEXT:    vfmsub.vf v8, fa0, v163267; CHECK-NEXT:    ret3268  %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 03269  %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3270  %negvc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vc, <vscale x 32 x i1> splat (i1 true), i32 %evl)3271  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, <vscale x 32 x half> %negvc, <vscale x 32 x i1> splat (i1 true), i32 %evl)3272  ret <vscale x 32 x half> %v3273}3274 3275define <vscale x 32 x half> @vfmsub_vf_nxv32f16_unmasked_commute(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, i32 zeroext %evl) {3276; CHECK-LABEL: vfmsub_vf_nxv32f16_unmasked_commute:3277; CHECK:       # %bb.0:3278; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma3279; CHECK-NEXT:    vfmsub.vf v8, fa0, v163280; CHECK-NEXT:    ret3281  %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 03282  %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3283  %negvc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vc, <vscale x 32 x i1> splat (i1 true), i32 %evl)3284  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x half> %va, <vscale x 32 x half> %negvc, <vscale x 32 x i1> splat (i1 true), i32 %evl)3285  ret <vscale x 32 x half> %v3286}3287 3288define <vscale x 32 x half> @vfnmadd_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %b, <vscale x 32 x half> %c, <vscale x 32 x i1> %m, i32 zeroext %evl) {3289; CHECK-LABEL: vfnmadd_vv_nxv32f16:3290; CHECK:       # %bb.0:3291; CHECK-NEXT:    vl8re16.v v24, (a0)3292; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma3293; CHECK-NEXT:    vfnmadd.vv v16, v8, v24, v0.t3294; CHECK-NEXT:    vmv.v.v v8, v163295; CHECK-NEXT:    ret3296  %negb = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %b, <vscale x 32 x i1> %m, i32 %evl)3297  %negc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %c, <vscale x 32 x i1> %m, i32 %evl)3298  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %negb, <vscale x 32 x half> %negc, <vscale x 32 x i1> %m, i32 %evl)3299  ret <vscale x 32 x half> %v3300}3301 3302define <vscale x 32 x half> @vfnmadd_vv_nxv32f16_commuted(<vscale x 32 x half> %va, <vscale x 32 x half> %b, <vscale x 32 x half> %c, <vscale x 32 x i1> %m, i32 zeroext %evl) {3303; CHECK-LABEL: vfnmadd_vv_nxv32f16_commuted:3304; CHECK:       # %bb.0:3305; CHECK-NEXT:    vl8re16.v v24, (a0)3306; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma3307; CHECK-NEXT:    vfnmadd.vv v8, v16, v24, v0.t3308; CHECK-NEXT:    ret3309  %negb = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %b, <vscale x 32 x i1> %m, i32 %evl)3310  %negc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %c, <vscale x 32 x i1> %m, i32 %evl)3311  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %negb, <vscale x 32 x half> %va, <vscale x 32 x half> %negc, <vscale x 32 x i1> %m, i32 %evl)3312  ret <vscale x 32 x half> %v3313}3314 3315define <vscale x 32 x half> @vfnmadd_vv_nxv32f16_unmasked(<vscale x 32 x half> %va, <vscale x 32 x half> %b, <vscale x 32 x half> %c, i32 zeroext %evl) {3316; CHECK-LABEL: vfnmadd_vv_nxv32f16_unmasked:3317; CHECK:       # %bb.0:3318; CHECK-NEXT:    vl8re16.v v24, (a0)3319; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma3320; CHECK-NEXT:    vfnmadd.vv v8, v16, v243321; CHECK-NEXT:    ret3322  %negb = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %b, <vscale x 32 x i1> splat (i1 true), i32 %evl)3323  %negc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %c, <vscale x 32 x i1> splat (i1 true), i32 %evl)3324  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %negb, <vscale x 32 x half> %negc, <vscale x 32 x i1> splat (i1 true), i32 %evl)3325  ret <vscale x 32 x half> %v3326}3327 3328define <vscale x 32 x half> @vfnmadd_vv_nxv32f16_unmasked_commuted(<vscale x 32 x half> %va, <vscale x 32 x half> %b, <vscale x 32 x half> %c, i32 zeroext %evl) {3329; CHECK-LABEL: vfnmadd_vv_nxv32f16_unmasked_commuted:3330; CHECK:       # %bb.0:3331; CHECK-NEXT:    vl8re16.v v24, (a0)3332; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma3333; CHECK-NEXT:    vfnmadd.vv v8, v16, v243334; CHECK-NEXT:    ret3335  %negb = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %b, <vscale x 32 x i1> splat (i1 true), i32 %evl)3336  %negc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %c, <vscale x 32 x i1> splat (i1 true), i32 %evl)3337  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %negb, <vscale x 32 x half> %va, <vscale x 32 x half> %negc, <vscale x 32 x i1> splat (i1 true), i32 %evl)3338  ret <vscale x 32 x half> %v3339}3340 3341define <vscale x 32 x half> @vfnmadd_vf_nxv32f16(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 zeroext %evl) {3342; CHECK-LABEL: vfnmadd_vf_nxv32f16:3343; CHECK:       # %bb.0:3344; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma3345; CHECK-NEXT:    vfnmadd.vf v8, fa0, v16, v0.t3346; CHECK-NEXT:    ret3347  %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 03348  %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3349  %negva = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x i1> %m, i32 %evl)3350  %negvc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 %evl)3351  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %negva, <vscale x 32 x half> %vb, <vscale x 32 x half> %negvc, <vscale x 32 x i1> %m, i32 %evl)3352  ret <vscale x 32 x half> %v3353}3354 3355define <vscale x 32 x half> @vfnmadd_vf_nxv32f16_commute(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 zeroext %evl) {3356; CHECK-LABEL: vfnmadd_vf_nxv32f16_commute:3357; CHECK:       # %bb.0:3358; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma3359; CHECK-NEXT:    vfnmadd.vf v8, fa0, v16, v0.t3360; CHECK-NEXT:    ret3361  %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 03362  %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3363  %negva = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x i1> %m, i32 %evl)3364  %negvc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 %evl)3365  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x half> %negva, <vscale x 32 x half> %negvc, <vscale x 32 x i1> %m, i32 %evl)3366  ret <vscale x 32 x half> %v3367}3368 3369define <vscale x 32 x half> @vfnmadd_vf_nxv32f16_unmasked(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, i32 zeroext %evl) {3370; CHECK-LABEL: vfnmadd_vf_nxv32f16_unmasked:3371; CHECK:       # %bb.0:3372; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma3373; CHECK-NEXT:    vfnmadd.vf v8, fa0, v163374; CHECK-NEXT:    ret3375  %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 03376  %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3377  %negva = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x i1> splat (i1 true), i32 %evl)3378  %negvc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vc, <vscale x 32 x i1> splat (i1 true), i32 %evl)3379  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %negva, <vscale x 32 x half> %vb, <vscale x 32 x half> %negvc, <vscale x 32 x i1> splat (i1 true), i32 %evl)3380  ret <vscale x 32 x half> %v3381}3382 3383define <vscale x 32 x half> @vfnmadd_vf_nxv32f16_unmasked_commute(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, i32 zeroext %evl) {3384; CHECK-LABEL: vfnmadd_vf_nxv32f16_unmasked_commute:3385; CHECK:       # %bb.0:3386; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma3387; CHECK-NEXT:    vfnmadd.vf v8, fa0, v163388; CHECK-NEXT:    ret3389  %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 03390  %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3391  %negva = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x i1> splat (i1 true), i32 %evl)3392  %negvc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vc, <vscale x 32 x i1> splat (i1 true), i32 %evl)3393  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x half> %negva, <vscale x 32 x half> %negvc, <vscale x 32 x i1> splat (i1 true), i32 %evl)3394  ret <vscale x 32 x half> %v3395}3396 3397define <vscale x 32 x half> @vfnmadd_vf_nxv32f16_neg_splat(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 zeroext %evl) {3398; CHECK-LABEL: vfnmadd_vf_nxv32f16_neg_splat:3399; CHECK:       # %bb.0:3400; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma3401; CHECK-NEXT:    vfnmadd.vf v8, fa0, v16, v0.t3402; CHECK-NEXT:    ret3403  %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 03404  %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3405  %negvb = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x i1> %m, i32 %evl)3406  %negvc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 %evl)3407  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %negvb, <vscale x 32 x half> %negvc, <vscale x 32 x i1> %m, i32 %evl)3408  ret <vscale x 32 x half> %v3409}3410 3411define <vscale x 32 x half> @vfnmadd_vf_nxv32f16_neg_splat_commute(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 zeroext %evl) {3412; CHECK-LABEL: vfnmadd_vf_nxv32f16_neg_splat_commute:3413; CHECK:       # %bb.0:3414; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma3415; CHECK-NEXT:    vfnmadd.vf v8, fa0, v16, v0.t3416; CHECK-NEXT:    ret3417  %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 03418  %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3419  %negvb = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x i1> %m, i32 %evl)3420  %negvc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 %evl)3421  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %negvb, <vscale x 32 x half> %va, <vscale x 32 x half> %negvc, <vscale x 32 x i1> %m, i32 %evl)3422  ret <vscale x 32 x half> %v3423}3424 3425define <vscale x 32 x half> @vfnmadd_vf_nxv32f16_neg_splat_unmasked(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, i32 zeroext %evl) {3426; CHECK-LABEL: vfnmadd_vf_nxv32f16_neg_splat_unmasked:3427; CHECK:       # %bb.0:3428; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma3429; CHECK-NEXT:    vfnmadd.vf v8, fa0, v163430; CHECK-NEXT:    ret3431  %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 03432  %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3433  %negvb = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x i1> splat (i1 true), i32 %evl)3434  %negvc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vc, <vscale x 32 x i1> splat (i1 true), i32 %evl)3435  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %negvb, <vscale x 32 x half> %negvc, <vscale x 32 x i1> splat (i1 true), i32 %evl)3436  ret <vscale x 32 x half> %v3437}3438 3439define <vscale x 32 x half> @vfnmadd_vf_nxv32f16_neg_splat_unmasked_commute(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, i32 zeroext %evl) {3440; CHECK-LABEL: vfnmadd_vf_nxv32f16_neg_splat_unmasked_commute:3441; CHECK:       # %bb.0:3442; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma3443; CHECK-NEXT:    vfnmadd.vf v8, fa0, v163444; CHECK-NEXT:    ret3445  %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 03446  %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3447  %negvb = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x i1> splat (i1 true), i32 %evl)3448  %negvc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vc, <vscale x 32 x i1> splat (i1 true), i32 %evl)3449  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %negvb, <vscale x 32 x half> %va, <vscale x 32 x half> %negvc, <vscale x 32 x i1> splat (i1 true), i32 %evl)3450  ret <vscale x 32 x half> %v3451}3452 3453define <vscale x 32 x half> @vfnmsub_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %b, <vscale x 32 x half> %c, <vscale x 32 x i1> %m, i32 zeroext %evl) {3454; CHECK-LABEL: vfnmsub_vv_nxv32f16:3455; CHECK:       # %bb.0:3456; CHECK-NEXT:    vl8re16.v v24, (a0)3457; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma3458; CHECK-NEXT:    vfnmadd.vv v16, v8, v24, v0.t3459; CHECK-NEXT:    vmv.v.v v8, v163460; CHECK-NEXT:    ret3461  %negb = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %b, <vscale x 32 x i1> %m, i32 %evl)3462  %negc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %c, <vscale x 32 x i1> %m, i32 %evl)3463  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %negb, <vscale x 32 x half> %negc, <vscale x 32 x i1> %m, i32 %evl)3464  ret <vscale x 32 x half> %v3465}3466 3467define <vscale x 32 x half> @vfnmsub_vv_nxv32f16_commuted(<vscale x 32 x half> %va, <vscale x 32 x half> %b, <vscale x 32 x half> %c, <vscale x 32 x i1> %m, i32 zeroext %evl) {3468; CHECK-LABEL: vfnmsub_vv_nxv32f16_commuted:3469; CHECK:       # %bb.0:3470; CHECK-NEXT:    vl8re16.v v24, (a0)3471; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma3472; CHECK-NEXT:    vfnmadd.vv v8, v16, v24, v0.t3473; CHECK-NEXT:    ret3474  %negb = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %b, <vscale x 32 x i1> %m, i32 %evl)3475  %negc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %c, <vscale x 32 x i1> %m, i32 %evl)3476  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %negb, <vscale x 32 x half> %va, <vscale x 32 x half> %negc, <vscale x 32 x i1> %m, i32 %evl)3477  ret <vscale x 32 x half> %v3478}3479 3480define <vscale x 32 x half> @vfnmsub_vv_nxv32f16_unmasked(<vscale x 32 x half> %va, <vscale x 32 x half> %b, <vscale x 32 x half> %c, i32 zeroext %evl) {3481; CHECK-LABEL: vfnmsub_vv_nxv32f16_unmasked:3482; CHECK:       # %bb.0:3483; CHECK-NEXT:    vl8re16.v v24, (a0)3484; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma3485; CHECK-NEXT:    vfnmadd.vv v8, v16, v243486; CHECK-NEXT:    ret3487  %negb = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %b, <vscale x 32 x i1> splat (i1 true), i32 %evl)3488  %negc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %c, <vscale x 32 x i1> splat (i1 true), i32 %evl)3489  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %negb, <vscale x 32 x half> %negc, <vscale x 32 x i1> splat (i1 true), i32 %evl)3490  ret <vscale x 32 x half> %v3491}3492 3493define <vscale x 32 x half> @vfnmsub_vv_nxv32f16_unmasked_commuted(<vscale x 32 x half> %va, <vscale x 32 x half> %b, <vscale x 32 x half> %c, i32 zeroext %evl) {3494; CHECK-LABEL: vfnmsub_vv_nxv32f16_unmasked_commuted:3495; CHECK:       # %bb.0:3496; CHECK-NEXT:    vl8re16.v v24, (a0)3497; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma3498; CHECK-NEXT:    vfnmadd.vv v8, v16, v243499; CHECK-NEXT:    ret3500  %negb = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %b, <vscale x 32 x i1> splat (i1 true), i32 %evl)3501  %negc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %c, <vscale x 32 x i1> splat (i1 true), i32 %evl)3502  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %negb, <vscale x 32 x half> %va, <vscale x 32 x half> %negc, <vscale x 32 x i1> splat (i1 true), i32 %evl)3503  ret <vscale x 32 x half> %v3504}3505 3506define <vscale x 32 x half> @vfnmsub_vf_nxv32f16(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 zeroext %evl) {3507; CHECK-LABEL: vfnmsub_vf_nxv32f16:3508; CHECK:       # %bb.0:3509; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma3510; CHECK-NEXT:    vfnmsub.vf v8, fa0, v16, v0.t3511; CHECK-NEXT:    ret3512  %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 03513  %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3514  %negva = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x i1> %m, i32 %evl)3515  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %negva, <vscale x 32 x half> %vb, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 %evl)3516  ret <vscale x 32 x half> %v3517}3518 3519define <vscale x 32 x half> @vfnmsub_vf_nxv32f16_commute(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 zeroext %evl) {3520; CHECK-LABEL: vfnmsub_vf_nxv32f16_commute:3521; CHECK:       # %bb.0:3522; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma3523; CHECK-NEXT:    vfnmsub.vf v8, fa0, v16, v0.t3524; CHECK-NEXT:    ret3525  %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 03526  %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3527  %negva = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x i1> %m, i32 %evl)3528  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x half> %negva, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 %evl)3529  ret <vscale x 32 x half> %v3530}3531 3532define <vscale x 32 x half> @vfnmsub_vf_nxv32f16_unmasked(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, i32 zeroext %evl) {3533; CHECK-LABEL: vfnmsub_vf_nxv32f16_unmasked:3534; CHECK:       # %bb.0:3535; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma3536; CHECK-NEXT:    vfnmsub.vf v8, fa0, v163537; CHECK-NEXT:    ret3538  %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 03539  %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3540  %negva = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x i1> splat (i1 true), i32 %evl)3541  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %negva, <vscale x 32 x half> %vb, <vscale x 32 x half> %vc, <vscale x 32 x i1> splat (i1 true), i32 %evl)3542  ret <vscale x 32 x half> %v3543}3544 3545define <vscale x 32 x half> @vfnmsub_vf_nxv32f16_unmasked_commute(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, i32 zeroext %evl) {3546; CHECK-LABEL: vfnmsub_vf_nxv32f16_unmasked_commute:3547; CHECK:       # %bb.0:3548; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma3549; CHECK-NEXT:    vfnmsub.vf v8, fa0, v163550; CHECK-NEXT:    ret3551  %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 03552  %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3553  %negva = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x i1> splat (i1 true), i32 %evl)3554  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x half> %negva, <vscale x 32 x half> %vc, <vscale x 32 x i1> splat (i1 true), i32 %evl)3555  ret <vscale x 32 x half> %v3556}3557 3558define <vscale x 32 x half> @vfnmsub_vf_nxv32f16_neg_splat(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 zeroext %evl) {3559; CHECK-LABEL: vfnmsub_vf_nxv32f16_neg_splat:3560; CHECK:       # %bb.0:3561; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma3562; CHECK-NEXT:    vfnmsub.vf v8, fa0, v16, v0.t3563; CHECK-NEXT:    ret3564  %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 03565  %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3566  %negvb = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x i1> %m, i32 %evl)3567  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %negvb, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 %evl)3568  ret <vscale x 32 x half> %v3569}3570 3571define <vscale x 32 x half> @vfnmsub_vf_nxv32f16_neg_splat_commute(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 zeroext %evl) {3572; CHECK-LABEL: vfnmsub_vf_nxv32f16_neg_splat_commute:3573; CHECK:       # %bb.0:3574; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma3575; CHECK-NEXT:    vfnmsub.vf v8, fa0, v16, v0.t3576; CHECK-NEXT:    ret3577  %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 03578  %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3579  %negvb = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x i1> %m, i32 %evl)3580  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %negvb, <vscale x 32 x half> %va, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 %evl)3581  ret <vscale x 32 x half> %v3582}3583 3584define <vscale x 32 x half> @vfnmsub_vf_nxv32f16_neg_splat_unmasked(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, i32 zeroext %evl) {3585; CHECK-LABEL: vfnmsub_vf_nxv32f16_neg_splat_unmasked:3586; CHECK:       # %bb.0:3587; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma3588; CHECK-NEXT:    vfnmsub.vf v8, fa0, v163589; CHECK-NEXT:    ret3590  %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 03591  %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3592  %negvb = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x i1> splat (i1 true), i32 %evl)3593  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %negvb, <vscale x 32 x half> %vc, <vscale x 32 x i1> splat (i1 true), i32 %evl)3594  ret <vscale x 32 x half> %v3595}3596 3597define <vscale x 32 x half> @vfnmsub_vf_nxv32f16_neg_splat_unmasked_commute(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, i32 zeroext %evl) {3598; CHECK-LABEL: vfnmsub_vf_nxv32f16_neg_splat_unmasked_commute:3599; CHECK:       # %bb.0:3600; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma3601; CHECK-NEXT:    vfnmsub.vf v8, fa0, v163602; CHECK-NEXT:    ret3603  %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 03604  %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3605  %negvb = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x i1> splat (i1 true), i32 %evl)3606  %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %negvb, <vscale x 32 x half> %va, <vscale x 32 x half> %vc, <vscale x 32 x i1> splat (i1 true), i32 %evl)3607  ret <vscale x 32 x half> %v3608}3609 3610define <vscale x 1 x float> @vfmsub_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %b, <vscale x 1 x float> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {3611; CHECK-LABEL: vfmsub_vv_nxv1f32:3612; CHECK:       # %bb.0:3613; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma3614; CHECK-NEXT:    vfmsub.vv v9, v8, v10, v0.t3615; CHECK-NEXT:    vmv1r.v v8, v93616; CHECK-NEXT:    ret3617  %negc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %c, <vscale x 1 x i1> %m, i32 %evl)3618  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %b, <vscale x 1 x float> %negc, <vscale x 1 x i1> %m, i32 %evl)3619  ret <vscale x 1 x float> %v3620}3621 3622define <vscale x 1 x float> @vfmsub_vv_nxv1f32_unmasked(<vscale x 1 x float> %va, <vscale x 1 x float> %b, <vscale x 1 x float> %c, i32 zeroext %evl) {3623; CHECK-LABEL: vfmsub_vv_nxv1f32_unmasked:3624; CHECK:       # %bb.0:3625; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma3626; CHECK-NEXT:    vfmsub.vv v8, v9, v103627; CHECK-NEXT:    ret3628  %negc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)3629  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %b, <vscale x 1 x float> %negc, <vscale x 1 x i1> splat (i1 true), i32 %evl)3630  ret <vscale x 1 x float> %v3631}3632 3633define <vscale x 1 x float> @vfmsub_vf_nxv1f32(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {3634; CHECK-LABEL: vfmsub_vf_nxv1f32:3635; CHECK:       # %bb.0:3636; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma3637; CHECK-NEXT:    vfmsub.vf v8, fa0, v9, v0.t3638; CHECK-NEXT:    ret3639  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 03640  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3641  %negvc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 %evl)3642  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, <vscale x 1 x float> %negvc, <vscale x 1 x i1> %m, i32 %evl)3643  ret <vscale x 1 x float> %v3644}3645 3646define <vscale x 1 x float> @vfmsub_vf_nxv1f32_commute(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {3647; CHECK-LABEL: vfmsub_vf_nxv1f32_commute:3648; CHECK:       # %bb.0:3649; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma3650; CHECK-NEXT:    vfmsub.vf v8, fa0, v9, v0.t3651; CHECK-NEXT:    ret3652  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 03653  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3654  %negvc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 %evl)3655  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x float> %va, <vscale x 1 x float> %negvc, <vscale x 1 x i1> %m, i32 %evl)3656  ret <vscale x 1 x float> %v3657}3658 3659define <vscale x 1 x float> @vfmsub_vf_nxv1f32_unmasked(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, i32 zeroext %evl) {3660; CHECK-LABEL: vfmsub_vf_nxv1f32_unmasked:3661; CHECK:       # %bb.0:3662; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma3663; CHECK-NEXT:    vfmsub.vf v8, fa0, v93664; CHECK-NEXT:    ret3665  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 03666  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3667  %negvc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)3668  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, <vscale x 1 x float> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)3669  ret <vscale x 1 x float> %v3670}3671 3672define <vscale x 1 x float> @vfmsub_vf_nxv1f32_unmasked_commute(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, i32 zeroext %evl) {3673; CHECK-LABEL: vfmsub_vf_nxv1f32_unmasked_commute:3674; CHECK:       # %bb.0:3675; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma3676; CHECK-NEXT:    vfmsub.vf v8, fa0, v93677; CHECK-NEXT:    ret3678  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 03679  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3680  %negvc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)3681  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x float> %va, <vscale x 1 x float> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)3682  ret <vscale x 1 x float> %v3683}3684 3685define <vscale x 1 x float> @vfnmadd_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %b, <vscale x 1 x float> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {3686; CHECK-LABEL: vfnmadd_vv_nxv1f32:3687; CHECK:       # %bb.0:3688; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma3689; CHECK-NEXT:    vfnmadd.vv v9, v8, v10, v0.t3690; CHECK-NEXT:    vmv1r.v v8, v93691; CHECK-NEXT:    ret3692  %negb = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %b, <vscale x 1 x i1> %m, i32 %evl)3693  %negc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %c, <vscale x 1 x i1> %m, i32 %evl)3694  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %negb, <vscale x 1 x float> %negc, <vscale x 1 x i1> %m, i32 %evl)3695  ret <vscale x 1 x float> %v3696}3697 3698define <vscale x 1 x float> @vfnmadd_vv_nxv1f32_commuted(<vscale x 1 x float> %va, <vscale x 1 x float> %b, <vscale x 1 x float> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {3699; CHECK-LABEL: vfnmadd_vv_nxv1f32_commuted:3700; CHECK:       # %bb.0:3701; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma3702; CHECK-NEXT:    vfnmadd.vv v8, v9, v10, v0.t3703; CHECK-NEXT:    ret3704  %negb = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %b, <vscale x 1 x i1> %m, i32 %evl)3705  %negc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %c, <vscale x 1 x i1> %m, i32 %evl)3706  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %negb, <vscale x 1 x float> %va, <vscale x 1 x float> %negc, <vscale x 1 x i1> %m, i32 %evl)3707  ret <vscale x 1 x float> %v3708}3709 3710define <vscale x 1 x float> @vfnmadd_vv_nxv1f32_unmasked(<vscale x 1 x float> %va, <vscale x 1 x float> %b, <vscale x 1 x float> %c, i32 zeroext %evl) {3711; CHECK-LABEL: vfnmadd_vv_nxv1f32_unmasked:3712; CHECK:       # %bb.0:3713; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma3714; CHECK-NEXT:    vfnmadd.vv v8, v9, v103715; CHECK-NEXT:    ret3716  %negb = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)3717  %negc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)3718  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %negb, <vscale x 1 x float> %negc, <vscale x 1 x i1> splat (i1 true), i32 %evl)3719  ret <vscale x 1 x float> %v3720}3721 3722define <vscale x 1 x float> @vfnmadd_vv_nxv1f32_unmasked_commuted(<vscale x 1 x float> %va, <vscale x 1 x float> %b, <vscale x 1 x float> %c, i32 zeroext %evl) {3723; CHECK-LABEL: vfnmadd_vv_nxv1f32_unmasked_commuted:3724; CHECK:       # %bb.0:3725; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma3726; CHECK-NEXT:    vfnmadd.vv v8, v9, v103727; CHECK-NEXT:    ret3728  %negb = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)3729  %negc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)3730  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %negb, <vscale x 1 x float> %va, <vscale x 1 x float> %negc, <vscale x 1 x i1> splat (i1 true), i32 %evl)3731  ret <vscale x 1 x float> %v3732}3733 3734define <vscale x 1 x float> @vfnmadd_vf_nxv1f32(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {3735; CHECK-LABEL: vfnmadd_vf_nxv1f32:3736; CHECK:       # %bb.0:3737; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma3738; CHECK-NEXT:    vfnmadd.vf v8, fa0, v9, v0.t3739; CHECK-NEXT:    ret3740  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 03741  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3742  %negva = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x i1> %m, i32 %evl)3743  %negvc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 %evl)3744  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %negva, <vscale x 1 x float> %vb, <vscale x 1 x float> %negvc, <vscale x 1 x i1> %m, i32 %evl)3745  ret <vscale x 1 x float> %v3746}3747 3748define <vscale x 1 x float> @vfnmadd_vf_nxv1f32_commute(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {3749; CHECK-LABEL: vfnmadd_vf_nxv1f32_commute:3750; CHECK:       # %bb.0:3751; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma3752; CHECK-NEXT:    vfnmadd.vf v8, fa0, v9, v0.t3753; CHECK-NEXT:    ret3754  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 03755  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3756  %negva = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x i1> %m, i32 %evl)3757  %negvc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 %evl)3758  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x float> %negva, <vscale x 1 x float> %negvc, <vscale x 1 x i1> %m, i32 %evl)3759  ret <vscale x 1 x float> %v3760}3761 3762define <vscale x 1 x float> @vfnmadd_vf_nxv1f32_unmasked(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, i32 zeroext %evl) {3763; CHECK-LABEL: vfnmadd_vf_nxv1f32_unmasked:3764; CHECK:       # %bb.0:3765; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma3766; CHECK-NEXT:    vfnmadd.vf v8, fa0, v93767; CHECK-NEXT:    ret3768  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 03769  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3770  %negva = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x i1> splat (i1 true), i32 %evl)3771  %negvc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)3772  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %negva, <vscale x 1 x float> %vb, <vscale x 1 x float> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)3773  ret <vscale x 1 x float> %v3774}3775 3776define <vscale x 1 x float> @vfnmadd_vf_nxv1f32_unmasked_commute(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, i32 zeroext %evl) {3777; CHECK-LABEL: vfnmadd_vf_nxv1f32_unmasked_commute:3778; CHECK:       # %bb.0:3779; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma3780; CHECK-NEXT:    vfnmadd.vf v8, fa0, v93781; CHECK-NEXT:    ret3782  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 03783  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3784  %negva = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x i1> splat (i1 true), i32 %evl)3785  %negvc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)3786  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x float> %negva, <vscale x 1 x float> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)3787  ret <vscale x 1 x float> %v3788}3789 3790define <vscale x 1 x float> @vfnmadd_vf_nxv1f32_neg_splat(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {3791; CHECK-LABEL: vfnmadd_vf_nxv1f32_neg_splat:3792; CHECK:       # %bb.0:3793; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma3794; CHECK-NEXT:    vfnmadd.vf v8, fa0, v9, v0.t3795; CHECK-NEXT:    ret3796  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 03797  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3798  %negvb = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x i1> %m, i32 %evl)3799  %negvc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 %evl)3800  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %negvb, <vscale x 1 x float> %negvc, <vscale x 1 x i1> %m, i32 %evl)3801  ret <vscale x 1 x float> %v3802}3803 3804define <vscale x 1 x float> @vfnmadd_vf_nxv1f32_neg_splat_commute(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {3805; CHECK-LABEL: vfnmadd_vf_nxv1f32_neg_splat_commute:3806; CHECK:       # %bb.0:3807; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma3808; CHECK-NEXT:    vfnmadd.vf v8, fa0, v9, v0.t3809; CHECK-NEXT:    ret3810  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 03811  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3812  %negvb = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x i1> %m, i32 %evl)3813  %negvc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 %evl)3814  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %negvb, <vscale x 1 x float> %va, <vscale x 1 x float> %negvc, <vscale x 1 x i1> %m, i32 %evl)3815  ret <vscale x 1 x float> %v3816}3817 3818define <vscale x 1 x float> @vfnmadd_vf_nxv1f32_neg_splat_unmasked(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, i32 zeroext %evl) {3819; CHECK-LABEL: vfnmadd_vf_nxv1f32_neg_splat_unmasked:3820; CHECK:       # %bb.0:3821; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma3822; CHECK-NEXT:    vfnmadd.vf v8, fa0, v93823; CHECK-NEXT:    ret3824  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 03825  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3826  %negvb = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)3827  %negvc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)3828  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %negvb, <vscale x 1 x float> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)3829  ret <vscale x 1 x float> %v3830}3831 3832define <vscale x 1 x float> @vfnmadd_vf_nxv1f32_neg_splat_unmasked_commute(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, i32 zeroext %evl) {3833; CHECK-LABEL: vfnmadd_vf_nxv1f32_neg_splat_unmasked_commute:3834; CHECK:       # %bb.0:3835; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma3836; CHECK-NEXT:    vfnmadd.vf v8, fa0, v93837; CHECK-NEXT:    ret3838  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 03839  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3840  %negvb = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)3841  %negvc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)3842  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %negvb, <vscale x 1 x float> %va, <vscale x 1 x float> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)3843  ret <vscale x 1 x float> %v3844}3845 3846define <vscale x 1 x float> @vfnmsub_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %b, <vscale x 1 x float> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {3847; CHECK-LABEL: vfnmsub_vv_nxv1f32:3848; CHECK:       # %bb.0:3849; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma3850; CHECK-NEXT:    vfnmadd.vv v9, v8, v10, v0.t3851; CHECK-NEXT:    vmv1r.v v8, v93852; CHECK-NEXT:    ret3853  %negb = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %b, <vscale x 1 x i1> %m, i32 %evl)3854  %negc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %c, <vscale x 1 x i1> %m, i32 %evl)3855  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %negb, <vscale x 1 x float> %negc, <vscale x 1 x i1> %m, i32 %evl)3856  ret <vscale x 1 x float> %v3857}3858 3859define <vscale x 1 x float> @vfnmsub_vv_nxv1f32_commuted(<vscale x 1 x float> %va, <vscale x 1 x float> %b, <vscale x 1 x float> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {3860; CHECK-LABEL: vfnmsub_vv_nxv1f32_commuted:3861; CHECK:       # %bb.0:3862; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma3863; CHECK-NEXT:    vfnmadd.vv v8, v9, v10, v0.t3864; CHECK-NEXT:    ret3865  %negb = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %b, <vscale x 1 x i1> %m, i32 %evl)3866  %negc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %c, <vscale x 1 x i1> %m, i32 %evl)3867  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %negb, <vscale x 1 x float> %va, <vscale x 1 x float> %negc, <vscale x 1 x i1> %m, i32 %evl)3868  ret <vscale x 1 x float> %v3869}3870 3871define <vscale x 1 x float> @vfnmsub_vv_nxv1f32_unmasked(<vscale x 1 x float> %va, <vscale x 1 x float> %b, <vscale x 1 x float> %c, i32 zeroext %evl) {3872; CHECK-LABEL: vfnmsub_vv_nxv1f32_unmasked:3873; CHECK:       # %bb.0:3874; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma3875; CHECK-NEXT:    vfnmadd.vv v8, v9, v103876; CHECK-NEXT:    ret3877  %negb = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)3878  %negc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)3879  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %negb, <vscale x 1 x float> %negc, <vscale x 1 x i1> splat (i1 true), i32 %evl)3880  ret <vscale x 1 x float> %v3881}3882 3883define <vscale x 1 x float> @vfnmsub_vv_nxv1f32_unmasked_commuted(<vscale x 1 x float> %va, <vscale x 1 x float> %b, <vscale x 1 x float> %c, i32 zeroext %evl) {3884; CHECK-LABEL: vfnmsub_vv_nxv1f32_unmasked_commuted:3885; CHECK:       # %bb.0:3886; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma3887; CHECK-NEXT:    vfnmadd.vv v8, v9, v103888; CHECK-NEXT:    ret3889  %negb = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)3890  %negc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)3891  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %negb, <vscale x 1 x float> %va, <vscale x 1 x float> %negc, <vscale x 1 x i1> splat (i1 true), i32 %evl)3892  ret <vscale x 1 x float> %v3893}3894 3895define <vscale x 1 x float> @vfnmsub_vf_nxv1f32(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {3896; CHECK-LABEL: vfnmsub_vf_nxv1f32:3897; CHECK:       # %bb.0:3898; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma3899; CHECK-NEXT:    vfnmsub.vf v8, fa0, v9, v0.t3900; CHECK-NEXT:    ret3901  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 03902  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3903  %negva = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x i1> %m, i32 %evl)3904  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %negva, <vscale x 1 x float> %vb, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 %evl)3905  ret <vscale x 1 x float> %v3906}3907 3908define <vscale x 1 x float> @vfnmsub_vf_nxv1f32_commute(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {3909; CHECK-LABEL: vfnmsub_vf_nxv1f32_commute:3910; CHECK:       # %bb.0:3911; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma3912; CHECK-NEXT:    vfnmsub.vf v8, fa0, v9, v0.t3913; CHECK-NEXT:    ret3914  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 03915  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3916  %negva = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x i1> %m, i32 %evl)3917  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x float> %negva, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 %evl)3918  ret <vscale x 1 x float> %v3919}3920 3921define <vscale x 1 x float> @vfnmsub_vf_nxv1f32_unmasked(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, i32 zeroext %evl) {3922; CHECK-LABEL: vfnmsub_vf_nxv1f32_unmasked:3923; CHECK:       # %bb.0:3924; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma3925; CHECK-NEXT:    vfnmsub.vf v8, fa0, v93926; CHECK-NEXT:    ret3927  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 03928  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3929  %negva = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x i1> splat (i1 true), i32 %evl)3930  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %negva, <vscale x 1 x float> %vb, <vscale x 1 x float> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)3931  ret <vscale x 1 x float> %v3932}3933 3934define <vscale x 1 x float> @vfnmsub_vf_nxv1f32_unmasked_commute(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, i32 zeroext %evl) {3935; CHECK-LABEL: vfnmsub_vf_nxv1f32_unmasked_commute:3936; CHECK:       # %bb.0:3937; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma3938; CHECK-NEXT:    vfnmsub.vf v8, fa0, v93939; CHECK-NEXT:    ret3940  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 03941  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3942  %negva = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x i1> splat (i1 true), i32 %evl)3943  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x float> %negva, <vscale x 1 x float> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)3944  ret <vscale x 1 x float> %v3945}3946 3947define <vscale x 1 x float> @vfnmsub_vf_nxv1f32_neg_splat(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {3948; CHECK-LABEL: vfnmsub_vf_nxv1f32_neg_splat:3949; CHECK:       # %bb.0:3950; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma3951; CHECK-NEXT:    vfnmsub.vf v8, fa0, v9, v0.t3952; CHECK-NEXT:    ret3953  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 03954  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3955  %negvb = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x i1> %m, i32 %evl)3956  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %negvb, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 %evl)3957  ret <vscale x 1 x float> %v3958}3959 3960define <vscale x 1 x float> @vfnmsub_vf_nxv1f32_neg_splat_commute(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {3961; CHECK-LABEL: vfnmsub_vf_nxv1f32_neg_splat_commute:3962; CHECK:       # %bb.0:3963; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma3964; CHECK-NEXT:    vfnmsub.vf v8, fa0, v9, v0.t3965; CHECK-NEXT:    ret3966  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 03967  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3968  %negvb = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x i1> %m, i32 %evl)3969  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %negvb, <vscale x 1 x float> %va, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 %evl)3970  ret <vscale x 1 x float> %v3971}3972 3973define <vscale x 1 x float> @vfnmsub_vf_nxv1f32_neg_splat_unmasked(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, i32 zeroext %evl) {3974; CHECK-LABEL: vfnmsub_vf_nxv1f32_neg_splat_unmasked:3975; CHECK:       # %bb.0:3976; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma3977; CHECK-NEXT:    vfnmsub.vf v8, fa0, v93978; CHECK-NEXT:    ret3979  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 03980  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3981  %negvb = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)3982  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %negvb, <vscale x 1 x float> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)3983  ret <vscale x 1 x float> %v3984}3985 3986define <vscale x 1 x float> @vfnmsub_vf_nxv1f32_neg_splat_unmasked_commute(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, i32 zeroext %evl) {3987; CHECK-LABEL: vfnmsub_vf_nxv1f32_neg_splat_unmasked_commute:3988; CHECK:       # %bb.0:3989; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma3990; CHECK-NEXT:    vfnmsub.vf v8, fa0, v93991; CHECK-NEXT:    ret3992  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 03993  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3994  %negvb = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)3995  %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %negvb, <vscale x 1 x float> %va, <vscale x 1 x float> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)3996  ret <vscale x 1 x float> %v3997}3998 3999define <vscale x 2 x float> @vfmsub_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %b, <vscale x 2 x float> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {4000; CHECK-LABEL: vfmsub_vv_nxv2f32:4001; CHECK:       # %bb.0:4002; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma4003; CHECK-NEXT:    vfmsub.vv v9, v8, v10, v0.t4004; CHECK-NEXT:    vmv.v.v v8, v94005; CHECK-NEXT:    ret4006  %negc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %c, <vscale x 2 x i1> %m, i32 %evl)4007  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %b, <vscale x 2 x float> %negc, <vscale x 2 x i1> %m, i32 %evl)4008  ret <vscale x 2 x float> %v4009}4010 4011define <vscale x 2 x float> @vfmsub_vv_nxv2f32_unmasked(<vscale x 2 x float> %va, <vscale x 2 x float> %b, <vscale x 2 x float> %c, i32 zeroext %evl) {4012; CHECK-LABEL: vfmsub_vv_nxv2f32_unmasked:4013; CHECK:       # %bb.0:4014; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma4015; CHECK-NEXT:    vfmsub.vv v8, v9, v104016; CHECK-NEXT:    ret4017  %negc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)4018  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %b, <vscale x 2 x float> %negc, <vscale x 2 x i1> splat (i1 true), i32 %evl)4019  ret <vscale x 2 x float> %v4020}4021 4022define <vscale x 2 x float> @vfmsub_vf_nxv2f32(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {4023; CHECK-LABEL: vfmsub_vf_nxv2f32:4024; CHECK:       # %bb.0:4025; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma4026; CHECK-NEXT:    vfmsub.vf v8, fa0, v9, v0.t4027; CHECK-NEXT:    ret4028  %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 04029  %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4030  %negvc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 %evl)4031  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, <vscale x 2 x float> %negvc, <vscale x 2 x i1> %m, i32 %evl)4032  ret <vscale x 2 x float> %v4033}4034 4035define <vscale x 2 x float> @vfmsub_vf_nxv2f32_commute(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {4036; CHECK-LABEL: vfmsub_vf_nxv2f32_commute:4037; CHECK:       # %bb.0:4038; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma4039; CHECK-NEXT:    vfmsub.vf v8, fa0, v9, v0.t4040; CHECK-NEXT:    ret4041  %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 04042  %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4043  %negvc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 %evl)4044  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x float> %va, <vscale x 2 x float> %negvc, <vscale x 2 x i1> %m, i32 %evl)4045  ret <vscale x 2 x float> %v4046}4047 4048define <vscale x 2 x float> @vfmsub_vf_nxv2f32_unmasked(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, i32 zeroext %evl) {4049; CHECK-LABEL: vfmsub_vf_nxv2f32_unmasked:4050; CHECK:       # %bb.0:4051; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma4052; CHECK-NEXT:    vfmsub.vf v8, fa0, v94053; CHECK-NEXT:    ret4054  %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 04055  %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4056  %negvc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)4057  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, <vscale x 2 x float> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)4058  ret <vscale x 2 x float> %v4059}4060 4061define <vscale x 2 x float> @vfmsub_vf_nxv2f32_unmasked_commute(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, i32 zeroext %evl) {4062; CHECK-LABEL: vfmsub_vf_nxv2f32_unmasked_commute:4063; CHECK:       # %bb.0:4064; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma4065; CHECK-NEXT:    vfmsub.vf v8, fa0, v94066; CHECK-NEXT:    ret4067  %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 04068  %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4069  %negvc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)4070  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x float> %va, <vscale x 2 x float> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)4071  ret <vscale x 2 x float> %v4072}4073 4074define <vscale x 2 x float> @vfnmadd_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %b, <vscale x 2 x float> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {4075; CHECK-LABEL: vfnmadd_vv_nxv2f32:4076; CHECK:       # %bb.0:4077; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma4078; CHECK-NEXT:    vfnmadd.vv v9, v8, v10, v0.t4079; CHECK-NEXT:    vmv.v.v v8, v94080; CHECK-NEXT:    ret4081  %negb = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %b, <vscale x 2 x i1> %m, i32 %evl)4082  %negc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %c, <vscale x 2 x i1> %m, i32 %evl)4083  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %negb, <vscale x 2 x float> %negc, <vscale x 2 x i1> %m, i32 %evl)4084  ret <vscale x 2 x float> %v4085}4086 4087define <vscale x 2 x float> @vfnmadd_vv_nxv2f32_commuted(<vscale x 2 x float> %va, <vscale x 2 x float> %b, <vscale x 2 x float> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {4088; CHECK-LABEL: vfnmadd_vv_nxv2f32_commuted:4089; CHECK:       # %bb.0:4090; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma4091; CHECK-NEXT:    vfnmadd.vv v8, v9, v10, v0.t4092; CHECK-NEXT:    ret4093  %negb = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %b, <vscale x 2 x i1> %m, i32 %evl)4094  %negc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %c, <vscale x 2 x i1> %m, i32 %evl)4095  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %negb, <vscale x 2 x float> %va, <vscale x 2 x float> %negc, <vscale x 2 x i1> %m, i32 %evl)4096  ret <vscale x 2 x float> %v4097}4098 4099define <vscale x 2 x float> @vfnmadd_vv_nxv2f32_unmasked(<vscale x 2 x float> %va, <vscale x 2 x float> %b, <vscale x 2 x float> %c, i32 zeroext %evl) {4100; CHECK-LABEL: vfnmadd_vv_nxv2f32_unmasked:4101; CHECK:       # %bb.0:4102; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma4103; CHECK-NEXT:    vfnmadd.vv v8, v9, v104104; CHECK-NEXT:    ret4105  %negb = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)4106  %negc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)4107  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %negb, <vscale x 2 x float> %negc, <vscale x 2 x i1> splat (i1 true), i32 %evl)4108  ret <vscale x 2 x float> %v4109}4110 4111define <vscale x 2 x float> @vfnmadd_vv_nxv2f32_unmasked_commuted(<vscale x 2 x float> %va, <vscale x 2 x float> %b, <vscale x 2 x float> %c, i32 zeroext %evl) {4112; CHECK-LABEL: vfnmadd_vv_nxv2f32_unmasked_commuted:4113; CHECK:       # %bb.0:4114; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma4115; CHECK-NEXT:    vfnmadd.vv v8, v9, v104116; CHECK-NEXT:    ret4117  %negb = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)4118  %negc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)4119  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %negb, <vscale x 2 x float> %va, <vscale x 2 x float> %negc, <vscale x 2 x i1> splat (i1 true), i32 %evl)4120  ret <vscale x 2 x float> %v4121}4122 4123define <vscale x 2 x float> @vfnmadd_vf_nxv2f32(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {4124; CHECK-LABEL: vfnmadd_vf_nxv2f32:4125; CHECK:       # %bb.0:4126; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma4127; CHECK-NEXT:    vfnmadd.vf v8, fa0, v9, v0.t4128; CHECK-NEXT:    ret4129  %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 04130  %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4131  %negva = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x i1> %m, i32 %evl)4132  %negvc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 %evl)4133  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %negva, <vscale x 2 x float> %vb, <vscale x 2 x float> %negvc, <vscale x 2 x i1> %m, i32 %evl)4134  ret <vscale x 2 x float> %v4135}4136 4137define <vscale x 2 x float> @vfnmadd_vf_nxv2f32_commute(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {4138; CHECK-LABEL: vfnmadd_vf_nxv2f32_commute:4139; CHECK:       # %bb.0:4140; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma4141; CHECK-NEXT:    vfnmadd.vf v8, fa0, v9, v0.t4142; CHECK-NEXT:    ret4143  %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 04144  %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4145  %negva = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x i1> %m, i32 %evl)4146  %negvc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 %evl)4147  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x float> %negva, <vscale x 2 x float> %negvc, <vscale x 2 x i1> %m, i32 %evl)4148  ret <vscale x 2 x float> %v4149}4150 4151define <vscale x 2 x float> @vfnmadd_vf_nxv2f32_unmasked(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, i32 zeroext %evl) {4152; CHECK-LABEL: vfnmadd_vf_nxv2f32_unmasked:4153; CHECK:       # %bb.0:4154; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma4155; CHECK-NEXT:    vfnmadd.vf v8, fa0, v94156; CHECK-NEXT:    ret4157  %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 04158  %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4159  %negva = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x i1> splat (i1 true), i32 %evl)4160  %negvc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)4161  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %negva, <vscale x 2 x float> %vb, <vscale x 2 x float> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)4162  ret <vscale x 2 x float> %v4163}4164 4165define <vscale x 2 x float> @vfnmadd_vf_nxv2f32_unmasked_commute(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, i32 zeroext %evl) {4166; CHECK-LABEL: vfnmadd_vf_nxv2f32_unmasked_commute:4167; CHECK:       # %bb.0:4168; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma4169; CHECK-NEXT:    vfnmadd.vf v8, fa0, v94170; CHECK-NEXT:    ret4171  %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 04172  %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4173  %negva = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x i1> splat (i1 true), i32 %evl)4174  %negvc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)4175  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x float> %negva, <vscale x 2 x float> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)4176  ret <vscale x 2 x float> %v4177}4178 4179define <vscale x 2 x float> @vfnmadd_vf_nxv2f32_neg_splat(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {4180; CHECK-LABEL: vfnmadd_vf_nxv2f32_neg_splat:4181; CHECK:       # %bb.0:4182; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma4183; CHECK-NEXT:    vfnmadd.vf v8, fa0, v9, v0.t4184; CHECK-NEXT:    ret4185  %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 04186  %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4187  %negvb = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x i1> %m, i32 %evl)4188  %negvc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 %evl)4189  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %negvb, <vscale x 2 x float> %negvc, <vscale x 2 x i1> %m, i32 %evl)4190  ret <vscale x 2 x float> %v4191}4192 4193define <vscale x 2 x float> @vfnmadd_vf_nxv2f32_neg_splat_commute(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {4194; CHECK-LABEL: vfnmadd_vf_nxv2f32_neg_splat_commute:4195; CHECK:       # %bb.0:4196; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma4197; CHECK-NEXT:    vfnmadd.vf v8, fa0, v9, v0.t4198; CHECK-NEXT:    ret4199  %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 04200  %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4201  %negvb = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x i1> %m, i32 %evl)4202  %negvc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 %evl)4203  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %negvb, <vscale x 2 x float> %va, <vscale x 2 x float> %negvc, <vscale x 2 x i1> %m, i32 %evl)4204  ret <vscale x 2 x float> %v4205}4206 4207define <vscale x 2 x float> @vfnmadd_vf_nxv2f32_neg_splat_unmasked(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, i32 zeroext %evl) {4208; CHECK-LABEL: vfnmadd_vf_nxv2f32_neg_splat_unmasked:4209; CHECK:       # %bb.0:4210; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma4211; CHECK-NEXT:    vfnmadd.vf v8, fa0, v94212; CHECK-NEXT:    ret4213  %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 04214  %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4215  %negvb = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)4216  %negvc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)4217  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %negvb, <vscale x 2 x float> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)4218  ret <vscale x 2 x float> %v4219}4220 4221define <vscale x 2 x float> @vfnmadd_vf_nxv2f32_neg_splat_unmasked_commute(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, i32 zeroext %evl) {4222; CHECK-LABEL: vfnmadd_vf_nxv2f32_neg_splat_unmasked_commute:4223; CHECK:       # %bb.0:4224; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma4225; CHECK-NEXT:    vfnmadd.vf v8, fa0, v94226; CHECK-NEXT:    ret4227  %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 04228  %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4229  %negvb = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)4230  %negvc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)4231  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %negvb, <vscale x 2 x float> %va, <vscale x 2 x float> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)4232  ret <vscale x 2 x float> %v4233}4234 4235define <vscale x 2 x float> @vfnmsub_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %b, <vscale x 2 x float> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {4236; CHECK-LABEL: vfnmsub_vv_nxv2f32:4237; CHECK:       # %bb.0:4238; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma4239; CHECK-NEXT:    vfnmadd.vv v9, v8, v10, v0.t4240; CHECK-NEXT:    vmv.v.v v8, v94241; CHECK-NEXT:    ret4242  %negb = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %b, <vscale x 2 x i1> %m, i32 %evl)4243  %negc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %c, <vscale x 2 x i1> %m, i32 %evl)4244  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %negb, <vscale x 2 x float> %negc, <vscale x 2 x i1> %m, i32 %evl)4245  ret <vscale x 2 x float> %v4246}4247 4248define <vscale x 2 x float> @vfnmsub_vv_nxv2f32_commuted(<vscale x 2 x float> %va, <vscale x 2 x float> %b, <vscale x 2 x float> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {4249; CHECK-LABEL: vfnmsub_vv_nxv2f32_commuted:4250; CHECK:       # %bb.0:4251; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma4252; CHECK-NEXT:    vfnmadd.vv v8, v9, v10, v0.t4253; CHECK-NEXT:    ret4254  %negb = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %b, <vscale x 2 x i1> %m, i32 %evl)4255  %negc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %c, <vscale x 2 x i1> %m, i32 %evl)4256  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %negb, <vscale x 2 x float> %va, <vscale x 2 x float> %negc, <vscale x 2 x i1> %m, i32 %evl)4257  ret <vscale x 2 x float> %v4258}4259 4260define <vscale x 2 x float> @vfnmsub_vv_nxv2f32_unmasked(<vscale x 2 x float> %va, <vscale x 2 x float> %b, <vscale x 2 x float> %c, i32 zeroext %evl) {4261; CHECK-LABEL: vfnmsub_vv_nxv2f32_unmasked:4262; CHECK:       # %bb.0:4263; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma4264; CHECK-NEXT:    vfnmadd.vv v8, v9, v104265; CHECK-NEXT:    ret4266  %negb = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)4267  %negc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)4268  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %negb, <vscale x 2 x float> %negc, <vscale x 2 x i1> splat (i1 true), i32 %evl)4269  ret <vscale x 2 x float> %v4270}4271 4272define <vscale x 2 x float> @vfnmsub_vv_nxv2f32_unmasked_commuted(<vscale x 2 x float> %va, <vscale x 2 x float> %b, <vscale x 2 x float> %c, i32 zeroext %evl) {4273; CHECK-LABEL: vfnmsub_vv_nxv2f32_unmasked_commuted:4274; CHECK:       # %bb.0:4275; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma4276; CHECK-NEXT:    vfnmadd.vv v8, v9, v104277; CHECK-NEXT:    ret4278  %negb = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)4279  %negc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)4280  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %negb, <vscale x 2 x float> %va, <vscale x 2 x float> %negc, <vscale x 2 x i1> splat (i1 true), i32 %evl)4281  ret <vscale x 2 x float> %v4282}4283 4284define <vscale x 2 x float> @vfnmsub_vf_nxv2f32(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {4285; CHECK-LABEL: vfnmsub_vf_nxv2f32:4286; CHECK:       # %bb.0:4287; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma4288; CHECK-NEXT:    vfnmsub.vf v8, fa0, v9, v0.t4289; CHECK-NEXT:    ret4290  %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 04291  %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4292  %negva = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x i1> %m, i32 %evl)4293  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %negva, <vscale x 2 x float> %vb, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 %evl)4294  ret <vscale x 2 x float> %v4295}4296 4297define <vscale x 2 x float> @vfnmsub_vf_nxv2f32_commute(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {4298; CHECK-LABEL: vfnmsub_vf_nxv2f32_commute:4299; CHECK:       # %bb.0:4300; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma4301; CHECK-NEXT:    vfnmsub.vf v8, fa0, v9, v0.t4302; CHECK-NEXT:    ret4303  %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 04304  %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4305  %negva = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x i1> %m, i32 %evl)4306  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x float> %negva, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 %evl)4307  ret <vscale x 2 x float> %v4308}4309 4310define <vscale x 2 x float> @vfnmsub_vf_nxv2f32_unmasked(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, i32 zeroext %evl) {4311; CHECK-LABEL: vfnmsub_vf_nxv2f32_unmasked:4312; CHECK:       # %bb.0:4313; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma4314; CHECK-NEXT:    vfnmsub.vf v8, fa0, v94315; CHECK-NEXT:    ret4316  %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 04317  %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4318  %negva = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x i1> splat (i1 true), i32 %evl)4319  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %negva, <vscale x 2 x float> %vb, <vscale x 2 x float> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)4320  ret <vscale x 2 x float> %v4321}4322 4323define <vscale x 2 x float> @vfnmsub_vf_nxv2f32_unmasked_commute(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, i32 zeroext %evl) {4324; CHECK-LABEL: vfnmsub_vf_nxv2f32_unmasked_commute:4325; CHECK:       # %bb.0:4326; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma4327; CHECK-NEXT:    vfnmsub.vf v8, fa0, v94328; CHECK-NEXT:    ret4329  %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 04330  %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4331  %negva = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x i1> splat (i1 true), i32 %evl)4332  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x float> %negva, <vscale x 2 x float> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)4333  ret <vscale x 2 x float> %v4334}4335 4336define <vscale x 2 x float> @vfnmsub_vf_nxv2f32_neg_splat(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {4337; CHECK-LABEL: vfnmsub_vf_nxv2f32_neg_splat:4338; CHECK:       # %bb.0:4339; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma4340; CHECK-NEXT:    vfnmsub.vf v8, fa0, v9, v0.t4341; CHECK-NEXT:    ret4342  %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 04343  %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4344  %negvb = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x i1> %m, i32 %evl)4345  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %negvb, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 %evl)4346  ret <vscale x 2 x float> %v4347}4348 4349define <vscale x 2 x float> @vfnmsub_vf_nxv2f32_neg_splat_commute(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {4350; CHECK-LABEL: vfnmsub_vf_nxv2f32_neg_splat_commute:4351; CHECK:       # %bb.0:4352; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma4353; CHECK-NEXT:    vfnmsub.vf v8, fa0, v9, v0.t4354; CHECK-NEXT:    ret4355  %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 04356  %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4357  %negvb = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x i1> %m, i32 %evl)4358  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %negvb, <vscale x 2 x float> %va, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 %evl)4359  ret <vscale x 2 x float> %v4360}4361 4362define <vscale x 2 x float> @vfnmsub_vf_nxv2f32_neg_splat_unmasked(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, i32 zeroext %evl) {4363; CHECK-LABEL: vfnmsub_vf_nxv2f32_neg_splat_unmasked:4364; CHECK:       # %bb.0:4365; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma4366; CHECK-NEXT:    vfnmsub.vf v8, fa0, v94367; CHECK-NEXT:    ret4368  %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 04369  %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4370  %negvb = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)4371  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %negvb, <vscale x 2 x float> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)4372  ret <vscale x 2 x float> %v4373}4374 4375define <vscale x 2 x float> @vfnmsub_vf_nxv2f32_neg_splat_unmasked_commute(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, i32 zeroext %evl) {4376; CHECK-LABEL: vfnmsub_vf_nxv2f32_neg_splat_unmasked_commute:4377; CHECK:       # %bb.0:4378; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma4379; CHECK-NEXT:    vfnmsub.vf v8, fa0, v94380; CHECK-NEXT:    ret4381  %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 04382  %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4383  %negvb = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)4384  %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %negvb, <vscale x 2 x float> %va, <vscale x 2 x float> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)4385  ret <vscale x 2 x float> %v4386}4387 4388define <vscale x 4 x float> @vfmsub_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %b, <vscale x 4 x float> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {4389; CHECK-LABEL: vfmsub_vv_nxv4f32:4390; CHECK:       # %bb.0:4391; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma4392; CHECK-NEXT:    vfmsub.vv v10, v8, v12, v0.t4393; CHECK-NEXT:    vmv.v.v v8, v104394; CHECK-NEXT:    ret4395  %negc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %c, <vscale x 4 x i1> %m, i32 %evl)4396  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %b, <vscale x 4 x float> %negc, <vscale x 4 x i1> %m, i32 %evl)4397  ret <vscale x 4 x float> %v4398}4399 4400define <vscale x 4 x float> @vfmsub_vv_nxv4f32_unmasked(<vscale x 4 x float> %va, <vscale x 4 x float> %b, <vscale x 4 x float> %c, i32 zeroext %evl) {4401; CHECK-LABEL: vfmsub_vv_nxv4f32_unmasked:4402; CHECK:       # %bb.0:4403; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma4404; CHECK-NEXT:    vfmsub.vv v8, v10, v124405; CHECK-NEXT:    ret4406  %negc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)4407  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %b, <vscale x 4 x float> %negc, <vscale x 4 x i1> splat (i1 true), i32 %evl)4408  ret <vscale x 4 x float> %v4409}4410 4411define <vscale x 4 x float> @vfmsub_vf_nxv4f32(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {4412; CHECK-LABEL: vfmsub_vf_nxv4f32:4413; CHECK:       # %bb.0:4414; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma4415; CHECK-NEXT:    vfmsub.vf v8, fa0, v10, v0.t4416; CHECK-NEXT:    ret4417  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 04418  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4419  %negvc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 %evl)4420  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, <vscale x 4 x float> %negvc, <vscale x 4 x i1> %m, i32 %evl)4421  ret <vscale x 4 x float> %v4422}4423 4424define <vscale x 4 x float> @vfmsub_vf_nxv4f32_commute(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {4425; CHECK-LABEL: vfmsub_vf_nxv4f32_commute:4426; CHECK:       # %bb.0:4427; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma4428; CHECK-NEXT:    vfmsub.vf v8, fa0, v10, v0.t4429; CHECK-NEXT:    ret4430  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 04431  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4432  %negvc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 %evl)4433  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x float> %va, <vscale x 4 x float> %negvc, <vscale x 4 x i1> %m, i32 %evl)4434  ret <vscale x 4 x float> %v4435}4436 4437define <vscale x 4 x float> @vfmsub_vf_nxv4f32_unmasked(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, i32 zeroext %evl) {4438; CHECK-LABEL: vfmsub_vf_nxv4f32_unmasked:4439; CHECK:       # %bb.0:4440; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma4441; CHECK-NEXT:    vfmsub.vf v8, fa0, v104442; CHECK-NEXT:    ret4443  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 04444  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4445  %negvc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)4446  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, <vscale x 4 x float> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)4447  ret <vscale x 4 x float> %v4448}4449 4450define <vscale x 4 x float> @vfmsub_vf_nxv4f32_unmasked_commute(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, i32 zeroext %evl) {4451; CHECK-LABEL: vfmsub_vf_nxv4f32_unmasked_commute:4452; CHECK:       # %bb.0:4453; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma4454; CHECK-NEXT:    vfmsub.vf v8, fa0, v104455; CHECK-NEXT:    ret4456  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 04457  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4458  %negvc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)4459  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x float> %va, <vscale x 4 x float> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)4460  ret <vscale x 4 x float> %v4461}4462 4463define <vscale x 4 x float> @vfnmadd_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %b, <vscale x 4 x float> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {4464; CHECK-LABEL: vfnmadd_vv_nxv4f32:4465; CHECK:       # %bb.0:4466; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma4467; CHECK-NEXT:    vfnmadd.vv v10, v8, v12, v0.t4468; CHECK-NEXT:    vmv.v.v v8, v104469; CHECK-NEXT:    ret4470  %negb = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %b, <vscale x 4 x i1> %m, i32 %evl)4471  %negc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %c, <vscale x 4 x i1> %m, i32 %evl)4472  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %negb, <vscale x 4 x float> %negc, <vscale x 4 x i1> %m, i32 %evl)4473  ret <vscale x 4 x float> %v4474}4475 4476define <vscale x 4 x float> @vfnmadd_vv_nxv4f32_commuted(<vscale x 4 x float> %va, <vscale x 4 x float> %b, <vscale x 4 x float> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {4477; CHECK-LABEL: vfnmadd_vv_nxv4f32_commuted:4478; CHECK:       # %bb.0:4479; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma4480; CHECK-NEXT:    vfnmadd.vv v8, v10, v12, v0.t4481; CHECK-NEXT:    ret4482  %negb = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %b, <vscale x 4 x i1> %m, i32 %evl)4483  %negc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %c, <vscale x 4 x i1> %m, i32 %evl)4484  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %negb, <vscale x 4 x float> %va, <vscale x 4 x float> %negc, <vscale x 4 x i1> %m, i32 %evl)4485  ret <vscale x 4 x float> %v4486}4487 4488define <vscale x 4 x float> @vfnmadd_vv_nxv4f32_unmasked(<vscale x 4 x float> %va, <vscale x 4 x float> %b, <vscale x 4 x float> %c, i32 zeroext %evl) {4489; CHECK-LABEL: vfnmadd_vv_nxv4f32_unmasked:4490; CHECK:       # %bb.0:4491; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma4492; CHECK-NEXT:    vfnmadd.vv v8, v10, v124493; CHECK-NEXT:    ret4494  %negb = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)4495  %negc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)4496  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %negb, <vscale x 4 x float> %negc, <vscale x 4 x i1> splat (i1 true), i32 %evl)4497  ret <vscale x 4 x float> %v4498}4499 4500define <vscale x 4 x float> @vfnmadd_vv_nxv4f32_unmasked_commuted(<vscale x 4 x float> %va, <vscale x 4 x float> %b, <vscale x 4 x float> %c, i32 zeroext %evl) {4501; CHECK-LABEL: vfnmadd_vv_nxv4f32_unmasked_commuted:4502; CHECK:       # %bb.0:4503; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma4504; CHECK-NEXT:    vfnmadd.vv v8, v10, v124505; CHECK-NEXT:    ret4506  %negb = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)4507  %negc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)4508  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %negb, <vscale x 4 x float> %va, <vscale x 4 x float> %negc, <vscale x 4 x i1> splat (i1 true), i32 %evl)4509  ret <vscale x 4 x float> %v4510}4511 4512define <vscale x 4 x float> @vfnmadd_vf_nxv4f32(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {4513; CHECK-LABEL: vfnmadd_vf_nxv4f32:4514; CHECK:       # %bb.0:4515; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma4516; CHECK-NEXT:    vfnmadd.vf v8, fa0, v10, v0.t4517; CHECK-NEXT:    ret4518  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 04519  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4520  %negva = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x i1> %m, i32 %evl)4521  %negvc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 %evl)4522  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %negva, <vscale x 4 x float> %vb, <vscale x 4 x float> %negvc, <vscale x 4 x i1> %m, i32 %evl)4523  ret <vscale x 4 x float> %v4524}4525 4526define <vscale x 4 x float> @vfnmadd_vf_nxv4f32_commute(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {4527; CHECK-LABEL: vfnmadd_vf_nxv4f32_commute:4528; CHECK:       # %bb.0:4529; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma4530; CHECK-NEXT:    vfnmadd.vf v8, fa0, v10, v0.t4531; CHECK-NEXT:    ret4532  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 04533  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4534  %negva = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x i1> %m, i32 %evl)4535  %negvc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 %evl)4536  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x float> %negva, <vscale x 4 x float> %negvc, <vscale x 4 x i1> %m, i32 %evl)4537  ret <vscale x 4 x float> %v4538}4539 4540define <vscale x 4 x float> @vfnmadd_vf_nxv4f32_unmasked(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, i32 zeroext %evl) {4541; CHECK-LABEL: vfnmadd_vf_nxv4f32_unmasked:4542; CHECK:       # %bb.0:4543; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma4544; CHECK-NEXT:    vfnmadd.vf v8, fa0, v104545; CHECK-NEXT:    ret4546  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 04547  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4548  %negva = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x i1> splat (i1 true), i32 %evl)4549  %negvc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)4550  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %negva, <vscale x 4 x float> %vb, <vscale x 4 x float> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)4551  ret <vscale x 4 x float> %v4552}4553 4554define <vscale x 4 x float> @vfnmadd_vf_nxv4f32_unmasked_commute(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, i32 zeroext %evl) {4555; CHECK-LABEL: vfnmadd_vf_nxv4f32_unmasked_commute:4556; CHECK:       # %bb.0:4557; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma4558; CHECK-NEXT:    vfnmadd.vf v8, fa0, v104559; CHECK-NEXT:    ret4560  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 04561  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4562  %negva = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x i1> splat (i1 true), i32 %evl)4563  %negvc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)4564  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x float> %negva, <vscale x 4 x float> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)4565  ret <vscale x 4 x float> %v4566}4567 4568define <vscale x 4 x float> @vfnmadd_vf_nxv4f32_neg_splat(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {4569; CHECK-LABEL: vfnmadd_vf_nxv4f32_neg_splat:4570; CHECK:       # %bb.0:4571; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma4572; CHECK-NEXT:    vfnmadd.vf v8, fa0, v10, v0.t4573; CHECK-NEXT:    ret4574  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 04575  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4576  %negvb = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x i1> %m, i32 %evl)4577  %negvc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 %evl)4578  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %negvb, <vscale x 4 x float> %negvc, <vscale x 4 x i1> %m, i32 %evl)4579  ret <vscale x 4 x float> %v4580}4581 4582define <vscale x 4 x float> @vfnmadd_vf_nxv4f32_neg_splat_commute(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {4583; CHECK-LABEL: vfnmadd_vf_nxv4f32_neg_splat_commute:4584; CHECK:       # %bb.0:4585; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma4586; CHECK-NEXT:    vfnmadd.vf v8, fa0, v10, v0.t4587; CHECK-NEXT:    ret4588  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 04589  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4590  %negvb = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x i1> %m, i32 %evl)4591  %negvc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 %evl)4592  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %negvb, <vscale x 4 x float> %va, <vscale x 4 x float> %negvc, <vscale x 4 x i1> %m, i32 %evl)4593  ret <vscale x 4 x float> %v4594}4595 4596define <vscale x 4 x float> @vfnmadd_vf_nxv4f32_neg_splat_unmasked(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, i32 zeroext %evl) {4597; CHECK-LABEL: vfnmadd_vf_nxv4f32_neg_splat_unmasked:4598; CHECK:       # %bb.0:4599; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma4600; CHECK-NEXT:    vfnmadd.vf v8, fa0, v104601; CHECK-NEXT:    ret4602  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 04603  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4604  %negvb = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)4605  %negvc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)4606  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %negvb, <vscale x 4 x float> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)4607  ret <vscale x 4 x float> %v4608}4609 4610define <vscale x 4 x float> @vfnmadd_vf_nxv4f32_neg_splat_unmasked_commute(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, i32 zeroext %evl) {4611; CHECK-LABEL: vfnmadd_vf_nxv4f32_neg_splat_unmasked_commute:4612; CHECK:       # %bb.0:4613; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma4614; CHECK-NEXT:    vfnmadd.vf v8, fa0, v104615; CHECK-NEXT:    ret4616  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 04617  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4618  %negvb = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)4619  %negvc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)4620  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %negvb, <vscale x 4 x float> %va, <vscale x 4 x float> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)4621  ret <vscale x 4 x float> %v4622}4623 4624define <vscale x 4 x float> @vfnmsub_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %b, <vscale x 4 x float> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {4625; CHECK-LABEL: vfnmsub_vv_nxv4f32:4626; CHECK:       # %bb.0:4627; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma4628; CHECK-NEXT:    vfnmadd.vv v10, v8, v12, v0.t4629; CHECK-NEXT:    vmv.v.v v8, v104630; CHECK-NEXT:    ret4631  %negb = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %b, <vscale x 4 x i1> %m, i32 %evl)4632  %negc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %c, <vscale x 4 x i1> %m, i32 %evl)4633  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %negb, <vscale x 4 x float> %negc, <vscale x 4 x i1> %m, i32 %evl)4634  ret <vscale x 4 x float> %v4635}4636 4637define <vscale x 4 x float> @vfnmsub_vv_nxv4f32_commuted(<vscale x 4 x float> %va, <vscale x 4 x float> %b, <vscale x 4 x float> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {4638; CHECK-LABEL: vfnmsub_vv_nxv4f32_commuted:4639; CHECK:       # %bb.0:4640; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma4641; CHECK-NEXT:    vfnmadd.vv v8, v10, v12, v0.t4642; CHECK-NEXT:    ret4643  %negb = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %b, <vscale x 4 x i1> %m, i32 %evl)4644  %negc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %c, <vscale x 4 x i1> %m, i32 %evl)4645  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %negb, <vscale x 4 x float> %va, <vscale x 4 x float> %negc, <vscale x 4 x i1> %m, i32 %evl)4646  ret <vscale x 4 x float> %v4647}4648 4649define <vscale x 4 x float> @vfnmsub_vv_nxv4f32_unmasked(<vscale x 4 x float> %va, <vscale x 4 x float> %b, <vscale x 4 x float> %c, i32 zeroext %evl) {4650; CHECK-LABEL: vfnmsub_vv_nxv4f32_unmasked:4651; CHECK:       # %bb.0:4652; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma4653; CHECK-NEXT:    vfnmadd.vv v8, v10, v124654; CHECK-NEXT:    ret4655  %negb = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)4656  %negc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)4657  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %negb, <vscale x 4 x float> %negc, <vscale x 4 x i1> splat (i1 true), i32 %evl)4658  ret <vscale x 4 x float> %v4659}4660 4661define <vscale x 4 x float> @vfnmsub_vv_nxv4f32_unmasked_commuted(<vscale x 4 x float> %va, <vscale x 4 x float> %b, <vscale x 4 x float> %c, i32 zeroext %evl) {4662; CHECK-LABEL: vfnmsub_vv_nxv4f32_unmasked_commuted:4663; CHECK:       # %bb.0:4664; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma4665; CHECK-NEXT:    vfnmadd.vv v8, v10, v124666; CHECK-NEXT:    ret4667  %negb = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)4668  %negc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)4669  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %negb, <vscale x 4 x float> %va, <vscale x 4 x float> %negc, <vscale x 4 x i1> splat (i1 true), i32 %evl)4670  ret <vscale x 4 x float> %v4671}4672 4673define <vscale x 4 x float> @vfnmsub_vf_nxv4f32(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {4674; CHECK-LABEL: vfnmsub_vf_nxv4f32:4675; CHECK:       # %bb.0:4676; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma4677; CHECK-NEXT:    vfnmsub.vf v8, fa0, v10, v0.t4678; CHECK-NEXT:    ret4679  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 04680  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4681  %negva = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x i1> %m, i32 %evl)4682  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %negva, <vscale x 4 x float> %vb, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 %evl)4683  ret <vscale x 4 x float> %v4684}4685 4686define <vscale x 4 x float> @vfnmsub_vf_nxv4f32_commute(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {4687; CHECK-LABEL: vfnmsub_vf_nxv4f32_commute:4688; CHECK:       # %bb.0:4689; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma4690; CHECK-NEXT:    vfnmsub.vf v8, fa0, v10, v0.t4691; CHECK-NEXT:    ret4692  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 04693  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4694  %negva = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x i1> %m, i32 %evl)4695  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x float> %negva, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 %evl)4696  ret <vscale x 4 x float> %v4697}4698 4699define <vscale x 4 x float> @vfnmsub_vf_nxv4f32_unmasked(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, i32 zeroext %evl) {4700; CHECK-LABEL: vfnmsub_vf_nxv4f32_unmasked:4701; CHECK:       # %bb.0:4702; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma4703; CHECK-NEXT:    vfnmsub.vf v8, fa0, v104704; CHECK-NEXT:    ret4705  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 04706  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4707  %negva = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x i1> splat (i1 true), i32 %evl)4708  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %negva, <vscale x 4 x float> %vb, <vscale x 4 x float> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)4709  ret <vscale x 4 x float> %v4710}4711 4712define <vscale x 4 x float> @vfnmsub_vf_nxv4f32_unmasked_commute(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, i32 zeroext %evl) {4713; CHECK-LABEL: vfnmsub_vf_nxv4f32_unmasked_commute:4714; CHECK:       # %bb.0:4715; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma4716; CHECK-NEXT:    vfnmsub.vf v8, fa0, v104717; CHECK-NEXT:    ret4718  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 04719  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4720  %negva = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x i1> splat (i1 true), i32 %evl)4721  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x float> %negva, <vscale x 4 x float> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)4722  ret <vscale x 4 x float> %v4723}4724 4725define <vscale x 4 x float> @vfnmsub_vf_nxv4f32_neg_splat(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {4726; CHECK-LABEL: vfnmsub_vf_nxv4f32_neg_splat:4727; CHECK:       # %bb.0:4728; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma4729; CHECK-NEXT:    vfnmsub.vf v8, fa0, v10, v0.t4730; CHECK-NEXT:    ret4731  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 04732  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4733  %negvb = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x i1> %m, i32 %evl)4734  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %negvb, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 %evl)4735  ret <vscale x 4 x float> %v4736}4737 4738define <vscale x 4 x float> @vfnmsub_vf_nxv4f32_neg_splat_commute(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {4739; CHECK-LABEL: vfnmsub_vf_nxv4f32_neg_splat_commute:4740; CHECK:       # %bb.0:4741; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma4742; CHECK-NEXT:    vfnmsub.vf v8, fa0, v10, v0.t4743; CHECK-NEXT:    ret4744  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 04745  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4746  %negvb = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x i1> %m, i32 %evl)4747  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %negvb, <vscale x 4 x float> %va, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 %evl)4748  ret <vscale x 4 x float> %v4749}4750 4751define <vscale x 4 x float> @vfnmsub_vf_nxv4f32_neg_splat_unmasked(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, i32 zeroext %evl) {4752; CHECK-LABEL: vfnmsub_vf_nxv4f32_neg_splat_unmasked:4753; CHECK:       # %bb.0:4754; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma4755; CHECK-NEXT:    vfnmsub.vf v8, fa0, v104756; CHECK-NEXT:    ret4757  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 04758  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4759  %negvb = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)4760  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %negvb, <vscale x 4 x float> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)4761  ret <vscale x 4 x float> %v4762}4763 4764define <vscale x 4 x float> @vfnmsub_vf_nxv4f32_neg_splat_unmasked_commute(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, i32 zeroext %evl) {4765; CHECK-LABEL: vfnmsub_vf_nxv4f32_neg_splat_unmasked_commute:4766; CHECK:       # %bb.0:4767; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma4768; CHECK-NEXT:    vfnmsub.vf v8, fa0, v104769; CHECK-NEXT:    ret4770  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 04771  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4772  %negvb = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)4773  %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %negvb, <vscale x 4 x float> %va, <vscale x 4 x float> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)4774  ret <vscale x 4 x float> %v4775}4776 4777define <vscale x 8 x float> @vfmsub_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %b, <vscale x 8 x float> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {4778; CHECK-LABEL: vfmsub_vv_nxv8f32:4779; CHECK:       # %bb.0:4780; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma4781; CHECK-NEXT:    vfmsub.vv v12, v8, v16, v0.t4782; CHECK-NEXT:    vmv.v.v v8, v124783; CHECK-NEXT:    ret4784  %negc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %c, <vscale x 8 x i1> %m, i32 %evl)4785  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %b, <vscale x 8 x float> %negc, <vscale x 8 x i1> %m, i32 %evl)4786  ret <vscale x 8 x float> %v4787}4788 4789define <vscale x 8 x float> @vfmsub_vv_nxv8f32_unmasked(<vscale x 8 x float> %va, <vscale x 8 x float> %b, <vscale x 8 x float> %c, i32 zeroext %evl) {4790; CHECK-LABEL: vfmsub_vv_nxv8f32_unmasked:4791; CHECK:       # %bb.0:4792; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma4793; CHECK-NEXT:    vfmsub.vv v8, v12, v164794; CHECK-NEXT:    ret4795  %negc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)4796  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %b, <vscale x 8 x float> %negc, <vscale x 8 x i1> splat (i1 true), i32 %evl)4797  ret <vscale x 8 x float> %v4798}4799 4800define <vscale x 8 x float> @vfmsub_vf_nxv8f32(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {4801; CHECK-LABEL: vfmsub_vf_nxv8f32:4802; CHECK:       # %bb.0:4803; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma4804; CHECK-NEXT:    vfmsub.vf v8, fa0, v12, v0.t4805; CHECK-NEXT:    ret4806  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 04807  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer4808  %negvc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 %evl)4809  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, <vscale x 8 x float> %negvc, <vscale x 8 x i1> %m, i32 %evl)4810  ret <vscale x 8 x float> %v4811}4812 4813define <vscale x 8 x float> @vfmsub_vf_nxv8f32_commute(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {4814; CHECK-LABEL: vfmsub_vf_nxv8f32_commute:4815; CHECK:       # %bb.0:4816; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma4817; CHECK-NEXT:    vfmsub.vf v8, fa0, v12, v0.t4818; CHECK-NEXT:    ret4819  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 04820  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer4821  %negvc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 %evl)4822  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x float> %va, <vscale x 8 x float> %negvc, <vscale x 8 x i1> %m, i32 %evl)4823  ret <vscale x 8 x float> %v4824}4825 4826define <vscale x 8 x float> @vfmsub_vf_nxv8f32_unmasked(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, i32 zeroext %evl) {4827; CHECK-LABEL: vfmsub_vf_nxv8f32_unmasked:4828; CHECK:       # %bb.0:4829; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma4830; CHECK-NEXT:    vfmsub.vf v8, fa0, v124831; CHECK-NEXT:    ret4832  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 04833  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer4834  %negvc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)4835  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, <vscale x 8 x float> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)4836  ret <vscale x 8 x float> %v4837}4838 4839define <vscale x 8 x float> @vfmsub_vf_nxv8f32_unmasked_commute(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, i32 zeroext %evl) {4840; CHECK-LABEL: vfmsub_vf_nxv8f32_unmasked_commute:4841; CHECK:       # %bb.0:4842; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma4843; CHECK-NEXT:    vfmsub.vf v8, fa0, v124844; CHECK-NEXT:    ret4845  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 04846  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer4847  %negvc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)4848  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x float> %va, <vscale x 8 x float> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)4849  ret <vscale x 8 x float> %v4850}4851 4852define <vscale x 8 x float> @vfnmadd_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %b, <vscale x 8 x float> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {4853; CHECK-LABEL: vfnmadd_vv_nxv8f32:4854; CHECK:       # %bb.0:4855; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma4856; CHECK-NEXT:    vfnmadd.vv v12, v8, v16, v0.t4857; CHECK-NEXT:    vmv.v.v v8, v124858; CHECK-NEXT:    ret4859  %negb = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %b, <vscale x 8 x i1> %m, i32 %evl)4860  %negc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %c, <vscale x 8 x i1> %m, i32 %evl)4861  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %negb, <vscale x 8 x float> %negc, <vscale x 8 x i1> %m, i32 %evl)4862  ret <vscale x 8 x float> %v4863}4864 4865define <vscale x 8 x float> @vfnmadd_vv_nxv8f32_commuted(<vscale x 8 x float> %va, <vscale x 8 x float> %b, <vscale x 8 x float> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {4866; CHECK-LABEL: vfnmadd_vv_nxv8f32_commuted:4867; CHECK:       # %bb.0:4868; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma4869; CHECK-NEXT:    vfnmadd.vv v8, v12, v16, v0.t4870; CHECK-NEXT:    ret4871  %negb = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %b, <vscale x 8 x i1> %m, i32 %evl)4872  %negc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %c, <vscale x 8 x i1> %m, i32 %evl)4873  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %negb, <vscale x 8 x float> %va, <vscale x 8 x float> %negc, <vscale x 8 x i1> %m, i32 %evl)4874  ret <vscale x 8 x float> %v4875}4876 4877define <vscale x 8 x float> @vfnmadd_vv_nxv8f32_unmasked(<vscale x 8 x float> %va, <vscale x 8 x float> %b, <vscale x 8 x float> %c, i32 zeroext %evl) {4878; CHECK-LABEL: vfnmadd_vv_nxv8f32_unmasked:4879; CHECK:       # %bb.0:4880; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma4881; CHECK-NEXT:    vfnmadd.vv v8, v12, v164882; CHECK-NEXT:    ret4883  %negb = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)4884  %negc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)4885  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %negb, <vscale x 8 x float> %negc, <vscale x 8 x i1> splat (i1 true), i32 %evl)4886  ret <vscale x 8 x float> %v4887}4888 4889define <vscale x 8 x float> @vfnmadd_vv_nxv8f32_unmasked_commuted(<vscale x 8 x float> %va, <vscale x 8 x float> %b, <vscale x 8 x float> %c, i32 zeroext %evl) {4890; CHECK-LABEL: vfnmadd_vv_nxv8f32_unmasked_commuted:4891; CHECK:       # %bb.0:4892; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma4893; CHECK-NEXT:    vfnmadd.vv v8, v12, v164894; CHECK-NEXT:    ret4895  %negb = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)4896  %negc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)4897  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %negb, <vscale x 8 x float> %va, <vscale x 8 x float> %negc, <vscale x 8 x i1> splat (i1 true), i32 %evl)4898  ret <vscale x 8 x float> %v4899}4900 4901define <vscale x 8 x float> @vfnmadd_vf_nxv8f32(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {4902; CHECK-LABEL: vfnmadd_vf_nxv8f32:4903; CHECK:       # %bb.0:4904; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma4905; CHECK-NEXT:    vfnmadd.vf v8, fa0, v12, v0.t4906; CHECK-NEXT:    ret4907  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 04908  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer4909  %negva = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x i1> %m, i32 %evl)4910  %negvc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 %evl)4911  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %negva, <vscale x 8 x float> %vb, <vscale x 8 x float> %negvc, <vscale x 8 x i1> %m, i32 %evl)4912  ret <vscale x 8 x float> %v4913}4914 4915define <vscale x 8 x float> @vfnmadd_vf_nxv8f32_commute(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {4916; CHECK-LABEL: vfnmadd_vf_nxv8f32_commute:4917; CHECK:       # %bb.0:4918; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma4919; CHECK-NEXT:    vfnmadd.vf v8, fa0, v12, v0.t4920; CHECK-NEXT:    ret4921  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 04922  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer4923  %negva = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x i1> %m, i32 %evl)4924  %negvc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 %evl)4925  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x float> %negva, <vscale x 8 x float> %negvc, <vscale x 8 x i1> %m, i32 %evl)4926  ret <vscale x 8 x float> %v4927}4928 4929define <vscale x 8 x float> @vfnmadd_vf_nxv8f32_unmasked(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, i32 zeroext %evl) {4930; CHECK-LABEL: vfnmadd_vf_nxv8f32_unmasked:4931; CHECK:       # %bb.0:4932; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma4933; CHECK-NEXT:    vfnmadd.vf v8, fa0, v124934; CHECK-NEXT:    ret4935  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 04936  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer4937  %negva = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x i1> splat (i1 true), i32 %evl)4938  %negvc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)4939  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %negva, <vscale x 8 x float> %vb, <vscale x 8 x float> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)4940  ret <vscale x 8 x float> %v4941}4942 4943define <vscale x 8 x float> @vfnmadd_vf_nxv8f32_unmasked_commute(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, i32 zeroext %evl) {4944; CHECK-LABEL: vfnmadd_vf_nxv8f32_unmasked_commute:4945; CHECK:       # %bb.0:4946; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma4947; CHECK-NEXT:    vfnmadd.vf v8, fa0, v124948; CHECK-NEXT:    ret4949  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 04950  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer4951  %negva = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x i1> splat (i1 true), i32 %evl)4952  %negvc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)4953  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x float> %negva, <vscale x 8 x float> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)4954  ret <vscale x 8 x float> %v4955}4956 4957define <vscale x 8 x float> @vfnmadd_vf_nxv8f32_neg_splat(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {4958; CHECK-LABEL: vfnmadd_vf_nxv8f32_neg_splat:4959; CHECK:       # %bb.0:4960; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma4961; CHECK-NEXT:    vfnmadd.vf v8, fa0, v12, v0.t4962; CHECK-NEXT:    ret4963  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 04964  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer4965  %negvb = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x i1> %m, i32 %evl)4966  %negvc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 %evl)4967  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %negvb, <vscale x 8 x float> %negvc, <vscale x 8 x i1> %m, i32 %evl)4968  ret <vscale x 8 x float> %v4969}4970 4971define <vscale x 8 x float> @vfnmadd_vf_nxv8f32_neg_splat_commute(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {4972; CHECK-LABEL: vfnmadd_vf_nxv8f32_neg_splat_commute:4973; CHECK:       # %bb.0:4974; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma4975; CHECK-NEXT:    vfnmadd.vf v8, fa0, v12, v0.t4976; CHECK-NEXT:    ret4977  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 04978  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer4979  %negvb = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x i1> %m, i32 %evl)4980  %negvc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 %evl)4981  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %negvb, <vscale x 8 x float> %va, <vscale x 8 x float> %negvc, <vscale x 8 x i1> %m, i32 %evl)4982  ret <vscale x 8 x float> %v4983}4984 4985define <vscale x 8 x float> @vfnmadd_vf_nxv8f32_neg_splat_unmasked(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, i32 zeroext %evl) {4986; CHECK-LABEL: vfnmadd_vf_nxv8f32_neg_splat_unmasked:4987; CHECK:       # %bb.0:4988; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma4989; CHECK-NEXT:    vfnmadd.vf v8, fa0, v124990; CHECK-NEXT:    ret4991  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 04992  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer4993  %negvb = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)4994  %negvc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)4995  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %negvb, <vscale x 8 x float> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)4996  ret <vscale x 8 x float> %v4997}4998 4999define <vscale x 8 x float> @vfnmadd_vf_nxv8f32_neg_splat_unmasked_commute(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, i32 zeroext %evl) {5000; CHECK-LABEL: vfnmadd_vf_nxv8f32_neg_splat_unmasked_commute:5001; CHECK:       # %bb.0:5002; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma5003; CHECK-NEXT:    vfnmadd.vf v8, fa0, v125004; CHECK-NEXT:    ret5005  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 05006  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer5007  %negvb = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)5008  %negvc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)5009  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %negvb, <vscale x 8 x float> %va, <vscale x 8 x float> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)5010  ret <vscale x 8 x float> %v5011}5012 5013define <vscale x 8 x float> @vfnmsub_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %b, <vscale x 8 x float> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {5014; CHECK-LABEL: vfnmsub_vv_nxv8f32:5015; CHECK:       # %bb.0:5016; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma5017; CHECK-NEXT:    vfnmadd.vv v12, v8, v16, v0.t5018; CHECK-NEXT:    vmv.v.v v8, v125019; CHECK-NEXT:    ret5020  %negb = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %b, <vscale x 8 x i1> %m, i32 %evl)5021  %negc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %c, <vscale x 8 x i1> %m, i32 %evl)5022  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %negb, <vscale x 8 x float> %negc, <vscale x 8 x i1> %m, i32 %evl)5023  ret <vscale x 8 x float> %v5024}5025 5026define <vscale x 8 x float> @vfnmsub_vv_nxv8f32_commuted(<vscale x 8 x float> %va, <vscale x 8 x float> %b, <vscale x 8 x float> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {5027; CHECK-LABEL: vfnmsub_vv_nxv8f32_commuted:5028; CHECK:       # %bb.0:5029; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma5030; CHECK-NEXT:    vfnmadd.vv v8, v12, v16, v0.t5031; CHECK-NEXT:    ret5032  %negb = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %b, <vscale x 8 x i1> %m, i32 %evl)5033  %negc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %c, <vscale x 8 x i1> %m, i32 %evl)5034  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %negb, <vscale x 8 x float> %va, <vscale x 8 x float> %negc, <vscale x 8 x i1> %m, i32 %evl)5035  ret <vscale x 8 x float> %v5036}5037 5038define <vscale x 8 x float> @vfnmsub_vv_nxv8f32_unmasked(<vscale x 8 x float> %va, <vscale x 8 x float> %b, <vscale x 8 x float> %c, i32 zeroext %evl) {5039; CHECK-LABEL: vfnmsub_vv_nxv8f32_unmasked:5040; CHECK:       # %bb.0:5041; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma5042; CHECK-NEXT:    vfnmadd.vv v8, v12, v165043; CHECK-NEXT:    ret5044  %negb = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)5045  %negc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)5046  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %negb, <vscale x 8 x float> %negc, <vscale x 8 x i1> splat (i1 true), i32 %evl)5047  ret <vscale x 8 x float> %v5048}5049 5050define <vscale x 8 x float> @vfnmsub_vv_nxv8f32_unmasked_commuted(<vscale x 8 x float> %va, <vscale x 8 x float> %b, <vscale x 8 x float> %c, i32 zeroext %evl) {5051; CHECK-LABEL: vfnmsub_vv_nxv8f32_unmasked_commuted:5052; CHECK:       # %bb.0:5053; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma5054; CHECK-NEXT:    vfnmadd.vv v8, v12, v165055; CHECK-NEXT:    ret5056  %negb = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)5057  %negc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)5058  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %negb, <vscale x 8 x float> %va, <vscale x 8 x float> %negc, <vscale x 8 x i1> splat (i1 true), i32 %evl)5059  ret <vscale x 8 x float> %v5060}5061 5062define <vscale x 8 x float> @vfnmsub_vf_nxv8f32(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {5063; CHECK-LABEL: vfnmsub_vf_nxv8f32:5064; CHECK:       # %bb.0:5065; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma5066; CHECK-NEXT:    vfnmsub.vf v8, fa0, v12, v0.t5067; CHECK-NEXT:    ret5068  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 05069  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer5070  %negva = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x i1> %m, i32 %evl)5071  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %negva, <vscale x 8 x float> %vb, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 %evl)5072  ret <vscale x 8 x float> %v5073}5074 5075define <vscale x 8 x float> @vfnmsub_vf_nxv8f32_commute(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {5076; CHECK-LABEL: vfnmsub_vf_nxv8f32_commute:5077; CHECK:       # %bb.0:5078; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma5079; CHECK-NEXT:    vfnmsub.vf v8, fa0, v12, v0.t5080; CHECK-NEXT:    ret5081  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 05082  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer5083  %negva = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x i1> %m, i32 %evl)5084  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x float> %negva, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 %evl)5085  ret <vscale x 8 x float> %v5086}5087 5088define <vscale x 8 x float> @vfnmsub_vf_nxv8f32_unmasked(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, i32 zeroext %evl) {5089; CHECK-LABEL: vfnmsub_vf_nxv8f32_unmasked:5090; CHECK:       # %bb.0:5091; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma5092; CHECK-NEXT:    vfnmsub.vf v8, fa0, v125093; CHECK-NEXT:    ret5094  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 05095  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer5096  %negva = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x i1> splat (i1 true), i32 %evl)5097  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %negva, <vscale x 8 x float> %vb, <vscale x 8 x float> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)5098  ret <vscale x 8 x float> %v5099}5100 5101define <vscale x 8 x float> @vfnmsub_vf_nxv8f32_unmasked_commute(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, i32 zeroext %evl) {5102; CHECK-LABEL: vfnmsub_vf_nxv8f32_unmasked_commute:5103; CHECK:       # %bb.0:5104; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma5105; CHECK-NEXT:    vfnmsub.vf v8, fa0, v125106; CHECK-NEXT:    ret5107  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 05108  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer5109  %negva = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x i1> splat (i1 true), i32 %evl)5110  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x float> %negva, <vscale x 8 x float> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)5111  ret <vscale x 8 x float> %v5112}5113 5114define <vscale x 8 x float> @vfnmsub_vf_nxv8f32_neg_splat(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {5115; CHECK-LABEL: vfnmsub_vf_nxv8f32_neg_splat:5116; CHECK:       # %bb.0:5117; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma5118; CHECK-NEXT:    vfnmsub.vf v8, fa0, v12, v0.t5119; CHECK-NEXT:    ret5120  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 05121  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer5122  %negvb = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x i1> %m, i32 %evl)5123  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %negvb, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 %evl)5124  ret <vscale x 8 x float> %v5125}5126 5127define <vscale x 8 x float> @vfnmsub_vf_nxv8f32_neg_splat_commute(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {5128; CHECK-LABEL: vfnmsub_vf_nxv8f32_neg_splat_commute:5129; CHECK:       # %bb.0:5130; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma5131; CHECK-NEXT:    vfnmsub.vf v8, fa0, v12, v0.t5132; CHECK-NEXT:    ret5133  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 05134  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer5135  %negvb = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x i1> %m, i32 %evl)5136  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %negvb, <vscale x 8 x float> %va, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 %evl)5137  ret <vscale x 8 x float> %v5138}5139 5140define <vscale x 8 x float> @vfnmsub_vf_nxv8f32_neg_splat_unmasked(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, i32 zeroext %evl) {5141; CHECK-LABEL: vfnmsub_vf_nxv8f32_neg_splat_unmasked:5142; CHECK:       # %bb.0:5143; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma5144; CHECK-NEXT:    vfnmsub.vf v8, fa0, v125145; CHECK-NEXT:    ret5146  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 05147  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer5148  %negvb = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)5149  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %negvb, <vscale x 8 x float> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)5150  ret <vscale x 8 x float> %v5151}5152 5153define <vscale x 8 x float> @vfnmsub_vf_nxv8f32_neg_splat_unmasked_commute(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, i32 zeroext %evl) {5154; CHECK-LABEL: vfnmsub_vf_nxv8f32_neg_splat_unmasked_commute:5155; CHECK:       # %bb.0:5156; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma5157; CHECK-NEXT:    vfnmsub.vf v8, fa0, v125158; CHECK-NEXT:    ret5159  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 05160  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer5161  %negvb = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)5162  %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %negvb, <vscale x 8 x float> %va, <vscale x 8 x float> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)5163  ret <vscale x 8 x float> %v5164}5165 5166define <vscale x 16 x float> @vfmsub_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %b, <vscale x 16 x float> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {5167; CHECK-LABEL: vfmsub_vv_nxv16f32:5168; CHECK:       # %bb.0:5169; CHECK-NEXT:    vl8re32.v v24, (a0)5170; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma5171; CHECK-NEXT:    vfmsub.vv v16, v8, v24, v0.t5172; CHECK-NEXT:    vmv.v.v v8, v165173; CHECK-NEXT:    ret5174  %negc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %c, <vscale x 16 x i1> %m, i32 %evl)5175  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %b, <vscale x 16 x float> %negc, <vscale x 16 x i1> %m, i32 %evl)5176  ret <vscale x 16 x float> %v5177}5178 5179define <vscale x 16 x float> @vfmsub_vv_nxv16f32_unmasked(<vscale x 16 x float> %va, <vscale x 16 x float> %b, <vscale x 16 x float> %c, i32 zeroext %evl) {5180; CHECK-LABEL: vfmsub_vv_nxv16f32_unmasked:5181; CHECK:       # %bb.0:5182; CHECK-NEXT:    vl8re32.v v24, (a0)5183; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma5184; CHECK-NEXT:    vfmsub.vv v8, v16, v245185; CHECK-NEXT:    ret5186  %negc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %c, <vscale x 16 x i1> splat (i1 true), i32 %evl)5187  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %b, <vscale x 16 x float> %negc, <vscale x 16 x i1> splat (i1 true), i32 %evl)5188  ret <vscale x 16 x float> %v5189}5190 5191define <vscale x 16 x float> @vfmsub_vf_nxv16f32(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {5192; CHECK-LABEL: vfmsub_vf_nxv16f32:5193; CHECK:       # %bb.0:5194; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma5195; CHECK-NEXT:    vfmsub.vf v8, fa0, v16, v0.t5196; CHECK-NEXT:    ret5197  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 05198  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5199  %negvc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 %evl)5200  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, <vscale x 16 x float> %negvc, <vscale x 16 x i1> %m, i32 %evl)5201  ret <vscale x 16 x float> %v5202}5203 5204define <vscale x 16 x float> @vfmsub_vf_nxv16f32_commute(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {5205; CHECK-LABEL: vfmsub_vf_nxv16f32_commute:5206; CHECK:       # %bb.0:5207; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma5208; CHECK-NEXT:    vfmsub.vf v8, fa0, v16, v0.t5209; CHECK-NEXT:    ret5210  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 05211  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5212  %negvc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 %evl)5213  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x float> %va, <vscale x 16 x float> %negvc, <vscale x 16 x i1> %m, i32 %evl)5214  ret <vscale x 16 x float> %v5215}5216 5217define <vscale x 16 x float> @vfmsub_vf_nxv16f32_unmasked(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, i32 zeroext %evl) {5218; CHECK-LABEL: vfmsub_vf_nxv16f32_unmasked:5219; CHECK:       # %bb.0:5220; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma5221; CHECK-NEXT:    vfmsub.vf v8, fa0, v165222; CHECK-NEXT:    ret5223  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 05224  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5225  %negvc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)5226  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, <vscale x 16 x float> %negvc, <vscale x 16 x i1> splat (i1 true), i32 %evl)5227  ret <vscale x 16 x float> %v5228}5229 5230define <vscale x 16 x float> @vfmsub_vf_nxv16f32_unmasked_commute(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, i32 zeroext %evl) {5231; CHECK-LABEL: vfmsub_vf_nxv16f32_unmasked_commute:5232; CHECK:       # %bb.0:5233; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma5234; CHECK-NEXT:    vfmsub.vf v8, fa0, v165235; CHECK-NEXT:    ret5236  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 05237  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5238  %negvc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)5239  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x float> %va, <vscale x 16 x float> %negvc, <vscale x 16 x i1> splat (i1 true), i32 %evl)5240  ret <vscale x 16 x float> %v5241}5242 5243define <vscale x 16 x float> @vfnmadd_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %b, <vscale x 16 x float> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {5244; CHECK-LABEL: vfnmadd_vv_nxv16f32:5245; CHECK:       # %bb.0:5246; CHECK-NEXT:    vl8re32.v v24, (a0)5247; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma5248; CHECK-NEXT:    vfnmadd.vv v16, v8, v24, v0.t5249; CHECK-NEXT:    vmv.v.v v8, v165250; CHECK-NEXT:    ret5251  %negb = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %b, <vscale x 16 x i1> %m, i32 %evl)5252  %negc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %c, <vscale x 16 x i1> %m, i32 %evl)5253  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %negb, <vscale x 16 x float> %negc, <vscale x 16 x i1> %m, i32 %evl)5254  ret <vscale x 16 x float> %v5255}5256 5257define <vscale x 16 x float> @vfnmadd_vv_nxv16f32_commuted(<vscale x 16 x float> %va, <vscale x 16 x float> %b, <vscale x 16 x float> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {5258; CHECK-LABEL: vfnmadd_vv_nxv16f32_commuted:5259; CHECK:       # %bb.0:5260; CHECK-NEXT:    vl8re32.v v24, (a0)5261; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma5262; CHECK-NEXT:    vfnmadd.vv v8, v16, v24, v0.t5263; CHECK-NEXT:    ret5264  %negb = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %b, <vscale x 16 x i1> %m, i32 %evl)5265  %negc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %c, <vscale x 16 x i1> %m, i32 %evl)5266  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %negb, <vscale x 16 x float> %va, <vscale x 16 x float> %negc, <vscale x 16 x i1> %m, i32 %evl)5267  ret <vscale x 16 x float> %v5268}5269 5270define <vscale x 16 x float> @vfnmadd_vv_nxv16f32_unmasked(<vscale x 16 x float> %va, <vscale x 16 x float> %b, <vscale x 16 x float> %c, i32 zeroext %evl) {5271; CHECK-LABEL: vfnmadd_vv_nxv16f32_unmasked:5272; CHECK:       # %bb.0:5273; CHECK-NEXT:    vl8re32.v v24, (a0)5274; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma5275; CHECK-NEXT:    vfnmadd.vv v8, v16, v245276; CHECK-NEXT:    ret5277  %negb = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %b, <vscale x 16 x i1> splat (i1 true), i32 %evl)5278  %negc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %c, <vscale x 16 x i1> splat (i1 true), i32 %evl)5279  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %negb, <vscale x 16 x float> %negc, <vscale x 16 x i1> splat (i1 true), i32 %evl)5280  ret <vscale x 16 x float> %v5281}5282 5283define <vscale x 16 x float> @vfnmadd_vv_nxv16f32_unmasked_commuted(<vscale x 16 x float> %va, <vscale x 16 x float> %b, <vscale x 16 x float> %c, i32 zeroext %evl) {5284; CHECK-LABEL: vfnmadd_vv_nxv16f32_unmasked_commuted:5285; CHECK:       # %bb.0:5286; CHECK-NEXT:    vl8re32.v v24, (a0)5287; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma5288; CHECK-NEXT:    vfnmadd.vv v8, v16, v245289; CHECK-NEXT:    ret5290  %negb = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %b, <vscale x 16 x i1> splat (i1 true), i32 %evl)5291  %negc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %c, <vscale x 16 x i1> splat (i1 true), i32 %evl)5292  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %negb, <vscale x 16 x float> %va, <vscale x 16 x float> %negc, <vscale x 16 x i1> splat (i1 true), i32 %evl)5293  ret <vscale x 16 x float> %v5294}5295 5296define <vscale x 16 x float> @vfnmadd_vf_nxv16f32(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {5297; CHECK-LABEL: vfnmadd_vf_nxv16f32:5298; CHECK:       # %bb.0:5299; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma5300; CHECK-NEXT:    vfnmadd.vf v8, fa0, v16, v0.t5301; CHECK-NEXT:    ret5302  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 05303  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5304  %negva = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x i1> %m, i32 %evl)5305  %negvc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 %evl)5306  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %negva, <vscale x 16 x float> %vb, <vscale x 16 x float> %negvc, <vscale x 16 x i1> %m, i32 %evl)5307  ret <vscale x 16 x float> %v5308}5309 5310define <vscale x 16 x float> @vfnmadd_vf_nxv16f32_commute(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {5311; CHECK-LABEL: vfnmadd_vf_nxv16f32_commute:5312; CHECK:       # %bb.0:5313; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma5314; CHECK-NEXT:    vfnmadd.vf v8, fa0, v16, v0.t5315; CHECK-NEXT:    ret5316  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 05317  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5318  %negva = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x i1> %m, i32 %evl)5319  %negvc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 %evl)5320  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x float> %negva, <vscale x 16 x float> %negvc, <vscale x 16 x i1> %m, i32 %evl)5321  ret <vscale x 16 x float> %v5322}5323 5324define <vscale x 16 x float> @vfnmadd_vf_nxv16f32_unmasked(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, i32 zeroext %evl) {5325; CHECK-LABEL: vfnmadd_vf_nxv16f32_unmasked:5326; CHECK:       # %bb.0:5327; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma5328; CHECK-NEXT:    vfnmadd.vf v8, fa0, v165329; CHECK-NEXT:    ret5330  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 05331  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5332  %negva = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x i1> splat (i1 true), i32 %evl)5333  %negvc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)5334  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %negva, <vscale x 16 x float> %vb, <vscale x 16 x float> %negvc, <vscale x 16 x i1> splat (i1 true), i32 %evl)5335  ret <vscale x 16 x float> %v5336}5337 5338define <vscale x 16 x float> @vfnmadd_vf_nxv16f32_unmasked_commute(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, i32 zeroext %evl) {5339; CHECK-LABEL: vfnmadd_vf_nxv16f32_unmasked_commute:5340; CHECK:       # %bb.0:5341; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma5342; CHECK-NEXT:    vfnmadd.vf v8, fa0, v165343; CHECK-NEXT:    ret5344  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 05345  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5346  %negva = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x i1> splat (i1 true), i32 %evl)5347  %negvc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)5348  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x float> %negva, <vscale x 16 x float> %negvc, <vscale x 16 x i1> splat (i1 true), i32 %evl)5349  ret <vscale x 16 x float> %v5350}5351 5352define <vscale x 16 x float> @vfnmadd_vf_nxv16f32_neg_splat(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {5353; CHECK-LABEL: vfnmadd_vf_nxv16f32_neg_splat:5354; CHECK:       # %bb.0:5355; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma5356; CHECK-NEXT:    vfnmadd.vf v8, fa0, v16, v0.t5357; CHECK-NEXT:    ret5358  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 05359  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5360  %negvb = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x i1> %m, i32 %evl)5361  %negvc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 %evl)5362  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %negvb, <vscale x 16 x float> %negvc, <vscale x 16 x i1> %m, i32 %evl)5363  ret <vscale x 16 x float> %v5364}5365 5366define <vscale x 16 x float> @vfnmadd_vf_nxv16f32_neg_splat_commute(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {5367; CHECK-LABEL: vfnmadd_vf_nxv16f32_neg_splat_commute:5368; CHECK:       # %bb.0:5369; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma5370; CHECK-NEXT:    vfnmadd.vf v8, fa0, v16, v0.t5371; CHECK-NEXT:    ret5372  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 05373  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5374  %negvb = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x i1> %m, i32 %evl)5375  %negvc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 %evl)5376  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %negvb, <vscale x 16 x float> %va, <vscale x 16 x float> %negvc, <vscale x 16 x i1> %m, i32 %evl)5377  ret <vscale x 16 x float> %v5378}5379 5380define <vscale x 16 x float> @vfnmadd_vf_nxv16f32_neg_splat_unmasked(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, i32 zeroext %evl) {5381; CHECK-LABEL: vfnmadd_vf_nxv16f32_neg_splat_unmasked:5382; CHECK:       # %bb.0:5383; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma5384; CHECK-NEXT:    vfnmadd.vf v8, fa0, v165385; CHECK-NEXT:    ret5386  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 05387  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5388  %negvb = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x i1> splat (i1 true), i32 %evl)5389  %negvc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)5390  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %negvb, <vscale x 16 x float> %negvc, <vscale x 16 x i1> splat (i1 true), i32 %evl)5391  ret <vscale x 16 x float> %v5392}5393 5394define <vscale x 16 x float> @vfnmadd_vf_nxv16f32_neg_splat_unmasked_commute(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, i32 zeroext %evl) {5395; CHECK-LABEL: vfnmadd_vf_nxv16f32_neg_splat_unmasked_commute:5396; CHECK:       # %bb.0:5397; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma5398; CHECK-NEXT:    vfnmadd.vf v8, fa0, v165399; CHECK-NEXT:    ret5400  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 05401  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5402  %negvb = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x i1> splat (i1 true), i32 %evl)5403  %negvc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)5404  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %negvb, <vscale x 16 x float> %va, <vscale x 16 x float> %negvc, <vscale x 16 x i1> splat (i1 true), i32 %evl)5405  ret <vscale x 16 x float> %v5406}5407 5408define <vscale x 16 x float> @vfnmsub_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %b, <vscale x 16 x float> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {5409; CHECK-LABEL: vfnmsub_vv_nxv16f32:5410; CHECK:       # %bb.0:5411; CHECK-NEXT:    vl8re32.v v24, (a0)5412; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma5413; CHECK-NEXT:    vfnmadd.vv v16, v8, v24, v0.t5414; CHECK-NEXT:    vmv.v.v v8, v165415; CHECK-NEXT:    ret5416  %negb = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %b, <vscale x 16 x i1> %m, i32 %evl)5417  %negc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %c, <vscale x 16 x i1> %m, i32 %evl)5418  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %negb, <vscale x 16 x float> %negc, <vscale x 16 x i1> %m, i32 %evl)5419  ret <vscale x 16 x float> %v5420}5421 5422define <vscale x 16 x float> @vfnmsub_vv_nxv16f32_commuted(<vscale x 16 x float> %va, <vscale x 16 x float> %b, <vscale x 16 x float> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {5423; CHECK-LABEL: vfnmsub_vv_nxv16f32_commuted:5424; CHECK:       # %bb.0:5425; CHECK-NEXT:    vl8re32.v v24, (a0)5426; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma5427; CHECK-NEXT:    vfnmadd.vv v8, v16, v24, v0.t5428; CHECK-NEXT:    ret5429  %negb = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %b, <vscale x 16 x i1> %m, i32 %evl)5430  %negc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %c, <vscale x 16 x i1> %m, i32 %evl)5431  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %negb, <vscale x 16 x float> %va, <vscale x 16 x float> %negc, <vscale x 16 x i1> %m, i32 %evl)5432  ret <vscale x 16 x float> %v5433}5434 5435define <vscale x 16 x float> @vfnmsub_vv_nxv16f32_unmasked(<vscale x 16 x float> %va, <vscale x 16 x float> %b, <vscale x 16 x float> %c, i32 zeroext %evl) {5436; CHECK-LABEL: vfnmsub_vv_nxv16f32_unmasked:5437; CHECK:       # %bb.0:5438; CHECK-NEXT:    vl8re32.v v24, (a0)5439; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma5440; CHECK-NEXT:    vfnmadd.vv v8, v16, v245441; CHECK-NEXT:    ret5442  %negb = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %b, <vscale x 16 x i1> splat (i1 true), i32 %evl)5443  %negc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %c, <vscale x 16 x i1> splat (i1 true), i32 %evl)5444  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %negb, <vscale x 16 x float> %negc, <vscale x 16 x i1> splat (i1 true), i32 %evl)5445  ret <vscale x 16 x float> %v5446}5447 5448define <vscale x 16 x float> @vfnmsub_vv_nxv16f32_unmasked_commuted(<vscale x 16 x float> %va, <vscale x 16 x float> %b, <vscale x 16 x float> %c, i32 zeroext %evl) {5449; CHECK-LABEL: vfnmsub_vv_nxv16f32_unmasked_commuted:5450; CHECK:       # %bb.0:5451; CHECK-NEXT:    vl8re32.v v24, (a0)5452; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma5453; CHECK-NEXT:    vfnmadd.vv v8, v16, v245454; CHECK-NEXT:    ret5455  %negb = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %b, <vscale x 16 x i1> splat (i1 true), i32 %evl)5456  %negc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %c, <vscale x 16 x i1> splat (i1 true), i32 %evl)5457  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %negb, <vscale x 16 x float> %va, <vscale x 16 x float> %negc, <vscale x 16 x i1> splat (i1 true), i32 %evl)5458  ret <vscale x 16 x float> %v5459}5460 5461define <vscale x 16 x float> @vfnmsub_vf_nxv16f32(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {5462; CHECK-LABEL: vfnmsub_vf_nxv16f32:5463; CHECK:       # %bb.0:5464; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma5465; CHECK-NEXT:    vfnmsub.vf v8, fa0, v16, v0.t5466; CHECK-NEXT:    ret5467  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 05468  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5469  %negva = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x i1> %m, i32 %evl)5470  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %negva, <vscale x 16 x float> %vb, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 %evl)5471  ret <vscale x 16 x float> %v5472}5473 5474define <vscale x 16 x float> @vfnmsub_vf_nxv16f32_commute(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {5475; CHECK-LABEL: vfnmsub_vf_nxv16f32_commute:5476; CHECK:       # %bb.0:5477; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma5478; CHECK-NEXT:    vfnmsub.vf v8, fa0, v16, v0.t5479; CHECK-NEXT:    ret5480  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 05481  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5482  %negva = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x i1> %m, i32 %evl)5483  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x float> %negva, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 %evl)5484  ret <vscale x 16 x float> %v5485}5486 5487define <vscale x 16 x float> @vfnmsub_vf_nxv16f32_unmasked(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, i32 zeroext %evl) {5488; CHECK-LABEL: vfnmsub_vf_nxv16f32_unmasked:5489; CHECK:       # %bb.0:5490; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma5491; CHECK-NEXT:    vfnmsub.vf v8, fa0, v165492; CHECK-NEXT:    ret5493  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 05494  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5495  %negva = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x i1> splat (i1 true), i32 %evl)5496  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %negva, <vscale x 16 x float> %vb, <vscale x 16 x float> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)5497  ret <vscale x 16 x float> %v5498}5499 5500define <vscale x 16 x float> @vfnmsub_vf_nxv16f32_unmasked_commute(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, i32 zeroext %evl) {5501; CHECK-LABEL: vfnmsub_vf_nxv16f32_unmasked_commute:5502; CHECK:       # %bb.0:5503; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma5504; CHECK-NEXT:    vfnmsub.vf v8, fa0, v165505; CHECK-NEXT:    ret5506  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 05507  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5508  %negva = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x i1> splat (i1 true), i32 %evl)5509  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x float> %negva, <vscale x 16 x float> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)5510  ret <vscale x 16 x float> %v5511}5512 5513define <vscale x 16 x float> @vfnmsub_vf_nxv16f32_neg_splat(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {5514; CHECK-LABEL: vfnmsub_vf_nxv16f32_neg_splat:5515; CHECK:       # %bb.0:5516; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma5517; CHECK-NEXT:    vfnmsub.vf v8, fa0, v16, v0.t5518; CHECK-NEXT:    ret5519  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 05520  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5521  %negvb = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x i1> %m, i32 %evl)5522  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %negvb, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 %evl)5523  ret <vscale x 16 x float> %v5524}5525 5526define <vscale x 16 x float> @vfnmsub_vf_nxv16f32_neg_splat_commute(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {5527; CHECK-LABEL: vfnmsub_vf_nxv16f32_neg_splat_commute:5528; CHECK:       # %bb.0:5529; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma5530; CHECK-NEXT:    vfnmsub.vf v8, fa0, v16, v0.t5531; CHECK-NEXT:    ret5532  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 05533  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5534  %negvb = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x i1> %m, i32 %evl)5535  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %negvb, <vscale x 16 x float> %va, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 %evl)5536  ret <vscale x 16 x float> %v5537}5538 5539define <vscale x 16 x float> @vfnmsub_vf_nxv16f32_neg_splat_unmasked(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, i32 zeroext %evl) {5540; CHECK-LABEL: vfnmsub_vf_nxv16f32_neg_splat_unmasked:5541; CHECK:       # %bb.0:5542; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma5543; CHECK-NEXT:    vfnmsub.vf v8, fa0, v165544; CHECK-NEXT:    ret5545  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 05546  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5547  %negvb = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x i1> splat (i1 true), i32 %evl)5548  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %negvb, <vscale x 16 x float> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)5549  ret <vscale x 16 x float> %v5550}5551 5552define <vscale x 16 x float> @vfnmsub_vf_nxv16f32_neg_splat_unmasked_commute(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, i32 zeroext %evl) {5553; CHECK-LABEL: vfnmsub_vf_nxv16f32_neg_splat_unmasked_commute:5554; CHECK:       # %bb.0:5555; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma5556; CHECK-NEXT:    vfnmsub.vf v8, fa0, v165557; CHECK-NEXT:    ret5558  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 05559  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5560  %negvb = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x i1> splat (i1 true), i32 %evl)5561  %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %negvb, <vscale x 16 x float> %va, <vscale x 16 x float> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)5562  ret <vscale x 16 x float> %v5563}5564 5565define <vscale x 1 x double> @vfmsub_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %b, <vscale x 1 x double> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {5566; CHECK-LABEL: vfmsub_vv_nxv1f64:5567; CHECK:       # %bb.0:5568; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma5569; CHECK-NEXT:    vfmsub.vv v9, v8, v10, v0.t5570; CHECK-NEXT:    vmv.v.v v8, v95571; CHECK-NEXT:    ret5572  %negc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %c, <vscale x 1 x i1> %m, i32 %evl)5573  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %b, <vscale x 1 x double> %negc, <vscale x 1 x i1> %m, i32 %evl)5574  ret <vscale x 1 x double> %v5575}5576 5577define <vscale x 1 x double> @vfmsub_vv_nxv1f64_unmasked(<vscale x 1 x double> %va, <vscale x 1 x double> %b, <vscale x 1 x double> %c, i32 zeroext %evl) {5578; CHECK-LABEL: vfmsub_vv_nxv1f64_unmasked:5579; CHECK:       # %bb.0:5580; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma5581; CHECK-NEXT:    vfmsub.vv v8, v9, v105582; CHECK-NEXT:    ret5583  %negc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)5584  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %b, <vscale x 1 x double> %negc, <vscale x 1 x i1> splat (i1 true), i32 %evl)5585  ret <vscale x 1 x double> %v5586}5587 5588define <vscale x 1 x double> @vfmsub_vf_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {5589; CHECK-LABEL: vfmsub_vf_nxv1f64:5590; CHECK:       # %bb.0:5591; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma5592; CHECK-NEXT:    vfmsub.vf v8, fa0, v9, v0.t5593; CHECK-NEXT:    ret5594  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 05595  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer5596  %negvc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 %evl)5597  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, <vscale x 1 x double> %negvc, <vscale x 1 x i1> %m, i32 %evl)5598  ret <vscale x 1 x double> %v5599}5600 5601define <vscale x 1 x double> @vfmsub_vf_nxv1f64_commute(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {5602; CHECK-LABEL: vfmsub_vf_nxv1f64_commute:5603; CHECK:       # %bb.0:5604; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma5605; CHECK-NEXT:    vfmsub.vf v8, fa0, v9, v0.t5606; CHECK-NEXT:    ret5607  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 05608  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer5609  %negvc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 %evl)5610  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %va, <vscale x 1 x double> %negvc, <vscale x 1 x i1> %m, i32 %evl)5611  ret <vscale x 1 x double> %v5612}5613 5614define <vscale x 1 x double> @vfmsub_vf_nxv1f64_unmasked(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, i32 zeroext %evl) {5615; CHECK-LABEL: vfmsub_vf_nxv1f64_unmasked:5616; CHECK:       # %bb.0:5617; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma5618; CHECK-NEXT:    vfmsub.vf v8, fa0, v95619; CHECK-NEXT:    ret5620  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 05621  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer5622  %negvc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)5623  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, <vscale x 1 x double> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)5624  ret <vscale x 1 x double> %v5625}5626 5627define <vscale x 1 x double> @vfmsub_vf_nxv1f64_unmasked_commute(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, i32 zeroext %evl) {5628; CHECK-LABEL: vfmsub_vf_nxv1f64_unmasked_commute:5629; CHECK:       # %bb.0:5630; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma5631; CHECK-NEXT:    vfmsub.vf v8, fa0, v95632; CHECK-NEXT:    ret5633  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 05634  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer5635  %negvc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)5636  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %va, <vscale x 1 x double> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)5637  ret <vscale x 1 x double> %v5638}5639 5640define <vscale x 1 x double> @vfnmadd_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %b, <vscale x 1 x double> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {5641; CHECK-LABEL: vfnmadd_vv_nxv1f64:5642; CHECK:       # %bb.0:5643; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma5644; CHECK-NEXT:    vfnmadd.vv v9, v8, v10, v0.t5645; CHECK-NEXT:    vmv.v.v v8, v95646; CHECK-NEXT:    ret5647  %negb = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %b, <vscale x 1 x i1> %m, i32 %evl)5648  %negc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %c, <vscale x 1 x i1> %m, i32 %evl)5649  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %negb, <vscale x 1 x double> %negc, <vscale x 1 x i1> %m, i32 %evl)5650  ret <vscale x 1 x double> %v5651}5652 5653define <vscale x 1 x double> @vfnmadd_vv_nxv1f64_commuted(<vscale x 1 x double> %va, <vscale x 1 x double> %b, <vscale x 1 x double> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {5654; CHECK-LABEL: vfnmadd_vv_nxv1f64_commuted:5655; CHECK:       # %bb.0:5656; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma5657; CHECK-NEXT:    vfnmadd.vv v8, v9, v10, v0.t5658; CHECK-NEXT:    ret5659  %negb = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %b, <vscale x 1 x i1> %m, i32 %evl)5660  %negc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %c, <vscale x 1 x i1> %m, i32 %evl)5661  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %negb, <vscale x 1 x double> %va, <vscale x 1 x double> %negc, <vscale x 1 x i1> %m, i32 %evl)5662  ret <vscale x 1 x double> %v5663}5664 5665define <vscale x 1 x double> @vfnmadd_vv_nxv1f64_unmasked(<vscale x 1 x double> %va, <vscale x 1 x double> %b, <vscale x 1 x double> %c, i32 zeroext %evl) {5666; CHECK-LABEL: vfnmadd_vv_nxv1f64_unmasked:5667; CHECK:       # %bb.0:5668; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma5669; CHECK-NEXT:    vfnmadd.vv v8, v9, v105670; CHECK-NEXT:    ret5671  %negb = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)5672  %negc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)5673  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %negb, <vscale x 1 x double> %negc, <vscale x 1 x i1> splat (i1 true), i32 %evl)5674  ret <vscale x 1 x double> %v5675}5676 5677define <vscale x 1 x double> @vfnmadd_vv_nxv1f64_unmasked_commuted(<vscale x 1 x double> %va, <vscale x 1 x double> %b, <vscale x 1 x double> %c, i32 zeroext %evl) {5678; CHECK-LABEL: vfnmadd_vv_nxv1f64_unmasked_commuted:5679; CHECK:       # %bb.0:5680; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma5681; CHECK-NEXT:    vfnmadd.vv v8, v9, v105682; CHECK-NEXT:    ret5683  %negb = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)5684  %negc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)5685  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %negb, <vscale x 1 x double> %va, <vscale x 1 x double> %negc, <vscale x 1 x i1> splat (i1 true), i32 %evl)5686  ret <vscale x 1 x double> %v5687}5688 5689define <vscale x 1 x double> @vfnmadd_vf_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {5690; CHECK-LABEL: vfnmadd_vf_nxv1f64:5691; CHECK:       # %bb.0:5692; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma5693; CHECK-NEXT:    vfnmadd.vf v8, fa0, v9, v0.t5694; CHECK-NEXT:    ret5695  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 05696  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer5697  %negva = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x i1> %m, i32 %evl)5698  %negvc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 %evl)5699  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %negva, <vscale x 1 x double> %vb, <vscale x 1 x double> %negvc, <vscale x 1 x i1> %m, i32 %evl)5700  ret <vscale x 1 x double> %v5701}5702 5703define <vscale x 1 x double> @vfnmadd_vf_nxv1f64_commute(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {5704; CHECK-LABEL: vfnmadd_vf_nxv1f64_commute:5705; CHECK:       # %bb.0:5706; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma5707; CHECK-NEXT:    vfnmadd.vf v8, fa0, v9, v0.t5708; CHECK-NEXT:    ret5709  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 05710  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer5711  %negva = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x i1> %m, i32 %evl)5712  %negvc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 %evl)5713  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %negva, <vscale x 1 x double> %negvc, <vscale x 1 x i1> %m, i32 %evl)5714  ret <vscale x 1 x double> %v5715}5716 5717define <vscale x 1 x double> @vfnmadd_vf_nxv1f64_unmasked(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, i32 zeroext %evl) {5718; CHECK-LABEL: vfnmadd_vf_nxv1f64_unmasked:5719; CHECK:       # %bb.0:5720; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma5721; CHECK-NEXT:    vfnmadd.vf v8, fa0, v95722; CHECK-NEXT:    ret5723  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 05724  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer5725  %negva = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x i1> splat (i1 true), i32 %evl)5726  %negvc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)5727  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %negva, <vscale x 1 x double> %vb, <vscale x 1 x double> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)5728  ret <vscale x 1 x double> %v5729}5730 5731define <vscale x 1 x double> @vfnmadd_vf_nxv1f64_unmasked_commute(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, i32 zeroext %evl) {5732; CHECK-LABEL: vfnmadd_vf_nxv1f64_unmasked_commute:5733; CHECK:       # %bb.0:5734; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma5735; CHECK-NEXT:    vfnmadd.vf v8, fa0, v95736; CHECK-NEXT:    ret5737  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 05738  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer5739  %negva = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x i1> splat (i1 true), i32 %evl)5740  %negvc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)5741  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %negva, <vscale x 1 x double> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)5742  ret <vscale x 1 x double> %v5743}5744 5745define <vscale x 1 x double> @vfnmadd_vf_nxv1f64_neg_splat(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {5746; CHECK-LABEL: vfnmadd_vf_nxv1f64_neg_splat:5747; CHECK:       # %bb.0:5748; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma5749; CHECK-NEXT:    vfnmadd.vf v8, fa0, v9, v0.t5750; CHECK-NEXT:    ret5751  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 05752  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer5753  %negvb = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x i1> %m, i32 %evl)5754  %negvc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 %evl)5755  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %negvb, <vscale x 1 x double> %negvc, <vscale x 1 x i1> %m, i32 %evl)5756  ret <vscale x 1 x double> %v5757}5758 5759define <vscale x 1 x double> @vfnmadd_vf_nxv1f64_neg_splat_commute(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {5760; CHECK-LABEL: vfnmadd_vf_nxv1f64_neg_splat_commute:5761; CHECK:       # %bb.0:5762; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma5763; CHECK-NEXT:    vfnmadd.vf v8, fa0, v9, v0.t5764; CHECK-NEXT:    ret5765  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 05766  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer5767  %negvb = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x i1> %m, i32 %evl)5768  %negvc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 %evl)5769  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %negvb, <vscale x 1 x double> %va, <vscale x 1 x double> %negvc, <vscale x 1 x i1> %m, i32 %evl)5770  ret <vscale x 1 x double> %v5771}5772 5773define <vscale x 1 x double> @vfnmadd_vf_nxv1f64_neg_splat_unmasked(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, i32 zeroext %evl) {5774; CHECK-LABEL: vfnmadd_vf_nxv1f64_neg_splat_unmasked:5775; CHECK:       # %bb.0:5776; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma5777; CHECK-NEXT:    vfnmadd.vf v8, fa0, v95778; CHECK-NEXT:    ret5779  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 05780  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer5781  %negvb = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)5782  %negvc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)5783  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %negvb, <vscale x 1 x double> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)5784  ret <vscale x 1 x double> %v5785}5786 5787define <vscale x 1 x double> @vfnmadd_vf_nxv1f64_neg_splat_unmasked_commute(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, i32 zeroext %evl) {5788; CHECK-LABEL: vfnmadd_vf_nxv1f64_neg_splat_unmasked_commute:5789; CHECK:       # %bb.0:5790; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma5791; CHECK-NEXT:    vfnmadd.vf v8, fa0, v95792; CHECK-NEXT:    ret5793  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 05794  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer5795  %negvb = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)5796  %negvc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)5797  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %negvb, <vscale x 1 x double> %va, <vscale x 1 x double> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)5798  ret <vscale x 1 x double> %v5799}5800 5801define <vscale x 1 x double> @vfnmsub_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %b, <vscale x 1 x double> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {5802; CHECK-LABEL: vfnmsub_vv_nxv1f64:5803; CHECK:       # %bb.0:5804; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma5805; CHECK-NEXT:    vfnmadd.vv v9, v8, v10, v0.t5806; CHECK-NEXT:    vmv.v.v v8, v95807; CHECK-NEXT:    ret5808  %negb = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %b, <vscale x 1 x i1> %m, i32 %evl)5809  %negc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %c, <vscale x 1 x i1> %m, i32 %evl)5810  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %negb, <vscale x 1 x double> %negc, <vscale x 1 x i1> %m, i32 %evl)5811  ret <vscale x 1 x double> %v5812}5813 5814define <vscale x 1 x double> @vfnmsub_vv_nxv1f64_commuted(<vscale x 1 x double> %va, <vscale x 1 x double> %b, <vscale x 1 x double> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {5815; CHECK-LABEL: vfnmsub_vv_nxv1f64_commuted:5816; CHECK:       # %bb.0:5817; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma5818; CHECK-NEXT:    vfnmadd.vv v8, v9, v10, v0.t5819; CHECK-NEXT:    ret5820  %negb = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %b, <vscale x 1 x i1> %m, i32 %evl)5821  %negc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %c, <vscale x 1 x i1> %m, i32 %evl)5822  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %negb, <vscale x 1 x double> %va, <vscale x 1 x double> %negc, <vscale x 1 x i1> %m, i32 %evl)5823  ret <vscale x 1 x double> %v5824}5825 5826define <vscale x 1 x double> @vfnmsub_vv_nxv1f64_unmasked(<vscale x 1 x double> %va, <vscale x 1 x double> %b, <vscale x 1 x double> %c, i32 zeroext %evl) {5827; CHECK-LABEL: vfnmsub_vv_nxv1f64_unmasked:5828; CHECK:       # %bb.0:5829; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma5830; CHECK-NEXT:    vfnmadd.vv v8, v9, v105831; CHECK-NEXT:    ret5832  %negb = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)5833  %negc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)5834  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %negb, <vscale x 1 x double> %negc, <vscale x 1 x i1> splat (i1 true), i32 %evl)5835  ret <vscale x 1 x double> %v5836}5837 5838define <vscale x 1 x double> @vfnmsub_vv_nxv1f64_unmasked_commuted(<vscale x 1 x double> %va, <vscale x 1 x double> %b, <vscale x 1 x double> %c, i32 zeroext %evl) {5839; CHECK-LABEL: vfnmsub_vv_nxv1f64_unmasked_commuted:5840; CHECK:       # %bb.0:5841; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma5842; CHECK-NEXT:    vfnmadd.vv v8, v9, v105843; CHECK-NEXT:    ret5844  %negb = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)5845  %negc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)5846  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %negb, <vscale x 1 x double> %va, <vscale x 1 x double> %negc, <vscale x 1 x i1> splat (i1 true), i32 %evl)5847  ret <vscale x 1 x double> %v5848}5849 5850define <vscale x 1 x double> @vfnmsub_vf_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {5851; CHECK-LABEL: vfnmsub_vf_nxv1f64:5852; CHECK:       # %bb.0:5853; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma5854; CHECK-NEXT:    vfnmsub.vf v8, fa0, v9, v0.t5855; CHECK-NEXT:    ret5856  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 05857  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer5858  %negva = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x i1> %m, i32 %evl)5859  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %negva, <vscale x 1 x double> %vb, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 %evl)5860  ret <vscale x 1 x double> %v5861}5862 5863define <vscale x 1 x double> @vfnmsub_vf_nxv1f64_commute(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {5864; CHECK-LABEL: vfnmsub_vf_nxv1f64_commute:5865; CHECK:       # %bb.0:5866; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma5867; CHECK-NEXT:    vfnmsub.vf v8, fa0, v9, v0.t5868; CHECK-NEXT:    ret5869  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 05870  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer5871  %negva = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x i1> %m, i32 %evl)5872  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %negva, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 %evl)5873  ret <vscale x 1 x double> %v5874}5875 5876define <vscale x 1 x double> @vfnmsub_vf_nxv1f64_unmasked(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, i32 zeroext %evl) {5877; CHECK-LABEL: vfnmsub_vf_nxv1f64_unmasked:5878; CHECK:       # %bb.0:5879; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma5880; CHECK-NEXT:    vfnmsub.vf v8, fa0, v95881; CHECK-NEXT:    ret5882  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 05883  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer5884  %negva = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x i1> splat (i1 true), i32 %evl)5885  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %negva, <vscale x 1 x double> %vb, <vscale x 1 x double> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)5886  ret <vscale x 1 x double> %v5887}5888 5889define <vscale x 1 x double> @vfnmsub_vf_nxv1f64_unmasked_commute(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, i32 zeroext %evl) {5890; CHECK-LABEL: vfnmsub_vf_nxv1f64_unmasked_commute:5891; CHECK:       # %bb.0:5892; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma5893; CHECK-NEXT:    vfnmsub.vf v8, fa0, v95894; CHECK-NEXT:    ret5895  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 05896  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer5897  %negva = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x i1> splat (i1 true), i32 %evl)5898  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %negva, <vscale x 1 x double> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)5899  ret <vscale x 1 x double> %v5900}5901 5902define <vscale x 1 x double> @vfnmsub_vf_nxv1f64_neg_splat(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {5903; CHECK-LABEL: vfnmsub_vf_nxv1f64_neg_splat:5904; CHECK:       # %bb.0:5905; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma5906; CHECK-NEXT:    vfnmsub.vf v8, fa0, v9, v0.t5907; CHECK-NEXT:    ret5908  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 05909  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer5910  %negvb = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x i1> %m, i32 %evl)5911  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %negvb, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 %evl)5912  ret <vscale x 1 x double> %v5913}5914 5915define <vscale x 1 x double> @vfnmsub_vf_nxv1f64_neg_splat_commute(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {5916; CHECK-LABEL: vfnmsub_vf_nxv1f64_neg_splat_commute:5917; CHECK:       # %bb.0:5918; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma5919; CHECK-NEXT:    vfnmsub.vf v8, fa0, v9, v0.t5920; CHECK-NEXT:    ret5921  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 05922  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer5923  %negvb = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x i1> %m, i32 %evl)5924  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %negvb, <vscale x 1 x double> %va, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 %evl)5925  ret <vscale x 1 x double> %v5926}5927 5928define <vscale x 1 x double> @vfnmsub_vf_nxv1f64_neg_splat_unmasked(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, i32 zeroext %evl) {5929; CHECK-LABEL: vfnmsub_vf_nxv1f64_neg_splat_unmasked:5930; CHECK:       # %bb.0:5931; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma5932; CHECK-NEXT:    vfnmsub.vf v8, fa0, v95933; CHECK-NEXT:    ret5934  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 05935  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer5936  %negvb = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)5937  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %negvb, <vscale x 1 x double> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)5938  ret <vscale x 1 x double> %v5939}5940 5941define <vscale x 1 x double> @vfnmsub_vf_nxv1f64_neg_splat_unmasked_commute(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, i32 zeroext %evl) {5942; CHECK-LABEL: vfnmsub_vf_nxv1f64_neg_splat_unmasked_commute:5943; CHECK:       # %bb.0:5944; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma5945; CHECK-NEXT:    vfnmsub.vf v8, fa0, v95946; CHECK-NEXT:    ret5947  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 05948  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer5949  %negvb = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)5950  %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %negvb, <vscale x 1 x double> %va, <vscale x 1 x double> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)5951  ret <vscale x 1 x double> %v5952}5953 5954define <vscale x 2 x double> @vfmsub_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %b, <vscale x 2 x double> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {5955; CHECK-LABEL: vfmsub_vv_nxv2f64:5956; CHECK:       # %bb.0:5957; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma5958; CHECK-NEXT:    vfmsub.vv v10, v8, v12, v0.t5959; CHECK-NEXT:    vmv.v.v v8, v105960; CHECK-NEXT:    ret5961  %negc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %c, <vscale x 2 x i1> %m, i32 %evl)5962  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %b, <vscale x 2 x double> %negc, <vscale x 2 x i1> %m, i32 %evl)5963  ret <vscale x 2 x double> %v5964}5965 5966define <vscale x 2 x double> @vfmsub_vv_nxv2f64_unmasked(<vscale x 2 x double> %va, <vscale x 2 x double> %b, <vscale x 2 x double> %c, i32 zeroext %evl) {5967; CHECK-LABEL: vfmsub_vv_nxv2f64_unmasked:5968; CHECK:       # %bb.0:5969; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma5970; CHECK-NEXT:    vfmsub.vv v8, v10, v125971; CHECK-NEXT:    ret5972  %negc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)5973  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %b, <vscale x 2 x double> %negc, <vscale x 2 x i1> splat (i1 true), i32 %evl)5974  ret <vscale x 2 x double> %v5975}5976 5977define <vscale x 2 x double> @vfmsub_vf_nxv2f64(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {5978; CHECK-LABEL: vfmsub_vf_nxv2f64:5979; CHECK:       # %bb.0:5980; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma5981; CHECK-NEXT:    vfmsub.vf v8, fa0, v10, v0.t5982; CHECK-NEXT:    ret5983  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 05984  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer5985  %negvc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 %evl)5986  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, <vscale x 2 x double> %negvc, <vscale x 2 x i1> %m, i32 %evl)5987  ret <vscale x 2 x double> %v5988}5989 5990define <vscale x 2 x double> @vfmsub_vf_nxv2f64_commute(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {5991; CHECK-LABEL: vfmsub_vf_nxv2f64_commute:5992; CHECK:       # %bb.0:5993; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma5994; CHECK-NEXT:    vfmsub.vf v8, fa0, v10, v0.t5995; CHECK-NEXT:    ret5996  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 05997  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer5998  %negvc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 %evl)5999  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x double> %va, <vscale x 2 x double> %negvc, <vscale x 2 x i1> %m, i32 %evl)6000  ret <vscale x 2 x double> %v6001}6002 6003define <vscale x 2 x double> @vfmsub_vf_nxv2f64_unmasked(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, i32 zeroext %evl) {6004; CHECK-LABEL: vfmsub_vf_nxv2f64_unmasked:6005; CHECK:       # %bb.0:6006; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma6007; CHECK-NEXT:    vfmsub.vf v8, fa0, v106008; CHECK-NEXT:    ret6009  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 06010  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6011  %negvc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)6012  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, <vscale x 2 x double> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)6013  ret <vscale x 2 x double> %v6014}6015 6016define <vscale x 2 x double> @vfmsub_vf_nxv2f64_unmasked_commute(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, i32 zeroext %evl) {6017; CHECK-LABEL: vfmsub_vf_nxv2f64_unmasked_commute:6018; CHECK:       # %bb.0:6019; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma6020; CHECK-NEXT:    vfmsub.vf v8, fa0, v106021; CHECK-NEXT:    ret6022  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 06023  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6024  %negvc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)6025  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x double> %va, <vscale x 2 x double> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)6026  ret <vscale x 2 x double> %v6027}6028 6029define <vscale x 2 x double> @vfnmadd_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %b, <vscale x 2 x double> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {6030; CHECK-LABEL: vfnmadd_vv_nxv2f64:6031; CHECK:       # %bb.0:6032; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma6033; CHECK-NEXT:    vfnmadd.vv v10, v8, v12, v0.t6034; CHECK-NEXT:    vmv.v.v v8, v106035; CHECK-NEXT:    ret6036  %negb = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %b, <vscale x 2 x i1> %m, i32 %evl)6037  %negc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %c, <vscale x 2 x i1> %m, i32 %evl)6038  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %negb, <vscale x 2 x double> %negc, <vscale x 2 x i1> %m, i32 %evl)6039  ret <vscale x 2 x double> %v6040}6041 6042define <vscale x 2 x double> @vfnmadd_vv_nxv2f64_commuted(<vscale x 2 x double> %va, <vscale x 2 x double> %b, <vscale x 2 x double> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {6043; CHECK-LABEL: vfnmadd_vv_nxv2f64_commuted:6044; CHECK:       # %bb.0:6045; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma6046; CHECK-NEXT:    vfnmadd.vv v8, v10, v12, v0.t6047; CHECK-NEXT:    ret6048  %negb = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %b, <vscale x 2 x i1> %m, i32 %evl)6049  %negc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %c, <vscale x 2 x i1> %m, i32 %evl)6050  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %negb, <vscale x 2 x double> %va, <vscale x 2 x double> %negc, <vscale x 2 x i1> %m, i32 %evl)6051  ret <vscale x 2 x double> %v6052}6053 6054define <vscale x 2 x double> @vfnmadd_vv_nxv2f64_unmasked(<vscale x 2 x double> %va, <vscale x 2 x double> %b, <vscale x 2 x double> %c, i32 zeroext %evl) {6055; CHECK-LABEL: vfnmadd_vv_nxv2f64_unmasked:6056; CHECK:       # %bb.0:6057; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma6058; CHECK-NEXT:    vfnmadd.vv v8, v10, v126059; CHECK-NEXT:    ret6060  %negb = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)6061  %negc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)6062  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %negb, <vscale x 2 x double> %negc, <vscale x 2 x i1> splat (i1 true), i32 %evl)6063  ret <vscale x 2 x double> %v6064}6065 6066define <vscale x 2 x double> @vfnmadd_vv_nxv2f64_unmasked_commuted(<vscale x 2 x double> %va, <vscale x 2 x double> %b, <vscale x 2 x double> %c, i32 zeroext %evl) {6067; CHECK-LABEL: vfnmadd_vv_nxv2f64_unmasked_commuted:6068; CHECK:       # %bb.0:6069; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma6070; CHECK-NEXT:    vfnmadd.vv v8, v10, v126071; CHECK-NEXT:    ret6072  %negb = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)6073  %negc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)6074  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %negb, <vscale x 2 x double> %va, <vscale x 2 x double> %negc, <vscale x 2 x i1> splat (i1 true), i32 %evl)6075  ret <vscale x 2 x double> %v6076}6077 6078define <vscale x 2 x double> @vfnmadd_vf_nxv2f64(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {6079; CHECK-LABEL: vfnmadd_vf_nxv2f64:6080; CHECK:       # %bb.0:6081; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma6082; CHECK-NEXT:    vfnmadd.vf v8, fa0, v10, v0.t6083; CHECK-NEXT:    ret6084  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 06085  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6086  %negva = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x i1> %m, i32 %evl)6087  %negvc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 %evl)6088  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %negva, <vscale x 2 x double> %vb, <vscale x 2 x double> %negvc, <vscale x 2 x i1> %m, i32 %evl)6089  ret <vscale x 2 x double> %v6090}6091 6092define <vscale x 2 x double> @vfnmadd_vf_nxv2f64_commute(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {6093; CHECK-LABEL: vfnmadd_vf_nxv2f64_commute:6094; CHECK:       # %bb.0:6095; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma6096; CHECK-NEXT:    vfnmadd.vf v8, fa0, v10, v0.t6097; CHECK-NEXT:    ret6098  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 06099  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6100  %negva = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x i1> %m, i32 %evl)6101  %negvc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 %evl)6102  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x double> %negva, <vscale x 2 x double> %negvc, <vscale x 2 x i1> %m, i32 %evl)6103  ret <vscale x 2 x double> %v6104}6105 6106define <vscale x 2 x double> @vfnmadd_vf_nxv2f64_unmasked(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, i32 zeroext %evl) {6107; CHECK-LABEL: vfnmadd_vf_nxv2f64_unmasked:6108; CHECK:       # %bb.0:6109; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma6110; CHECK-NEXT:    vfnmadd.vf v8, fa0, v106111; CHECK-NEXT:    ret6112  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 06113  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6114  %negva = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x i1> splat (i1 true), i32 %evl)6115  %negvc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)6116  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %negva, <vscale x 2 x double> %vb, <vscale x 2 x double> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)6117  ret <vscale x 2 x double> %v6118}6119 6120define <vscale x 2 x double> @vfnmadd_vf_nxv2f64_unmasked_commute(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, i32 zeroext %evl) {6121; CHECK-LABEL: vfnmadd_vf_nxv2f64_unmasked_commute:6122; CHECK:       # %bb.0:6123; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma6124; CHECK-NEXT:    vfnmadd.vf v8, fa0, v106125; CHECK-NEXT:    ret6126  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 06127  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6128  %negva = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x i1> splat (i1 true), i32 %evl)6129  %negvc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)6130  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x double> %negva, <vscale x 2 x double> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)6131  ret <vscale x 2 x double> %v6132}6133 6134define <vscale x 2 x double> @vfnmadd_vf_nxv2f64_neg_splat(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {6135; CHECK-LABEL: vfnmadd_vf_nxv2f64_neg_splat:6136; CHECK:       # %bb.0:6137; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma6138; CHECK-NEXT:    vfnmadd.vf v8, fa0, v10, v0.t6139; CHECK-NEXT:    ret6140  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 06141  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6142  %negvb = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x i1> %m, i32 %evl)6143  %negvc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 %evl)6144  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %negvb, <vscale x 2 x double> %negvc, <vscale x 2 x i1> %m, i32 %evl)6145  ret <vscale x 2 x double> %v6146}6147 6148define <vscale x 2 x double> @vfnmadd_vf_nxv2f64_neg_splat_commute(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {6149; CHECK-LABEL: vfnmadd_vf_nxv2f64_neg_splat_commute:6150; CHECK:       # %bb.0:6151; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma6152; CHECK-NEXT:    vfnmadd.vf v8, fa0, v10, v0.t6153; CHECK-NEXT:    ret6154  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 06155  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6156  %negvb = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x i1> %m, i32 %evl)6157  %negvc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 %evl)6158  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %negvb, <vscale x 2 x double> %va, <vscale x 2 x double> %negvc, <vscale x 2 x i1> %m, i32 %evl)6159  ret <vscale x 2 x double> %v6160}6161 6162define <vscale x 2 x double> @vfnmadd_vf_nxv2f64_neg_splat_unmasked(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, i32 zeroext %evl) {6163; CHECK-LABEL: vfnmadd_vf_nxv2f64_neg_splat_unmasked:6164; CHECK:       # %bb.0:6165; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma6166; CHECK-NEXT:    vfnmadd.vf v8, fa0, v106167; CHECK-NEXT:    ret6168  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 06169  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6170  %negvb = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)6171  %negvc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)6172  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %negvb, <vscale x 2 x double> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)6173  ret <vscale x 2 x double> %v6174}6175 6176define <vscale x 2 x double> @vfnmadd_vf_nxv2f64_neg_splat_unmasked_commute(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, i32 zeroext %evl) {6177; CHECK-LABEL: vfnmadd_vf_nxv2f64_neg_splat_unmasked_commute:6178; CHECK:       # %bb.0:6179; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma6180; CHECK-NEXT:    vfnmadd.vf v8, fa0, v106181; CHECK-NEXT:    ret6182  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 06183  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6184  %negvb = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)6185  %negvc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)6186  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %negvb, <vscale x 2 x double> %va, <vscale x 2 x double> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)6187  ret <vscale x 2 x double> %v6188}6189 6190define <vscale x 2 x double> @vfnmsub_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %b, <vscale x 2 x double> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {6191; CHECK-LABEL: vfnmsub_vv_nxv2f64:6192; CHECK:       # %bb.0:6193; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma6194; CHECK-NEXT:    vfnmadd.vv v10, v8, v12, v0.t6195; CHECK-NEXT:    vmv.v.v v8, v106196; CHECK-NEXT:    ret6197  %negb = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %b, <vscale x 2 x i1> %m, i32 %evl)6198  %negc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %c, <vscale x 2 x i1> %m, i32 %evl)6199  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %negb, <vscale x 2 x double> %negc, <vscale x 2 x i1> %m, i32 %evl)6200  ret <vscale x 2 x double> %v6201}6202 6203define <vscale x 2 x double> @vfnmsub_vv_nxv2f64_commuted(<vscale x 2 x double> %va, <vscale x 2 x double> %b, <vscale x 2 x double> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {6204; CHECK-LABEL: vfnmsub_vv_nxv2f64_commuted:6205; CHECK:       # %bb.0:6206; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma6207; CHECK-NEXT:    vfnmadd.vv v8, v10, v12, v0.t6208; CHECK-NEXT:    ret6209  %negb = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %b, <vscale x 2 x i1> %m, i32 %evl)6210  %negc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %c, <vscale x 2 x i1> %m, i32 %evl)6211  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %negb, <vscale x 2 x double> %va, <vscale x 2 x double> %negc, <vscale x 2 x i1> %m, i32 %evl)6212  ret <vscale x 2 x double> %v6213}6214 6215define <vscale x 2 x double> @vfnmsub_vv_nxv2f64_unmasked(<vscale x 2 x double> %va, <vscale x 2 x double> %b, <vscale x 2 x double> %c, i32 zeroext %evl) {6216; CHECK-LABEL: vfnmsub_vv_nxv2f64_unmasked:6217; CHECK:       # %bb.0:6218; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma6219; CHECK-NEXT:    vfnmadd.vv v8, v10, v126220; CHECK-NEXT:    ret6221  %negb = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)6222  %negc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)6223  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %negb, <vscale x 2 x double> %negc, <vscale x 2 x i1> splat (i1 true), i32 %evl)6224  ret <vscale x 2 x double> %v6225}6226 6227define <vscale x 2 x double> @vfnmsub_vv_nxv2f64_unmasked_commuted(<vscale x 2 x double> %va, <vscale x 2 x double> %b, <vscale x 2 x double> %c, i32 zeroext %evl) {6228; CHECK-LABEL: vfnmsub_vv_nxv2f64_unmasked_commuted:6229; CHECK:       # %bb.0:6230; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma6231; CHECK-NEXT:    vfnmadd.vv v8, v10, v126232; CHECK-NEXT:    ret6233  %negb = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)6234  %negc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)6235  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %negb, <vscale x 2 x double> %va, <vscale x 2 x double> %negc, <vscale x 2 x i1> splat (i1 true), i32 %evl)6236  ret <vscale x 2 x double> %v6237}6238 6239define <vscale x 2 x double> @vfnmsub_vf_nxv2f64(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {6240; CHECK-LABEL: vfnmsub_vf_nxv2f64:6241; CHECK:       # %bb.0:6242; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma6243; CHECK-NEXT:    vfnmsub.vf v8, fa0, v10, v0.t6244; CHECK-NEXT:    ret6245  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 06246  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6247  %negva = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x i1> %m, i32 %evl)6248  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %negva, <vscale x 2 x double> %vb, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 %evl)6249  ret <vscale x 2 x double> %v6250}6251 6252define <vscale x 2 x double> @vfnmsub_vf_nxv2f64_commute(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {6253; CHECK-LABEL: vfnmsub_vf_nxv2f64_commute:6254; CHECK:       # %bb.0:6255; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma6256; CHECK-NEXT:    vfnmsub.vf v8, fa0, v10, v0.t6257; CHECK-NEXT:    ret6258  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 06259  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6260  %negva = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x i1> %m, i32 %evl)6261  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x double> %negva, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 %evl)6262  ret <vscale x 2 x double> %v6263}6264 6265define <vscale x 2 x double> @vfnmsub_vf_nxv2f64_unmasked(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, i32 zeroext %evl) {6266; CHECK-LABEL: vfnmsub_vf_nxv2f64_unmasked:6267; CHECK:       # %bb.0:6268; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma6269; CHECK-NEXT:    vfnmsub.vf v8, fa0, v106270; CHECK-NEXT:    ret6271  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 06272  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6273  %negva = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x i1> splat (i1 true), i32 %evl)6274  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %negva, <vscale x 2 x double> %vb, <vscale x 2 x double> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)6275  ret <vscale x 2 x double> %v6276}6277 6278define <vscale x 2 x double> @vfnmsub_vf_nxv2f64_unmasked_commute(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, i32 zeroext %evl) {6279; CHECK-LABEL: vfnmsub_vf_nxv2f64_unmasked_commute:6280; CHECK:       # %bb.0:6281; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma6282; CHECK-NEXT:    vfnmsub.vf v8, fa0, v106283; CHECK-NEXT:    ret6284  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 06285  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6286  %negva = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x i1> splat (i1 true), i32 %evl)6287  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x double> %negva, <vscale x 2 x double> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)6288  ret <vscale x 2 x double> %v6289}6290 6291define <vscale x 2 x double> @vfnmsub_vf_nxv2f64_neg_splat(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {6292; CHECK-LABEL: vfnmsub_vf_nxv2f64_neg_splat:6293; CHECK:       # %bb.0:6294; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma6295; CHECK-NEXT:    vfnmsub.vf v8, fa0, v10, v0.t6296; CHECK-NEXT:    ret6297  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 06298  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6299  %negvb = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x i1> %m, i32 %evl)6300  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %negvb, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 %evl)6301  ret <vscale x 2 x double> %v6302}6303 6304define <vscale x 2 x double> @vfnmsub_vf_nxv2f64_neg_splat_commute(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {6305; CHECK-LABEL: vfnmsub_vf_nxv2f64_neg_splat_commute:6306; CHECK:       # %bb.0:6307; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma6308; CHECK-NEXT:    vfnmsub.vf v8, fa0, v10, v0.t6309; CHECK-NEXT:    ret6310  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 06311  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6312  %negvb = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x i1> %m, i32 %evl)6313  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %negvb, <vscale x 2 x double> %va, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 %evl)6314  ret <vscale x 2 x double> %v6315}6316 6317define <vscale x 2 x double> @vfnmsub_vf_nxv2f64_neg_splat_unmasked(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, i32 zeroext %evl) {6318; CHECK-LABEL: vfnmsub_vf_nxv2f64_neg_splat_unmasked:6319; CHECK:       # %bb.0:6320; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma6321; CHECK-NEXT:    vfnmsub.vf v8, fa0, v106322; CHECK-NEXT:    ret6323  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 06324  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6325  %negvb = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)6326  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %negvb, <vscale x 2 x double> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)6327  ret <vscale x 2 x double> %v6328}6329 6330define <vscale x 2 x double> @vfnmsub_vf_nxv2f64_neg_splat_unmasked_commute(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, i32 zeroext %evl) {6331; CHECK-LABEL: vfnmsub_vf_nxv2f64_neg_splat_unmasked_commute:6332; CHECK:       # %bb.0:6333; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma6334; CHECK-NEXT:    vfnmsub.vf v8, fa0, v106335; CHECK-NEXT:    ret6336  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 06337  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6338  %negvb = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)6339  %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %negvb, <vscale x 2 x double> %va, <vscale x 2 x double> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)6340  ret <vscale x 2 x double> %v6341}6342 6343define <vscale x 4 x double> @vfmsub_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %b, <vscale x 4 x double> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {6344; CHECK-LABEL: vfmsub_vv_nxv4f64:6345; CHECK:       # %bb.0:6346; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma6347; CHECK-NEXT:    vfmsub.vv v12, v8, v16, v0.t6348; CHECK-NEXT:    vmv.v.v v8, v126349; CHECK-NEXT:    ret6350  %negc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %c, <vscale x 4 x i1> %m, i32 %evl)6351  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %b, <vscale x 4 x double> %negc, <vscale x 4 x i1> %m, i32 %evl)6352  ret <vscale x 4 x double> %v6353}6354 6355define <vscale x 4 x double> @vfmsub_vv_nxv4f64_unmasked(<vscale x 4 x double> %va, <vscale x 4 x double> %b, <vscale x 4 x double> %c, i32 zeroext %evl) {6356; CHECK-LABEL: vfmsub_vv_nxv4f64_unmasked:6357; CHECK:       # %bb.0:6358; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma6359; CHECK-NEXT:    vfmsub.vv v8, v12, v166360; CHECK-NEXT:    ret6361  %negc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)6362  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %b, <vscale x 4 x double> %negc, <vscale x 4 x i1> splat (i1 true), i32 %evl)6363  ret <vscale x 4 x double> %v6364}6365 6366define <vscale x 4 x double> @vfmsub_vf_nxv4f64(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {6367; CHECK-LABEL: vfmsub_vf_nxv4f64:6368; CHECK:       # %bb.0:6369; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma6370; CHECK-NEXT:    vfmsub.vf v8, fa0, v12, v0.t6371; CHECK-NEXT:    ret6372  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 06373  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer6374  %negvc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 %evl)6375  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, <vscale x 4 x double> %negvc, <vscale x 4 x i1> %m, i32 %evl)6376  ret <vscale x 4 x double> %v6377}6378 6379define <vscale x 4 x double> @vfmsub_vf_nxv4f64_commute(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {6380; CHECK-LABEL: vfmsub_vf_nxv4f64_commute:6381; CHECK:       # %bb.0:6382; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma6383; CHECK-NEXT:    vfmsub.vf v8, fa0, v12, v0.t6384; CHECK-NEXT:    ret6385  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 06386  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer6387  %negvc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 %evl)6388  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x double> %va, <vscale x 4 x double> %negvc, <vscale x 4 x i1> %m, i32 %evl)6389  ret <vscale x 4 x double> %v6390}6391 6392define <vscale x 4 x double> @vfmsub_vf_nxv4f64_unmasked(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, i32 zeroext %evl) {6393; CHECK-LABEL: vfmsub_vf_nxv4f64_unmasked:6394; CHECK:       # %bb.0:6395; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma6396; CHECK-NEXT:    vfmsub.vf v8, fa0, v126397; CHECK-NEXT:    ret6398  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 06399  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer6400  %negvc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)6401  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, <vscale x 4 x double> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)6402  ret <vscale x 4 x double> %v6403}6404 6405define <vscale x 4 x double> @vfmsub_vf_nxv4f64_unmasked_commute(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, i32 zeroext %evl) {6406; CHECK-LABEL: vfmsub_vf_nxv4f64_unmasked_commute:6407; CHECK:       # %bb.0:6408; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma6409; CHECK-NEXT:    vfmsub.vf v8, fa0, v126410; CHECK-NEXT:    ret6411  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 06412  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer6413  %negvc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)6414  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x double> %va, <vscale x 4 x double> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)6415  ret <vscale x 4 x double> %v6416}6417 6418define <vscale x 4 x double> @vfnmadd_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %b, <vscale x 4 x double> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {6419; CHECK-LABEL: vfnmadd_vv_nxv4f64:6420; CHECK:       # %bb.0:6421; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma6422; CHECK-NEXT:    vfnmadd.vv v12, v8, v16, v0.t6423; CHECK-NEXT:    vmv.v.v v8, v126424; CHECK-NEXT:    ret6425  %negb = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %b, <vscale x 4 x i1> %m, i32 %evl)6426  %negc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %c, <vscale x 4 x i1> %m, i32 %evl)6427  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %negb, <vscale x 4 x double> %negc, <vscale x 4 x i1> %m, i32 %evl)6428  ret <vscale x 4 x double> %v6429}6430 6431define <vscale x 4 x double> @vfnmadd_vv_nxv4f64_commuted(<vscale x 4 x double> %va, <vscale x 4 x double> %b, <vscale x 4 x double> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {6432; CHECK-LABEL: vfnmadd_vv_nxv4f64_commuted:6433; CHECK:       # %bb.0:6434; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma6435; CHECK-NEXT:    vfnmadd.vv v8, v12, v16, v0.t6436; CHECK-NEXT:    ret6437  %negb = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %b, <vscale x 4 x i1> %m, i32 %evl)6438  %negc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %c, <vscale x 4 x i1> %m, i32 %evl)6439  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %negb, <vscale x 4 x double> %va, <vscale x 4 x double> %negc, <vscale x 4 x i1> %m, i32 %evl)6440  ret <vscale x 4 x double> %v6441}6442 6443define <vscale x 4 x double> @vfnmadd_vv_nxv4f64_unmasked(<vscale x 4 x double> %va, <vscale x 4 x double> %b, <vscale x 4 x double> %c, i32 zeroext %evl) {6444; CHECK-LABEL: vfnmadd_vv_nxv4f64_unmasked:6445; CHECK:       # %bb.0:6446; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma6447; CHECK-NEXT:    vfnmadd.vv v8, v12, v166448; CHECK-NEXT:    ret6449  %negb = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)6450  %negc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)6451  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %negb, <vscale x 4 x double> %negc, <vscale x 4 x i1> splat (i1 true), i32 %evl)6452  ret <vscale x 4 x double> %v6453}6454 6455define <vscale x 4 x double> @vfnmadd_vv_nxv4f64_unmasked_commuted(<vscale x 4 x double> %va, <vscale x 4 x double> %b, <vscale x 4 x double> %c, i32 zeroext %evl) {6456; CHECK-LABEL: vfnmadd_vv_nxv4f64_unmasked_commuted:6457; CHECK:       # %bb.0:6458; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma6459; CHECK-NEXT:    vfnmadd.vv v8, v12, v166460; CHECK-NEXT:    ret6461  %negb = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)6462  %negc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)6463  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %negb, <vscale x 4 x double> %va, <vscale x 4 x double> %negc, <vscale x 4 x i1> splat (i1 true), i32 %evl)6464  ret <vscale x 4 x double> %v6465}6466 6467define <vscale x 4 x double> @vfnmadd_vf_nxv4f64(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {6468; CHECK-LABEL: vfnmadd_vf_nxv4f64:6469; CHECK:       # %bb.0:6470; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma6471; CHECK-NEXT:    vfnmadd.vf v8, fa0, v12, v0.t6472; CHECK-NEXT:    ret6473  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 06474  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer6475  %negva = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x i1> %m, i32 %evl)6476  %negvc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 %evl)6477  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %negva, <vscale x 4 x double> %vb, <vscale x 4 x double> %negvc, <vscale x 4 x i1> %m, i32 %evl)6478  ret <vscale x 4 x double> %v6479}6480 6481define <vscale x 4 x double> @vfnmadd_vf_nxv4f64_commute(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {6482; CHECK-LABEL: vfnmadd_vf_nxv4f64_commute:6483; CHECK:       # %bb.0:6484; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma6485; CHECK-NEXT:    vfnmadd.vf v8, fa0, v12, v0.t6486; CHECK-NEXT:    ret6487  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 06488  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer6489  %negva = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x i1> %m, i32 %evl)6490  %negvc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 %evl)6491  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x double> %negva, <vscale x 4 x double> %negvc, <vscale x 4 x i1> %m, i32 %evl)6492  ret <vscale x 4 x double> %v6493}6494 6495define <vscale x 4 x double> @vfnmadd_vf_nxv4f64_unmasked(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, i32 zeroext %evl) {6496; CHECK-LABEL: vfnmadd_vf_nxv4f64_unmasked:6497; CHECK:       # %bb.0:6498; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma6499; CHECK-NEXT:    vfnmadd.vf v8, fa0, v126500; CHECK-NEXT:    ret6501  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 06502  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer6503  %negva = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x i1> splat (i1 true), i32 %evl)6504  %negvc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)6505  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %negva, <vscale x 4 x double> %vb, <vscale x 4 x double> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)6506  ret <vscale x 4 x double> %v6507}6508 6509define <vscale x 4 x double> @vfnmadd_vf_nxv4f64_unmasked_commute(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, i32 zeroext %evl) {6510; CHECK-LABEL: vfnmadd_vf_nxv4f64_unmasked_commute:6511; CHECK:       # %bb.0:6512; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma6513; CHECK-NEXT:    vfnmadd.vf v8, fa0, v126514; CHECK-NEXT:    ret6515  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 06516  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer6517  %negva = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x i1> splat (i1 true), i32 %evl)6518  %negvc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)6519  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x double> %negva, <vscale x 4 x double> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)6520  ret <vscale x 4 x double> %v6521}6522 6523define <vscale x 4 x double> @vfnmadd_vf_nxv4f64_neg_splat(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {6524; CHECK-LABEL: vfnmadd_vf_nxv4f64_neg_splat:6525; CHECK:       # %bb.0:6526; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma6527; CHECK-NEXT:    vfnmadd.vf v8, fa0, v12, v0.t6528; CHECK-NEXT:    ret6529  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 06530  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer6531  %negvb = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x i1> %m, i32 %evl)6532  %negvc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 %evl)6533  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %negvb, <vscale x 4 x double> %negvc, <vscale x 4 x i1> %m, i32 %evl)6534  ret <vscale x 4 x double> %v6535}6536 6537define <vscale x 4 x double> @vfnmadd_vf_nxv4f64_neg_splat_commute(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {6538; CHECK-LABEL: vfnmadd_vf_nxv4f64_neg_splat_commute:6539; CHECK:       # %bb.0:6540; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma6541; CHECK-NEXT:    vfnmadd.vf v8, fa0, v12, v0.t6542; CHECK-NEXT:    ret6543  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 06544  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer6545  %negvb = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x i1> %m, i32 %evl)6546  %negvc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 %evl)6547  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %negvb, <vscale x 4 x double> %va, <vscale x 4 x double> %negvc, <vscale x 4 x i1> %m, i32 %evl)6548  ret <vscale x 4 x double> %v6549}6550 6551define <vscale x 4 x double> @vfnmadd_vf_nxv4f64_neg_splat_unmasked(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, i32 zeroext %evl) {6552; CHECK-LABEL: vfnmadd_vf_nxv4f64_neg_splat_unmasked:6553; CHECK:       # %bb.0:6554; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma6555; CHECK-NEXT:    vfnmadd.vf v8, fa0, v126556; CHECK-NEXT:    ret6557  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 06558  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer6559  %negvb = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)6560  %negvc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)6561  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %negvb, <vscale x 4 x double> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)6562  ret <vscale x 4 x double> %v6563}6564 6565define <vscale x 4 x double> @vfnmadd_vf_nxv4f64_neg_splat_unmasked_commute(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, i32 zeroext %evl) {6566; CHECK-LABEL: vfnmadd_vf_nxv4f64_neg_splat_unmasked_commute:6567; CHECK:       # %bb.0:6568; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma6569; CHECK-NEXT:    vfnmadd.vf v8, fa0, v126570; CHECK-NEXT:    ret6571  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 06572  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer6573  %negvb = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)6574  %negvc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)6575  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %negvb, <vscale x 4 x double> %va, <vscale x 4 x double> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)6576  ret <vscale x 4 x double> %v6577}6578 6579define <vscale x 4 x double> @vfnmsub_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %b, <vscale x 4 x double> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {6580; CHECK-LABEL: vfnmsub_vv_nxv4f64:6581; CHECK:       # %bb.0:6582; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma6583; CHECK-NEXT:    vfnmadd.vv v12, v8, v16, v0.t6584; CHECK-NEXT:    vmv.v.v v8, v126585; CHECK-NEXT:    ret6586  %negb = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %b, <vscale x 4 x i1> %m, i32 %evl)6587  %negc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %c, <vscale x 4 x i1> %m, i32 %evl)6588  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %negb, <vscale x 4 x double> %negc, <vscale x 4 x i1> %m, i32 %evl)6589  ret <vscale x 4 x double> %v6590}6591 6592define <vscale x 4 x double> @vfnmsub_vv_nxv4f64_commuted(<vscale x 4 x double> %va, <vscale x 4 x double> %b, <vscale x 4 x double> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {6593; CHECK-LABEL: vfnmsub_vv_nxv4f64_commuted:6594; CHECK:       # %bb.0:6595; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma6596; CHECK-NEXT:    vfnmadd.vv v8, v12, v16, v0.t6597; CHECK-NEXT:    ret6598  %negb = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %b, <vscale x 4 x i1> %m, i32 %evl)6599  %negc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %c, <vscale x 4 x i1> %m, i32 %evl)6600  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %negb, <vscale x 4 x double> %va, <vscale x 4 x double> %negc, <vscale x 4 x i1> %m, i32 %evl)6601  ret <vscale x 4 x double> %v6602}6603 6604define <vscale x 4 x double> @vfnmsub_vv_nxv4f64_unmasked(<vscale x 4 x double> %va, <vscale x 4 x double> %b, <vscale x 4 x double> %c, i32 zeroext %evl) {6605; CHECK-LABEL: vfnmsub_vv_nxv4f64_unmasked:6606; CHECK:       # %bb.0:6607; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma6608; CHECK-NEXT:    vfnmadd.vv v8, v12, v166609; CHECK-NEXT:    ret6610  %negb = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)6611  %negc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)6612  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %negb, <vscale x 4 x double> %negc, <vscale x 4 x i1> splat (i1 true), i32 %evl)6613  ret <vscale x 4 x double> %v6614}6615 6616define <vscale x 4 x double> @vfnmsub_vv_nxv4f64_unmasked_commuted(<vscale x 4 x double> %va, <vscale x 4 x double> %b, <vscale x 4 x double> %c, i32 zeroext %evl) {6617; CHECK-LABEL: vfnmsub_vv_nxv4f64_unmasked_commuted:6618; CHECK:       # %bb.0:6619; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma6620; CHECK-NEXT:    vfnmadd.vv v8, v12, v166621; CHECK-NEXT:    ret6622  %negb = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)6623  %negc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)6624  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %negb, <vscale x 4 x double> %va, <vscale x 4 x double> %negc, <vscale x 4 x i1> splat (i1 true), i32 %evl)6625  ret <vscale x 4 x double> %v6626}6627 6628define <vscale x 4 x double> @vfnmsub_vf_nxv4f64(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {6629; CHECK-LABEL: vfnmsub_vf_nxv4f64:6630; CHECK:       # %bb.0:6631; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma6632; CHECK-NEXT:    vfnmsub.vf v8, fa0, v12, v0.t6633; CHECK-NEXT:    ret6634  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 06635  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer6636  %negva = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x i1> %m, i32 %evl)6637  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %negva, <vscale x 4 x double> %vb, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 %evl)6638  ret <vscale x 4 x double> %v6639}6640 6641define <vscale x 4 x double> @vfnmsub_vf_nxv4f64_commute(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {6642; CHECK-LABEL: vfnmsub_vf_nxv4f64_commute:6643; CHECK:       # %bb.0:6644; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma6645; CHECK-NEXT:    vfnmsub.vf v8, fa0, v12, v0.t6646; CHECK-NEXT:    ret6647  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 06648  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer6649  %negva = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x i1> %m, i32 %evl)6650  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x double> %negva, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 %evl)6651  ret <vscale x 4 x double> %v6652}6653 6654define <vscale x 4 x double> @vfnmsub_vf_nxv4f64_unmasked(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, i32 zeroext %evl) {6655; CHECK-LABEL: vfnmsub_vf_nxv4f64_unmasked:6656; CHECK:       # %bb.0:6657; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma6658; CHECK-NEXT:    vfnmsub.vf v8, fa0, v126659; CHECK-NEXT:    ret6660  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 06661  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer6662  %negva = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x i1> splat (i1 true), i32 %evl)6663  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %negva, <vscale x 4 x double> %vb, <vscale x 4 x double> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)6664  ret <vscale x 4 x double> %v6665}6666 6667define <vscale x 4 x double> @vfnmsub_vf_nxv4f64_unmasked_commute(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, i32 zeroext %evl) {6668; CHECK-LABEL: vfnmsub_vf_nxv4f64_unmasked_commute:6669; CHECK:       # %bb.0:6670; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma6671; CHECK-NEXT:    vfnmsub.vf v8, fa0, v126672; CHECK-NEXT:    ret6673  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 06674  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer6675  %negva = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x i1> splat (i1 true), i32 %evl)6676  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x double> %negva, <vscale x 4 x double> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)6677  ret <vscale x 4 x double> %v6678}6679 6680define <vscale x 4 x double> @vfnmsub_vf_nxv4f64_neg_splat(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {6681; CHECK-LABEL: vfnmsub_vf_nxv4f64_neg_splat:6682; CHECK:       # %bb.0:6683; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma6684; CHECK-NEXT:    vfnmsub.vf v8, fa0, v12, v0.t6685; CHECK-NEXT:    ret6686  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 06687  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer6688  %negvb = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x i1> %m, i32 %evl)6689  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %negvb, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 %evl)6690  ret <vscale x 4 x double> %v6691}6692 6693define <vscale x 4 x double> @vfnmsub_vf_nxv4f64_neg_splat_commute(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {6694; CHECK-LABEL: vfnmsub_vf_nxv4f64_neg_splat_commute:6695; CHECK:       # %bb.0:6696; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma6697; CHECK-NEXT:    vfnmsub.vf v8, fa0, v12, v0.t6698; CHECK-NEXT:    ret6699  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 06700  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer6701  %negvb = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x i1> %m, i32 %evl)6702  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %negvb, <vscale x 4 x double> %va, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 %evl)6703  ret <vscale x 4 x double> %v6704}6705 6706define <vscale x 4 x double> @vfnmsub_vf_nxv4f64_neg_splat_unmasked(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, i32 zeroext %evl) {6707; CHECK-LABEL: vfnmsub_vf_nxv4f64_neg_splat_unmasked:6708; CHECK:       # %bb.0:6709; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma6710; CHECK-NEXT:    vfnmsub.vf v8, fa0, v126711; CHECK-NEXT:    ret6712  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 06713  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer6714  %negvb = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)6715  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %negvb, <vscale x 4 x double> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)6716  ret <vscale x 4 x double> %v6717}6718 6719define <vscale x 4 x double> @vfnmsub_vf_nxv4f64_neg_splat_unmasked_commute(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, i32 zeroext %evl) {6720; CHECK-LABEL: vfnmsub_vf_nxv4f64_neg_splat_unmasked_commute:6721; CHECK:       # %bb.0:6722; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma6723; CHECK-NEXT:    vfnmsub.vf v8, fa0, v126724; CHECK-NEXT:    ret6725  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 06726  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer6727  %negvb = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)6728  %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %negvb, <vscale x 4 x double> %va, <vscale x 4 x double> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)6729  ret <vscale x 4 x double> %v6730}6731 6732define <vscale x 8 x double> @vfmsub_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %b, <vscale x 8 x double> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {6733; CHECK-LABEL: vfmsub_vv_nxv8f64:6734; CHECK:       # %bb.0:6735; CHECK-NEXT:    vl8re64.v v24, (a0)6736; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, ma6737; CHECK-NEXT:    vfmsub.vv v16, v8, v24, v0.t6738; CHECK-NEXT:    vmv.v.v v8, v166739; CHECK-NEXT:    ret6740  %negc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %c, <vscale x 8 x i1> %m, i32 %evl)6741  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %b, <vscale x 8 x double> %negc, <vscale x 8 x i1> %m, i32 %evl)6742  ret <vscale x 8 x double> %v6743}6744 6745define <vscale x 8 x double> @vfmsub_vv_nxv8f64_unmasked(<vscale x 8 x double> %va, <vscale x 8 x double> %b, <vscale x 8 x double> %c, i32 zeroext %evl) {6746; CHECK-LABEL: vfmsub_vv_nxv8f64_unmasked:6747; CHECK:       # %bb.0:6748; CHECK-NEXT:    vl8re64.v v24, (a0)6749; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, ma6750; CHECK-NEXT:    vfmsub.vv v8, v16, v246751; CHECK-NEXT:    ret6752  %negc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)6753  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %b, <vscale x 8 x double> %negc, <vscale x 8 x i1> splat (i1 true), i32 %evl)6754  ret <vscale x 8 x double> %v6755}6756 6757define <vscale x 8 x double> @vfmsub_vf_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {6758; CHECK-LABEL: vfmsub_vf_nxv8f64:6759; CHECK:       # %bb.0:6760; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma6761; CHECK-NEXT:    vfmsub.vf v8, fa0, v16, v0.t6762; CHECK-NEXT:    ret6763  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 06764  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer6765  %negvc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 %evl)6766  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, <vscale x 8 x double> %negvc, <vscale x 8 x i1> %m, i32 %evl)6767  ret <vscale x 8 x double> %v6768}6769 6770define <vscale x 8 x double> @vfmsub_vf_nxv8f64_commute(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {6771; CHECK-LABEL: vfmsub_vf_nxv8f64_commute:6772; CHECK:       # %bb.0:6773; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma6774; CHECK-NEXT:    vfmsub.vf v8, fa0, v16, v0.t6775; CHECK-NEXT:    ret6776  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 06777  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer6778  %negvc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 %evl)6779  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %va, <vscale x 8 x double> %negvc, <vscale x 8 x i1> %m, i32 %evl)6780  ret <vscale x 8 x double> %v6781}6782 6783define <vscale x 8 x double> @vfmsub_vf_nxv8f64_unmasked(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, i32 zeroext %evl) {6784; CHECK-LABEL: vfmsub_vf_nxv8f64_unmasked:6785; CHECK:       # %bb.0:6786; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma6787; CHECK-NEXT:    vfmsub.vf v8, fa0, v166788; CHECK-NEXT:    ret6789  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 06790  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer6791  %negvc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)6792  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, <vscale x 8 x double> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)6793  ret <vscale x 8 x double> %v6794}6795 6796define <vscale x 8 x double> @vfmsub_vf_nxv8f64_unmasked_commute(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, i32 zeroext %evl) {6797; CHECK-LABEL: vfmsub_vf_nxv8f64_unmasked_commute:6798; CHECK:       # %bb.0:6799; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma6800; CHECK-NEXT:    vfmsub.vf v8, fa0, v166801; CHECK-NEXT:    ret6802  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 06803  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer6804  %negvc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)6805  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %va, <vscale x 8 x double> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)6806  ret <vscale x 8 x double> %v6807}6808 6809define <vscale x 8 x double> @vfnmadd_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %b, <vscale x 8 x double> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {6810; CHECK-LABEL: vfnmadd_vv_nxv8f64:6811; CHECK:       # %bb.0:6812; CHECK-NEXT:    vl8re64.v v24, (a0)6813; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, ma6814; CHECK-NEXT:    vfnmadd.vv v16, v8, v24, v0.t6815; CHECK-NEXT:    vmv.v.v v8, v166816; CHECK-NEXT:    ret6817  %negb = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %b, <vscale x 8 x i1> %m, i32 %evl)6818  %negc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %c, <vscale x 8 x i1> %m, i32 %evl)6819  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %negb, <vscale x 8 x double> %negc, <vscale x 8 x i1> %m, i32 %evl)6820  ret <vscale x 8 x double> %v6821}6822 6823define <vscale x 8 x double> @vfnmadd_vv_nxv8f64_commuted(<vscale x 8 x double> %va, <vscale x 8 x double> %b, <vscale x 8 x double> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {6824; CHECK-LABEL: vfnmadd_vv_nxv8f64_commuted:6825; CHECK:       # %bb.0:6826; CHECK-NEXT:    vl8re64.v v24, (a0)6827; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, ma6828; CHECK-NEXT:    vfnmadd.vv v8, v16, v24, v0.t6829; CHECK-NEXT:    ret6830  %negb = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %b, <vscale x 8 x i1> %m, i32 %evl)6831  %negc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %c, <vscale x 8 x i1> %m, i32 %evl)6832  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %negb, <vscale x 8 x double> %va, <vscale x 8 x double> %negc, <vscale x 8 x i1> %m, i32 %evl)6833  ret <vscale x 8 x double> %v6834}6835 6836define <vscale x 8 x double> @vfnmadd_vv_nxv8f64_unmasked(<vscale x 8 x double> %va, <vscale x 8 x double> %b, <vscale x 8 x double> %c, i32 zeroext %evl) {6837; CHECK-LABEL: vfnmadd_vv_nxv8f64_unmasked:6838; CHECK:       # %bb.0:6839; CHECK-NEXT:    vl8re64.v v24, (a0)6840; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, ma6841; CHECK-NEXT:    vfnmadd.vv v8, v16, v246842; CHECK-NEXT:    ret6843  %negb = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)6844  %negc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)6845  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %negb, <vscale x 8 x double> %negc, <vscale x 8 x i1> splat (i1 true), i32 %evl)6846  ret <vscale x 8 x double> %v6847}6848 6849define <vscale x 8 x double> @vfnmadd_vv_nxv8f64_unmasked_commuted(<vscale x 8 x double> %va, <vscale x 8 x double> %b, <vscale x 8 x double> %c, i32 zeroext %evl) {6850; CHECK-LABEL: vfnmadd_vv_nxv8f64_unmasked_commuted:6851; CHECK:       # %bb.0:6852; CHECK-NEXT:    vl8re64.v v24, (a0)6853; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, ma6854; CHECK-NEXT:    vfnmadd.vv v8, v16, v246855; CHECK-NEXT:    ret6856  %negb = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)6857  %negc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)6858  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %negb, <vscale x 8 x double> %va, <vscale x 8 x double> %negc, <vscale x 8 x i1> splat (i1 true), i32 %evl)6859  ret <vscale x 8 x double> %v6860}6861 6862define <vscale x 8 x double> @vfnmadd_vf_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {6863; CHECK-LABEL: vfnmadd_vf_nxv8f64:6864; CHECK:       # %bb.0:6865; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma6866; CHECK-NEXT:    vfnmadd.vf v8, fa0, v16, v0.t6867; CHECK-NEXT:    ret6868  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 06869  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer6870  %negva = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x i1> %m, i32 %evl)6871  %negvc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 %evl)6872  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %negva, <vscale x 8 x double> %vb, <vscale x 8 x double> %negvc, <vscale x 8 x i1> %m, i32 %evl)6873  ret <vscale x 8 x double> %v6874}6875 6876define <vscale x 8 x double> @vfnmadd_vf_nxv8f64_commute(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {6877; CHECK-LABEL: vfnmadd_vf_nxv8f64_commute:6878; CHECK:       # %bb.0:6879; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma6880; CHECK-NEXT:    vfnmadd.vf v8, fa0, v16, v0.t6881; CHECK-NEXT:    ret6882  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 06883  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer6884  %negva = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x i1> %m, i32 %evl)6885  %negvc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 %evl)6886  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %negva, <vscale x 8 x double> %negvc, <vscale x 8 x i1> %m, i32 %evl)6887  ret <vscale x 8 x double> %v6888}6889 6890define <vscale x 8 x double> @vfnmadd_vf_nxv8f64_unmasked(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, i32 zeroext %evl) {6891; CHECK-LABEL: vfnmadd_vf_nxv8f64_unmasked:6892; CHECK:       # %bb.0:6893; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma6894; CHECK-NEXT:    vfnmadd.vf v8, fa0, v166895; CHECK-NEXT:    ret6896  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 06897  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer6898  %negva = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x i1> splat (i1 true), i32 %evl)6899  %negvc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)6900  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %negva, <vscale x 8 x double> %vb, <vscale x 8 x double> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)6901  ret <vscale x 8 x double> %v6902}6903 6904define <vscale x 8 x double> @vfnmadd_vf_nxv8f64_unmasked_commute(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, i32 zeroext %evl) {6905; CHECK-LABEL: vfnmadd_vf_nxv8f64_unmasked_commute:6906; CHECK:       # %bb.0:6907; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma6908; CHECK-NEXT:    vfnmadd.vf v8, fa0, v166909; CHECK-NEXT:    ret6910  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 06911  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer6912  %negva = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x i1> splat (i1 true), i32 %evl)6913  %negvc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)6914  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %negva, <vscale x 8 x double> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)6915  ret <vscale x 8 x double> %v6916}6917 6918define <vscale x 8 x double> @vfnmadd_vf_nxv8f64_neg_splat(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {6919; CHECK-LABEL: vfnmadd_vf_nxv8f64_neg_splat:6920; CHECK:       # %bb.0:6921; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma6922; CHECK-NEXT:    vfnmadd.vf v8, fa0, v16, v0.t6923; CHECK-NEXT:    ret6924  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 06925  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer6926  %negvb = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x i1> %m, i32 %evl)6927  %negvc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 %evl)6928  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %negvb, <vscale x 8 x double> %negvc, <vscale x 8 x i1> %m, i32 %evl)6929  ret <vscale x 8 x double> %v6930}6931 6932define <vscale x 8 x double> @vfnmadd_vf_nxv8f64_neg_splat_commute(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {6933; CHECK-LABEL: vfnmadd_vf_nxv8f64_neg_splat_commute:6934; CHECK:       # %bb.0:6935; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma6936; CHECK-NEXT:    vfnmadd.vf v8, fa0, v16, v0.t6937; CHECK-NEXT:    ret6938  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 06939  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer6940  %negvb = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x i1> %m, i32 %evl)6941  %negvc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 %evl)6942  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %negvb, <vscale x 8 x double> %va, <vscale x 8 x double> %negvc, <vscale x 8 x i1> %m, i32 %evl)6943  ret <vscale x 8 x double> %v6944}6945 6946define <vscale x 8 x double> @vfnmadd_vf_nxv8f64_neg_splat_unmasked(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, i32 zeroext %evl) {6947; CHECK-LABEL: vfnmadd_vf_nxv8f64_neg_splat_unmasked:6948; CHECK:       # %bb.0:6949; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma6950; CHECK-NEXT:    vfnmadd.vf v8, fa0, v166951; CHECK-NEXT:    ret6952  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 06953  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer6954  %negvb = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)6955  %negvc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)6956  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %negvb, <vscale x 8 x double> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)6957  ret <vscale x 8 x double> %v6958}6959 6960define <vscale x 8 x double> @vfnmadd_vf_nxv8f64_neg_splat_unmasked_commute(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, i32 zeroext %evl) {6961; CHECK-LABEL: vfnmadd_vf_nxv8f64_neg_splat_unmasked_commute:6962; CHECK:       # %bb.0:6963; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma6964; CHECK-NEXT:    vfnmadd.vf v8, fa0, v166965; CHECK-NEXT:    ret6966  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 06967  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer6968  %negvb = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)6969  %negvc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)6970  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %negvb, <vscale x 8 x double> %va, <vscale x 8 x double> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)6971  ret <vscale x 8 x double> %v6972}6973 6974define <vscale x 8 x double> @vfnmsub_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %b, <vscale x 8 x double> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {6975; CHECK-LABEL: vfnmsub_vv_nxv8f64:6976; CHECK:       # %bb.0:6977; CHECK-NEXT:    vl8re64.v v24, (a0)6978; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, ma6979; CHECK-NEXT:    vfnmadd.vv v16, v8, v24, v0.t6980; CHECK-NEXT:    vmv.v.v v8, v166981; CHECK-NEXT:    ret6982  %negb = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %b, <vscale x 8 x i1> %m, i32 %evl)6983  %negc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %c, <vscale x 8 x i1> %m, i32 %evl)6984  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %negb, <vscale x 8 x double> %negc, <vscale x 8 x i1> %m, i32 %evl)6985  ret <vscale x 8 x double> %v6986}6987 6988define <vscale x 8 x double> @vfnmsub_vv_nxv8f64_commuted(<vscale x 8 x double> %va, <vscale x 8 x double> %b, <vscale x 8 x double> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {6989; CHECK-LABEL: vfnmsub_vv_nxv8f64_commuted:6990; CHECK:       # %bb.0:6991; CHECK-NEXT:    vl8re64.v v24, (a0)6992; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, ma6993; CHECK-NEXT:    vfnmadd.vv v8, v16, v24, v0.t6994; CHECK-NEXT:    ret6995  %negb = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %b, <vscale x 8 x i1> %m, i32 %evl)6996  %negc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %c, <vscale x 8 x i1> %m, i32 %evl)6997  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %negb, <vscale x 8 x double> %va, <vscale x 8 x double> %negc, <vscale x 8 x i1> %m, i32 %evl)6998  ret <vscale x 8 x double> %v6999}7000 7001define <vscale x 8 x double> @vfnmsub_vv_nxv8f64_unmasked(<vscale x 8 x double> %va, <vscale x 8 x double> %b, <vscale x 8 x double> %c, i32 zeroext %evl) {7002; CHECK-LABEL: vfnmsub_vv_nxv8f64_unmasked:7003; CHECK:       # %bb.0:7004; CHECK-NEXT:    vl8re64.v v24, (a0)7005; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, ma7006; CHECK-NEXT:    vfnmadd.vv v8, v16, v247007; CHECK-NEXT:    ret7008  %negb = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)7009  %negc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)7010  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %negb, <vscale x 8 x double> %negc, <vscale x 8 x i1> splat (i1 true), i32 %evl)7011  ret <vscale x 8 x double> %v7012}7013 7014define <vscale x 8 x double> @vfnmsub_vv_nxv8f64_unmasked_commuted(<vscale x 8 x double> %va, <vscale x 8 x double> %b, <vscale x 8 x double> %c, i32 zeroext %evl) {7015; CHECK-LABEL: vfnmsub_vv_nxv8f64_unmasked_commuted:7016; CHECK:       # %bb.0:7017; CHECK-NEXT:    vl8re64.v v24, (a0)7018; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, ma7019; CHECK-NEXT:    vfnmadd.vv v8, v16, v247020; CHECK-NEXT:    ret7021  %negb = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)7022  %negc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)7023  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %negb, <vscale x 8 x double> %va, <vscale x 8 x double> %negc, <vscale x 8 x i1> splat (i1 true), i32 %evl)7024  ret <vscale x 8 x double> %v7025}7026 7027define <vscale x 8 x double> @vfnmsub_vf_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {7028; CHECK-LABEL: vfnmsub_vf_nxv8f64:7029; CHECK:       # %bb.0:7030; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma7031; CHECK-NEXT:    vfnmsub.vf v8, fa0, v16, v0.t7032; CHECK-NEXT:    ret7033  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 07034  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7035  %negva = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x i1> %m, i32 %evl)7036  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %negva, <vscale x 8 x double> %vb, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 %evl)7037  ret <vscale x 8 x double> %v7038}7039 7040define <vscale x 8 x double> @vfnmsub_vf_nxv8f64_commute(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {7041; CHECK-LABEL: vfnmsub_vf_nxv8f64_commute:7042; CHECK:       # %bb.0:7043; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma7044; CHECK-NEXT:    vfnmsub.vf v8, fa0, v16, v0.t7045; CHECK-NEXT:    ret7046  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 07047  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7048  %negva = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x i1> %m, i32 %evl)7049  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %negva, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 %evl)7050  ret <vscale x 8 x double> %v7051}7052 7053define <vscale x 8 x double> @vfnmsub_vf_nxv8f64_unmasked(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, i32 zeroext %evl) {7054; CHECK-LABEL: vfnmsub_vf_nxv8f64_unmasked:7055; CHECK:       # %bb.0:7056; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma7057; CHECK-NEXT:    vfnmsub.vf v8, fa0, v167058; CHECK-NEXT:    ret7059  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 07060  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7061  %negva = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x i1> splat (i1 true), i32 %evl)7062  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %negva, <vscale x 8 x double> %vb, <vscale x 8 x double> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)7063  ret <vscale x 8 x double> %v7064}7065 7066define <vscale x 8 x double> @vfnmsub_vf_nxv8f64_unmasked_commute(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, i32 zeroext %evl) {7067; CHECK-LABEL: vfnmsub_vf_nxv8f64_unmasked_commute:7068; CHECK:       # %bb.0:7069; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma7070; CHECK-NEXT:    vfnmsub.vf v8, fa0, v167071; CHECK-NEXT:    ret7072  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 07073  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7074  %negva = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x i1> splat (i1 true), i32 %evl)7075  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %negva, <vscale x 8 x double> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)7076  ret <vscale x 8 x double> %v7077}7078 7079define <vscale x 8 x double> @vfnmsub_vf_nxv8f64_neg_splat(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {7080; CHECK-LABEL: vfnmsub_vf_nxv8f64_neg_splat:7081; CHECK:       # %bb.0:7082; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma7083; CHECK-NEXT:    vfnmsub.vf v8, fa0, v16, v0.t7084; CHECK-NEXT:    ret7085  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 07086  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7087  %negvb = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x i1> %m, i32 %evl)7088  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %negvb, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 %evl)7089  ret <vscale x 8 x double> %v7090}7091 7092define <vscale x 8 x double> @vfnmsub_vf_nxv8f64_neg_splat_commute(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {7093; CHECK-LABEL: vfnmsub_vf_nxv8f64_neg_splat_commute:7094; CHECK:       # %bb.0:7095; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma7096; CHECK-NEXT:    vfnmsub.vf v8, fa0, v16, v0.t7097; CHECK-NEXT:    ret7098  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 07099  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7100  %negvb = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x i1> %m, i32 %evl)7101  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %negvb, <vscale x 8 x double> %va, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 %evl)7102  ret <vscale x 8 x double> %v7103}7104 7105define <vscale x 8 x double> @vfnmsub_vf_nxv8f64_neg_splat_unmasked(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, i32 zeroext %evl) {7106; CHECK-LABEL: vfnmsub_vf_nxv8f64_neg_splat_unmasked:7107; CHECK:       # %bb.0:7108; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma7109; CHECK-NEXT:    vfnmsub.vf v8, fa0, v167110; CHECK-NEXT:    ret7111  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 07112  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7113  %negvb = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)7114  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %negvb, <vscale x 8 x double> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)7115  ret <vscale x 8 x double> %v7116}7117 7118define <vscale x 8 x double> @vfnmsub_vf_nxv8f64_neg_splat_unmasked_commute(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, i32 zeroext %evl) {7119; CHECK-LABEL: vfnmsub_vf_nxv8f64_neg_splat_unmasked_commute:7120; CHECK:       # %bb.0:7121; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma7122; CHECK-NEXT:    vfnmsub.vf v8, fa0, v167123; CHECK-NEXT:    ret7124  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 07125  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7126  %negvb = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)7127  %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %negvb, <vscale x 8 x double> %va, <vscale x 8 x double> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)7128  ret <vscale x 8 x double> %v7129}7130