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