brintos

brintos / llvm-project-archived public Read only

0
0
Text · 114.0 KiB · 72ed38b Raw
1725 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> @vmfsac_vv_nxv1f16(<vscale x 1 x half> %a, <vscale x 1 x half> %b, <vscale x 1 x half> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {8; CHECK-LABEL: vmfsac_vv_nxv1f16:9; CHECK:       # %bb.0:10; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, tu, mu11; CHECK-NEXT:    vfmsac.vv v10, v8, v9, v0.t12; CHECK-NEXT:    vmv1r.v v8, v1013; CHECK-NEXT:    ret14  %negc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %c, <vscale x 1 x i1> splat (i1 -1), i32 %evl)15  %v = call <vscale x 1 x half> @llvm.vp.fma.nxv1f16(<vscale x 1 x half> %a, <vscale x 1 x half> %b, <vscale x 1 x half> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)16  %u = call <vscale x 1 x half> @llvm.vp.merge.nxv1f16(<vscale x 1 x i1> %m, <vscale x 1 x half> %v, <vscale x 1 x half> %c, i32 %evl)17  ret <vscale x 1 x half> %u18}19 20define <vscale x 1 x half> @vmfsac_vv_nxv1f16_unmasked(<vscale x 1 x half> %a, <vscale x 1 x half> %b, <vscale x 1 x half> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {21; CHECK-LABEL: vmfsac_vv_nxv1f16_unmasked:22; CHECK:       # %bb.0:23; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, tu, ma24; CHECK-NEXT:    vfmsac.vv v10, v8, v925; CHECK-NEXT:    vmv1r.v v8, v1026; CHECK-NEXT:    ret27  %negc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %c, <vscale x 1 x i1> splat (i1 -1), i32 %evl)28  %v = call <vscale x 1 x half> @llvm.vp.fma.nxv1f16(<vscale x 1 x half> %a, <vscale x 1 x half> %b, <vscale x 1 x half> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)29  %u = call <vscale x 1 x half> @llvm.vp.merge.nxv1f16(<vscale x 1 x i1> splat (i1 -1), <vscale x 1 x half> %v, <vscale x 1 x half> %c, i32 %evl)30  ret <vscale x 1 x half> %u31}32 33define <vscale x 1 x half> @vmfsac_vf_nxv1f16(<vscale x 1 x half> %a, half %b, <vscale x 1 x half> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {34; CHECK-LABEL: vmfsac_vf_nxv1f16:35; CHECK:       # %bb.0:36; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, tu, mu37; CHECK-NEXT:    vfmsac.vf v9, fa0, v8, v0.t38; CHECK-NEXT:    vmv1r.v v8, v939; CHECK-NEXT:    ret40  %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 041  %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer42  %negc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %c, <vscale x 1 x i1> splat (i1 -1), i32 %evl)43  %v = call <vscale x 1 x half> @llvm.vp.fma.nxv1f16(<vscale x 1 x half> %a, <vscale x 1 x half> %vb, <vscale x 1 x half> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)44  %u = call <vscale x 1 x half> @llvm.vp.merge.nxv1f16(<vscale x 1 x i1> %m, <vscale x 1 x half> %v, <vscale x 1 x half> %c, i32 %evl)45  ret <vscale x 1 x half> %u46}47 48define <vscale x 1 x half> @vmfsac_vf_nxv1f16_commute(<vscale x 1 x half> %a, half %b, <vscale x 1 x half> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {49; CHECK-LABEL: vmfsac_vf_nxv1f16_commute:50; CHECK:       # %bb.0:51; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, tu, mu52; CHECK-NEXT:    vfmsac.vf v9, fa0, v8, v0.t53; CHECK-NEXT:    vmv1r.v v8, v954; CHECK-NEXT:    ret55  %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 056  %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer57  %negc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %c, <vscale x 1 x i1> splat (i1 -1), i32 %evl)58  %v = call <vscale x 1 x half> @llvm.vp.fma.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %a, <vscale x 1 x half> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)59  %u = call <vscale x 1 x half> @llvm.vp.merge.nxv1f16(<vscale x 1 x i1> %m, <vscale x 1 x half> %v, <vscale x 1 x half> %c, i32 %evl)60  ret <vscale x 1 x half> %u61}62 63define <vscale x 1 x half> @vmfsac_vf_nxv1f16_unmasked(<vscale x 1 x half> %a, half %b, <vscale x 1 x half> %c, i32 zeroext %evl) {64; CHECK-LABEL: vmfsac_vf_nxv1f16_unmasked:65; CHECK:       # %bb.0:66; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, tu, ma67; CHECK-NEXT:    vfmsac.vf v9, fa0, v868; CHECK-NEXT:    vmv1r.v v8, 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  %negc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %c, <vscale x 1 x i1> splat (i1 -1), i32 %evl)73  %v = call <vscale x 1 x half> @llvm.vp.fma.nxv1f16(<vscale x 1 x half> %a, <vscale x 1 x half> %vb, <vscale x 1 x half> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)74  %u = call <vscale x 1 x half> @llvm.vp.merge.nxv1f16(<vscale x 1 x i1> splat (i1 -1), <vscale x 1 x half> %v, <vscale x 1 x half> %c, i32 %evl)75  ret <vscale x 1 x half> %u76}77 78define <vscale x 1 x half> @vmfsac_vv_nxv1f16_ta(<vscale x 1 x half> %a, <vscale x 1 x half> %b, <vscale x 1 x half> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {79; CHECK-LABEL: vmfsac_vv_nxv1f16_ta:80; CHECK:       # %bb.0:81; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, mu82; CHECK-NEXT:    vfmsac.vv v10, v8, v9, v0.t83; CHECK-NEXT:    vmv1r.v v8, v1084; CHECK-NEXT:    ret85  %negc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %c, <vscale x 1 x i1> splat (i1 -1), i32 %evl)86  %v = call <vscale x 1 x half> @llvm.vp.fma.nxv1f16(<vscale x 1 x half> %a, <vscale x 1 x half> %b, <vscale x 1 x half> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)87  %u = call <vscale x 1 x half> @llvm.vp.select.nxv1f16(<vscale x 1 x i1> %m, <vscale x 1 x half> %v, <vscale x 1 x half> %c, i32 %evl)88  ret <vscale x 1 x half> %u89}90 91define <vscale x 1 x half> @vmfsac_vf_nxv1f16_ta(<vscale x 1 x half> %a, half %b, <vscale x 1 x half> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {92; CHECK-LABEL: vmfsac_vf_nxv1f16_ta:93; CHECK:       # %bb.0:94; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, mu95; CHECK-NEXT:    vfmsac.vf v9, fa0, v8, v0.t96; CHECK-NEXT:    vmv1r.v v8, v997; CHECK-NEXT:    ret98  %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 099  %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer100  %negc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %c, <vscale x 1 x i1> splat (i1 -1), i32 %evl)101  %v = call <vscale x 1 x half> @llvm.vp.fma.nxv1f16(<vscale x 1 x half> %a, <vscale x 1 x half> %vb, <vscale x 1 x half> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)102  %u = call <vscale x 1 x half> @llvm.vp.select.nxv1f16(<vscale x 1 x i1> %m, <vscale x 1 x half> %v, <vscale x 1 x half> %c, i32 %evl)103  ret <vscale x 1 x half> %u104}105 106define <vscale x 1 x half> @vmfsac_vf_nxv1f16_commute_ta(<vscale x 1 x half> %a, half %b, <vscale x 1 x half> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {107; CHECK-LABEL: vmfsac_vf_nxv1f16_commute_ta:108; CHECK:       # %bb.0:109; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, mu110; CHECK-NEXT:    vfmsac.vf v9, fa0, v8, v0.t111; CHECK-NEXT:    vmv1r.v v8, v9112; CHECK-NEXT:    ret113  %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0114  %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer115  %negc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %c, <vscale x 1 x i1> splat (i1 -1), i32 %evl)116  %v = call <vscale x 1 x half> @llvm.vp.fma.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %a, <vscale x 1 x half> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)117  %u = call <vscale x 1 x half> @llvm.vp.select.nxv1f16(<vscale x 1 x i1> %m, <vscale x 1 x half> %v, <vscale x 1 x half> %c, i32 %evl)118  ret <vscale x 1 x half> %u119}120 121define <vscale x 2 x half> @vmfsac_vv_nxv2f16(<vscale x 2 x half> %a, <vscale x 2 x half> %b, <vscale x 2 x half> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {122; CHECK-LABEL: vmfsac_vv_nxv2f16:123; CHECK:       # %bb.0:124; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, tu, mu125; CHECK-NEXT:    vfmsac.vv v10, v8, v9, v0.t126; CHECK-NEXT:    vmv1r.v v8, v10127; CHECK-NEXT:    ret128  %negc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %c, <vscale x 2 x i1> splat (i1 -1), i32 %evl)129  %v = call <vscale x 2 x half> @llvm.vp.fma.nxv2f16(<vscale x 2 x half> %a, <vscale x 2 x half> %b, <vscale x 2 x half> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)130  %u = call <vscale x 2 x half> @llvm.vp.merge.nxv2f16(<vscale x 2 x i1> %m, <vscale x 2 x half> %v, <vscale x 2 x half> %c, i32 %evl)131  ret <vscale x 2 x half> %u132}133 134define <vscale x 2 x half> @vmfsac_vv_nxv2f16_unmasked(<vscale x 2 x half> %a, <vscale x 2 x half> %b, <vscale x 2 x half> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {135; CHECK-LABEL: vmfsac_vv_nxv2f16_unmasked:136; CHECK:       # %bb.0:137; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, tu, ma138; CHECK-NEXT:    vfmsac.vv v10, v8, v9139; CHECK-NEXT:    vmv1r.v v8, v10140; CHECK-NEXT:    ret141  %negc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %c, <vscale x 2 x i1> splat (i1 -1), i32 %evl)142  %v = call <vscale x 2 x half> @llvm.vp.fma.nxv2f16(<vscale x 2 x half> %a, <vscale x 2 x half> %b, <vscale x 2 x half> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)143  %u = call <vscale x 2 x half> @llvm.vp.merge.nxv2f16(<vscale x 2 x i1> splat (i1 -1), <vscale x 2 x half> %v, <vscale x 2 x half> %c, i32 %evl)144  ret <vscale x 2 x half> %u145}146 147define <vscale x 2 x half> @vmfsac_vf_nxv2f16(<vscale x 2 x half> %a, half %b, <vscale x 2 x half> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {148; CHECK-LABEL: vmfsac_vf_nxv2f16:149; CHECK:       # %bb.0:150; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, tu, mu151; CHECK-NEXT:    vfmsac.vf v9, fa0, v8, v0.t152; CHECK-NEXT:    vmv1r.v v8, v9153; CHECK-NEXT:    ret154  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0155  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer156  %negc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %c, <vscale x 2 x i1> splat (i1 -1), i32 %evl)157  %v = call <vscale x 2 x half> @llvm.vp.fma.nxv2f16(<vscale x 2 x half> %a, <vscale x 2 x half> %vb, <vscale x 2 x half> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)158  %u = call <vscale x 2 x half> @llvm.vp.merge.nxv2f16(<vscale x 2 x i1> %m, <vscale x 2 x half> %v, <vscale x 2 x half> %c, i32 %evl)159  ret <vscale x 2 x half> %u160}161 162define <vscale x 2 x half> @vmfsac_vf_nxv2f16_commute(<vscale x 2 x half> %a, half %b, <vscale x 2 x half> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {163; CHECK-LABEL: vmfsac_vf_nxv2f16_commute:164; CHECK:       # %bb.0:165; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, tu, mu166; CHECK-NEXT:    vfmsac.vf v9, fa0, v8, v0.t167; CHECK-NEXT:    vmv1r.v v8, v9168; CHECK-NEXT:    ret169  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0170  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer171  %negc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %c, <vscale x 2 x i1> splat (i1 -1), i32 %evl)172  %v = call <vscale x 2 x half> @llvm.vp.fma.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x half> %a, <vscale x 2 x half> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)173  %u = call <vscale x 2 x half> @llvm.vp.merge.nxv2f16(<vscale x 2 x i1> %m, <vscale x 2 x half> %v, <vscale x 2 x half> %c, i32 %evl)174  ret <vscale x 2 x half> %u175}176 177define <vscale x 2 x half> @vmfsac_vf_nxv2f16_unmasked(<vscale x 2 x half> %a, half %b, <vscale x 2 x half> %c, i32 zeroext %evl) {178; CHECK-LABEL: vmfsac_vf_nxv2f16_unmasked:179; CHECK:       # %bb.0:180; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, tu, ma181; CHECK-NEXT:    vfmsac.vf v9, fa0, v8182; CHECK-NEXT:    vmv1r.v v8, v9183; CHECK-NEXT:    ret184  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0185  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer186  %negc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %c, <vscale x 2 x i1> splat (i1 -1), i32 %evl)187  %v = call <vscale x 2 x half> @llvm.vp.fma.nxv2f16(<vscale x 2 x half> %a, <vscale x 2 x half> %vb, <vscale x 2 x half> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)188  %u = call <vscale x 2 x half> @llvm.vp.merge.nxv2f16(<vscale x 2 x i1> splat (i1 -1), <vscale x 2 x half> %v, <vscale x 2 x half> %c, i32 %evl)189  ret <vscale x 2 x half> %u190}191 192define <vscale x 2 x half> @vmfsac_vv_nxv2f16_ta(<vscale x 2 x half> %a, <vscale x 2 x half> %b, <vscale x 2 x half> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {193; CHECK-LABEL: vmfsac_vv_nxv2f16_ta:194; CHECK:       # %bb.0:195; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, mu196; CHECK-NEXT:    vfmsac.vv v10, v8, v9, v0.t197; CHECK-NEXT:    vmv1r.v v8, v10198; CHECK-NEXT:    ret199  %negc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %c, <vscale x 2 x i1> splat (i1 -1), i32 %evl)200  %v = call <vscale x 2 x half> @llvm.vp.fma.nxv2f16(<vscale x 2 x half> %a, <vscale x 2 x half> %b, <vscale x 2 x half> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)201  %u = call <vscale x 2 x half> @llvm.vp.select.nxv2f16(<vscale x 2 x i1> %m, <vscale x 2 x half> %v, <vscale x 2 x half> %c, i32 %evl)202  ret <vscale x 2 x half> %u203}204 205define <vscale x 2 x half> @vmfsac_vf_nxv2f16_ta(<vscale x 2 x half> %a, half %b, <vscale x 2 x half> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {206; CHECK-LABEL: vmfsac_vf_nxv2f16_ta:207; CHECK:       # %bb.0:208; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, mu209; CHECK-NEXT:    vfmsac.vf v9, fa0, v8, v0.t210; CHECK-NEXT:    vmv1r.v v8, v9211; CHECK-NEXT:    ret212  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0213  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer214  %negc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %c, <vscale x 2 x i1> splat (i1 -1), i32 %evl)215  %v = call <vscale x 2 x half> @llvm.vp.fma.nxv2f16(<vscale x 2 x half> %a, <vscale x 2 x half> %vb, <vscale x 2 x half> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)216  %u = call <vscale x 2 x half> @llvm.vp.select.nxv2f16(<vscale x 2 x i1> %m, <vscale x 2 x half> %v, <vscale x 2 x half> %c, i32 %evl)217  ret <vscale x 2 x half> %u218}219 220define <vscale x 2 x half> @vmfsac_vf_nxv2f16_commute_ta(<vscale x 2 x half> %a, half %b, <vscale x 2 x half> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {221; CHECK-LABEL: vmfsac_vf_nxv2f16_commute_ta:222; CHECK:       # %bb.0:223; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, mu224; CHECK-NEXT:    vfmsac.vf v9, fa0, v8, v0.t225; CHECK-NEXT:    vmv1r.v v8, v9226; CHECK-NEXT:    ret227  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0228  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer229  %negc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %c, <vscale x 2 x i1> splat (i1 -1), i32 %evl)230  %v = call <vscale x 2 x half> @llvm.vp.fma.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x half> %a, <vscale x 2 x half> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)231  %u = call <vscale x 2 x half> @llvm.vp.select.nxv2f16(<vscale x 2 x i1> %m, <vscale x 2 x half> %v, <vscale x 2 x half> %c, i32 %evl)232  ret <vscale x 2 x half> %u233}234 235define <vscale x 4 x half> @vmfsac_vv_nxv4f16(<vscale x 4 x half> %a, <vscale x 4 x half> %b, <vscale x 4 x half> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {236; CHECK-LABEL: vmfsac_vv_nxv4f16:237; CHECK:       # %bb.0:238; CHECK-NEXT:    vsetvli zero, a0, e16, m1, tu, mu239; CHECK-NEXT:    vfmsac.vv v10, v8, v9, v0.t240; CHECK-NEXT:    vmv1r.v v8, v10241; CHECK-NEXT:    ret242  %negc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %c, <vscale x 4 x i1> splat (i1 -1), i32 %evl)243  %v = call <vscale x 4 x half> @llvm.vp.fma.nxv4f16(<vscale x 4 x half> %a, <vscale x 4 x half> %b, <vscale x 4 x half> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)244  %u = call <vscale x 4 x half> @llvm.vp.merge.nxv4f16(<vscale x 4 x i1> %m, <vscale x 4 x half> %v, <vscale x 4 x half> %c, i32 %evl)245  ret <vscale x 4 x half> %u246}247 248define <vscale x 4 x half> @vmfsac_vv_nxv4f16_unmasked(<vscale x 4 x half> %a, <vscale x 4 x half> %b, <vscale x 4 x half> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {249; CHECK-LABEL: vmfsac_vv_nxv4f16_unmasked:250; CHECK:       # %bb.0:251; CHECK-NEXT:    vsetvli zero, a0, e16, m1, tu, ma252; CHECK-NEXT:    vfmsac.vv v10, v8, v9253; CHECK-NEXT:    vmv1r.v v8, v10254; CHECK-NEXT:    ret255  %negc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %c, <vscale x 4 x i1> splat (i1 -1), i32 %evl)256  %v = call <vscale x 4 x half> @llvm.vp.fma.nxv4f16(<vscale x 4 x half> %a, <vscale x 4 x half> %b, <vscale x 4 x half> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)257  %u = call <vscale x 4 x half> @llvm.vp.merge.nxv4f16(<vscale x 4 x i1> splat (i1 -1), <vscale x 4 x half> %v, <vscale x 4 x half> %c, i32 %evl)258  ret <vscale x 4 x half> %u259}260 261define <vscale x 4 x half> @vmfsac_vf_nxv4f16(<vscale x 4 x half> %a, half %b, <vscale x 4 x half> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {262; CHECK-LABEL: vmfsac_vf_nxv4f16:263; CHECK:       # %bb.0:264; CHECK-NEXT:    vsetvli zero, a0, e16, m1, tu, mu265; CHECK-NEXT:    vfmsac.vf v9, fa0, v8, v0.t266; CHECK-NEXT:    vmv1r.v v8, v9267; CHECK-NEXT:    ret268  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0269  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer270  %negc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %c, <vscale x 4 x i1> splat (i1 -1), i32 %evl)271  %v = call <vscale x 4 x half> @llvm.vp.fma.nxv4f16(<vscale x 4 x half> %a, <vscale x 4 x half> %vb, <vscale x 4 x half> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)272  %u = call <vscale x 4 x half> @llvm.vp.merge.nxv4f16(<vscale x 4 x i1> %m, <vscale x 4 x half> %v, <vscale x 4 x half> %c, i32 %evl)273  ret <vscale x 4 x half> %u274}275 276define <vscale x 4 x half> @vmfsac_vf_nxv4f16_commute(<vscale x 4 x half> %a, half %b, <vscale x 4 x half> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {277; CHECK-LABEL: vmfsac_vf_nxv4f16_commute:278; CHECK:       # %bb.0:279; CHECK-NEXT:    vsetvli zero, a0, e16, m1, tu, mu280; CHECK-NEXT:    vfmsac.vf v9, fa0, v8, v0.t281; CHECK-NEXT:    vmv1r.v v8, v9282; CHECK-NEXT:    ret283  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0284  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer285  %negc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %c, <vscale x 4 x i1> splat (i1 -1), i32 %evl)286  %v = call <vscale x 4 x half> @llvm.vp.fma.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x half> %a, <vscale x 4 x half> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)287  %u = call <vscale x 4 x half> @llvm.vp.merge.nxv4f16(<vscale x 4 x i1> %m, <vscale x 4 x half> %v, <vscale x 4 x half> %c, i32 %evl)288  ret <vscale x 4 x half> %u289}290 291define <vscale x 4 x half> @vmfsac_vf_nxv4f16_unmasked(<vscale x 4 x half> %a, half %b, <vscale x 4 x half> %c, i32 zeroext %evl) {292; CHECK-LABEL: vmfsac_vf_nxv4f16_unmasked:293; CHECK:       # %bb.0:294; CHECK-NEXT:    vsetvli zero, a0, e16, m1, tu, ma295; CHECK-NEXT:    vfmsac.vf v9, fa0, v8296; CHECK-NEXT:    vmv1r.v v8, v9297; CHECK-NEXT:    ret298  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0299  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer300  %negc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %c, <vscale x 4 x i1> splat (i1 -1), i32 %evl)301  %v = call <vscale x 4 x half> @llvm.vp.fma.nxv4f16(<vscale x 4 x half> %a, <vscale x 4 x half> %vb, <vscale x 4 x half> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)302  %u = call <vscale x 4 x half> @llvm.vp.merge.nxv4f16(<vscale x 4 x i1> splat (i1 -1), <vscale x 4 x half> %v, <vscale x 4 x half> %c, i32 %evl)303  ret <vscale x 4 x half> %u304}305 306define <vscale x 4 x half> @vmfsac_vv_nxv4f16_ta(<vscale x 4 x half> %a, <vscale x 4 x half> %b, <vscale x 4 x half> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {307; CHECK-LABEL: vmfsac_vv_nxv4f16_ta:308; CHECK:       # %bb.0:309; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, mu310; CHECK-NEXT:    vfmsac.vv v10, v8, v9, v0.t311; CHECK-NEXT:    vmv.v.v v8, v10312; CHECK-NEXT:    ret313  %negc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %c, <vscale x 4 x i1> splat (i1 -1), i32 %evl)314  %v = call <vscale x 4 x half> @llvm.vp.fma.nxv4f16(<vscale x 4 x half> %a, <vscale x 4 x half> %b, <vscale x 4 x half> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)315  %u = call <vscale x 4 x half> @llvm.vp.select.nxv4f16(<vscale x 4 x i1> %m, <vscale x 4 x half> %v, <vscale x 4 x half> %c, i32 %evl)316  ret <vscale x 4 x half> %u317}318 319define <vscale x 4 x half> @vmfsac_vf_nxv4f16_ta(<vscale x 4 x half> %a, half %b, <vscale x 4 x half> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {320; CHECK-LABEL: vmfsac_vf_nxv4f16_ta:321; CHECK:       # %bb.0:322; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, mu323; CHECK-NEXT:    vfmsac.vf v9, fa0, v8, v0.t324; CHECK-NEXT:    vmv.v.v v8, v9325; CHECK-NEXT:    ret326  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0327  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer328  %negc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %c, <vscale x 4 x i1> splat (i1 -1), i32 %evl)329  %v = call <vscale x 4 x half> @llvm.vp.fma.nxv4f16(<vscale x 4 x half> %a, <vscale x 4 x half> %vb, <vscale x 4 x half> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)330  %u = call <vscale x 4 x half> @llvm.vp.select.nxv4f16(<vscale x 4 x i1> %m, <vscale x 4 x half> %v, <vscale x 4 x half> %c, i32 %evl)331  ret <vscale x 4 x half> %u332}333 334define <vscale x 4 x half> @vmfsac_vf_nxv4f16_commute_ta(<vscale x 4 x half> %a, half %b, <vscale x 4 x half> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {335; CHECK-LABEL: vmfsac_vf_nxv4f16_commute_ta:336; CHECK:       # %bb.0:337; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, mu338; CHECK-NEXT:    vfmsac.vf v9, fa0, v8, v0.t339; CHECK-NEXT:    vmv.v.v v8, v9340; CHECK-NEXT:    ret341  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0342  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer343  %negc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %c, <vscale x 4 x i1> splat (i1 -1), i32 %evl)344  %v = call <vscale x 4 x half> @llvm.vp.fma.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x half> %a, <vscale x 4 x half> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)345  %u = call <vscale x 4 x half> @llvm.vp.select.nxv4f16(<vscale x 4 x i1> %m, <vscale x 4 x half> %v, <vscale x 4 x half> %c, i32 %evl)346  ret <vscale x 4 x half> %u347}348 349define <vscale x 8 x half> @vmfsac_vv_nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x half> %b, <vscale x 8 x half> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {350; CHECK-LABEL: vmfsac_vv_nxv8f16:351; CHECK:       # %bb.0:352; CHECK-NEXT:    vsetvli zero, a0, e16, m2, tu, mu353; CHECK-NEXT:    vfmsac.vv v12, v8, v10, v0.t354; CHECK-NEXT:    vmv2r.v v8, v12355; CHECK-NEXT:    ret356  %negc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %c, <vscale x 8 x i1> splat (i1 -1), i32 %evl)357  %v = call <vscale x 8 x half> @llvm.vp.fma.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x half> %b, <vscale x 8 x half> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)358  %u = call <vscale x 8 x half> @llvm.vp.merge.nxv8f16(<vscale x 8 x i1> %m, <vscale x 8 x half> %v, <vscale x 8 x half> %c, i32 %evl)359  ret <vscale x 8 x half> %u360}361 362define <vscale x 8 x half> @vmfsac_vv_nxv8f16_unmasked(<vscale x 8 x half> %a, <vscale x 8 x half> %b, <vscale x 8 x half> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {363; CHECK-LABEL: vmfsac_vv_nxv8f16_unmasked:364; CHECK:       # %bb.0:365; CHECK-NEXT:    vsetvli zero, a0, e16, m2, tu, ma366; CHECK-NEXT:    vfmsac.vv v12, v8, v10367; CHECK-NEXT:    vmv2r.v v8, v12368; CHECK-NEXT:    ret369  %negc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %c, <vscale x 8 x i1> splat (i1 -1), i32 %evl)370  %v = call <vscale x 8 x half> @llvm.vp.fma.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x half> %b, <vscale x 8 x half> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)371  %u = call <vscale x 8 x half> @llvm.vp.merge.nxv8f16(<vscale x 8 x i1> splat (i1 -1), <vscale x 8 x half> %v, <vscale x 8 x half> %c, i32 %evl)372  ret <vscale x 8 x half> %u373}374 375define <vscale x 8 x half> @vmfsac_vf_nxv8f16(<vscale x 8 x half> %a, half %b, <vscale x 8 x half> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {376; CHECK-LABEL: vmfsac_vf_nxv8f16:377; CHECK:       # %bb.0:378; CHECK-NEXT:    vsetvli zero, a0, e16, m2, tu, mu379; CHECK-NEXT:    vfmsac.vf v10, fa0, v8, v0.t380; CHECK-NEXT:    vmv2r.v v8, v10381; CHECK-NEXT:    ret382  %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0383  %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer384  %negc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %c, <vscale x 8 x i1> splat (i1 -1), i32 %evl)385  %v = call <vscale x 8 x half> @llvm.vp.fma.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x half> %vb, <vscale x 8 x half> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)386  %u = call <vscale x 8 x half> @llvm.vp.merge.nxv8f16(<vscale x 8 x i1> %m, <vscale x 8 x half> %v, <vscale x 8 x half> %c, i32 %evl)387  ret <vscale x 8 x half> %u388}389 390define <vscale x 8 x half> @vmfsac_vf_nxv8f16_commute(<vscale x 8 x half> %a, half %b, <vscale x 8 x half> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {391; CHECK-LABEL: vmfsac_vf_nxv8f16_commute:392; CHECK:       # %bb.0:393; CHECK-NEXT:    vsetvli zero, a0, e16, m2, tu, mu394; CHECK-NEXT:    vfmsac.vf v10, fa0, v8, v0.t395; CHECK-NEXT:    vmv2r.v v8, v10396; CHECK-NEXT:    ret397  %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0398  %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer399  %negc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %c, <vscale x 8 x i1> splat (i1 -1), i32 %evl)400  %v = call <vscale x 8 x half> @llvm.vp.fma.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %a, <vscale x 8 x half> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)401  %u = call <vscale x 8 x half> @llvm.vp.merge.nxv8f16(<vscale x 8 x i1> %m, <vscale x 8 x half> %v, <vscale x 8 x half> %c, i32 %evl)402  ret <vscale x 8 x half> %u403}404 405define <vscale x 8 x half> @vmfsac_vf_nxv8f16_unmasked(<vscale x 8 x half> %a, half %b, <vscale x 8 x half> %c, i32 zeroext %evl) {406; CHECK-LABEL: vmfsac_vf_nxv8f16_unmasked:407; CHECK:       # %bb.0:408; CHECK-NEXT:    vsetvli zero, a0, e16, m2, tu, ma409; CHECK-NEXT:    vfmsac.vf v10, fa0, v8410; CHECK-NEXT:    vmv2r.v v8, v10411; CHECK-NEXT:    ret412  %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0413  %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer414  %negc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %c, <vscale x 8 x i1> splat (i1 -1), i32 %evl)415  %v = call <vscale x 8 x half> @llvm.vp.fma.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x half> %vb, <vscale x 8 x half> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)416  %u = call <vscale x 8 x half> @llvm.vp.merge.nxv8f16(<vscale x 8 x i1> splat (i1 -1), <vscale x 8 x half> %v, <vscale x 8 x half> %c, i32 %evl)417  ret <vscale x 8 x half> %u418}419 420define <vscale x 8 x half> @vmfsac_vv_nxv8f16_ta(<vscale x 8 x half> %a, <vscale x 8 x half> %b, <vscale x 8 x half> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {421; CHECK-LABEL: vmfsac_vv_nxv8f16_ta:422; CHECK:       # %bb.0:423; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, mu424; CHECK-NEXT:    vfmsac.vv v12, v8, v10, v0.t425; CHECK-NEXT:    vmv.v.v v8, v12426; CHECK-NEXT:    ret427  %negc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %c, <vscale x 8 x i1> splat (i1 -1), i32 %evl)428  %v = call <vscale x 8 x half> @llvm.vp.fma.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x half> %b, <vscale x 8 x half> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)429  %u = call <vscale x 8 x half> @llvm.vp.select.nxv8f16(<vscale x 8 x i1> %m, <vscale x 8 x half> %v, <vscale x 8 x half> %c, i32 %evl)430  ret <vscale x 8 x half> %u431}432 433define <vscale x 8 x half> @vmfsac_vf_nxv8f16_ta(<vscale x 8 x half> %a, half %b, <vscale x 8 x half> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {434; CHECK-LABEL: vmfsac_vf_nxv8f16_ta:435; CHECK:       # %bb.0:436; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, mu437; CHECK-NEXT:    vfmsac.vf v10, fa0, v8, v0.t438; CHECK-NEXT:    vmv.v.v v8, v10439; CHECK-NEXT:    ret440  %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0441  %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer442  %negc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %c, <vscale x 8 x i1> splat (i1 -1), i32 %evl)443  %v = call <vscale x 8 x half> @llvm.vp.fma.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x half> %vb, <vscale x 8 x half> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)444  %u = call <vscale x 8 x half> @llvm.vp.select.nxv8f16(<vscale x 8 x i1> %m, <vscale x 8 x half> %v, <vscale x 8 x half> %c, i32 %evl)445  ret <vscale x 8 x half> %u446}447 448define <vscale x 8 x half> @vmfsac_vf_nxv8f16_commute_ta(<vscale x 8 x half> %a, half %b, <vscale x 8 x half> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {449; CHECK-LABEL: vmfsac_vf_nxv8f16_commute_ta:450; CHECK:       # %bb.0:451; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, mu452; CHECK-NEXT:    vfmsac.vf v10, fa0, v8, v0.t453; CHECK-NEXT:    vmv.v.v v8, v10454; CHECK-NEXT:    ret455  %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0456  %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer457  %negc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %c, <vscale x 8 x i1> splat (i1 -1), i32 %evl)458  %v = call <vscale x 8 x half> @llvm.vp.fma.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %a, <vscale x 8 x half> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)459  %u = call <vscale x 8 x half> @llvm.vp.select.nxv8f16(<vscale x 8 x i1> %m, <vscale x 8 x half> %v, <vscale x 8 x half> %c, i32 %evl)460  ret <vscale x 8 x half> %u461}462 463define <vscale x 16 x half> @vmfsac_vv_nxv16f16(<vscale x 16 x half> %a, <vscale x 16 x half> %b, <vscale x 16 x half> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {464; CHECK-LABEL: vmfsac_vv_nxv16f16:465; CHECK:       # %bb.0:466; CHECK-NEXT:    vsetvli zero, a0, e16, m4, tu, mu467; CHECK-NEXT:    vfmsac.vv v16, v8, v12, v0.t468; CHECK-NEXT:    vmv4r.v v8, v16469; CHECK-NEXT:    ret470  %negc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %c, <vscale x 16 x i1> splat (i1 -1), i32 %evl)471  %v = call <vscale x 16 x half> @llvm.vp.fma.nxv16f16(<vscale x 16 x half> %a, <vscale x 16 x half> %b, <vscale x 16 x half> %negc, <vscale x 16 x i1> splat (i1 -1), i32 %evl)472  %u = call <vscale x 16 x half> @llvm.vp.merge.nxv16f16(<vscale x 16 x i1> %m, <vscale x 16 x half> %v, <vscale x 16 x half> %c, i32 %evl)473  ret <vscale x 16 x half> %u474}475 476define <vscale x 16 x half> @vmfsac_vv_nxv16f16_unmasked(<vscale x 16 x half> %a, <vscale x 16 x half> %b, <vscale x 16 x half> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {477; CHECK-LABEL: vmfsac_vv_nxv16f16_unmasked:478; CHECK:       # %bb.0:479; CHECK-NEXT:    vsetvli zero, a0, e16, m4, tu, ma480; CHECK-NEXT:    vfmsac.vv v16, v8, v12481; CHECK-NEXT:    vmv4r.v v8, v16482; CHECK-NEXT:    ret483  %negc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %c, <vscale x 16 x i1> splat (i1 -1), i32 %evl)484  %v = call <vscale x 16 x half> @llvm.vp.fma.nxv16f16(<vscale x 16 x half> %a, <vscale x 16 x half> %b, <vscale x 16 x half> %negc, <vscale x 16 x i1> splat (i1 -1), i32 %evl)485  %u = call <vscale x 16 x half> @llvm.vp.merge.nxv16f16(<vscale x 16 x i1> splat (i1 -1), <vscale x 16 x half> %v, <vscale x 16 x half> %c, i32 %evl)486  ret <vscale x 16 x half> %u487}488 489define <vscale x 16 x half> @vmfsac_vf_nxv16f16(<vscale x 16 x half> %a, half %b, <vscale x 16 x half> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {490; CHECK-LABEL: vmfsac_vf_nxv16f16:491; CHECK:       # %bb.0:492; CHECK-NEXT:    vsetvli zero, a0, e16, m4, tu, mu493; CHECK-NEXT:    vfmsac.vf v12, fa0, v8, v0.t494; CHECK-NEXT:    vmv4r.v v8, v12495; CHECK-NEXT:    ret496  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0497  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer498  %negc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %c, <vscale x 16 x i1> splat (i1 -1), i32 %evl)499  %v = call <vscale x 16 x half> @llvm.vp.fma.nxv16f16(<vscale x 16 x half> %a, <vscale x 16 x half> %vb, <vscale x 16 x half> %negc, <vscale x 16 x i1> splat (i1 -1), i32 %evl)500  %u = call <vscale x 16 x half> @llvm.vp.merge.nxv16f16(<vscale x 16 x i1> %m, <vscale x 16 x half> %v, <vscale x 16 x half> %c, i32 %evl)501  ret <vscale x 16 x half> %u502}503 504define <vscale x 16 x half> @vmfsac_vf_nxv16f16_commute(<vscale x 16 x half> %a, half %b, <vscale x 16 x half> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {505; CHECK-LABEL: vmfsac_vf_nxv16f16_commute:506; CHECK:       # %bb.0:507; CHECK-NEXT:    vsetvli zero, a0, e16, m4, tu, mu508; CHECK-NEXT:    vfmsac.vf v12, fa0, v8, v0.t509; CHECK-NEXT:    vmv4r.v v8, v12510; CHECK-NEXT:    ret511  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0512  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer513  %negc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %c, <vscale x 16 x i1> splat (i1 -1), i32 %evl)514  %v = call <vscale x 16 x half> @llvm.vp.fma.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x half> %a, <vscale x 16 x half> %negc, <vscale x 16 x i1> splat (i1 -1), i32 %evl)515  %u = call <vscale x 16 x half> @llvm.vp.merge.nxv16f16(<vscale x 16 x i1> %m, <vscale x 16 x half> %v, <vscale x 16 x half> %c, i32 %evl)516  ret <vscale x 16 x half> %u517}518 519define <vscale x 16 x half> @vmfsac_vf_nxv16f16_unmasked(<vscale x 16 x half> %a, half %b, <vscale x 16 x half> %c, i32 zeroext %evl) {520; CHECK-LABEL: vmfsac_vf_nxv16f16_unmasked:521; CHECK:       # %bb.0:522; CHECK-NEXT:    vsetvli zero, a0, e16, m4, tu, ma523; CHECK-NEXT:    vfmsac.vf v12, fa0, v8524; CHECK-NEXT:    vmv4r.v v8, v12525; CHECK-NEXT:    ret526  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0527  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer528  %negc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %c, <vscale x 16 x i1> splat (i1 -1), i32 %evl)529  %v = call <vscale x 16 x half> @llvm.vp.fma.nxv16f16(<vscale x 16 x half> %a, <vscale x 16 x half> %vb, <vscale x 16 x half> %negc, <vscale x 16 x i1> splat (i1 -1), i32 %evl)530  %u = call <vscale x 16 x half> @llvm.vp.merge.nxv16f16(<vscale x 16 x i1> splat (i1 -1), <vscale x 16 x half> %v, <vscale x 16 x half> %c, i32 %evl)531  ret <vscale x 16 x half> %u532}533 534define <vscale x 16 x half> @vmfsac_vv_nxv16f16_ta(<vscale x 16 x half> %a, <vscale x 16 x half> %b, <vscale x 16 x half> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {535; CHECK-LABEL: vmfsac_vv_nxv16f16_ta:536; CHECK:       # %bb.0:537; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, mu538; CHECK-NEXT:    vfmsac.vv v16, v8, v12, v0.t539; CHECK-NEXT:    vmv.v.v v8, v16540; CHECK-NEXT:    ret541  %negc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %c, <vscale x 16 x i1> splat (i1 -1), i32 %evl)542  %v = call <vscale x 16 x half> @llvm.vp.fma.nxv16f16(<vscale x 16 x half> %a, <vscale x 16 x half> %b, <vscale x 16 x half> %negc, <vscale x 16 x i1> splat (i1 -1), i32 %evl)543  %u = call <vscale x 16 x half> @llvm.vp.select.nxv16f16(<vscale x 16 x i1> %m, <vscale x 16 x half> %v, <vscale x 16 x half> %c, i32 %evl)544  ret <vscale x 16 x half> %u545}546 547define <vscale x 16 x half> @vmfsac_vf_nxv16f16_ta(<vscale x 16 x half> %a, half %b, <vscale x 16 x half> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {548; CHECK-LABEL: vmfsac_vf_nxv16f16_ta:549; CHECK:       # %bb.0:550; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, mu551; CHECK-NEXT:    vfmsac.vf v12, fa0, v8, v0.t552; CHECK-NEXT:    vmv.v.v v8, v12553; CHECK-NEXT:    ret554  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0555  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer556  %negc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %c, <vscale x 16 x i1> splat (i1 -1), i32 %evl)557  %v = call <vscale x 16 x half> @llvm.vp.fma.nxv16f16(<vscale x 16 x half> %a, <vscale x 16 x half> %vb, <vscale x 16 x half> %negc, <vscale x 16 x i1> splat (i1 -1), i32 %evl)558  %u = call <vscale x 16 x half> @llvm.vp.select.nxv16f16(<vscale x 16 x i1> %m, <vscale x 16 x half> %v, <vscale x 16 x half> %c, i32 %evl)559  ret <vscale x 16 x half> %u560}561 562define <vscale x 16 x half> @vmfsac_vf_nxv16f16_commute_ta(<vscale x 16 x half> %a, half %b, <vscale x 16 x half> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {563; CHECK-LABEL: vmfsac_vf_nxv16f16_commute_ta:564; CHECK:       # %bb.0:565; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, mu566; CHECK-NEXT:    vfmsac.vf v12, fa0, v8, v0.t567; CHECK-NEXT:    vmv.v.v v8, v12568; CHECK-NEXT:    ret569  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0570  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer571  %negc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %c, <vscale x 16 x i1> splat (i1 -1), i32 %evl)572  %v = call <vscale x 16 x half> @llvm.vp.fma.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x half> %a, <vscale x 16 x half> %negc, <vscale x 16 x i1> splat (i1 -1), i32 %evl)573  %u = call <vscale x 16 x half> @llvm.vp.select.nxv16f16(<vscale x 16 x i1> %m, <vscale x 16 x half> %v, <vscale x 16 x half> %c, i32 %evl)574  ret <vscale x 16 x half> %u575}576 577define <vscale x 32 x half> @vmfsac_vv_nxv32f16(<vscale x 32 x half> %a, <vscale x 32 x half> %b, <vscale x 32 x half> %c, <vscale x 32 x i1> %m, i32 zeroext %evl) {578; CHECK-LABEL: vmfsac_vv_nxv32f16:579; CHECK:       # %bb.0:580; CHECK-NEXT:    vl8re16.v v24, (a0)581; CHECK-NEXT:    vsetvli zero, a1, e16, m8, tu, mu582; CHECK-NEXT:    vfmsac.vv v24, v8, v16, v0.t583; CHECK-NEXT:    vmv8r.v v8, v24584; CHECK-NEXT:    ret585  %negc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %c, <vscale x 32 x i1> splat (i1 -1), i32 %evl)586  %v = call <vscale x 32 x half> @llvm.vp.fma.nxv32f16(<vscale x 32 x half> %a, <vscale x 32 x half> %b, <vscale x 32 x half> %negc, <vscale x 32 x i1> splat (i1 -1), i32 %evl)587  %u = call <vscale x 32 x half> @llvm.vp.merge.nxv32f16(<vscale x 32 x i1> %m, <vscale x 32 x half> %v, <vscale x 32 x half> %c, i32 %evl)588  ret <vscale x 32 x half> %u589}590 591define <vscale x 32 x half> @vmfsac_vv_nxv32f16_unmasked(<vscale x 32 x half> %a, <vscale x 32 x half> %b, <vscale x 32 x half> %c, <vscale x 32 x i1> %m, i32 zeroext %evl) {592; CHECK-LABEL: vmfsac_vv_nxv32f16_unmasked:593; CHECK:       # %bb.0:594; CHECK-NEXT:    vl8re16.v v24, (a0)595; CHECK-NEXT:    vsetvli zero, a1, e16, m8, tu, ma596; CHECK-NEXT:    vfmsac.vv v24, v8, v16597; CHECK-NEXT:    vmv8r.v v8, v24598; CHECK-NEXT:    ret599  %negc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %c, <vscale x 32 x i1> splat (i1 -1), i32 %evl)600  %v = call <vscale x 32 x half> @llvm.vp.fma.nxv32f16(<vscale x 32 x half> %a, <vscale x 32 x half> %b, <vscale x 32 x half> %negc, <vscale x 32 x i1> splat (i1 -1), i32 %evl)601  %u = call <vscale x 32 x half> @llvm.vp.merge.nxv32f16(<vscale x 32 x i1> splat (i1 -1), <vscale x 32 x half> %v, <vscale x 32 x half> %c, i32 %evl)602  ret <vscale x 32 x half> %u603}604 605define <vscale x 32 x half> @vmfsac_vf_nxv32f16(<vscale x 32 x half> %a, half %b, <vscale x 32 x half> %c, <vscale x 32 x i1> %m, i32 zeroext %evl) {606; CHECK-LABEL: vmfsac_vf_nxv32f16:607; CHECK:       # %bb.0:608; CHECK-NEXT:    vsetvli zero, a0, e16, m8, tu, mu609; CHECK-NEXT:    vfmsac.vf v16, fa0, v8, v0.t610; CHECK-NEXT:    vmv8r.v v8, v16611; CHECK-NEXT:    ret612  %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0613  %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer614  %negc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %c, <vscale x 32 x i1> splat (i1 -1), i32 %evl)615  %v = call <vscale x 32 x half> @llvm.vp.fma.nxv32f16(<vscale x 32 x half> %a, <vscale x 32 x half> %vb, <vscale x 32 x half> %negc, <vscale x 32 x i1> splat (i1 -1), i32 %evl)616  %u = call <vscale x 32 x half> @llvm.vp.merge.nxv32f16(<vscale x 32 x i1> %m, <vscale x 32 x half> %v, <vscale x 32 x half> %c, i32 %evl)617  ret <vscale x 32 x half> %u618}619 620define <vscale x 32 x half> @vmfsac_vf_nxv32f16_commute(<vscale x 32 x half> %a, half %b, <vscale x 32 x half> %c, <vscale x 32 x i1> %m, i32 zeroext %evl) {621; CHECK-LABEL: vmfsac_vf_nxv32f16_commute:622; CHECK:       # %bb.0:623; CHECK-NEXT:    vsetvli zero, a0, e16, m8, tu, mu624; CHECK-NEXT:    vfmsac.vf v16, fa0, v8, v0.t625; CHECK-NEXT:    vmv8r.v v8, v16626; CHECK-NEXT:    ret627  %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0628  %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer629  %negc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %c, <vscale x 32 x i1> splat (i1 -1), i32 %evl)630  %v = call <vscale x 32 x half> @llvm.vp.fma.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x half> %a, <vscale x 32 x half> %negc, <vscale x 32 x i1> splat (i1 -1), i32 %evl)631  %u = call <vscale x 32 x half> @llvm.vp.merge.nxv32f16(<vscale x 32 x i1> %m, <vscale x 32 x half> %v, <vscale x 32 x half> %c, i32 %evl)632  ret <vscale x 32 x half> %u633}634 635define <vscale x 32 x half> @vmfsac_vf_nxv32f16_unmasked(<vscale x 32 x half> %a, half %b, <vscale x 32 x half> %c, i32 zeroext %evl) {636; CHECK-LABEL: vmfsac_vf_nxv32f16_unmasked:637; CHECK:       # %bb.0:638; CHECK-NEXT:    vsetvli zero, a0, e16, m8, tu, ma639; CHECK-NEXT:    vfmsac.vf v16, fa0, v8640; CHECK-NEXT:    vmv8r.v v8, v16641; CHECK-NEXT:    ret642  %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0643  %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer644  %negc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %c, <vscale x 32 x i1> splat (i1 -1), i32 %evl)645  %v = call <vscale x 32 x half> @llvm.vp.fma.nxv32f16(<vscale x 32 x half> %a, <vscale x 32 x half> %vb, <vscale x 32 x half> %negc, <vscale x 32 x i1> splat (i1 -1), i32 %evl)646  %u = call <vscale x 32 x half> @llvm.vp.merge.nxv32f16(<vscale x 32 x i1> splat (i1 -1), <vscale x 32 x half> %v, <vscale x 32 x half> %c, i32 %evl)647  ret <vscale x 32 x half> %u648}649 650define <vscale x 32 x half> @vmfsac_vv_nxv32f16_ta(<vscale x 32 x half> %a, <vscale x 32 x half> %b, <vscale x 32 x half> %c, <vscale x 32 x i1> %m, i32 zeroext %evl) {651; CHECK-LABEL: vmfsac_vv_nxv32f16_ta:652; CHECK:       # %bb.0:653; CHECK-NEXT:    vl8re16.v v24, (a0)654; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, mu655; CHECK-NEXT:    vfmsac.vv v24, v8, v16, v0.t656; CHECK-NEXT:    vmv.v.v v8, v24657; CHECK-NEXT:    ret658  %negc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %c, <vscale x 32 x i1> splat (i1 -1), i32 %evl)659  %v = call <vscale x 32 x half> @llvm.vp.fma.nxv32f16(<vscale x 32 x half> %a, <vscale x 32 x half> %b, <vscale x 32 x half> %negc, <vscale x 32 x i1> splat (i1 -1), i32 %evl)660  %u = call <vscale x 32 x half> @llvm.vp.select.nxv32f16(<vscale x 32 x i1> %m, <vscale x 32 x half> %v, <vscale x 32 x half> %c, i32 %evl)661  ret <vscale x 32 x half> %u662}663 664define <vscale x 32 x half> @vmfsac_vf_nxv32f16_ta(<vscale x 32 x half> %a, half %b, <vscale x 32 x half> %c, <vscale x 32 x i1> %m, i32 zeroext %evl) {665; CHECK-LABEL: vmfsac_vf_nxv32f16_ta:666; CHECK:       # %bb.0:667; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, mu668; CHECK-NEXT:    vfmsac.vf v16, fa0, v8, v0.t669; CHECK-NEXT:    vmv.v.v v8, v16670; CHECK-NEXT:    ret671  %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0672  %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer673  %negc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %c, <vscale x 32 x i1> splat (i1 -1), i32 %evl)674  %v = call <vscale x 32 x half> @llvm.vp.fma.nxv32f16(<vscale x 32 x half> %a, <vscale x 32 x half> %vb, <vscale x 32 x half> %negc, <vscale x 32 x i1> splat (i1 -1), i32 %evl)675  %u = call <vscale x 32 x half> @llvm.vp.select.nxv32f16(<vscale x 32 x i1> %m, <vscale x 32 x half> %v, <vscale x 32 x half> %c, i32 %evl)676  ret <vscale x 32 x half> %u677}678 679define <vscale x 32 x half> @vmfsac_vf_nxv32f16_commute_ta(<vscale x 32 x half> %a, half %b, <vscale x 32 x half> %c, <vscale x 32 x i1> %m, i32 zeroext %evl) {680; CHECK-LABEL: vmfsac_vf_nxv32f16_commute_ta:681; CHECK:       # %bb.0:682; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, mu683; CHECK-NEXT:    vfmsac.vf v16, fa0, v8, v0.t684; CHECK-NEXT:    vmv.v.v v8, v16685; CHECK-NEXT:    ret686  %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0687  %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer688  %negc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %c, <vscale x 32 x i1> splat (i1 -1), i32 %evl)689  %v = call <vscale x 32 x half> @llvm.vp.fma.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x half> %a, <vscale x 32 x half> %negc, <vscale x 32 x i1> splat (i1 -1), i32 %evl)690  %u = call <vscale x 32 x half> @llvm.vp.select.nxv32f16(<vscale x 32 x i1> %m, <vscale x 32 x half> %v, <vscale x 32 x half> %c, i32 %evl)691  ret <vscale x 32 x half> %u692}693 694define <vscale x 1 x float> @vmfsac_vv_nxv1f32(<vscale x 1 x float> %a, <vscale x 1 x float> %b, <vscale x 1 x float> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {695; CHECK-LABEL: vmfsac_vv_nxv1f32:696; CHECK:       # %bb.0:697; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, tu, mu698; CHECK-NEXT:    vfmsac.vv v10, v8, v9, v0.t699; CHECK-NEXT:    vmv1r.v v8, v10700; CHECK-NEXT:    ret701  %negc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %c, <vscale x 1 x i1> splat (i1 -1), i32 %evl)702  %v = call <vscale x 1 x float> @llvm.vp.fma.nxv1f32(<vscale x 1 x float> %a, <vscale x 1 x float> %b, <vscale x 1 x float> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)703  %u = call <vscale x 1 x float> @llvm.vp.merge.nxv1f32(<vscale x 1 x i1> %m, <vscale x 1 x float> %v, <vscale x 1 x float> %c, i32 %evl)704  ret <vscale x 1 x float> %u705}706 707define <vscale x 1 x float> @vmfsac_vv_nxv1f32_unmasked(<vscale x 1 x float> %a, <vscale x 1 x float> %b, <vscale x 1 x float> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {708; CHECK-LABEL: vmfsac_vv_nxv1f32_unmasked:709; CHECK:       # %bb.0:710; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, tu, ma711; CHECK-NEXT:    vfmsac.vv v10, v8, v9712; CHECK-NEXT:    vmv1r.v v8, v10713; CHECK-NEXT:    ret714  %negc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %c, <vscale x 1 x i1> splat (i1 -1), i32 %evl)715  %v = call <vscale x 1 x float> @llvm.vp.fma.nxv1f32(<vscale x 1 x float> %a, <vscale x 1 x float> %b, <vscale x 1 x float> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)716  %u = call <vscale x 1 x float> @llvm.vp.merge.nxv1f32(<vscale x 1 x i1> splat (i1 -1), <vscale x 1 x float> %v, <vscale x 1 x float> %c, i32 %evl)717  ret <vscale x 1 x float> %u718}719 720define <vscale x 1 x float> @vmfsac_vf_nxv1f32(<vscale x 1 x float> %a, float %b, <vscale x 1 x float> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {721; CHECK-LABEL: vmfsac_vf_nxv1f32:722; CHECK:       # %bb.0:723; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, tu, mu724; CHECK-NEXT:    vfmsac.vf v9, fa0, v8, v0.t725; CHECK-NEXT:    vmv1r.v v8, v9726; CHECK-NEXT:    ret727  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0728  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer729  %negc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %c, <vscale x 1 x i1> splat (i1 -1), i32 %evl)730  %v = call <vscale x 1 x float> @llvm.vp.fma.nxv1f32(<vscale x 1 x float> %a, <vscale x 1 x float> %vb, <vscale x 1 x float> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)731  %u = call <vscale x 1 x float> @llvm.vp.merge.nxv1f32(<vscale x 1 x i1> %m, <vscale x 1 x float> %v, <vscale x 1 x float> %c, i32 %evl)732  ret <vscale x 1 x float> %u733}734 735define <vscale x 1 x float> @vmfsac_vf_nxv1f32_commute(<vscale x 1 x float> %a, float %b, <vscale x 1 x float> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {736; CHECK-LABEL: vmfsac_vf_nxv1f32_commute:737; CHECK:       # %bb.0:738; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, tu, mu739; CHECK-NEXT:    vfmsac.vf v9, fa0, v8, v0.t740; CHECK-NEXT:    vmv1r.v v8, v9741; CHECK-NEXT:    ret742  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0743  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer744  %negc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %c, <vscale x 1 x i1> splat (i1 -1), i32 %evl)745  %v = call <vscale x 1 x float> @llvm.vp.fma.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x float> %a, <vscale x 1 x float> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)746  %u = call <vscale x 1 x float> @llvm.vp.merge.nxv1f32(<vscale x 1 x i1> %m, <vscale x 1 x float> %v, <vscale x 1 x float> %c, i32 %evl)747  ret <vscale x 1 x float> %u748}749 750define <vscale x 1 x float> @vmfsac_vf_nxv1f32_unmasked(<vscale x 1 x float> %a, float %b, <vscale x 1 x float> %c, i32 zeroext %evl) {751; CHECK-LABEL: vmfsac_vf_nxv1f32_unmasked:752; CHECK:       # %bb.0:753; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, tu, ma754; CHECK-NEXT:    vfmsac.vf v9, fa0, v8755; CHECK-NEXT:    vmv1r.v v8, v9756; CHECK-NEXT:    ret757  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0758  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer759  %negc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %c, <vscale x 1 x i1> splat (i1 -1), i32 %evl)760  %v = call <vscale x 1 x float> @llvm.vp.fma.nxv1f32(<vscale x 1 x float> %a, <vscale x 1 x float> %vb, <vscale x 1 x float> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)761  %u = call <vscale x 1 x float> @llvm.vp.merge.nxv1f32(<vscale x 1 x i1> splat (i1 -1), <vscale x 1 x float> %v, <vscale x 1 x float> %c, i32 %evl)762  ret <vscale x 1 x float> %u763}764 765define <vscale x 1 x float> @vmfsac_vv_nxv1f32_ta(<vscale x 1 x float> %a, <vscale x 1 x float> %b, <vscale x 1 x float> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {766; CHECK-LABEL: vmfsac_vv_nxv1f32_ta:767; CHECK:       # %bb.0:768; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, mu769; CHECK-NEXT:    vfmsac.vv v10, v8, v9, v0.t770; CHECK-NEXT:    vmv1r.v v8, v10771; CHECK-NEXT:    ret772  %negc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %c, <vscale x 1 x i1> splat (i1 -1), i32 %evl)773  %v = call <vscale x 1 x float> @llvm.vp.fma.nxv1f32(<vscale x 1 x float> %a, <vscale x 1 x float> %b, <vscale x 1 x float> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)774  %u = call <vscale x 1 x float> @llvm.vp.select.nxv1f32(<vscale x 1 x i1> %m, <vscale x 1 x float> %v, <vscale x 1 x float> %c, i32 %evl)775  ret <vscale x 1 x float> %u776}777 778define <vscale x 1 x float> @vmfsac_vf_nxv1f32_ta(<vscale x 1 x float> %a, float %b, <vscale x 1 x float> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {779; CHECK-LABEL: vmfsac_vf_nxv1f32_ta:780; CHECK:       # %bb.0:781; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, mu782; CHECK-NEXT:    vfmsac.vf v9, fa0, v8, v0.t783; CHECK-NEXT:    vmv1r.v v8, v9784; CHECK-NEXT:    ret785  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0786  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer787  %negc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %c, <vscale x 1 x i1> splat (i1 -1), i32 %evl)788  %v = call <vscale x 1 x float> @llvm.vp.fma.nxv1f32(<vscale x 1 x float> %a, <vscale x 1 x float> %vb, <vscale x 1 x float> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)789  %u = call <vscale x 1 x float> @llvm.vp.select.nxv1f32(<vscale x 1 x i1> %m, <vscale x 1 x float> %v, <vscale x 1 x float> %c, i32 %evl)790  ret <vscale x 1 x float> %u791}792 793define <vscale x 1 x float> @vmfsac_vf_nxv1f32_commute_ta(<vscale x 1 x float> %a, float %b, <vscale x 1 x float> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {794; CHECK-LABEL: vmfsac_vf_nxv1f32_commute_ta:795; CHECK:       # %bb.0:796; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, mu797; CHECK-NEXT:    vfmsac.vf v9, fa0, v8, v0.t798; CHECK-NEXT:    vmv1r.v v8, v9799; CHECK-NEXT:    ret800  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0801  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer802  %negc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %c, <vscale x 1 x i1> splat (i1 -1), i32 %evl)803  %v = call <vscale x 1 x float> @llvm.vp.fma.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x float> %a, <vscale x 1 x float> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)804  %u = call <vscale x 1 x float> @llvm.vp.select.nxv1f32(<vscale x 1 x i1> %m, <vscale x 1 x float> %v, <vscale x 1 x float> %c, i32 %evl)805  ret <vscale x 1 x float> %u806}807 808define <vscale x 2 x float> @vmfsac_vv_nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x float> %b, <vscale x 2 x float> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {809; CHECK-LABEL: vmfsac_vv_nxv2f32:810; CHECK:       # %bb.0:811; CHECK-NEXT:    vsetvli zero, a0, e32, m1, tu, mu812; CHECK-NEXT:    vfmsac.vv v10, v8, v9, v0.t813; CHECK-NEXT:    vmv1r.v v8, v10814; CHECK-NEXT:    ret815  %negc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %c, <vscale x 2 x i1> splat (i1 -1), i32 %evl)816  %v = call <vscale x 2 x float> @llvm.vp.fma.nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x float> %b, <vscale x 2 x float> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)817  %u = call <vscale x 2 x float> @llvm.vp.merge.nxv2f32(<vscale x 2 x i1> %m, <vscale x 2 x float> %v, <vscale x 2 x float> %c, i32 %evl)818  ret <vscale x 2 x float> %u819}820 821define <vscale x 2 x float> @vmfsac_vv_nxv2f32_unmasked(<vscale x 2 x float> %a, <vscale x 2 x float> %b, <vscale x 2 x float> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {822; CHECK-LABEL: vmfsac_vv_nxv2f32_unmasked:823; CHECK:       # %bb.0:824; CHECK-NEXT:    vsetvli zero, a0, e32, m1, tu, ma825; CHECK-NEXT:    vfmsac.vv v10, v8, v9826; CHECK-NEXT:    vmv1r.v v8, v10827; CHECK-NEXT:    ret828  %negc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %c, <vscale x 2 x i1> splat (i1 -1), i32 %evl)829  %v = call <vscale x 2 x float> @llvm.vp.fma.nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x float> %b, <vscale x 2 x float> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)830  %u = call <vscale x 2 x float> @llvm.vp.merge.nxv2f32(<vscale x 2 x i1> splat (i1 -1), <vscale x 2 x float> %v, <vscale x 2 x float> %c, i32 %evl)831  ret <vscale x 2 x float> %u832}833 834define <vscale x 2 x float> @vmfsac_vf_nxv2f32(<vscale x 2 x float> %a, float %b, <vscale x 2 x float> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {835; CHECK-LABEL: vmfsac_vf_nxv2f32:836; CHECK:       # %bb.0:837; CHECK-NEXT:    vsetvli zero, a0, e32, m1, tu, mu838; CHECK-NEXT:    vfmsac.vf v9, fa0, v8, v0.t839; CHECK-NEXT:    vmv1r.v v8, v9840; CHECK-NEXT:    ret841  %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0842  %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer843  %negc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %c, <vscale x 2 x i1> splat (i1 -1), i32 %evl)844  %v = call <vscale x 2 x float> @llvm.vp.fma.nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x float> %vb, <vscale x 2 x float> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)845  %u = call <vscale x 2 x float> @llvm.vp.merge.nxv2f32(<vscale x 2 x i1> %m, <vscale x 2 x float> %v, <vscale x 2 x float> %c, i32 %evl)846  ret <vscale x 2 x float> %u847}848 849define <vscale x 2 x float> @vmfsac_vf_nxv2f32_commute(<vscale x 2 x float> %a, float %b, <vscale x 2 x float> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {850; CHECK-LABEL: vmfsac_vf_nxv2f32_commute:851; CHECK:       # %bb.0:852; CHECK-NEXT:    vsetvli zero, a0, e32, m1, tu, mu853; CHECK-NEXT:    vfmsac.vf v9, fa0, v8, v0.t854; CHECK-NEXT:    vmv1r.v v8, v9855; CHECK-NEXT:    ret856  %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0857  %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer858  %negc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %c, <vscale x 2 x i1> splat (i1 -1), i32 %evl)859  %v = call <vscale x 2 x float> @llvm.vp.fma.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x float> %a, <vscale x 2 x float> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)860  %u = call <vscale x 2 x float> @llvm.vp.merge.nxv2f32(<vscale x 2 x i1> %m, <vscale x 2 x float> %v, <vscale x 2 x float> %c, i32 %evl)861  ret <vscale x 2 x float> %u862}863 864define <vscale x 2 x float> @vmfsac_vf_nxv2f32_unmasked(<vscale x 2 x float> %a, float %b, <vscale x 2 x float> %c, i32 zeroext %evl) {865; CHECK-LABEL: vmfsac_vf_nxv2f32_unmasked:866; CHECK:       # %bb.0:867; CHECK-NEXT:    vsetvli zero, a0, e32, m1, tu, ma868; CHECK-NEXT:    vfmsac.vf v9, fa0, v8869; CHECK-NEXT:    vmv1r.v v8, v9870; CHECK-NEXT:    ret871  %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0872  %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer873  %negc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %c, <vscale x 2 x i1> splat (i1 -1), i32 %evl)874  %v = call <vscale x 2 x float> @llvm.vp.fma.nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x float> %vb, <vscale x 2 x float> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)875  %u = call <vscale x 2 x float> @llvm.vp.merge.nxv2f32(<vscale x 2 x i1> splat (i1 -1), <vscale x 2 x float> %v, <vscale x 2 x float> %c, i32 %evl)876  ret <vscale x 2 x float> %u877}878 879define <vscale x 2 x float> @vmfsac_vv_nxv2f32_ta(<vscale x 2 x float> %a, <vscale x 2 x float> %b, <vscale x 2 x float> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {880; CHECK-LABEL: vmfsac_vv_nxv2f32_ta:881; CHECK:       # %bb.0:882; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, mu883; CHECK-NEXT:    vfmsac.vv v10, v8, v9, v0.t884; CHECK-NEXT:    vmv.v.v v8, v10885; CHECK-NEXT:    ret886  %negc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %c, <vscale x 2 x i1> splat (i1 -1), i32 %evl)887  %v = call <vscale x 2 x float> @llvm.vp.fma.nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x float> %b, <vscale x 2 x float> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)888  %u = call <vscale x 2 x float> @llvm.vp.select.nxv2f32(<vscale x 2 x i1> %m, <vscale x 2 x float> %v, <vscale x 2 x float> %c, i32 %evl)889  ret <vscale x 2 x float> %u890}891 892define <vscale x 2 x float> @vmfsac_vf_nxv2f32_ta(<vscale x 2 x float> %a, float %b, <vscale x 2 x float> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {893; CHECK-LABEL: vmfsac_vf_nxv2f32_ta:894; CHECK:       # %bb.0:895; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, mu896; CHECK-NEXT:    vfmsac.vf v9, fa0, v8, v0.t897; CHECK-NEXT:    vmv.v.v v8, v9898; CHECK-NEXT:    ret899  %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0900  %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer901  %negc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %c, <vscale x 2 x i1> splat (i1 -1), i32 %evl)902  %v = call <vscale x 2 x float> @llvm.vp.fma.nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x float> %vb, <vscale x 2 x float> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)903  %u = call <vscale x 2 x float> @llvm.vp.select.nxv2f32(<vscale x 2 x i1> %m, <vscale x 2 x float> %v, <vscale x 2 x float> %c, i32 %evl)904  ret <vscale x 2 x float> %u905}906 907define <vscale x 2 x float> @vmfsac_vf_nxv2f32_commute_ta(<vscale x 2 x float> %a, float %b, <vscale x 2 x float> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {908; CHECK-LABEL: vmfsac_vf_nxv2f32_commute_ta:909; CHECK:       # %bb.0:910; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, mu911; CHECK-NEXT:    vfmsac.vf v9, fa0, v8, v0.t912; CHECK-NEXT:    vmv.v.v v8, v9913; CHECK-NEXT:    ret914  %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0915  %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer916  %negc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %c, <vscale x 2 x i1> splat (i1 -1), i32 %evl)917  %v = call <vscale x 2 x float> @llvm.vp.fma.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x float> %a, <vscale x 2 x float> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)918  %u = call <vscale x 2 x float> @llvm.vp.select.nxv2f32(<vscale x 2 x i1> %m, <vscale x 2 x float> %v, <vscale x 2 x float> %c, i32 %evl)919  ret <vscale x 2 x float> %u920}921 922define <vscale x 4 x float> @vmfsac_vv_nxv4f32(<vscale x 4 x float> %a, <vscale x 4 x float> %b, <vscale x 4 x float> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {923; CHECK-LABEL: vmfsac_vv_nxv4f32:924; CHECK:       # %bb.0:925; CHECK-NEXT:    vsetvli zero, a0, e32, m2, tu, mu926; CHECK-NEXT:    vfmsac.vv v12, v8, v10, v0.t927; CHECK-NEXT:    vmv2r.v v8, v12928; CHECK-NEXT:    ret929  %negc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %c, <vscale x 4 x i1> splat (i1 -1), i32 %evl)930  %v = call <vscale x 4 x float> @llvm.vp.fma.nxv4f32(<vscale x 4 x float> %a, <vscale x 4 x float> %b, <vscale x 4 x float> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)931  %u = call <vscale x 4 x float> @llvm.vp.merge.nxv4f32(<vscale x 4 x i1> %m, <vscale x 4 x float> %v, <vscale x 4 x float> %c, i32 %evl)932  ret <vscale x 4 x float> %u933}934 935define <vscale x 4 x float> @vmfsac_vv_nxv4f32_unmasked(<vscale x 4 x float> %a, <vscale x 4 x float> %b, <vscale x 4 x float> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {936; CHECK-LABEL: vmfsac_vv_nxv4f32_unmasked:937; CHECK:       # %bb.0:938; CHECK-NEXT:    vsetvli zero, a0, e32, m2, tu, ma939; CHECK-NEXT:    vfmsac.vv v12, v8, v10940; CHECK-NEXT:    vmv2r.v v8, v12941; CHECK-NEXT:    ret942  %negc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %c, <vscale x 4 x i1> splat (i1 -1), i32 %evl)943  %v = call <vscale x 4 x float> @llvm.vp.fma.nxv4f32(<vscale x 4 x float> %a, <vscale x 4 x float> %b, <vscale x 4 x float> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)944  %u = call <vscale x 4 x float> @llvm.vp.merge.nxv4f32(<vscale x 4 x i1> splat (i1 -1), <vscale x 4 x float> %v, <vscale x 4 x float> %c, i32 %evl)945  ret <vscale x 4 x float> %u946}947 948define <vscale x 4 x float> @vmfsac_vf_nxv4f32(<vscale x 4 x float> %a, float %b, <vscale x 4 x float> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {949; CHECK-LABEL: vmfsac_vf_nxv4f32:950; CHECK:       # %bb.0:951; CHECK-NEXT:    vsetvli zero, a0, e32, m2, tu, mu952; CHECK-NEXT:    vfmsac.vf v10, fa0, v8, v0.t953; CHECK-NEXT:    vmv2r.v v8, v10954; CHECK-NEXT:    ret955  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0956  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer957  %negc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %c, <vscale x 4 x i1> splat (i1 -1), i32 %evl)958  %v = call <vscale x 4 x float> @llvm.vp.fma.nxv4f32(<vscale x 4 x float> %a, <vscale x 4 x float> %vb, <vscale x 4 x float> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)959  %u = call <vscale x 4 x float> @llvm.vp.merge.nxv4f32(<vscale x 4 x i1> %m, <vscale x 4 x float> %v, <vscale x 4 x float> %c, i32 %evl)960  ret <vscale x 4 x float> %u961}962 963define <vscale x 4 x float> @vmfsac_vf_nxv4f32_commute(<vscale x 4 x float> %a, float %b, <vscale x 4 x float> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {964; CHECK-LABEL: vmfsac_vf_nxv4f32_commute:965; CHECK:       # %bb.0:966; CHECK-NEXT:    vsetvli zero, a0, e32, m2, tu, mu967; CHECK-NEXT:    vfmsac.vf v10, fa0, v8, v0.t968; CHECK-NEXT:    vmv2r.v v8, v10969; CHECK-NEXT:    ret970  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0971  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer972  %negc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %c, <vscale x 4 x i1> splat (i1 -1), i32 %evl)973  %v = call <vscale x 4 x float> @llvm.vp.fma.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x float> %a, <vscale x 4 x float> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)974  %u = call <vscale x 4 x float> @llvm.vp.merge.nxv4f32(<vscale x 4 x i1> %m, <vscale x 4 x float> %v, <vscale x 4 x float> %c, i32 %evl)975  ret <vscale x 4 x float> %u976}977 978define <vscale x 4 x float> @vmfsac_vf_nxv4f32_unmasked(<vscale x 4 x float> %a, float %b, <vscale x 4 x float> %c, i32 zeroext %evl) {979; CHECK-LABEL: vmfsac_vf_nxv4f32_unmasked:980; CHECK:       # %bb.0:981; CHECK-NEXT:    vsetvli zero, a0, e32, m2, tu, ma982; CHECK-NEXT:    vfmsac.vf v10, fa0, v8983; CHECK-NEXT:    vmv2r.v v8, v10984; CHECK-NEXT:    ret985  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0986  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer987  %negc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %c, <vscale x 4 x i1> splat (i1 -1), i32 %evl)988  %v = call <vscale x 4 x float> @llvm.vp.fma.nxv4f32(<vscale x 4 x float> %a, <vscale x 4 x float> %vb, <vscale x 4 x float> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)989  %u = call <vscale x 4 x float> @llvm.vp.merge.nxv4f32(<vscale x 4 x i1> splat (i1 -1), <vscale x 4 x float> %v, <vscale x 4 x float> %c, i32 %evl)990  ret <vscale x 4 x float> %u991}992 993define <vscale x 4 x float> @vmfsac_vv_nxv4f32_ta(<vscale x 4 x float> %a, <vscale x 4 x float> %b, <vscale x 4 x float> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {994; CHECK-LABEL: vmfsac_vv_nxv4f32_ta:995; CHECK:       # %bb.0:996; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, mu997; CHECK-NEXT:    vfmsac.vv v12, v8, v10, v0.t998; CHECK-NEXT:    vmv.v.v v8, v12999; CHECK-NEXT:    ret1000  %negc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %c, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1001  %v = call <vscale x 4 x float> @llvm.vp.fma.nxv4f32(<vscale x 4 x float> %a, <vscale x 4 x float> %b, <vscale x 4 x float> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1002  %u = call <vscale x 4 x float> @llvm.vp.select.nxv4f32(<vscale x 4 x i1> %m, <vscale x 4 x float> %v, <vscale x 4 x float> %c, i32 %evl)1003  ret <vscale x 4 x float> %u1004}1005 1006define <vscale x 4 x float> @vmfsac_vf_nxv4f32_ta(<vscale x 4 x float> %a, float %b, <vscale x 4 x float> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {1007; CHECK-LABEL: vmfsac_vf_nxv4f32_ta:1008; CHECK:       # %bb.0:1009; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, mu1010; CHECK-NEXT:    vfmsac.vf v10, fa0, v8, v0.t1011; CHECK-NEXT:    vmv.v.v v8, v101012; CHECK-NEXT:    ret1013  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 01014  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer1015  %negc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %c, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1016  %v = call <vscale x 4 x float> @llvm.vp.fma.nxv4f32(<vscale x 4 x float> %a, <vscale x 4 x float> %vb, <vscale x 4 x float> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1017  %u = call <vscale x 4 x float> @llvm.vp.select.nxv4f32(<vscale x 4 x i1> %m, <vscale x 4 x float> %v, <vscale x 4 x float> %c, i32 %evl)1018  ret <vscale x 4 x float> %u1019}1020 1021define <vscale x 4 x float> @vmfsac_vf_nxv4f32_commute_ta(<vscale x 4 x float> %a, float %b, <vscale x 4 x float> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {1022; CHECK-LABEL: vmfsac_vf_nxv4f32_commute_ta:1023; CHECK:       # %bb.0:1024; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, mu1025; CHECK-NEXT:    vfmsac.vf v10, fa0, v8, v0.t1026; CHECK-NEXT:    vmv.v.v v8, v101027; CHECK-NEXT:    ret1028  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 01029  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer1030  %negc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %c, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1031  %v = call <vscale x 4 x float> @llvm.vp.fma.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x float> %a, <vscale x 4 x float> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1032  %u = call <vscale x 4 x float> @llvm.vp.select.nxv4f32(<vscale x 4 x i1> %m, <vscale x 4 x float> %v, <vscale x 4 x float> %c, i32 %evl)1033  ret <vscale x 4 x float> %u1034}1035 1036define <vscale x 8 x float> @vmfsac_vv_nxv8f32(<vscale x 8 x float> %a, <vscale x 8 x float> %b, <vscale x 8 x float> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {1037; CHECK-LABEL: vmfsac_vv_nxv8f32:1038; CHECK:       # %bb.0:1039; CHECK-NEXT:    vsetvli zero, a0, e32, m4, tu, mu1040; CHECK-NEXT:    vfmsac.vv v16, v8, v12, v0.t1041; CHECK-NEXT:    vmv4r.v v8, v161042; CHECK-NEXT:    ret1043  %negc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %c, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1044  %v = call <vscale x 8 x float> @llvm.vp.fma.nxv8f32(<vscale x 8 x float> %a, <vscale x 8 x float> %b, <vscale x 8 x float> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1045  %u = call <vscale x 8 x float> @llvm.vp.merge.nxv8f32(<vscale x 8 x i1> %m, <vscale x 8 x float> %v, <vscale x 8 x float> %c, i32 %evl)1046  ret <vscale x 8 x float> %u1047}1048 1049define <vscale x 8 x float> @vmfsac_vv_nxv8f32_unmasked(<vscale x 8 x float> %a, <vscale x 8 x float> %b, <vscale x 8 x float> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {1050; CHECK-LABEL: vmfsac_vv_nxv8f32_unmasked:1051; CHECK:       # %bb.0:1052; CHECK-NEXT:    vsetvli zero, a0, e32, m4, tu, ma1053; CHECK-NEXT:    vfmsac.vv v16, v8, v121054; CHECK-NEXT:    vmv4r.v v8, v161055; CHECK-NEXT:    ret1056  %negc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %c, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1057  %v = call <vscale x 8 x float> @llvm.vp.fma.nxv8f32(<vscale x 8 x float> %a, <vscale x 8 x float> %b, <vscale x 8 x float> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1058  %u = call <vscale x 8 x float> @llvm.vp.merge.nxv8f32(<vscale x 8 x i1> splat (i1 -1), <vscale x 8 x float> %v, <vscale x 8 x float> %c, i32 %evl)1059  ret <vscale x 8 x float> %u1060}1061 1062define <vscale x 8 x float> @vmfsac_vf_nxv8f32(<vscale x 8 x float> %a, float %b, <vscale x 8 x float> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {1063; CHECK-LABEL: vmfsac_vf_nxv8f32:1064; CHECK:       # %bb.0:1065; CHECK-NEXT:    vsetvli zero, a0, e32, m4, tu, mu1066; CHECK-NEXT:    vfmsac.vf v12, fa0, v8, v0.t1067; CHECK-NEXT:    vmv4r.v v8, v121068; CHECK-NEXT:    ret1069  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 01070  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer1071  %negc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %c, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1072  %v = call <vscale x 8 x float> @llvm.vp.fma.nxv8f32(<vscale x 8 x float> %a, <vscale x 8 x float> %vb, <vscale x 8 x float> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1073  %u = call <vscale x 8 x float> @llvm.vp.merge.nxv8f32(<vscale x 8 x i1> %m, <vscale x 8 x float> %v, <vscale x 8 x float> %c, i32 %evl)1074  ret <vscale x 8 x float> %u1075}1076 1077define <vscale x 8 x float> @vmfsac_vf_nxv8f32_commute(<vscale x 8 x float> %a, float %b, <vscale x 8 x float> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {1078; CHECK-LABEL: vmfsac_vf_nxv8f32_commute:1079; CHECK:       # %bb.0:1080; CHECK-NEXT:    vsetvli zero, a0, e32, m4, tu, mu1081; CHECK-NEXT:    vfmsac.vf v12, fa0, v8, v0.t1082; CHECK-NEXT:    vmv4r.v v8, v121083; CHECK-NEXT:    ret1084  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 01085  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer1086  %negc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %c, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1087  %v = call <vscale x 8 x float> @llvm.vp.fma.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x float> %a, <vscale x 8 x float> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1088  %u = call <vscale x 8 x float> @llvm.vp.merge.nxv8f32(<vscale x 8 x i1> %m, <vscale x 8 x float> %v, <vscale x 8 x float> %c, i32 %evl)1089  ret <vscale x 8 x float> %u1090}1091 1092define <vscale x 8 x float> @vmfsac_vf_nxv8f32_unmasked(<vscale x 8 x float> %a, float %b, <vscale x 8 x float> %c, i32 zeroext %evl) {1093; CHECK-LABEL: vmfsac_vf_nxv8f32_unmasked:1094; CHECK:       # %bb.0:1095; CHECK-NEXT:    vsetvli zero, a0, e32, m4, tu, ma1096; CHECK-NEXT:    vfmsac.vf v12, fa0, v81097; CHECK-NEXT:    vmv4r.v v8, v121098; CHECK-NEXT:    ret1099  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 01100  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer1101  %negc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %c, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1102  %v = call <vscale x 8 x float> @llvm.vp.fma.nxv8f32(<vscale x 8 x float> %a, <vscale x 8 x float> %vb, <vscale x 8 x float> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1103  %u = call <vscale x 8 x float> @llvm.vp.merge.nxv8f32(<vscale x 8 x i1> splat (i1 -1), <vscale x 8 x float> %v, <vscale x 8 x float> %c, i32 %evl)1104  ret <vscale x 8 x float> %u1105}1106 1107define <vscale x 8 x float> @vmfsac_vv_nxv8f32_ta(<vscale x 8 x float> %a, <vscale x 8 x float> %b, <vscale x 8 x float> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {1108; CHECK-LABEL: vmfsac_vv_nxv8f32_ta:1109; CHECK:       # %bb.0:1110; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, mu1111; CHECK-NEXT:    vfmsac.vv v16, v8, v12, v0.t1112; CHECK-NEXT:    vmv.v.v v8, v161113; CHECK-NEXT:    ret1114  %negc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %c, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1115  %v = call <vscale x 8 x float> @llvm.vp.fma.nxv8f32(<vscale x 8 x float> %a, <vscale x 8 x float> %b, <vscale x 8 x float> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1116  %u = call <vscale x 8 x float> @llvm.vp.select.nxv8f32(<vscale x 8 x i1> %m, <vscale x 8 x float> %v, <vscale x 8 x float> %c, i32 %evl)1117  ret <vscale x 8 x float> %u1118}1119 1120define <vscale x 8 x float> @vmfsac_vf_nxv8f32_ta(<vscale x 8 x float> %a, float %b, <vscale x 8 x float> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {1121; CHECK-LABEL: vmfsac_vf_nxv8f32_ta:1122; CHECK:       # %bb.0:1123; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, mu1124; CHECK-NEXT:    vfmsac.vf v12, fa0, v8, v0.t1125; CHECK-NEXT:    vmv.v.v v8, v121126; CHECK-NEXT:    ret1127  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 01128  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer1129  %negc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %c, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1130  %v = call <vscale x 8 x float> @llvm.vp.fma.nxv8f32(<vscale x 8 x float> %a, <vscale x 8 x float> %vb, <vscale x 8 x float> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1131  %u = call <vscale x 8 x float> @llvm.vp.select.nxv8f32(<vscale x 8 x i1> %m, <vscale x 8 x float> %v, <vscale x 8 x float> %c, i32 %evl)1132  ret <vscale x 8 x float> %u1133}1134 1135define <vscale x 8 x float> @vmfsac_vf_nxv8f32_commute_ta(<vscale x 8 x float> %a, float %b, <vscale x 8 x float> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {1136; CHECK-LABEL: vmfsac_vf_nxv8f32_commute_ta:1137; CHECK:       # %bb.0:1138; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, mu1139; CHECK-NEXT:    vfmsac.vf v12, fa0, v8, v0.t1140; CHECK-NEXT:    vmv.v.v v8, v121141; CHECK-NEXT:    ret1142  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 01143  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer1144  %negc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %c, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1145  %v = call <vscale x 8 x float> @llvm.vp.fma.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x float> %a, <vscale x 8 x float> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1146  %u = call <vscale x 8 x float> @llvm.vp.select.nxv8f32(<vscale x 8 x i1> %m, <vscale x 8 x float> %v, <vscale x 8 x float> %c, i32 %evl)1147  ret <vscale x 8 x float> %u1148}1149 1150define <vscale x 16 x float> @vmfsac_vv_nxv16f32(<vscale x 16 x float> %a, <vscale x 16 x float> %b, <vscale x 16 x float> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {1151; CHECK-LABEL: vmfsac_vv_nxv16f32:1152; CHECK:       # %bb.0:1153; CHECK-NEXT:    vl8re32.v v24, (a0)1154; CHECK-NEXT:    vsetvli zero, a1, e32, m8, tu, mu1155; CHECK-NEXT:    vfmsac.vv v24, v8, v16, v0.t1156; CHECK-NEXT:    vmv8r.v v8, v241157; CHECK-NEXT:    ret1158  %negc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %c, <vscale x 16 x i1> splat (i1 -1), i32 %evl)1159  %v = call <vscale x 16 x float> @llvm.vp.fma.nxv16f32(<vscale x 16 x float> %a, <vscale x 16 x float> %b, <vscale x 16 x float> %negc, <vscale x 16 x i1> splat (i1 -1), i32 %evl)1160  %u = call <vscale x 16 x float> @llvm.vp.merge.nxv16f32(<vscale x 16 x i1> %m, <vscale x 16 x float> %v, <vscale x 16 x float> %c, i32 %evl)1161  ret <vscale x 16 x float> %u1162}1163 1164define <vscale x 16 x float> @vmfsac_vv_nxv16f32_unmasked(<vscale x 16 x float> %a, <vscale x 16 x float> %b, <vscale x 16 x float> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {1165; CHECK-LABEL: vmfsac_vv_nxv16f32_unmasked:1166; CHECK:       # %bb.0:1167; CHECK-NEXT:    vl8re32.v v24, (a0)1168; CHECK-NEXT:    vsetvli zero, a1, e32, m8, tu, ma1169; CHECK-NEXT:    vfmsac.vv v24, v8, v161170; CHECK-NEXT:    vmv8r.v v8, v241171; CHECK-NEXT:    ret1172  %negc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %c, <vscale x 16 x i1> splat (i1 -1), i32 %evl)1173  %v = call <vscale x 16 x float> @llvm.vp.fma.nxv16f32(<vscale x 16 x float> %a, <vscale x 16 x float> %b, <vscale x 16 x float> %negc, <vscale x 16 x i1> splat (i1 -1), i32 %evl)1174  %u = call <vscale x 16 x float> @llvm.vp.merge.nxv16f32(<vscale x 16 x i1> splat (i1 -1), <vscale x 16 x float> %v, <vscale x 16 x float> %c, i32 %evl)1175  ret <vscale x 16 x float> %u1176}1177 1178define <vscale x 16 x float> @vmfsac_vf_nxv16f32(<vscale x 16 x float> %a, float %b, <vscale x 16 x float> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {1179; CHECK-LABEL: vmfsac_vf_nxv16f32:1180; CHECK:       # %bb.0:1181; CHECK-NEXT:    vsetvli zero, a0, e32, m8, tu, mu1182; CHECK-NEXT:    vfmsac.vf v16, fa0, v8, v0.t1183; CHECK-NEXT:    vmv8r.v v8, v161184; CHECK-NEXT:    ret1185  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 01186  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer1187  %negc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %c, <vscale x 16 x i1> splat (i1 -1), i32 %evl)1188  %v = call <vscale x 16 x float> @llvm.vp.fma.nxv16f32(<vscale x 16 x float> %a, <vscale x 16 x float> %vb, <vscale x 16 x float> %negc, <vscale x 16 x i1> splat (i1 -1), i32 %evl)1189  %u = call <vscale x 16 x float> @llvm.vp.merge.nxv16f32(<vscale x 16 x i1> %m, <vscale x 16 x float> %v, <vscale x 16 x float> %c, i32 %evl)1190  ret <vscale x 16 x float> %u1191}1192 1193define <vscale x 16 x float> @vmfsac_vf_nxv16f32_commute(<vscale x 16 x float> %a, float %b, <vscale x 16 x float> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {1194; CHECK-LABEL: vmfsac_vf_nxv16f32_commute:1195; CHECK:       # %bb.0:1196; CHECK-NEXT:    vsetvli zero, a0, e32, m8, tu, mu1197; CHECK-NEXT:    vfmsac.vf v16, fa0, v8, v0.t1198; CHECK-NEXT:    vmv8r.v v8, v161199; CHECK-NEXT:    ret1200  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 01201  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer1202  %negc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %c, <vscale x 16 x i1> splat (i1 -1), i32 %evl)1203  %v = call <vscale x 16 x float> @llvm.vp.fma.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x float> %a, <vscale x 16 x float> %negc, <vscale x 16 x i1> splat (i1 -1), i32 %evl)1204  %u = call <vscale x 16 x float> @llvm.vp.merge.nxv16f32(<vscale x 16 x i1> %m, <vscale x 16 x float> %v, <vscale x 16 x float> %c, i32 %evl)1205  ret <vscale x 16 x float> %u1206}1207 1208define <vscale x 16 x float> @vmfsac_vf_nxv16f32_unmasked(<vscale x 16 x float> %a, float %b, <vscale x 16 x float> %c, i32 zeroext %evl) {1209; CHECK-LABEL: vmfsac_vf_nxv16f32_unmasked:1210; CHECK:       # %bb.0:1211; CHECK-NEXT:    vsetvli zero, a0, e32, m8, tu, ma1212; CHECK-NEXT:    vfmsac.vf v16, fa0, v81213; CHECK-NEXT:    vmv8r.v v8, v161214; CHECK-NEXT:    ret1215  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 01216  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer1217  %negc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %c, <vscale x 16 x i1> splat (i1 -1), i32 %evl)1218  %v = call <vscale x 16 x float> @llvm.vp.fma.nxv16f32(<vscale x 16 x float> %a, <vscale x 16 x float> %vb, <vscale x 16 x float> %negc, <vscale x 16 x i1> splat (i1 -1), i32 %evl)1219  %u = call <vscale x 16 x float> @llvm.vp.merge.nxv16f32(<vscale x 16 x i1> splat (i1 -1), <vscale x 16 x float> %v, <vscale x 16 x float> %c, i32 %evl)1220  ret <vscale x 16 x float> %u1221}1222 1223define <vscale x 16 x float> @vmfsac_vv_nxv16f32_ta(<vscale x 16 x float> %a, <vscale x 16 x float> %b, <vscale x 16 x float> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {1224; CHECK-LABEL: vmfsac_vv_nxv16f32_ta:1225; CHECK:       # %bb.0:1226; CHECK-NEXT:    vl8re32.v v24, (a0)1227; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, mu1228; CHECK-NEXT:    vfmsac.vv v24, v8, v16, v0.t1229; CHECK-NEXT:    vmv.v.v v8, v241230; CHECK-NEXT:    ret1231  %negc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %c, <vscale x 16 x i1> splat (i1 -1), i32 %evl)1232  %v = call <vscale x 16 x float> @llvm.vp.fma.nxv16f32(<vscale x 16 x float> %a, <vscale x 16 x float> %b, <vscale x 16 x float> %negc, <vscale x 16 x i1> splat (i1 -1), i32 %evl)1233  %u = call <vscale x 16 x float> @llvm.vp.select.nxv16f32(<vscale x 16 x i1> %m, <vscale x 16 x float> %v, <vscale x 16 x float> %c, i32 %evl)1234  ret <vscale x 16 x float> %u1235}1236 1237define <vscale x 16 x float> @vmfsac_vf_nxv16f32_ta(<vscale x 16 x float> %a, float %b, <vscale x 16 x float> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {1238; CHECK-LABEL: vmfsac_vf_nxv16f32_ta:1239; CHECK:       # %bb.0:1240; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, mu1241; CHECK-NEXT:    vfmsac.vf v16, fa0, v8, v0.t1242; CHECK-NEXT:    vmv.v.v v8, v161243; CHECK-NEXT:    ret1244  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 01245  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer1246  %negc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %c, <vscale x 16 x i1> splat (i1 -1), i32 %evl)1247  %v = call <vscale x 16 x float> @llvm.vp.fma.nxv16f32(<vscale x 16 x float> %a, <vscale x 16 x float> %vb, <vscale x 16 x float> %negc, <vscale x 16 x i1> splat (i1 -1), i32 %evl)1248  %u = call <vscale x 16 x float> @llvm.vp.select.nxv16f32(<vscale x 16 x i1> %m, <vscale x 16 x float> %v, <vscale x 16 x float> %c, i32 %evl)1249  ret <vscale x 16 x float> %u1250}1251 1252define <vscale x 16 x float> @vmfsac_vf_nxv16f32_commute_ta(<vscale x 16 x float> %a, float %b, <vscale x 16 x float> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {1253; CHECK-LABEL: vmfsac_vf_nxv16f32_commute_ta:1254; CHECK:       # %bb.0:1255; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, mu1256; CHECK-NEXT:    vfmsac.vf v16, fa0, v8, v0.t1257; CHECK-NEXT:    vmv.v.v v8, v161258; CHECK-NEXT:    ret1259  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 01260  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer1261  %negc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %c, <vscale x 16 x i1> splat (i1 -1), i32 %evl)1262  %v = call <vscale x 16 x float> @llvm.vp.fma.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x float> %a, <vscale x 16 x float> %negc, <vscale x 16 x i1> splat (i1 -1), i32 %evl)1263  %u = call <vscale x 16 x float> @llvm.vp.select.nxv16f32(<vscale x 16 x i1> %m, <vscale x 16 x float> %v, <vscale x 16 x float> %c, i32 %evl)1264  ret <vscale x 16 x float> %u1265}1266 1267define <vscale x 1 x double> @vmfsac_vv_nxv1f64(<vscale x 1 x double> %a, <vscale x 1 x double> %b, <vscale x 1 x double> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {1268; CHECK-LABEL: vmfsac_vv_nxv1f64:1269; CHECK:       # %bb.0:1270; CHECK-NEXT:    vsetvli zero, a0, e64, m1, tu, mu1271; CHECK-NEXT:    vfmsac.vv v10, v8, v9, v0.t1272; CHECK-NEXT:    vmv1r.v v8, v101273; CHECK-NEXT:    ret1274  %negc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %c, <vscale x 1 x i1> splat (i1 -1), i32 %evl)1275  %v = call <vscale x 1 x double> @llvm.vp.fma.nxv1f64(<vscale x 1 x double> %a, <vscale x 1 x double> %b, <vscale x 1 x double> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)1276  %u = call <vscale x 1 x double> @llvm.vp.merge.nxv1f64(<vscale x 1 x i1> %m, <vscale x 1 x double> %v, <vscale x 1 x double> %c, i32 %evl)1277  ret <vscale x 1 x double> %u1278}1279 1280define <vscale x 1 x double> @vmfsac_vv_nxv1f64_unmasked(<vscale x 1 x double> %a, <vscale x 1 x double> %b, <vscale x 1 x double> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {1281; CHECK-LABEL: vmfsac_vv_nxv1f64_unmasked:1282; CHECK:       # %bb.0:1283; CHECK-NEXT:    vsetvli zero, a0, e64, m1, tu, ma1284; CHECK-NEXT:    vfmsac.vv v10, v8, v91285; CHECK-NEXT:    vmv1r.v v8, v101286; CHECK-NEXT:    ret1287  %negc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %c, <vscale x 1 x i1> splat (i1 -1), i32 %evl)1288  %v = call <vscale x 1 x double> @llvm.vp.fma.nxv1f64(<vscale x 1 x double> %a, <vscale x 1 x double> %b, <vscale x 1 x double> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)1289  %u = call <vscale x 1 x double> @llvm.vp.merge.nxv1f64(<vscale x 1 x i1> splat (i1 -1), <vscale x 1 x double> %v, <vscale x 1 x double> %c, i32 %evl)1290  ret <vscale x 1 x double> %u1291}1292 1293define <vscale x 1 x double> @vmfsac_vf_nxv1f64(<vscale x 1 x double> %a, double %b, <vscale x 1 x double> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {1294; CHECK-LABEL: vmfsac_vf_nxv1f64:1295; CHECK:       # %bb.0:1296; CHECK-NEXT:    vsetvli zero, a0, e64, m1, tu, mu1297; CHECK-NEXT:    vfmsac.vf v9, fa0, v8, v0.t1298; CHECK-NEXT:    vmv1r.v v8, v91299; CHECK-NEXT:    ret1300  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 01301  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer1302  %negc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %c, <vscale x 1 x i1> splat (i1 -1), i32 %evl)1303  %v = call <vscale x 1 x double> @llvm.vp.fma.nxv1f64(<vscale x 1 x double> %a, <vscale x 1 x double> %vb, <vscale x 1 x double> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)1304  %u = call <vscale x 1 x double> @llvm.vp.merge.nxv1f64(<vscale x 1 x i1> %m, <vscale x 1 x double> %v, <vscale x 1 x double> %c, i32 %evl)1305  ret <vscale x 1 x double> %u1306}1307 1308define <vscale x 1 x double> @vmfsac_vf_nxv1f64_commute(<vscale x 1 x double> %a, double %b, <vscale x 1 x double> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {1309; CHECK-LABEL: vmfsac_vf_nxv1f64_commute:1310; CHECK:       # %bb.0:1311; CHECK-NEXT:    vsetvli zero, a0, e64, m1, tu, mu1312; CHECK-NEXT:    vfmsac.vf v9, fa0, v8, v0.t1313; CHECK-NEXT:    vmv1r.v v8, v91314; CHECK-NEXT:    ret1315  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 01316  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer1317  %negc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %c, <vscale x 1 x i1> splat (i1 -1), i32 %evl)1318  %v = call <vscale x 1 x double> @llvm.vp.fma.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %a, <vscale x 1 x double> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)1319  %u = call <vscale x 1 x double> @llvm.vp.merge.nxv1f64(<vscale x 1 x i1> %m, <vscale x 1 x double> %v, <vscale x 1 x double> %c, i32 %evl)1320  ret <vscale x 1 x double> %u1321}1322 1323define <vscale x 1 x double> @vmfsac_vf_nxv1f64_unmasked(<vscale x 1 x double> %a, double %b, <vscale x 1 x double> %c, i32 zeroext %evl) {1324; CHECK-LABEL: vmfsac_vf_nxv1f64_unmasked:1325; CHECK:       # %bb.0:1326; CHECK-NEXT:    vsetvli zero, a0, e64, m1, tu, ma1327; CHECK-NEXT:    vfmsac.vf v9, fa0, v81328; CHECK-NEXT:    vmv1r.v v8, v91329; CHECK-NEXT:    ret1330  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 01331  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer1332  %negc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %c, <vscale x 1 x i1> splat (i1 -1), i32 %evl)1333  %v = call <vscale x 1 x double> @llvm.vp.fma.nxv1f64(<vscale x 1 x double> %a, <vscale x 1 x double> %vb, <vscale x 1 x double> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)1334  %u = call <vscale x 1 x double> @llvm.vp.merge.nxv1f64(<vscale x 1 x i1> splat (i1 -1), <vscale x 1 x double> %v, <vscale x 1 x double> %c, i32 %evl)1335  ret <vscale x 1 x double> %u1336}1337 1338define <vscale x 1 x double> @vmfsac_vv_nxv1f64_ta(<vscale x 1 x double> %a, <vscale x 1 x double> %b, <vscale x 1 x double> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {1339; CHECK-LABEL: vmfsac_vv_nxv1f64_ta:1340; CHECK:       # %bb.0:1341; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, mu1342; CHECK-NEXT:    vfmsac.vv v10, v8, v9, v0.t1343; CHECK-NEXT:    vmv.v.v v8, v101344; CHECK-NEXT:    ret1345  %negc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %c, <vscale x 1 x i1> splat (i1 -1), i32 %evl)1346  %v = call <vscale x 1 x double> @llvm.vp.fma.nxv1f64(<vscale x 1 x double> %a, <vscale x 1 x double> %b, <vscale x 1 x double> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)1347  %u = call <vscale x 1 x double> @llvm.vp.select.nxv1f64(<vscale x 1 x i1> %m, <vscale x 1 x double> %v, <vscale x 1 x double> %c, i32 %evl)1348  ret <vscale x 1 x double> %u1349}1350 1351define <vscale x 1 x double> @vmfsac_vf_nxv1f64_ta(<vscale x 1 x double> %a, double %b, <vscale x 1 x double> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {1352; CHECK-LABEL: vmfsac_vf_nxv1f64_ta:1353; CHECK:       # %bb.0:1354; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, mu1355; CHECK-NEXT:    vfmsac.vf v9, fa0, v8, v0.t1356; CHECK-NEXT:    vmv.v.v v8, v91357; CHECK-NEXT:    ret1358  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 01359  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer1360  %negc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %c, <vscale x 1 x i1> splat (i1 -1), i32 %evl)1361  %v = call <vscale x 1 x double> @llvm.vp.fma.nxv1f64(<vscale x 1 x double> %a, <vscale x 1 x double> %vb, <vscale x 1 x double> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)1362  %u = call <vscale x 1 x double> @llvm.vp.select.nxv1f64(<vscale x 1 x i1> %m, <vscale x 1 x double> %v, <vscale x 1 x double> %c, i32 %evl)1363  ret <vscale x 1 x double> %u1364}1365 1366define <vscale x 1 x double> @vmfsac_vf_nxv1f64_commute_ta(<vscale x 1 x double> %a, double %b, <vscale x 1 x double> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {1367; CHECK-LABEL: vmfsac_vf_nxv1f64_commute_ta:1368; CHECK:       # %bb.0:1369; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, mu1370; CHECK-NEXT:    vfmsac.vf v9, fa0, v8, v0.t1371; CHECK-NEXT:    vmv.v.v v8, v91372; CHECK-NEXT:    ret1373  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 01374  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer1375  %negc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %c, <vscale x 1 x i1> splat (i1 -1), i32 %evl)1376  %v = call <vscale x 1 x double> @llvm.vp.fma.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %a, <vscale x 1 x double> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)1377  %u = call <vscale x 1 x double> @llvm.vp.select.nxv1f64(<vscale x 1 x i1> %m, <vscale x 1 x double> %v, <vscale x 1 x double> %c, i32 %evl)1378  ret <vscale x 1 x double> %u1379}1380 1381define <vscale x 2 x double> @vmfsac_vv_nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x double> %b, <vscale x 2 x double> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {1382; CHECK-LABEL: vmfsac_vv_nxv2f64:1383; CHECK:       # %bb.0:1384; CHECK-NEXT:    vsetvli zero, a0, e64, m2, tu, mu1385; CHECK-NEXT:    vfmsac.vv v12, v8, v10, v0.t1386; CHECK-NEXT:    vmv2r.v v8, v121387; CHECK-NEXT:    ret1388  %negc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %c, <vscale x 2 x i1> splat (i1 -1), i32 %evl)1389  %v = call <vscale x 2 x double> @llvm.vp.fma.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x double> %b, <vscale x 2 x double> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)1390  %u = call <vscale x 2 x double> @llvm.vp.merge.nxv2f64(<vscale x 2 x i1> %m, <vscale x 2 x double> %v, <vscale x 2 x double> %c, i32 %evl)1391  ret <vscale x 2 x double> %u1392}1393 1394define <vscale x 2 x double> @vmfsac_vv_nxv2f64_unmasked(<vscale x 2 x double> %a, <vscale x 2 x double> %b, <vscale x 2 x double> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {1395; CHECK-LABEL: vmfsac_vv_nxv2f64_unmasked:1396; CHECK:       # %bb.0:1397; CHECK-NEXT:    vsetvli zero, a0, e64, m2, tu, ma1398; CHECK-NEXT:    vfmsac.vv v12, v8, v101399; CHECK-NEXT:    vmv2r.v v8, v121400; CHECK-NEXT:    ret1401  %negc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %c, <vscale x 2 x i1> splat (i1 -1), i32 %evl)1402  %v = call <vscale x 2 x double> @llvm.vp.fma.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x double> %b, <vscale x 2 x double> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)1403  %u = call <vscale x 2 x double> @llvm.vp.merge.nxv2f64(<vscale x 2 x i1> splat (i1 -1), <vscale x 2 x double> %v, <vscale x 2 x double> %c, i32 %evl)1404  ret <vscale x 2 x double> %u1405}1406 1407define <vscale x 2 x double> @vmfsac_vf_nxv2f64(<vscale x 2 x double> %a, double %b, <vscale x 2 x double> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {1408; CHECK-LABEL: vmfsac_vf_nxv2f64:1409; CHECK:       # %bb.0:1410; CHECK-NEXT:    vsetvli zero, a0, e64, m2, tu, mu1411; CHECK-NEXT:    vfmsac.vf v10, fa0, v8, v0.t1412; CHECK-NEXT:    vmv2r.v v8, v101413; CHECK-NEXT:    ret1414  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 01415  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer1416  %negc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %c, <vscale x 2 x i1> splat (i1 -1), i32 %evl)1417  %v = call <vscale x 2 x double> @llvm.vp.fma.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x double> %vb, <vscale x 2 x double> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)1418  %u = call <vscale x 2 x double> @llvm.vp.merge.nxv2f64(<vscale x 2 x i1> %m, <vscale x 2 x double> %v, <vscale x 2 x double> %c, i32 %evl)1419  ret <vscale x 2 x double> %u1420}1421 1422define <vscale x 2 x double> @vmfsac_vf_nxv2f64_commute(<vscale x 2 x double> %a, double %b, <vscale x 2 x double> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {1423; CHECK-LABEL: vmfsac_vf_nxv2f64_commute:1424; CHECK:       # %bb.0:1425; CHECK-NEXT:    vsetvli zero, a0, e64, m2, tu, mu1426; CHECK-NEXT:    vfmsac.vf v10, fa0, v8, v0.t1427; CHECK-NEXT:    vmv2r.v v8, v101428; CHECK-NEXT:    ret1429  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 01430  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer1431  %negc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %c, <vscale x 2 x i1> splat (i1 -1), i32 %evl)1432  %v = call <vscale x 2 x double> @llvm.vp.fma.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x double> %a, <vscale x 2 x double> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)1433  %u = call <vscale x 2 x double> @llvm.vp.merge.nxv2f64(<vscale x 2 x i1> %m, <vscale x 2 x double> %v, <vscale x 2 x double> %c, i32 %evl)1434  ret <vscale x 2 x double> %u1435}1436 1437define <vscale x 2 x double> @vmfsac_vf_nxv2f64_unmasked(<vscale x 2 x double> %a, double %b, <vscale x 2 x double> %c, i32 zeroext %evl) {1438; CHECK-LABEL: vmfsac_vf_nxv2f64_unmasked:1439; CHECK:       # %bb.0:1440; CHECK-NEXT:    vsetvli zero, a0, e64, m2, tu, ma1441; CHECK-NEXT:    vfmsac.vf v10, fa0, v81442; CHECK-NEXT:    vmv2r.v v8, v101443; CHECK-NEXT:    ret1444  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 01445  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer1446  %negc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %c, <vscale x 2 x i1> splat (i1 -1), i32 %evl)1447  %v = call <vscale x 2 x double> @llvm.vp.fma.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x double> %vb, <vscale x 2 x double> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)1448  %u = call <vscale x 2 x double> @llvm.vp.merge.nxv2f64(<vscale x 2 x i1> splat (i1 -1), <vscale x 2 x double> %v, <vscale x 2 x double> %c, i32 %evl)1449  ret <vscale x 2 x double> %u1450}1451 1452define <vscale x 2 x double> @vmfsac_vv_nxv2f64_ta(<vscale x 2 x double> %a, <vscale x 2 x double> %b, <vscale x 2 x double> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {1453; CHECK-LABEL: vmfsac_vv_nxv2f64_ta:1454; CHECK:       # %bb.0:1455; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, mu1456; CHECK-NEXT:    vfmsac.vv v12, v8, v10, v0.t1457; CHECK-NEXT:    vmv.v.v v8, v121458; CHECK-NEXT:    ret1459  %negc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %c, <vscale x 2 x i1> splat (i1 -1), i32 %evl)1460  %v = call <vscale x 2 x double> @llvm.vp.fma.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x double> %b, <vscale x 2 x double> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)1461  %u = call <vscale x 2 x double> @llvm.vp.select.nxv2f64(<vscale x 2 x i1> %m, <vscale x 2 x double> %v, <vscale x 2 x double> %c, i32 %evl)1462  ret <vscale x 2 x double> %u1463}1464 1465define <vscale x 2 x double> @vmfsac_vf_nxv2f64_ta(<vscale x 2 x double> %a, double %b, <vscale x 2 x double> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {1466; CHECK-LABEL: vmfsac_vf_nxv2f64_ta:1467; CHECK:       # %bb.0:1468; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, mu1469; CHECK-NEXT:    vfmsac.vf v10, fa0, v8, v0.t1470; CHECK-NEXT:    vmv.v.v v8, v101471; CHECK-NEXT:    ret1472  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 01473  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer1474  %negc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %c, <vscale x 2 x i1> splat (i1 -1), i32 %evl)1475  %v = call <vscale x 2 x double> @llvm.vp.fma.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x double> %vb, <vscale x 2 x double> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)1476  %u = call <vscale x 2 x double> @llvm.vp.select.nxv2f64(<vscale x 2 x i1> %m, <vscale x 2 x double> %v, <vscale x 2 x double> %c, i32 %evl)1477  ret <vscale x 2 x double> %u1478}1479 1480define <vscale x 2 x double> @vmfsac_vf_nxv2f64_commute_ta(<vscale x 2 x double> %a, double %b, <vscale x 2 x double> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {1481; CHECK-LABEL: vmfsac_vf_nxv2f64_commute_ta:1482; CHECK:       # %bb.0:1483; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, mu1484; CHECK-NEXT:    vfmsac.vf v10, fa0, v8, v0.t1485; CHECK-NEXT:    vmv.v.v v8, v101486; CHECK-NEXT:    ret1487  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 01488  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer1489  %negc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %c, <vscale x 2 x i1> splat (i1 -1), i32 %evl)1490  %v = call <vscale x 2 x double> @llvm.vp.fma.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x double> %a, <vscale x 2 x double> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)1491  %u = call <vscale x 2 x double> @llvm.vp.select.nxv2f64(<vscale x 2 x i1> %m, <vscale x 2 x double> %v, <vscale x 2 x double> %c, i32 %evl)1492  ret <vscale x 2 x double> %u1493}1494 1495define <vscale x 4 x double> @vmfsac_vv_nxv4f64(<vscale x 4 x double> %a, <vscale x 4 x double> %b, <vscale x 4 x double> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {1496; CHECK-LABEL: vmfsac_vv_nxv4f64:1497; CHECK:       # %bb.0:1498; CHECK-NEXT:    vsetvli zero, a0, e64, m4, tu, mu1499; CHECK-NEXT:    vfmsac.vv v16, v8, v12, v0.t1500; CHECK-NEXT:    vmv4r.v v8, v161501; CHECK-NEXT:    ret1502  %negc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %c, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1503  %v = call <vscale x 4 x double> @llvm.vp.fma.nxv4f64(<vscale x 4 x double> %a, <vscale x 4 x double> %b, <vscale x 4 x double> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1504  %u = call <vscale x 4 x double> @llvm.vp.merge.nxv4f64(<vscale x 4 x i1> %m, <vscale x 4 x double> %v, <vscale x 4 x double> %c, i32 %evl)1505  ret <vscale x 4 x double> %u1506}1507 1508define <vscale x 4 x double> @vmfsac_vv_nxv4f64_unmasked(<vscale x 4 x double> %a, <vscale x 4 x double> %b, <vscale x 4 x double> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {1509; CHECK-LABEL: vmfsac_vv_nxv4f64_unmasked:1510; CHECK:       # %bb.0:1511; CHECK-NEXT:    vsetvli zero, a0, e64, m4, tu, ma1512; CHECK-NEXT:    vfmsac.vv v16, v8, v121513; CHECK-NEXT:    vmv4r.v v8, v161514; CHECK-NEXT:    ret1515  %negc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %c, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1516  %v = call <vscale x 4 x double> @llvm.vp.fma.nxv4f64(<vscale x 4 x double> %a, <vscale x 4 x double> %b, <vscale x 4 x double> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1517  %u = call <vscale x 4 x double> @llvm.vp.merge.nxv4f64(<vscale x 4 x i1> splat (i1 -1), <vscale x 4 x double> %v, <vscale x 4 x double> %c, i32 %evl)1518  ret <vscale x 4 x double> %u1519}1520 1521define <vscale x 4 x double> @vmfsac_vf_nxv4f64(<vscale x 4 x double> %a, double %b, <vscale x 4 x double> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {1522; CHECK-LABEL: vmfsac_vf_nxv4f64:1523; CHECK:       # %bb.0:1524; CHECK-NEXT:    vsetvli zero, a0, e64, m4, tu, mu1525; CHECK-NEXT:    vfmsac.vf v12, fa0, v8, v0.t1526; CHECK-NEXT:    vmv4r.v v8, v121527; CHECK-NEXT:    ret1528  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 01529  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer1530  %negc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %c, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1531  %v = call <vscale x 4 x double> @llvm.vp.fma.nxv4f64(<vscale x 4 x double> %a, <vscale x 4 x double> %vb, <vscale x 4 x double> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1532  %u = call <vscale x 4 x double> @llvm.vp.merge.nxv4f64(<vscale x 4 x i1> %m, <vscale x 4 x double> %v, <vscale x 4 x double> %c, i32 %evl)1533  ret <vscale x 4 x double> %u1534}1535 1536define <vscale x 4 x double> @vmfsac_vf_nxv4f64_commute(<vscale x 4 x double> %a, double %b, <vscale x 4 x double> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {1537; CHECK-LABEL: vmfsac_vf_nxv4f64_commute:1538; CHECK:       # %bb.0:1539; CHECK-NEXT:    vsetvli zero, a0, e64, m4, tu, mu1540; CHECK-NEXT:    vfmsac.vf v12, fa0, v8, v0.t1541; CHECK-NEXT:    vmv4r.v v8, v121542; CHECK-NEXT:    ret1543  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 01544  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer1545  %negc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %c, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1546  %v = call <vscale x 4 x double> @llvm.vp.fma.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x double> %a, <vscale x 4 x double> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1547  %u = call <vscale x 4 x double> @llvm.vp.merge.nxv4f64(<vscale x 4 x i1> %m, <vscale x 4 x double> %v, <vscale x 4 x double> %c, i32 %evl)1548  ret <vscale x 4 x double> %u1549}1550 1551define <vscale x 4 x double> @vmfsac_vf_nxv4f64_unmasked(<vscale x 4 x double> %a, double %b, <vscale x 4 x double> %c, i32 zeroext %evl) {1552; CHECK-LABEL: vmfsac_vf_nxv4f64_unmasked:1553; CHECK:       # %bb.0:1554; CHECK-NEXT:    vsetvli zero, a0, e64, m4, tu, ma1555; CHECK-NEXT:    vfmsac.vf v12, fa0, v81556; CHECK-NEXT:    vmv4r.v v8, v121557; CHECK-NEXT:    ret1558  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 01559  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer1560  %negc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %c, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1561  %v = call <vscale x 4 x double> @llvm.vp.fma.nxv4f64(<vscale x 4 x double> %a, <vscale x 4 x double> %vb, <vscale x 4 x double> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1562  %u = call <vscale x 4 x double> @llvm.vp.merge.nxv4f64(<vscale x 4 x i1> splat (i1 -1), <vscale x 4 x double> %v, <vscale x 4 x double> %c, i32 %evl)1563  ret <vscale x 4 x double> %u1564}1565 1566define <vscale x 4 x double> @vmfsac_vv_nxv4f64_ta(<vscale x 4 x double> %a, <vscale x 4 x double> %b, <vscale x 4 x double> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {1567; CHECK-LABEL: vmfsac_vv_nxv4f64_ta:1568; CHECK:       # %bb.0:1569; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, mu1570; CHECK-NEXT:    vfmsac.vv v16, v8, v12, v0.t1571; CHECK-NEXT:    vmv.v.v v8, v161572; CHECK-NEXT:    ret1573  %negc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %c, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1574  %v = call <vscale x 4 x double> @llvm.vp.fma.nxv4f64(<vscale x 4 x double> %a, <vscale x 4 x double> %b, <vscale x 4 x double> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1575  %u = call <vscale x 4 x double> @llvm.vp.select.nxv4f64(<vscale x 4 x i1> %m, <vscale x 4 x double> %v, <vscale x 4 x double> %c, i32 %evl)1576  ret <vscale x 4 x double> %u1577}1578 1579define <vscale x 4 x double> @vmfsac_vf_nxv4f64_ta(<vscale x 4 x double> %a, double %b, <vscale x 4 x double> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {1580; CHECK-LABEL: vmfsac_vf_nxv4f64_ta:1581; CHECK:       # %bb.0:1582; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, mu1583; CHECK-NEXT:    vfmsac.vf v12, fa0, v8, v0.t1584; CHECK-NEXT:    vmv.v.v v8, v121585; CHECK-NEXT:    ret1586  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 01587  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer1588  %negc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %c, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1589  %v = call <vscale x 4 x double> @llvm.vp.fma.nxv4f64(<vscale x 4 x double> %a, <vscale x 4 x double> %vb, <vscale x 4 x double> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1590  %u = call <vscale x 4 x double> @llvm.vp.select.nxv4f64(<vscale x 4 x i1> %m, <vscale x 4 x double> %v, <vscale x 4 x double> %c, i32 %evl)1591  ret <vscale x 4 x double> %u1592}1593 1594define <vscale x 4 x double> @vmfsac_vf_nxv4f64_commute_ta(<vscale x 4 x double> %a, double %b, <vscale x 4 x double> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {1595; CHECK-LABEL: vmfsac_vf_nxv4f64_commute_ta:1596; CHECK:       # %bb.0:1597; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, mu1598; CHECK-NEXT:    vfmsac.vf v12, fa0, v8, v0.t1599; CHECK-NEXT:    vmv.v.v v8, v121600; CHECK-NEXT:    ret1601  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 01602  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer1603  %negc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %c, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1604  %v = call <vscale x 4 x double> @llvm.vp.fma.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x double> %a, <vscale x 4 x double> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1605  %u = call <vscale x 4 x double> @llvm.vp.select.nxv4f64(<vscale x 4 x i1> %m, <vscale x 4 x double> %v, <vscale x 4 x double> %c, i32 %evl)1606  ret <vscale x 4 x double> %u1607}1608 1609define <vscale x 8 x double> @vmfsac_vv_nxv8f64(<vscale x 8 x double> %a, <vscale x 8 x double> %b, <vscale x 8 x double> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {1610; CHECK-LABEL: vmfsac_vv_nxv8f64:1611; CHECK:       # %bb.0:1612; CHECK-NEXT:    vl8re64.v v24, (a0)1613; CHECK-NEXT:    vsetvli zero, a1, e64, m8, tu, mu1614; CHECK-NEXT:    vfmsac.vv v24, v8, v16, v0.t1615; CHECK-NEXT:    vmv8r.v v8, v241616; CHECK-NEXT:    ret1617  %negc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %c, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1618  %v = call <vscale x 8 x double> @llvm.vp.fma.nxv8f64(<vscale x 8 x double> %a, <vscale x 8 x double> %b, <vscale x 8 x double> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1619  %u = call <vscale x 8 x double> @llvm.vp.merge.nxv8f64(<vscale x 8 x i1> %m, <vscale x 8 x double> %v, <vscale x 8 x double> %c, i32 %evl)1620  ret <vscale x 8 x double> %u1621}1622 1623define <vscale x 8 x double> @vmfsac_vv_nxv8f64_unmasked(<vscale x 8 x double> %a, <vscale x 8 x double> %b, <vscale x 8 x double> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {1624; CHECK-LABEL: vmfsac_vv_nxv8f64_unmasked:1625; CHECK:       # %bb.0:1626; CHECK-NEXT:    vl8re64.v v24, (a0)1627; CHECK-NEXT:    vsetvli zero, a1, e64, m8, tu, ma1628; CHECK-NEXT:    vfmsac.vv v24, v8, v161629; CHECK-NEXT:    vmv8r.v v8, v241630; CHECK-NEXT:    ret1631  %negc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %c, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1632  %v = call <vscale x 8 x double> @llvm.vp.fma.nxv8f64(<vscale x 8 x double> %a, <vscale x 8 x double> %b, <vscale x 8 x double> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1633  %u = call <vscale x 8 x double> @llvm.vp.merge.nxv8f64(<vscale x 8 x i1> splat (i1 -1), <vscale x 8 x double> %v, <vscale x 8 x double> %c, i32 %evl)1634  ret <vscale x 8 x double> %u1635}1636 1637define <vscale x 8 x double> @vmfsac_vf_nxv8f64(<vscale x 8 x double> %a, double %b, <vscale x 8 x double> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {1638; CHECK-LABEL: vmfsac_vf_nxv8f64:1639; CHECK:       # %bb.0:1640; CHECK-NEXT:    vsetvli zero, a0, e64, m8, tu, mu1641; CHECK-NEXT:    vfmsac.vf v16, fa0, v8, v0.t1642; CHECK-NEXT:    vmv8r.v v8, v161643; CHECK-NEXT:    ret1644  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 01645  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer1646  %negc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %c, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1647  %v = call <vscale x 8 x double> @llvm.vp.fma.nxv8f64(<vscale x 8 x double> %a, <vscale x 8 x double> %vb, <vscale x 8 x double> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1648  %u = call <vscale x 8 x double> @llvm.vp.merge.nxv8f64(<vscale x 8 x i1> %m, <vscale x 8 x double> %v, <vscale x 8 x double> %c, i32 %evl)1649  ret <vscale x 8 x double> %u1650}1651 1652define <vscale x 8 x double> @vmfsac_vf_nxv8f64_commute(<vscale x 8 x double> %a, double %b, <vscale x 8 x double> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {1653; CHECK-LABEL: vmfsac_vf_nxv8f64_commute:1654; CHECK:       # %bb.0:1655; CHECK-NEXT:    vsetvli zero, a0, e64, m8, tu, mu1656; CHECK-NEXT:    vfmsac.vf v16, fa0, v8, v0.t1657; CHECK-NEXT:    vmv8r.v v8, v161658; CHECK-NEXT:    ret1659  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 01660  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer1661  %negc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %c, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1662  %v = call <vscale x 8 x double> @llvm.vp.fma.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %a, <vscale x 8 x double> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1663  %u = call <vscale x 8 x double> @llvm.vp.merge.nxv8f64(<vscale x 8 x i1> %m, <vscale x 8 x double> %v, <vscale x 8 x double> %c, i32 %evl)1664  ret <vscale x 8 x double> %u1665}1666 1667define <vscale x 8 x double> @vmfsac_vf_nxv8f64_unmasked(<vscale x 8 x double> %a, double %b, <vscale x 8 x double> %c, i32 zeroext %evl) {1668; CHECK-LABEL: vmfsac_vf_nxv8f64_unmasked:1669; CHECK:       # %bb.0:1670; CHECK-NEXT:    vsetvli zero, a0, e64, m8, tu, ma1671; CHECK-NEXT:    vfmsac.vf v16, fa0, v81672; CHECK-NEXT:    vmv8r.v v8, v161673; CHECK-NEXT:    ret1674  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 01675  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer1676  %negc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %c, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1677  %v = call <vscale x 8 x double> @llvm.vp.fma.nxv8f64(<vscale x 8 x double> %a, <vscale x 8 x double> %vb, <vscale x 8 x double> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1678  %u = call <vscale x 8 x double> @llvm.vp.merge.nxv8f64(<vscale x 8 x i1> splat (i1 -1), <vscale x 8 x double> %v, <vscale x 8 x double> %c, i32 %evl)1679  ret <vscale x 8 x double> %u1680}1681 1682define <vscale x 8 x double> @vmfsac_vv_nxv8f64_ta(<vscale x 8 x double> %a, <vscale x 8 x double> %b, <vscale x 8 x double> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {1683; CHECK-LABEL: vmfsac_vv_nxv8f64_ta:1684; CHECK:       # %bb.0:1685; CHECK-NEXT:    vl8re64.v v24, (a0)1686; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, mu1687; CHECK-NEXT:    vfmsac.vv v24, v8, v16, v0.t1688; CHECK-NEXT:    vmv.v.v v8, v241689; CHECK-NEXT:    ret1690  %negc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %c, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1691  %v = call <vscale x 8 x double> @llvm.vp.fma.nxv8f64(<vscale x 8 x double> %a, <vscale x 8 x double> %b, <vscale x 8 x double> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1692  %u = call <vscale x 8 x double> @llvm.vp.select.nxv8f64(<vscale x 8 x i1> %m, <vscale x 8 x double> %v, <vscale x 8 x double> %c, i32 %evl)1693  ret <vscale x 8 x double> %u1694}1695 1696define <vscale x 8 x double> @vmfsac_vf_nxv8f64_ta(<vscale x 8 x double> %a, double %b, <vscale x 8 x double> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {1697; CHECK-LABEL: vmfsac_vf_nxv8f64_ta:1698; CHECK:       # %bb.0:1699; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, mu1700; CHECK-NEXT:    vfmsac.vf v16, fa0, v8, v0.t1701; CHECK-NEXT:    vmv.v.v v8, v161702; CHECK-NEXT:    ret1703  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 01704  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer1705  %negc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %c, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1706  %v = call <vscale x 8 x double> @llvm.vp.fma.nxv8f64(<vscale x 8 x double> %a, <vscale x 8 x double> %vb, <vscale x 8 x double> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1707  %u = call <vscale x 8 x double> @llvm.vp.select.nxv8f64(<vscale x 8 x i1> %m, <vscale x 8 x double> %v, <vscale x 8 x double> %c, i32 %evl)1708  ret <vscale x 8 x double> %u1709}1710 1711define <vscale x 8 x double> @vmfsac_vf_nxv8f64_commute_ta(<vscale x 8 x double> %a, double %b, <vscale x 8 x double> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {1712; CHECK-LABEL: vmfsac_vf_nxv8f64_commute_ta:1713; CHECK:       # %bb.0:1714; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, mu1715; CHECK-NEXT:    vfmsac.vf v16, fa0, v8, v0.t1716; CHECK-NEXT:    vmv.v.v v8, v161717; CHECK-NEXT:    ret1718  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 01719  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer1720  %negc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %c, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1721  %v = call <vscale x 8 x double> @llvm.vp.fma.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %a, <vscale x 8 x double> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1722  %u = call <vscale x 8 x double> @llvm.vp.select.nxv8f64(<vscale x 8 x i1> %m, <vscale x 8 x double> %v, <vscale x 8 x double> %c, i32 %evl)1723  ret <vscale x 8 x double> %u1724}1725