brintos

brintos / llvm-project-archived public Read only

0
0
Text · 129.6 KiB · 7f6fb03 Raw
1845 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> @vfnmacc_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: vfnmacc_vv_nxv1f16:9; CHECK:       # %bb.0:10; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, tu, mu11; CHECK-NEXT:    vfnmacc.vv v10, v8, v9, v0.t12; CHECK-NEXT:    vmv1r.v v8, v1013; CHECK-NEXT:    ret14  %nega = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %a, <vscale x 1 x i1> splat (i1 -1), i32 %evl)15  %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)16  %v = call <vscale x 1 x half> @llvm.vp.fma.nxv1f16(<vscale x 1 x half> %nega, <vscale x 1 x half> %b, <vscale x 1 x half> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)17  %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)18  ret <vscale x 1 x half> %u19}20 21define <vscale x 1 x half> @vfnmacc_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) {22; CHECK-LABEL: vfnmacc_vv_nxv1f16_unmasked:23; CHECK:       # %bb.0:24; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, tu, ma25; CHECK-NEXT:    vfnmacc.vv v10, v8, v926; CHECK-NEXT:    vmv1r.v v8, v1027; CHECK-NEXT:    ret28  %nega = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %a, <vscale x 1 x i1> splat (i1 -1), i32 %evl)29  %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)30  %v = call <vscale x 1 x half> @llvm.vp.fma.nxv1f16(<vscale x 1 x half> %nega, <vscale x 1 x half> %b, <vscale x 1 x half> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)31  %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)32  ret <vscale x 1 x half> %u33}34 35define <vscale x 1 x half> @vfnmacc_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) {36; CHECK-LABEL: vfnmacc_vf_nxv1f16:37; CHECK:       # %bb.0:38; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, tu, mu39; CHECK-NEXT:    vfnmacc.vf v9, fa0, v8, v0.t40; CHECK-NEXT:    vmv1r.v v8, v941; CHECK-NEXT:    ret42  %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 043  %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer44  %nega = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %a, <vscale x 1 x i1> splat (i1 -1), i32 %evl)45  %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)46  %v = call <vscale x 1 x half> @llvm.vp.fma.nxv1f16(<vscale x 1 x half> %nega, <vscale x 1 x half> %vb, <vscale x 1 x half> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)47  %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)48  ret <vscale x 1 x half> %u49}50 51define <vscale x 1 x half> @vfnmacc_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) {52; CHECK-LABEL: vfnmacc_vf_nxv1f16_commute:53; CHECK:       # %bb.0:54; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, tu, mu55; CHECK-NEXT:    vfnmacc.vf v9, fa0, v8, v0.t56; CHECK-NEXT:    vmv1r.v v8, v957; CHECK-NEXT:    ret58  %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 059  %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer60  %nega = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %a, <vscale x 1 x i1> splat (i1 -1), i32 %evl)61  %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)62  %v = call <vscale x 1 x half> @llvm.vp.fma.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %nega, <vscale x 1 x half> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)63  %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)64  ret <vscale x 1 x half> %u65}66 67define <vscale x 1 x half> @vfnmacc_vf_nxv1f16_unmasked(<vscale x 1 x half> %a, half %b, <vscale x 1 x half> %c, i32 zeroext %evl) {68; CHECK-LABEL: vfnmacc_vf_nxv1f16_unmasked:69; CHECK:       # %bb.0:70; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, tu, ma71; CHECK-NEXT:    vfnmacc.vf v9, fa0, v872; CHECK-NEXT:    vmv1r.v v8, v973; CHECK-NEXT:    ret74  %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 075  %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer76  %nega = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %a, <vscale x 1 x i1> splat (i1 -1), i32 %evl)77  %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)78  %v = call <vscale x 1 x half> @llvm.vp.fma.nxv1f16(<vscale x 1 x half> %nega, <vscale x 1 x half> %vb, <vscale x 1 x half> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)79  %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)80  ret <vscale x 1 x half> %u81}82 83define <vscale x 1 x half> @vfnmacc_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) {84; CHECK-LABEL: vfnmacc_vv_nxv1f16_ta:85; CHECK:       # %bb.0:86; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, mu87; CHECK-NEXT:    vfnmacc.vv v10, v8, v9, v0.t88; CHECK-NEXT:    vmv1r.v v8, v1089; CHECK-NEXT:    ret90  %nega = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %a, <vscale x 1 x i1> splat (i1 -1), i32 %evl)91  %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)92  %v = call <vscale x 1 x half> @llvm.vp.fma.nxv1f16(<vscale x 1 x half> %nega, <vscale x 1 x half> %b, <vscale x 1 x half> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)93  %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)94  ret <vscale x 1 x half> %u95}96 97define <vscale x 1 x half> @vfnmacc_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) {98; CHECK-LABEL: vfnmacc_vf_nxv1f16_ta:99; CHECK:       # %bb.0:100; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, mu101; CHECK-NEXT:    vfnmacc.vf v9, fa0, v8, v0.t102; CHECK-NEXT:    vmv1r.v v8, v9103; CHECK-NEXT:    ret104  %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0105  %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer106  %nega = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %a, <vscale x 1 x i1> splat (i1 -1), i32 %evl)107  %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)108  %v = call <vscale x 1 x half> @llvm.vp.fma.nxv1f16(<vscale x 1 x half> %nega, <vscale x 1 x half> %vb, <vscale x 1 x half> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)109  %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)110  ret <vscale x 1 x half> %u111}112 113define <vscale x 1 x half> @vfnmacc_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) {114; CHECK-LABEL: vfnmacc_vf_nxv1f16_commute_ta:115; CHECK:       # %bb.0:116; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, mu117; CHECK-NEXT:    vfnmacc.vf v9, fa0, v8, v0.t118; CHECK-NEXT:    vmv1r.v v8, v9119; CHECK-NEXT:    ret120  %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0121  %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer122  %nega = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %a, <vscale x 1 x i1> splat (i1 -1), i32 %evl)123  %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)124  %v = call <vscale x 1 x half> @llvm.vp.fma.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %nega, <vscale x 1 x half> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)125  %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)126  ret <vscale x 1 x half> %u127}128 129define <vscale x 2 x half> @vfnmacc_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) {130; CHECK-LABEL: vfnmacc_vv_nxv2f16:131; CHECK:       # %bb.0:132; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, tu, mu133; CHECK-NEXT:    vfnmacc.vv v10, v8, v9, v0.t134; CHECK-NEXT:    vmv1r.v v8, v10135; CHECK-NEXT:    ret136  %nega = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %a, <vscale x 2 x i1> splat (i1 -1), i32 %evl)137  %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)138  %v = call <vscale x 2 x half> @llvm.vp.fma.nxv2f16(<vscale x 2 x half> %nega, <vscale x 2 x half> %b, <vscale x 2 x half> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)139  %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)140  ret <vscale x 2 x half> %u141}142 143define <vscale x 2 x half> @vfnmacc_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) {144; CHECK-LABEL: vfnmacc_vv_nxv2f16_unmasked:145; CHECK:       # %bb.0:146; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, tu, ma147; CHECK-NEXT:    vfnmacc.vv v10, v8, v9148; CHECK-NEXT:    vmv1r.v v8, v10149; CHECK-NEXT:    ret150  %nega = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %a, <vscale x 2 x i1> splat (i1 -1), i32 %evl)151  %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)152  %v = call <vscale x 2 x half> @llvm.vp.fma.nxv2f16(<vscale x 2 x half> %nega, <vscale x 2 x half> %b, <vscale x 2 x half> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)153  %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)154  ret <vscale x 2 x half> %u155}156 157define <vscale x 2 x half> @vfnmacc_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) {158; CHECK-LABEL: vfnmacc_vf_nxv2f16:159; CHECK:       # %bb.0:160; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, tu, mu161; CHECK-NEXT:    vfnmacc.vf v9, fa0, v8, v0.t162; CHECK-NEXT:    vmv1r.v v8, v9163; CHECK-NEXT:    ret164  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0165  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer166  %nega = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %a, <vscale x 2 x i1> splat (i1 -1), i32 %evl)167  %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)168  %v = call <vscale x 2 x half> @llvm.vp.fma.nxv2f16(<vscale x 2 x half> %nega, <vscale x 2 x half> %vb, <vscale x 2 x half> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)169  %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)170  ret <vscale x 2 x half> %u171}172 173define <vscale x 2 x half> @vfnmacc_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) {174; CHECK-LABEL: vfnmacc_vf_nxv2f16_commute:175; CHECK:       # %bb.0:176; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, tu, mu177; CHECK-NEXT:    vfnmacc.vf v9, fa0, v8, v0.t178; CHECK-NEXT:    vmv1r.v v8, v9179; CHECK-NEXT:    ret180  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0181  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer182  %nega = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %a, <vscale x 2 x i1> splat (i1 -1), i32 %evl)183  %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)184  %v = call <vscale x 2 x half> @llvm.vp.fma.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x half> %nega, <vscale x 2 x half> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)185  %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)186  ret <vscale x 2 x half> %u187}188 189define <vscale x 2 x half> @vfnmacc_vf_nxv2f16_unmasked(<vscale x 2 x half> %a, half %b, <vscale x 2 x half> %c, i32 zeroext %evl) {190; CHECK-LABEL: vfnmacc_vf_nxv2f16_unmasked:191; CHECK:       # %bb.0:192; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, tu, ma193; CHECK-NEXT:    vfnmacc.vf v9, fa0, v8194; CHECK-NEXT:    vmv1r.v v8, v9195; CHECK-NEXT:    ret196  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0197  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer198  %nega = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %a, <vscale x 2 x i1> splat (i1 -1), i32 %evl)199  %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> %nega, <vscale x 2 x half> %vb, <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.merge.nxv2f16(<vscale x 2 x i1> splat (i1 -1), <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> @vfnmacc_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) {206; CHECK-LABEL: vfnmacc_vv_nxv2f16_ta:207; CHECK:       # %bb.0:208; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, mu209; CHECK-NEXT:    vfnmacc.vv v10, v8, v9, v0.t210; CHECK-NEXT:    vmv1r.v v8, v10211; CHECK-NEXT:    ret212  %nega = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %a, <vscale x 2 x i1> splat (i1 -1), i32 %evl)213  %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)214  %v = call <vscale x 2 x half> @llvm.vp.fma.nxv2f16(<vscale x 2 x half> %nega, <vscale x 2 x half> %b, <vscale x 2 x half> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)215  %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)216  ret <vscale x 2 x half> %u217}218 219define <vscale x 2 x half> @vfnmacc_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) {220; CHECK-LABEL: vfnmacc_vf_nxv2f16_ta:221; CHECK:       # %bb.0:222; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, mu223; CHECK-NEXT:    vfnmacc.vf v9, fa0, v8, v0.t224; CHECK-NEXT:    vmv1r.v v8, v9225; CHECK-NEXT:    ret226  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0227  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer228  %nega = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %a, <vscale x 2 x i1> splat (i1 -1), i32 %evl)229  %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> %nega, <vscale x 2 x half> %vb, <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 2 x half> @vfnmacc_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) {236; CHECK-LABEL: vfnmacc_vf_nxv2f16_commute_ta:237; CHECK:       # %bb.0:238; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, mu239; CHECK-NEXT:    vfnmacc.vf v9, fa0, v8, v0.t240; CHECK-NEXT:    vmv1r.v v8, v9241; CHECK-NEXT:    ret242  %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0243  %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer244  %nega = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %a, <vscale x 2 x i1> splat (i1 -1), i32 %evl)245  %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)246  %v = call <vscale x 2 x half> @llvm.vp.fma.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x half> %nega, <vscale x 2 x half> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)247  %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)248  ret <vscale x 2 x half> %u249}250 251define <vscale x 4 x half> @vfnmacc_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) {252; CHECK-LABEL: vfnmacc_vv_nxv4f16:253; CHECK:       # %bb.0:254; CHECK-NEXT:    vsetvli zero, a0, e16, m1, tu, mu255; CHECK-NEXT:    vfnmacc.vv v10, v8, v9, v0.t256; CHECK-NEXT:    vmv1r.v v8, v10257; CHECK-NEXT:    ret258  %nega = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %a, <vscale x 4 x i1> splat (i1 -1), i32 %evl)259  %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)260  %v = call <vscale x 4 x half> @llvm.vp.fma.nxv4f16(<vscale x 4 x half> %nega, <vscale x 4 x half> %b, <vscale x 4 x half> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)261  %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)262  ret <vscale x 4 x half> %u263}264 265define <vscale x 4 x half> @vfnmacc_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) {266; CHECK-LABEL: vfnmacc_vv_nxv4f16_unmasked:267; CHECK:       # %bb.0:268; CHECK-NEXT:    vsetvli zero, a0, e16, m1, tu, ma269; CHECK-NEXT:    vfnmacc.vv v10, v8, v9270; CHECK-NEXT:    vmv1r.v v8, v10271; CHECK-NEXT:    ret272  %nega = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %a, <vscale x 4 x i1> splat (i1 -1), i32 %evl)273  %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)274  %v = call <vscale x 4 x half> @llvm.vp.fma.nxv4f16(<vscale x 4 x half> %nega, <vscale x 4 x half> %b, <vscale x 4 x half> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)275  %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)276  ret <vscale x 4 x half> %u277}278 279define <vscale x 4 x half> @vfnmacc_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) {280; CHECK-LABEL: vfnmacc_vf_nxv4f16:281; CHECK:       # %bb.0:282; CHECK-NEXT:    vsetvli zero, a0, e16, m1, tu, mu283; CHECK-NEXT:    vfnmacc.vf v9, fa0, v8, v0.t284; CHECK-NEXT:    vmv1r.v v8, v9285; CHECK-NEXT:    ret286  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0287  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer288  %nega = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %a, <vscale x 4 x i1> splat (i1 -1), i32 %evl)289  %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)290  %v = call <vscale x 4 x half> @llvm.vp.fma.nxv4f16(<vscale x 4 x half> %nega, <vscale x 4 x half> %vb, <vscale x 4 x half> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)291  %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)292  ret <vscale x 4 x half> %u293}294 295define <vscale x 4 x half> @vfnmacc_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) {296; CHECK-LABEL: vfnmacc_vf_nxv4f16_commute:297; CHECK:       # %bb.0:298; CHECK-NEXT:    vsetvli zero, a0, e16, m1, tu, mu299; CHECK-NEXT:    vfnmacc.vf v9, fa0, v8, v0.t300; CHECK-NEXT:    vmv1r.v v8, v9301; CHECK-NEXT:    ret302  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0303  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer304  %nega = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %a, <vscale x 4 x i1> splat (i1 -1), i32 %evl)305  %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)306  %v = call <vscale x 4 x half> @llvm.vp.fma.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x half> %nega, <vscale x 4 x half> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)307  %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)308  ret <vscale x 4 x half> %u309}310 311define <vscale x 4 x half> @vfnmacc_vf_nxv4f16_unmasked(<vscale x 4 x half> %a, half %b, <vscale x 4 x half> %c, i32 zeroext %evl) {312; CHECK-LABEL: vfnmacc_vf_nxv4f16_unmasked:313; CHECK:       # %bb.0:314; CHECK-NEXT:    vsetvli zero, a0, e16, m1, tu, ma315; CHECK-NEXT:    vfnmacc.vf v9, fa0, v8316; CHECK-NEXT:    vmv1r.v v8, v9317; CHECK-NEXT:    ret318  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0319  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer320  %nega = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %a, <vscale x 4 x i1> splat (i1 -1), i32 %evl)321  %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)322  %v = call <vscale x 4 x half> @llvm.vp.fma.nxv4f16(<vscale x 4 x half> %nega, <vscale x 4 x half> %vb, <vscale x 4 x half> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)323  %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)324  ret <vscale x 4 x half> %u325}326 327define <vscale x 4 x half> @vfnmacc_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) {328; CHECK-LABEL: vfnmacc_vv_nxv4f16_ta:329; CHECK:       # %bb.0:330; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, mu331; CHECK-NEXT:    vfnmacc.vv v10, v8, v9, v0.t332; CHECK-NEXT:    vmv.v.v v8, v10333; CHECK-NEXT:    ret334  %nega = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %a, <vscale x 4 x i1> splat (i1 -1), i32 %evl)335  %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)336  %v = call <vscale x 4 x half> @llvm.vp.fma.nxv4f16(<vscale x 4 x half> %nega, <vscale x 4 x half> %b, <vscale x 4 x half> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)337  %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)338  ret <vscale x 4 x half> %u339}340 341define <vscale x 4 x half> @vfnmacc_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) {342; CHECK-LABEL: vfnmacc_vf_nxv4f16_ta:343; CHECK:       # %bb.0:344; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, mu345; CHECK-NEXT:    vfnmacc.vf v9, fa0, v8, v0.t346; CHECK-NEXT:    vmv.v.v v8, v9347; CHECK-NEXT:    ret348  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0349  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer350  %nega = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %a, <vscale x 4 x i1> splat (i1 -1), i32 %evl)351  %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)352  %v = call <vscale x 4 x half> @llvm.vp.fma.nxv4f16(<vscale x 4 x half> %nega, <vscale x 4 x half> %vb, <vscale x 4 x half> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)353  %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)354  ret <vscale x 4 x half> %u355}356 357define <vscale x 4 x half> @vfnmacc_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) {358; CHECK-LABEL: vfnmacc_vf_nxv4f16_commute_ta:359; CHECK:       # %bb.0:360; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, mu361; CHECK-NEXT:    vfnmacc.vf v9, fa0, v8, v0.t362; CHECK-NEXT:    vmv.v.v v8, v9363; CHECK-NEXT:    ret364  %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0365  %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer366  %nega = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %a, <vscale x 4 x i1> splat (i1 -1), i32 %evl)367  %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)368  %v = call <vscale x 4 x half> @llvm.vp.fma.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x half> %nega, <vscale x 4 x half> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)369  %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)370  ret <vscale x 4 x half> %u371}372 373define <vscale x 8 x half> @vfnmacc_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) {374; CHECK-LABEL: vfnmacc_vv_nxv8f16:375; CHECK:       # %bb.0:376; CHECK-NEXT:    vsetvli zero, a0, e16, m2, tu, mu377; CHECK-NEXT:    vfnmacc.vv v12, v8, v10, v0.t378; CHECK-NEXT:    vmv2r.v v8, v12379; CHECK-NEXT:    ret380  %nega = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x i1> splat (i1 -1), i32 %evl)381  %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)382  %v = call <vscale x 8 x half> @llvm.vp.fma.nxv8f16(<vscale x 8 x half> %nega, <vscale x 8 x half> %b, <vscale x 8 x half> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)383  %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)384  ret <vscale x 8 x half> %u385}386 387define <vscale x 8 x half> @vfnmacc_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) {388; CHECK-LABEL: vfnmacc_vv_nxv8f16_unmasked:389; CHECK:       # %bb.0:390; CHECK-NEXT:    vsetvli zero, a0, e16, m2, tu, ma391; CHECK-NEXT:    vfnmacc.vv v12, v8, v10392; CHECK-NEXT:    vmv2r.v v8, v12393; CHECK-NEXT:    ret394  %nega = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x i1> splat (i1 -1), i32 %evl)395  %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)396  %v = call <vscale x 8 x half> @llvm.vp.fma.nxv8f16(<vscale x 8 x half> %nega, <vscale x 8 x half> %b, <vscale x 8 x half> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)397  %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)398  ret <vscale x 8 x half> %u399}400 401define <vscale x 8 x half> @vfnmacc_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) {402; CHECK-LABEL: vfnmacc_vf_nxv8f16:403; CHECK:       # %bb.0:404; CHECK-NEXT:    vsetvli zero, a0, e16, m2, tu, mu405; CHECK-NEXT:    vfnmacc.vf v10, fa0, v8, v0.t406; CHECK-NEXT:    vmv2r.v v8, v10407; CHECK-NEXT:    ret408  %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0409  %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer410  %nega = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x i1> splat (i1 -1), i32 %evl)411  %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)412  %v = call <vscale x 8 x half> @llvm.vp.fma.nxv8f16(<vscale x 8 x half> %nega, <vscale x 8 x half> %vb, <vscale x 8 x half> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)413  %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)414  ret <vscale x 8 x half> %u415}416 417define <vscale x 8 x half> @vfnmacc_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) {418; CHECK-LABEL: vfnmacc_vf_nxv8f16_commute:419; CHECK:       # %bb.0:420; CHECK-NEXT:    vsetvli zero, a0, e16, m2, tu, mu421; CHECK-NEXT:    vfnmacc.vf v10, fa0, v8, v0.t422; CHECK-NEXT:    vmv2r.v v8, v10423; CHECK-NEXT:    ret424  %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0425  %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer426  %nega = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x i1> splat (i1 -1), i32 %evl)427  %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> %vb, <vscale x 8 x half> %nega, <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.merge.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> @vfnmacc_vf_nxv8f16_unmasked(<vscale x 8 x half> %a, half %b, <vscale x 8 x half> %c, i32 zeroext %evl) {434; CHECK-LABEL: vfnmacc_vf_nxv8f16_unmasked:435; CHECK:       # %bb.0:436; CHECK-NEXT:    vsetvli zero, a0, e16, m2, tu, ma437; CHECK-NEXT:    vfnmacc.vf v10, fa0, v8438; CHECK-NEXT:    vmv2r.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  %nega = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x i1> splat (i1 -1), i32 %evl)443  %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)444  %v = call <vscale x 8 x half> @llvm.vp.fma.nxv8f16(<vscale x 8 x half> %nega, <vscale x 8 x half> %vb, <vscale x 8 x half> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)445  %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)446  ret <vscale x 8 x half> %u447}448 449define <vscale x 8 x half> @vfnmacc_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) {450; CHECK-LABEL: vfnmacc_vv_nxv8f16_ta:451; CHECK:       # %bb.0:452; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, mu453; CHECK-NEXT:    vfnmacc.vv v12, v8, v10, v0.t454; CHECK-NEXT:    vmv.v.v v8, v12455; CHECK-NEXT:    ret456  %nega = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x i1> splat (i1 -1), i32 %evl)457  %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> %nega, <vscale x 8 x half> %b, <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 8 x half> @vfnmacc_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) {464; CHECK-LABEL: vfnmacc_vf_nxv8f16_ta:465; CHECK:       # %bb.0:466; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, mu467; CHECK-NEXT:    vfnmacc.vf v10, fa0, v8, v0.t468; CHECK-NEXT:    vmv.v.v v8, v10469; CHECK-NEXT:    ret470  %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0471  %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer472  %nega = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x i1> splat (i1 -1), i32 %evl)473  %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)474  %v = call <vscale x 8 x half> @llvm.vp.fma.nxv8f16(<vscale x 8 x half> %nega, <vscale x 8 x half> %vb, <vscale x 8 x half> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)475  %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)476  ret <vscale x 8 x half> %u477}478 479define <vscale x 8 x half> @vfnmacc_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) {480; CHECK-LABEL: vfnmacc_vf_nxv8f16_commute_ta:481; CHECK:       # %bb.0:482; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, mu483; CHECK-NEXT:    vfnmacc.vf v10, fa0, v8, v0.t484; CHECK-NEXT:    vmv.v.v v8, v10485; CHECK-NEXT:    ret486  %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0487  %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer488  %nega = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x i1> splat (i1 -1), i32 %evl)489  %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)490  %v = call <vscale x 8 x half> @llvm.vp.fma.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %nega, <vscale x 8 x half> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)491  %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)492  ret <vscale x 8 x half> %u493}494 495define <vscale x 16 x half> @vfnmacc_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) {496; CHECK-LABEL: vfnmacc_vv_nxv16f16:497; CHECK:       # %bb.0:498; CHECK-NEXT:    vsetvli zero, a0, e16, m4, tu, mu499; CHECK-NEXT:    vfnmacc.vv v16, v8, v12, v0.t500; CHECK-NEXT:    vmv4r.v v8, v16501; CHECK-NEXT:    ret502  %nega = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %a, <vscale x 16 x i1> splat (i1 -1), i32 %evl)503  %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)504  %v = call <vscale x 16 x half> @llvm.vp.fma.nxv16f16(<vscale x 16 x half> %nega, <vscale x 16 x half> %b, <vscale x 16 x half> %negc, <vscale x 16 x i1> splat (i1 -1), i32 %evl)505  %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)506  ret <vscale x 16 x half> %u507}508 509define <vscale x 16 x half> @vfnmacc_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) {510; CHECK-LABEL: vfnmacc_vv_nxv16f16_unmasked:511; CHECK:       # %bb.0:512; CHECK-NEXT:    vsetvli zero, a0, e16, m4, tu, ma513; CHECK-NEXT:    vfnmacc.vv v16, v8, v12514; CHECK-NEXT:    vmv4r.v v8, v16515; CHECK-NEXT:    ret516  %nega = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %a, <vscale x 16 x i1> splat (i1 -1), i32 %evl)517  %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)518  %v = call <vscale x 16 x half> @llvm.vp.fma.nxv16f16(<vscale x 16 x half> %nega, <vscale x 16 x half> %b, <vscale x 16 x half> %negc, <vscale x 16 x i1> splat (i1 -1), i32 %evl)519  %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)520  ret <vscale x 16 x half> %u521}522 523define <vscale x 16 x half> @vfnmacc_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) {524; CHECK-LABEL: vfnmacc_vf_nxv16f16:525; CHECK:       # %bb.0:526; CHECK-NEXT:    vsetvli zero, a0, e16, m4, tu, mu527; CHECK-NEXT:    vfnmacc.vf v12, fa0, v8, v0.t528; CHECK-NEXT:    vmv4r.v v8, v12529; CHECK-NEXT:    ret530  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0531  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer532  %nega = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %a, <vscale x 16 x i1> splat (i1 -1), i32 %evl)533  %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)534  %v = call <vscale x 16 x half> @llvm.vp.fma.nxv16f16(<vscale x 16 x half> %nega, <vscale x 16 x half> %vb, <vscale x 16 x half> %negc, <vscale x 16 x i1> splat (i1 -1), i32 %evl)535  %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)536  ret <vscale x 16 x half> %u537}538 539define <vscale x 16 x half> @vfnmacc_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) {540; CHECK-LABEL: vfnmacc_vf_nxv16f16_commute:541; CHECK:       # %bb.0:542; CHECK-NEXT:    vsetvli zero, a0, e16, m4, tu, mu543; CHECK-NEXT:    vfnmacc.vf v12, fa0, v8, v0.t544; CHECK-NEXT:    vmv4r.v v8, v12545; CHECK-NEXT:    ret546  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0547  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer548  %nega = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %a, <vscale x 16 x i1> splat (i1 -1), i32 %evl)549  %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)550  %v = call <vscale x 16 x half> @llvm.vp.fma.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x half> %nega, <vscale x 16 x half> %negc, <vscale x 16 x i1> splat (i1 -1), i32 %evl)551  %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)552  ret <vscale x 16 x half> %u553}554 555define <vscale x 16 x half> @vfnmacc_vf_nxv16f16_unmasked(<vscale x 16 x half> %a, half %b, <vscale x 16 x half> %c, i32 zeroext %evl) {556; CHECK-LABEL: vfnmacc_vf_nxv16f16_unmasked:557; CHECK:       # %bb.0:558; CHECK-NEXT:    vsetvli zero, a0, e16, m4, tu, ma559; CHECK-NEXT:    vfnmacc.vf v12, fa0, v8560; CHECK-NEXT:    vmv4r.v v8, v12561; CHECK-NEXT:    ret562  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0563  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer564  %nega = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %a, <vscale x 16 x i1> splat (i1 -1), i32 %evl)565  %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)566  %v = call <vscale x 16 x half> @llvm.vp.fma.nxv16f16(<vscale x 16 x half> %nega, <vscale x 16 x half> %vb, <vscale x 16 x half> %negc, <vscale x 16 x i1> splat (i1 -1), i32 %evl)567  %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)568  ret <vscale x 16 x half> %u569}570 571define <vscale x 16 x half> @vfnmacc_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) {572; CHECK-LABEL: vfnmacc_vv_nxv16f16_ta:573; CHECK:       # %bb.0:574; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, mu575; CHECK-NEXT:    vfnmacc.vv v16, v8, v12, v0.t576; CHECK-NEXT:    vmv.v.v v8, v16577; CHECK-NEXT:    ret578  %nega = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %a, <vscale x 16 x i1> splat (i1 -1), i32 %evl)579  %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)580  %v = call <vscale x 16 x half> @llvm.vp.fma.nxv16f16(<vscale x 16 x half> %nega, <vscale x 16 x half> %b, <vscale x 16 x half> %negc, <vscale x 16 x i1> splat (i1 -1), i32 %evl)581  %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)582  ret <vscale x 16 x half> %u583}584 585define <vscale x 16 x half> @vfnmacc_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) {586; CHECK-LABEL: vfnmacc_vf_nxv16f16_ta:587; CHECK:       # %bb.0:588; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, mu589; CHECK-NEXT:    vfnmacc.vf v12, fa0, v8, v0.t590; CHECK-NEXT:    vmv.v.v v8, v12591; CHECK-NEXT:    ret592  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0593  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer594  %nega = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %a, <vscale x 16 x i1> splat (i1 -1), i32 %evl)595  %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)596  %v = call <vscale x 16 x half> @llvm.vp.fma.nxv16f16(<vscale x 16 x half> %nega, <vscale x 16 x half> %vb, <vscale x 16 x half> %negc, <vscale x 16 x i1> splat (i1 -1), i32 %evl)597  %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)598  ret <vscale x 16 x half> %u599}600 601define <vscale x 16 x half> @vfnmacc_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) {602; CHECK-LABEL: vfnmacc_vf_nxv16f16_commute_ta:603; CHECK:       # %bb.0:604; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, mu605; CHECK-NEXT:    vfnmacc.vf v12, fa0, v8, v0.t606; CHECK-NEXT:    vmv.v.v v8, v12607; CHECK-NEXT:    ret608  %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0609  %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer610  %nega = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %a, <vscale x 16 x i1> splat (i1 -1), i32 %evl)611  %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)612  %v = call <vscale x 16 x half> @llvm.vp.fma.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x half> %nega, <vscale x 16 x half> %negc, <vscale x 16 x i1> splat (i1 -1), i32 %evl)613  %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)614  ret <vscale x 16 x half> %u615}616 617define <vscale x 32 x half> @vfnmacc_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) {618; CHECK-LABEL: vfnmacc_vv_nxv32f16:619; CHECK:       # %bb.0:620; CHECK-NEXT:    vl8re16.v v24, (a0)621; CHECK-NEXT:    vsetvli zero, a1, e16, m8, tu, mu622; CHECK-NEXT:    vfnmacc.vv v24, v8, v16, v0.t623; CHECK-NEXT:    vmv8r.v v8, v24624; CHECK-NEXT:    ret625  %nega = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %a, <vscale x 32 x i1> splat (i1 -1), i32 %evl)626  %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)627  %v = call <vscale x 32 x half> @llvm.vp.fma.nxv32f16(<vscale x 32 x half> %nega, <vscale x 32 x half> %b, <vscale x 32 x half> %negc, <vscale x 32 x i1> splat (i1 -1), i32 %evl)628  %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)629  ret <vscale x 32 x half> %u630}631 632define <vscale x 32 x half> @vfnmacc_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) {633; CHECK-LABEL: vfnmacc_vv_nxv32f16_unmasked:634; CHECK:       # %bb.0:635; CHECK-NEXT:    vl8re16.v v24, (a0)636; CHECK-NEXT:    vsetvli zero, a1, e16, m8, tu, ma637; CHECK-NEXT:    vfnmacc.vv v24, v8, v16638; CHECK-NEXT:    vmv8r.v v8, v24639; CHECK-NEXT:    ret640  %nega = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %a, <vscale x 32 x i1> splat (i1 -1), i32 %evl)641  %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)642  %v = call <vscale x 32 x half> @llvm.vp.fma.nxv32f16(<vscale x 32 x half> %nega, <vscale x 32 x half> %b, <vscale x 32 x half> %negc, <vscale x 32 x i1> splat (i1 -1), i32 %evl)643  %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)644  ret <vscale x 32 x half> %u645}646 647define <vscale x 32 x half> @vfnmacc_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) {648; CHECK-LABEL: vfnmacc_vf_nxv32f16:649; CHECK:       # %bb.0:650; CHECK-NEXT:    vsetvli zero, a0, e16, m8, tu, mu651; CHECK-NEXT:    vfnmacc.vf v16, fa0, v8, v0.t652; CHECK-NEXT:    vmv8r.v v8, v16653; CHECK-NEXT:    ret654  %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0655  %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer656  %nega = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %a, <vscale x 32 x i1> splat (i1 -1), i32 %evl)657  %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)658  %v = call <vscale x 32 x half> @llvm.vp.fma.nxv32f16(<vscale x 32 x half> %nega, <vscale x 32 x half> %vb, <vscale x 32 x half> %negc, <vscale x 32 x i1> splat (i1 -1), i32 %evl)659  %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)660  ret <vscale x 32 x half> %u661}662 663define <vscale x 32 x half> @vfnmacc_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) {664; CHECK-LABEL: vfnmacc_vf_nxv32f16_commute:665; CHECK:       # %bb.0:666; CHECK-NEXT:    vsetvli zero, a0, e16, m8, tu, mu667; CHECK-NEXT:    vfnmacc.vf v16, fa0, v8, v0.t668; CHECK-NEXT:    vmv8r.v v8, v16669; CHECK-NEXT:    ret670  %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0671  %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer672  %nega = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %a, <vscale x 32 x i1> splat (i1 -1), i32 %evl)673  %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> %vb, <vscale x 32 x half> %nega, <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.merge.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> @vfnmacc_vf_nxv32f16_unmasked(<vscale x 32 x half> %a, half %b, <vscale x 32 x half> %c, i32 zeroext %evl) {680; CHECK-LABEL: vfnmacc_vf_nxv32f16_unmasked:681; CHECK:       # %bb.0:682; CHECK-NEXT:    vsetvli zero, a0, e16, m8, tu, ma683; CHECK-NEXT:    vfnmacc.vf v16, fa0, v8684; CHECK-NEXT:    vmv8r.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  %nega = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %a, <vscale x 32 x i1> splat (i1 -1), i32 %evl)689  %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)690  %v = call <vscale x 32 x half> @llvm.vp.fma.nxv32f16(<vscale x 32 x half> %nega, <vscale x 32 x half> %vb, <vscale x 32 x half> %negc, <vscale x 32 x i1> splat (i1 -1), i32 %evl)691  %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)692  ret <vscale x 32 x half> %u693}694 695define <vscale x 32 x half> @vfnmacc_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) {696; CHECK-LABEL: vfnmacc_vv_nxv32f16_ta:697; CHECK:       # %bb.0:698; CHECK-NEXT:    vl8re16.v v24, (a0)699; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, mu700; CHECK-NEXT:    vfnmacc.vv v24, v8, v16, v0.t701; CHECK-NEXT:    vmv.v.v v8, v24702; CHECK-NEXT:    ret703  %nega = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %a, <vscale x 32 x i1> splat (i1 -1), i32 %evl)704  %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)705  %v = call <vscale x 32 x half> @llvm.vp.fma.nxv32f16(<vscale x 32 x half> %nega, <vscale x 32 x half> %b, <vscale x 32 x half> %negc, <vscale x 32 x i1> splat (i1 -1), i32 %evl)706  %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)707  ret <vscale x 32 x half> %u708}709 710define <vscale x 32 x half> @vfnmacc_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) {711; CHECK-LABEL: vfnmacc_vf_nxv32f16_ta:712; CHECK:       # %bb.0:713; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, mu714; CHECK-NEXT:    vfnmacc.vf v16, fa0, v8, v0.t715; CHECK-NEXT:    vmv.v.v v8, v16716; CHECK-NEXT:    ret717  %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0718  %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer719  %nega = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %a, <vscale x 32 x i1> splat (i1 -1), i32 %evl)720  %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)721  %v = call <vscale x 32 x half> @llvm.vp.fma.nxv32f16(<vscale x 32 x half> %nega, <vscale x 32 x half> %vb, <vscale x 32 x half> %negc, <vscale x 32 x i1> splat (i1 -1), i32 %evl)722  %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)723  ret <vscale x 32 x half> %u724}725 726define <vscale x 32 x half> @vfnmacc_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) {727; CHECK-LABEL: vfnmacc_vf_nxv32f16_commute_ta:728; CHECK:       # %bb.0:729; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, mu730; CHECK-NEXT:    vfnmacc.vf v16, fa0, v8, v0.t731; CHECK-NEXT:    vmv.v.v v8, v16732; CHECK-NEXT:    ret733  %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0734  %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer735  %nega = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %a, <vscale x 32 x i1> splat (i1 -1), i32 %evl)736  %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)737  %v = call <vscale x 32 x half> @llvm.vp.fma.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x half> %nega, <vscale x 32 x half> %negc, <vscale x 32 x i1> splat (i1 -1), i32 %evl)738  %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)739  ret <vscale x 32 x half> %u740}741 742define <vscale x 1 x float> @vfnmacc_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) {743; CHECK-LABEL: vfnmacc_vv_nxv1f32:744; CHECK:       # %bb.0:745; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, tu, mu746; CHECK-NEXT:    vfnmacc.vv v10, v8, v9, v0.t747; CHECK-NEXT:    vmv1r.v v8, v10748; CHECK-NEXT:    ret749  %nega = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %a, <vscale x 1 x i1> splat (i1 -1), i32 %evl)750  %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)751  %v = call <vscale x 1 x float> @llvm.vp.fma.nxv1f32(<vscale x 1 x float> %nega, <vscale x 1 x float> %b, <vscale x 1 x float> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)752  %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)753  ret <vscale x 1 x float> %u754}755 756define <vscale x 1 x float> @vfnmacc_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) {757; CHECK-LABEL: vfnmacc_vv_nxv1f32_unmasked:758; CHECK:       # %bb.0:759; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, tu, ma760; CHECK-NEXT:    vfnmacc.vv v10, v8, v9761; CHECK-NEXT:    vmv1r.v v8, v10762; CHECK-NEXT:    ret763  %nega = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %a, <vscale x 1 x i1> splat (i1 -1), i32 %evl)764  %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)765  %v = call <vscale x 1 x float> @llvm.vp.fma.nxv1f32(<vscale x 1 x float> %nega, <vscale x 1 x float> %b, <vscale x 1 x float> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)766  %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)767  ret <vscale x 1 x float> %u768}769 770define <vscale x 1 x float> @vfnmacc_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) {771; CHECK-LABEL: vfnmacc_vf_nxv1f32:772; CHECK:       # %bb.0:773; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, tu, mu774; CHECK-NEXT:    vfnmacc.vf v9, fa0, v8, v0.t775; CHECK-NEXT:    vmv1r.v v8, v9776; CHECK-NEXT:    ret777  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0778  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer779  %nega = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %a, <vscale x 1 x i1> splat (i1 -1), i32 %evl)780  %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)781  %v = call <vscale x 1 x float> @llvm.vp.fma.nxv1f32(<vscale x 1 x float> %nega, <vscale x 1 x float> %vb, <vscale x 1 x float> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)782  %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)783  ret <vscale x 1 x float> %u784}785 786define <vscale x 1 x float> @vfnmacc_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) {787; CHECK-LABEL: vfnmacc_vf_nxv1f32_commute:788; CHECK:       # %bb.0:789; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, tu, mu790; CHECK-NEXT:    vfnmacc.vf v9, fa0, v8, v0.t791; CHECK-NEXT:    vmv1r.v v8, v9792; CHECK-NEXT:    ret793  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0794  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer795  %nega = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %a, <vscale x 1 x i1> splat (i1 -1), i32 %evl)796  %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)797  %v = call <vscale x 1 x float> @llvm.vp.fma.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x float> %nega, <vscale x 1 x float> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)798  %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)799  ret <vscale x 1 x float> %u800}801 802define <vscale x 1 x float> @vfnmacc_vf_nxv1f32_unmasked(<vscale x 1 x float> %a, float %b, <vscale x 1 x float> %c, i32 zeroext %evl) {803; CHECK-LABEL: vfnmacc_vf_nxv1f32_unmasked:804; CHECK:       # %bb.0:805; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, tu, ma806; CHECK-NEXT:    vfnmacc.vf v9, fa0, v8807; CHECK-NEXT:    vmv1r.v v8, v9808; CHECK-NEXT:    ret809  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0810  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer811  %nega = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %a, <vscale x 1 x i1> splat (i1 -1), i32 %evl)812  %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)813  %v = call <vscale x 1 x float> @llvm.vp.fma.nxv1f32(<vscale x 1 x float> %nega, <vscale x 1 x float> %vb, <vscale x 1 x float> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)814  %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)815  ret <vscale x 1 x float> %u816}817 818define <vscale x 1 x float> @vfnmacc_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) {819; CHECK-LABEL: vfnmacc_vv_nxv1f32_ta:820; CHECK:       # %bb.0:821; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, mu822; CHECK-NEXT:    vfnmacc.vv v10, v8, v9, v0.t823; CHECK-NEXT:    vmv1r.v v8, v10824; CHECK-NEXT:    ret825  %nega = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %a, <vscale x 1 x i1> splat (i1 -1), i32 %evl)826  %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)827  %v = call <vscale x 1 x float> @llvm.vp.fma.nxv1f32(<vscale x 1 x float> %nega, <vscale x 1 x float> %b, <vscale x 1 x float> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)828  %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)829  ret <vscale x 1 x float> %u830}831 832define <vscale x 1 x float> @vfnmacc_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) {833; CHECK-LABEL: vfnmacc_vf_nxv1f32_ta:834; CHECK:       # %bb.0:835; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, mu836; CHECK-NEXT:    vfnmacc.vf v9, fa0, v8, v0.t837; CHECK-NEXT:    vmv1r.v v8, v9838; CHECK-NEXT:    ret839  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0840  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer841  %nega = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %a, <vscale x 1 x i1> splat (i1 -1), i32 %evl)842  %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)843  %v = call <vscale x 1 x float> @llvm.vp.fma.nxv1f32(<vscale x 1 x float> %nega, <vscale x 1 x float> %vb, <vscale x 1 x float> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)844  %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)845  ret <vscale x 1 x float> %u846}847 848define <vscale x 1 x float> @vfnmacc_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) {849; CHECK-LABEL: vfnmacc_vf_nxv1f32_commute_ta:850; CHECK:       # %bb.0:851; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, mu852; CHECK-NEXT:    vfnmacc.vf v9, fa0, v8, v0.t853; CHECK-NEXT:    vmv1r.v v8, v9854; CHECK-NEXT:    ret855  %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0856  %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer857  %nega = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %a, <vscale x 1 x i1> splat (i1 -1), i32 %evl)858  %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)859  %v = call <vscale x 1 x float> @llvm.vp.fma.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x float> %nega, <vscale x 1 x float> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)860  %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)861  ret <vscale x 1 x float> %u862}863 864define <vscale x 2 x float> @vfnmacc_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) {865; CHECK-LABEL: vfnmacc_vv_nxv2f32:866; CHECK:       # %bb.0:867; CHECK-NEXT:    vsetvli zero, a0, e32, m1, tu, mu868; CHECK-NEXT:    vfnmacc.vv v10, v8, v9, v0.t869; CHECK-NEXT:    vmv1r.v v8, v10870; CHECK-NEXT:    ret871  %nega = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x i1> splat (i1 -1), i32 %evl)872  %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)873  %v = call <vscale x 2 x float> @llvm.vp.fma.nxv2f32(<vscale x 2 x float> %nega, <vscale x 2 x float> %b, <vscale x 2 x float> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)874  %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)875  ret <vscale x 2 x float> %u876}877 878define <vscale x 2 x float> @vfnmacc_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) {879; CHECK-LABEL: vfnmacc_vv_nxv2f32_unmasked:880; CHECK:       # %bb.0:881; CHECK-NEXT:    vsetvli zero, a0, e32, m1, tu, ma882; CHECK-NEXT:    vfnmacc.vv v10, v8, v9883; CHECK-NEXT:    vmv1r.v v8, v10884; CHECK-NEXT:    ret885  %nega = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x i1> splat (i1 -1), i32 %evl)886  %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> %nega, <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.merge.nxv2f32(<vscale x 2 x i1> splat (i1 -1), <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> @vfnmacc_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) {893; CHECK-LABEL: vfnmacc_vf_nxv2f32:894; CHECK:       # %bb.0:895; CHECK-NEXT:    vsetvli zero, a0, e32, m1, tu, mu896; CHECK-NEXT:    vfnmacc.vf v9, fa0, v8, v0.t897; CHECK-NEXT:    vmv1r.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  %nega = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x i1> splat (i1 -1), i32 %evl)902  %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)903  %v = call <vscale x 2 x float> @llvm.vp.fma.nxv2f32(<vscale x 2 x float> %nega, <vscale x 2 x float> %vb, <vscale x 2 x float> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)904  %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)905  ret <vscale x 2 x float> %u906}907 908define <vscale x 2 x float> @vfnmacc_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) {909; CHECK-LABEL: vfnmacc_vf_nxv2f32_commute:910; CHECK:       # %bb.0:911; CHECK-NEXT:    vsetvli zero, a0, e32, m1, tu, mu912; CHECK-NEXT:    vfnmacc.vf v9, fa0, v8, v0.t913; CHECK-NEXT:    vmv1r.v v8, v9914; CHECK-NEXT:    ret915  %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0916  %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer917  %nega = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x i1> splat (i1 -1), i32 %evl)918  %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)919  %v = call <vscale x 2 x float> @llvm.vp.fma.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x float> %nega, <vscale x 2 x float> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)920  %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)921  ret <vscale x 2 x float> %u922}923 924define <vscale x 2 x float> @vfnmacc_vf_nxv2f32_unmasked(<vscale x 2 x float> %a, float %b, <vscale x 2 x float> %c, i32 zeroext %evl) {925; CHECK-LABEL: vfnmacc_vf_nxv2f32_unmasked:926; CHECK:       # %bb.0:927; CHECK-NEXT:    vsetvli zero, a0, e32, m1, tu, ma928; CHECK-NEXT:    vfnmacc.vf v9, fa0, v8929; CHECK-NEXT:    vmv1r.v v8, v9930; CHECK-NEXT:    ret931  %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0932  %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer933  %nega = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x i1> splat (i1 -1), i32 %evl)934  %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)935  %v = call <vscale x 2 x float> @llvm.vp.fma.nxv2f32(<vscale x 2 x float> %nega, <vscale x 2 x float> %vb, <vscale x 2 x float> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)936  %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)937  ret <vscale x 2 x float> %u938}939 940define <vscale x 2 x float> @vfnmacc_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) {941; CHECK-LABEL: vfnmacc_vv_nxv2f32_ta:942; CHECK:       # %bb.0:943; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, mu944; CHECK-NEXT:    vfnmacc.vv v10, v8, v9, v0.t945; CHECK-NEXT:    vmv.v.v v8, v10946; CHECK-NEXT:    ret947  %nega = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x i1> splat (i1 -1), i32 %evl)948  %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)949  %v = call <vscale x 2 x float> @llvm.vp.fma.nxv2f32(<vscale x 2 x float> %nega, <vscale x 2 x float> %b, <vscale x 2 x float> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)950  %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)951  ret <vscale x 2 x float> %u952}953 954define <vscale x 2 x float> @vfnmacc_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) {955; CHECK-LABEL: vfnmacc_vf_nxv2f32_ta:956; CHECK:       # %bb.0:957; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, mu958; CHECK-NEXT:    vfnmacc.vf v9, fa0, v8, v0.t959; CHECK-NEXT:    vmv.v.v v8, v9960; CHECK-NEXT:    ret961  %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0962  %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer963  %nega = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x i1> splat (i1 -1), i32 %evl)964  %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)965  %v = call <vscale x 2 x float> @llvm.vp.fma.nxv2f32(<vscale x 2 x float> %nega, <vscale x 2 x float> %vb, <vscale x 2 x float> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)966  %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)967  ret <vscale x 2 x float> %u968}969 970define <vscale x 2 x float> @vfnmacc_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) {971; CHECK-LABEL: vfnmacc_vf_nxv2f32_commute_ta:972; CHECK:       # %bb.0:973; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, mu974; CHECK-NEXT:    vfnmacc.vf v9, fa0, v8, v0.t975; CHECK-NEXT:    vmv.v.v v8, v9976; CHECK-NEXT:    ret977  %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0978  %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer979  %nega = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x i1> splat (i1 -1), i32 %evl)980  %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)981  %v = call <vscale x 2 x float> @llvm.vp.fma.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x float> %nega, <vscale x 2 x float> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)982  %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)983  ret <vscale x 2 x float> %u984}985 986define <vscale x 4 x float> @vfnmacc_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) {987; CHECK-LABEL: vfnmacc_vv_nxv4f32:988; CHECK:       # %bb.0:989; CHECK-NEXT:    vsetvli zero, a0, e32, m2, tu, mu990; CHECK-NEXT:    vfnmacc.vv v12, v8, v10, v0.t991; CHECK-NEXT:    vmv2r.v v8, v12992; CHECK-NEXT:    ret993  %nega = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %a, <vscale x 4 x i1> splat (i1 -1), i32 %evl)994  %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)995  %v = call <vscale x 4 x float> @llvm.vp.fma.nxv4f32(<vscale x 4 x float> %nega, <vscale x 4 x float> %b, <vscale x 4 x float> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)996  %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)997  ret <vscale x 4 x float> %u998}999 1000define <vscale x 4 x float> @vfnmacc_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) {1001; CHECK-LABEL: vfnmacc_vv_nxv4f32_unmasked:1002; CHECK:       # %bb.0:1003; CHECK-NEXT:    vsetvli zero, a0, e32, m2, tu, ma1004; CHECK-NEXT:    vfnmacc.vv v12, v8, v101005; CHECK-NEXT:    vmv2r.v v8, v121006; CHECK-NEXT:    ret1007  %nega = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %a, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1008  %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)1009  %v = call <vscale x 4 x float> @llvm.vp.fma.nxv4f32(<vscale x 4 x float> %nega, <vscale x 4 x float> %b, <vscale x 4 x float> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1010  %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)1011  ret <vscale x 4 x float> %u1012}1013 1014define <vscale x 4 x float> @vfnmacc_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) {1015; CHECK-LABEL: vfnmacc_vf_nxv4f32:1016; CHECK:       # %bb.0:1017; CHECK-NEXT:    vsetvli zero, a0, e32, m2, tu, mu1018; CHECK-NEXT:    vfnmacc.vf v10, fa0, v8, v0.t1019; CHECK-NEXT:    vmv2r.v v8, v101020; CHECK-NEXT:    ret1021  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 01022  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer1023  %nega = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %a, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1024  %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)1025  %v = call <vscale x 4 x float> @llvm.vp.fma.nxv4f32(<vscale x 4 x float> %nega, <vscale x 4 x float> %vb, <vscale x 4 x float> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1026  %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)1027  ret <vscale x 4 x float> %u1028}1029 1030define <vscale x 4 x float> @vfnmacc_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) {1031; CHECK-LABEL: vfnmacc_vf_nxv4f32_commute:1032; CHECK:       # %bb.0:1033; CHECK-NEXT:    vsetvli zero, a0, e32, m2, tu, mu1034; CHECK-NEXT:    vfnmacc.vf v10, fa0, v8, v0.t1035; CHECK-NEXT:    vmv2r.v v8, v101036; CHECK-NEXT:    ret1037  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 01038  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer1039  %nega = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %a, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1040  %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)1041  %v = call <vscale x 4 x float> @llvm.vp.fma.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x float> %nega, <vscale x 4 x float> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1042  %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)1043  ret <vscale x 4 x float> %u1044}1045 1046define <vscale x 4 x float> @vfnmacc_vf_nxv4f32_unmasked(<vscale x 4 x float> %a, float %b, <vscale x 4 x float> %c, i32 zeroext %evl) {1047; CHECK-LABEL: vfnmacc_vf_nxv4f32_unmasked:1048; CHECK:       # %bb.0:1049; CHECK-NEXT:    vsetvli zero, a0, e32, m2, tu, ma1050; CHECK-NEXT:    vfnmacc.vf v10, fa0, v81051; CHECK-NEXT:    vmv2r.v v8, v101052; CHECK-NEXT:    ret1053  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 01054  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer1055  %nega = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %a, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1056  %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)1057  %v = call <vscale x 4 x float> @llvm.vp.fma.nxv4f32(<vscale x 4 x float> %nega, <vscale x 4 x float> %vb, <vscale x 4 x float> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1058  %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)1059  ret <vscale x 4 x float> %u1060}1061 1062define <vscale x 4 x float> @vfnmacc_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) {1063; CHECK-LABEL: vfnmacc_vv_nxv4f32_ta:1064; CHECK:       # %bb.0:1065; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, mu1066; CHECK-NEXT:    vfnmacc.vv v12, v8, v10, v0.t1067; CHECK-NEXT:    vmv.v.v v8, v121068; CHECK-NEXT:    ret1069  %nega = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %a, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1070  %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)1071  %v = call <vscale x 4 x float> @llvm.vp.fma.nxv4f32(<vscale x 4 x float> %nega, <vscale x 4 x float> %b, <vscale x 4 x float> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1072  %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)1073  ret <vscale x 4 x float> %u1074}1075 1076define <vscale x 4 x float> @vfnmacc_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) {1077; CHECK-LABEL: vfnmacc_vf_nxv4f32_ta:1078; CHECK:       # %bb.0:1079; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, mu1080; CHECK-NEXT:    vfnmacc.vf v10, fa0, v8, v0.t1081; CHECK-NEXT:    vmv.v.v v8, v101082; CHECK-NEXT:    ret1083  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 01084  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer1085  %nega = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %a, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1086  %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)1087  %v = call <vscale x 4 x float> @llvm.vp.fma.nxv4f32(<vscale x 4 x float> %nega, <vscale x 4 x float> %vb, <vscale x 4 x float> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1088  %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)1089  ret <vscale x 4 x float> %u1090}1091 1092define <vscale x 4 x float> @vfnmacc_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) {1093; CHECK-LABEL: vfnmacc_vf_nxv4f32_commute_ta:1094; CHECK:       # %bb.0:1095; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, mu1096; CHECK-NEXT:    vfnmacc.vf v10, fa0, v8, v0.t1097; CHECK-NEXT:    vmv.v.v v8, v101098; CHECK-NEXT:    ret1099  %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 01100  %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer1101  %nega = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %a, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1102  %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)1103  %v = call <vscale x 4 x float> @llvm.vp.fma.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x float> %nega, <vscale x 4 x float> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1104  %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)1105  ret <vscale x 4 x float> %u1106}1107 1108define <vscale x 8 x float> @vfnmacc_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) {1109; CHECK-LABEL: vfnmacc_vv_nxv8f32:1110; CHECK:       # %bb.0:1111; CHECK-NEXT:    vsetvli zero, a0, e32, m4, tu, mu1112; CHECK-NEXT:    vfnmacc.vv v16, v8, v12, v0.t1113; CHECK-NEXT:    vmv4r.v v8, v161114; CHECK-NEXT:    ret1115  %nega = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %a, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1116  %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)1117  %v = call <vscale x 8 x float> @llvm.vp.fma.nxv8f32(<vscale x 8 x float> %nega, <vscale x 8 x float> %b, <vscale x 8 x float> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1118  %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)1119  ret <vscale x 8 x float> %u1120}1121 1122define <vscale x 8 x float> @vfnmacc_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) {1123; CHECK-LABEL: vfnmacc_vv_nxv8f32_unmasked:1124; CHECK:       # %bb.0:1125; CHECK-NEXT:    vsetvli zero, a0, e32, m4, tu, ma1126; CHECK-NEXT:    vfnmacc.vv v16, v8, v121127; CHECK-NEXT:    vmv4r.v v8, v161128; CHECK-NEXT:    ret1129  %nega = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %a, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1130  %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)1131  %v = call <vscale x 8 x float> @llvm.vp.fma.nxv8f32(<vscale x 8 x float> %nega, <vscale x 8 x float> %b, <vscale x 8 x float> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1132  %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)1133  ret <vscale x 8 x float> %u1134}1135 1136define <vscale x 8 x float> @vfnmacc_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) {1137; CHECK-LABEL: vfnmacc_vf_nxv8f32:1138; CHECK:       # %bb.0:1139; CHECK-NEXT:    vsetvli zero, a0, e32, m4, tu, mu1140; CHECK-NEXT:    vfnmacc.vf v12, fa0, v8, v0.t1141; CHECK-NEXT:    vmv4r.v v8, v121142; CHECK-NEXT:    ret1143  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 01144  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer1145  %nega = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %a, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1146  %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)1147  %v = call <vscale x 8 x float> @llvm.vp.fma.nxv8f32(<vscale x 8 x float> %nega, <vscale x 8 x float> %vb, <vscale x 8 x float> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1148  %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)1149  ret <vscale x 8 x float> %u1150}1151 1152define <vscale x 8 x float> @vfnmacc_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) {1153; CHECK-LABEL: vfnmacc_vf_nxv8f32_commute:1154; CHECK:       # %bb.0:1155; CHECK-NEXT:    vsetvli zero, a0, e32, m4, tu, mu1156; CHECK-NEXT:    vfnmacc.vf v12, fa0, v8, v0.t1157; CHECK-NEXT:    vmv4r.v v8, v121158; CHECK-NEXT:    ret1159  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 01160  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer1161  %nega = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %a, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1162  %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)1163  %v = call <vscale x 8 x float> @llvm.vp.fma.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x float> %nega, <vscale x 8 x float> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1164  %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)1165  ret <vscale x 8 x float> %u1166}1167 1168define <vscale x 8 x float> @vfnmacc_vf_nxv8f32_unmasked(<vscale x 8 x float> %a, float %b, <vscale x 8 x float> %c, i32 zeroext %evl) {1169; CHECK-LABEL: vfnmacc_vf_nxv8f32_unmasked:1170; CHECK:       # %bb.0:1171; CHECK-NEXT:    vsetvli zero, a0, e32, m4, tu, ma1172; CHECK-NEXT:    vfnmacc.vf v12, fa0, v81173; CHECK-NEXT:    vmv4r.v v8, v121174; CHECK-NEXT:    ret1175  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 01176  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer1177  %nega = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %a, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1178  %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)1179  %v = call <vscale x 8 x float> @llvm.vp.fma.nxv8f32(<vscale x 8 x float> %nega, <vscale x 8 x float> %vb, <vscale x 8 x float> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1180  %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)1181  ret <vscale x 8 x float> %u1182}1183 1184define <vscale x 8 x float> @vfnmacc_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) {1185; CHECK-LABEL: vfnmacc_vv_nxv8f32_ta:1186; CHECK:       # %bb.0:1187; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, mu1188; CHECK-NEXT:    vfnmacc.vv v16, v8, v12, v0.t1189; CHECK-NEXT:    vmv.v.v v8, v161190; CHECK-NEXT:    ret1191  %nega = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %a, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1192  %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)1193  %v = call <vscale x 8 x float> @llvm.vp.fma.nxv8f32(<vscale x 8 x float> %nega, <vscale x 8 x float> %b, <vscale x 8 x float> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1194  %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)1195  ret <vscale x 8 x float> %u1196}1197 1198define <vscale x 8 x float> @vfnmacc_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) {1199; CHECK-LABEL: vfnmacc_vf_nxv8f32_ta:1200; CHECK:       # %bb.0:1201; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, mu1202; CHECK-NEXT:    vfnmacc.vf v12, fa0, v8, v0.t1203; CHECK-NEXT:    vmv.v.v v8, v121204; CHECK-NEXT:    ret1205  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 01206  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer1207  %nega = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %a, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1208  %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)1209  %v = call <vscale x 8 x float> @llvm.vp.fma.nxv8f32(<vscale x 8 x float> %nega, <vscale x 8 x float> %vb, <vscale x 8 x float> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1210  %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)1211  ret <vscale x 8 x float> %u1212}1213 1214define <vscale x 8 x float> @vfnmacc_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) {1215; CHECK-LABEL: vfnmacc_vf_nxv8f32_commute_ta:1216; CHECK:       # %bb.0:1217; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, mu1218; CHECK-NEXT:    vfnmacc.vf v12, fa0, v8, v0.t1219; CHECK-NEXT:    vmv.v.v v8, v121220; CHECK-NEXT:    ret1221  %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 01222  %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer1223  %nega = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %a, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1224  %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)1225  %v = call <vscale x 8 x float> @llvm.vp.fma.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x float> %nega, <vscale x 8 x float> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1226  %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)1227  ret <vscale x 8 x float> %u1228}1229 1230define <vscale x 16 x float> @vfnmacc_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) {1231; CHECK-LABEL: vfnmacc_vv_nxv16f32:1232; CHECK:       # %bb.0:1233; CHECK-NEXT:    vl8re32.v v24, (a0)1234; CHECK-NEXT:    vsetvli zero, a1, e32, m8, tu, mu1235; CHECK-NEXT:    vfnmacc.vv v24, v8, v16, v0.t1236; CHECK-NEXT:    vmv8r.v v8, v241237; CHECK-NEXT:    ret1238  %nega = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %a, <vscale x 16 x i1> splat (i1 -1), i32 %evl)1239  %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)1240  %v = call <vscale x 16 x float> @llvm.vp.fma.nxv16f32(<vscale x 16 x float> %nega, <vscale x 16 x float> %b, <vscale x 16 x float> %negc, <vscale x 16 x i1> splat (i1 -1), i32 %evl)1241  %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)1242  ret <vscale x 16 x float> %u1243}1244 1245define <vscale x 16 x float> @vfnmacc_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) {1246; CHECK-LABEL: vfnmacc_vv_nxv16f32_unmasked:1247; CHECK:       # %bb.0:1248; CHECK-NEXT:    vl8re32.v v24, (a0)1249; CHECK-NEXT:    vsetvli zero, a1, e32, m8, tu, ma1250; CHECK-NEXT:    vfnmacc.vv v24, v8, v161251; CHECK-NEXT:    vmv8r.v v8, v241252; CHECK-NEXT:    ret1253  %nega = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %a, <vscale x 16 x i1> splat (i1 -1), i32 %evl)1254  %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)1255  %v = call <vscale x 16 x float> @llvm.vp.fma.nxv16f32(<vscale x 16 x float> %nega, <vscale x 16 x float> %b, <vscale x 16 x float> %negc, <vscale x 16 x i1> splat (i1 -1), i32 %evl)1256  %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)1257  ret <vscale x 16 x float> %u1258}1259 1260define <vscale x 16 x float> @vfnmacc_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) {1261; CHECK-LABEL: vfnmacc_vf_nxv16f32:1262; CHECK:       # %bb.0:1263; CHECK-NEXT:    vsetvli zero, a0, e32, m8, tu, mu1264; CHECK-NEXT:    vfnmacc.vf v16, fa0, v8, v0.t1265; CHECK-NEXT:    vmv8r.v v8, v161266; CHECK-NEXT:    ret1267  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 01268  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer1269  %nega = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %a, <vscale x 16 x i1> splat (i1 -1), i32 %evl)1270  %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)1271  %v = call <vscale x 16 x float> @llvm.vp.fma.nxv16f32(<vscale x 16 x float> %nega, <vscale x 16 x float> %vb, <vscale x 16 x float> %negc, <vscale x 16 x i1> splat (i1 -1), i32 %evl)1272  %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)1273  ret <vscale x 16 x float> %u1274}1275 1276define <vscale x 16 x float> @vfnmacc_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) {1277; CHECK-LABEL: vfnmacc_vf_nxv16f32_commute:1278; CHECK:       # %bb.0:1279; CHECK-NEXT:    vsetvli zero, a0, e32, m8, tu, mu1280; CHECK-NEXT:    vfnmacc.vf v16, fa0, v8, v0.t1281; CHECK-NEXT:    vmv8r.v v8, v161282; CHECK-NEXT:    ret1283  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 01284  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer1285  %nega = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %a, <vscale x 16 x i1> splat (i1 -1), i32 %evl)1286  %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)1287  %v = call <vscale x 16 x float> @llvm.vp.fma.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x float> %nega, <vscale x 16 x float> %negc, <vscale x 16 x i1> splat (i1 -1), i32 %evl)1288  %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)1289  ret <vscale x 16 x float> %u1290}1291 1292define <vscale x 16 x float> @vfnmacc_vf_nxv16f32_unmasked(<vscale x 16 x float> %a, float %b, <vscale x 16 x float> %c, i32 zeroext %evl) {1293; CHECK-LABEL: vfnmacc_vf_nxv16f32_unmasked:1294; CHECK:       # %bb.0:1295; CHECK-NEXT:    vsetvli zero, a0, e32, m8, tu, ma1296; CHECK-NEXT:    vfnmacc.vf v16, fa0, v81297; CHECK-NEXT:    vmv8r.v v8, v161298; CHECK-NEXT:    ret1299  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 01300  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer1301  %nega = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %a, <vscale x 16 x i1> splat (i1 -1), i32 %evl)1302  %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)1303  %v = call <vscale x 16 x float> @llvm.vp.fma.nxv16f32(<vscale x 16 x float> %nega, <vscale x 16 x float> %vb, <vscale x 16 x float> %negc, <vscale x 16 x i1> splat (i1 -1), i32 %evl)1304  %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)1305  ret <vscale x 16 x float> %u1306}1307 1308define <vscale x 16 x float> @vfnmacc_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) {1309; CHECK-LABEL: vfnmacc_vv_nxv16f32_ta:1310; CHECK:       # %bb.0:1311; CHECK-NEXT:    vl8re32.v v24, (a0)1312; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, mu1313; CHECK-NEXT:    vfnmacc.vv v24, v8, v16, v0.t1314; CHECK-NEXT:    vmv.v.v v8, v241315; CHECK-NEXT:    ret1316  %nega = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %a, <vscale x 16 x i1> splat (i1 -1), i32 %evl)1317  %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)1318  %v = call <vscale x 16 x float> @llvm.vp.fma.nxv16f32(<vscale x 16 x float> %nega, <vscale x 16 x float> %b, <vscale x 16 x float> %negc, <vscale x 16 x i1> splat (i1 -1), i32 %evl)1319  %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)1320  ret <vscale x 16 x float> %u1321}1322 1323define <vscale x 16 x float> @vfnmacc_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) {1324; CHECK-LABEL: vfnmacc_vf_nxv16f32_ta:1325; CHECK:       # %bb.0:1326; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, mu1327; CHECK-NEXT:    vfnmacc.vf v16, fa0, v8, v0.t1328; CHECK-NEXT:    vmv.v.v v8, v161329; CHECK-NEXT:    ret1330  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 01331  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer1332  %nega = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %a, <vscale x 16 x i1> splat (i1 -1), i32 %evl)1333  %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)1334  %v = call <vscale x 16 x float> @llvm.vp.fma.nxv16f32(<vscale x 16 x float> %nega, <vscale x 16 x float> %vb, <vscale x 16 x float> %negc, <vscale x 16 x i1> splat (i1 -1), i32 %evl)1335  %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)1336  ret <vscale x 16 x float> %u1337}1338 1339define <vscale x 16 x float> @vfnmacc_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) {1340; CHECK-LABEL: vfnmacc_vf_nxv16f32_commute_ta:1341; CHECK:       # %bb.0:1342; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, mu1343; CHECK-NEXT:    vfnmacc.vf v16, fa0, v8, v0.t1344; CHECK-NEXT:    vmv.v.v v8, v161345; CHECK-NEXT:    ret1346  %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 01347  %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer1348  %nega = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %a, <vscale x 16 x i1> splat (i1 -1), i32 %evl)1349  %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)1350  %v = call <vscale x 16 x float> @llvm.vp.fma.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x float> %nega, <vscale x 16 x float> %negc, <vscale x 16 x i1> splat (i1 -1), i32 %evl)1351  %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)1352  ret <vscale x 16 x float> %u1353}1354 1355define <vscale x 1 x double> @vfnmacc_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) {1356; CHECK-LABEL: vfnmacc_vv_nxv1f64:1357; CHECK:       # %bb.0:1358; CHECK-NEXT:    vsetvli zero, a0, e64, m1, tu, mu1359; CHECK-NEXT:    vfnmacc.vv v10, v8, v9, v0.t1360; CHECK-NEXT:    vmv1r.v v8, v101361; CHECK-NEXT:    ret1362  %nega = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %a, <vscale x 1 x i1> splat (i1 -1), i32 %evl)1363  %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)1364  %v = call <vscale x 1 x double> @llvm.vp.fma.nxv1f64(<vscale x 1 x double> %nega, <vscale x 1 x double> %b, <vscale x 1 x double> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)1365  %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)1366  ret <vscale x 1 x double> %u1367}1368 1369define <vscale x 1 x double> @vfnmacc_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) {1370; CHECK-LABEL: vfnmacc_vv_nxv1f64_unmasked:1371; CHECK:       # %bb.0:1372; CHECK-NEXT:    vsetvli zero, a0, e64, m1, tu, ma1373; CHECK-NEXT:    vfnmacc.vv v10, v8, v91374; CHECK-NEXT:    vmv1r.v v8, v101375; CHECK-NEXT:    ret1376  %nega = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %a, <vscale x 1 x i1> splat (i1 -1), i32 %evl)1377  %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)1378  %v = call <vscale x 1 x double> @llvm.vp.fma.nxv1f64(<vscale x 1 x double> %nega, <vscale x 1 x double> %b, <vscale x 1 x double> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)1379  %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)1380  ret <vscale x 1 x double> %u1381}1382 1383define <vscale x 1 x double> @vfnmacc_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) {1384; CHECK-LABEL: vfnmacc_vf_nxv1f64:1385; CHECK:       # %bb.0:1386; CHECK-NEXT:    vsetvli zero, a0, e64, m1, tu, mu1387; CHECK-NEXT:    vfnmacc.vf v9, fa0, v8, v0.t1388; CHECK-NEXT:    vmv1r.v v8, v91389; CHECK-NEXT:    ret1390  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 01391  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer1392  %nega = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %a, <vscale x 1 x i1> splat (i1 -1), i32 %evl)1393  %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)1394  %v = call <vscale x 1 x double> @llvm.vp.fma.nxv1f64(<vscale x 1 x double> %nega, <vscale x 1 x double> %vb, <vscale x 1 x double> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)1395  %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)1396  ret <vscale x 1 x double> %u1397}1398 1399define <vscale x 1 x double> @vfnmacc_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) {1400; CHECK-LABEL: vfnmacc_vf_nxv1f64_commute:1401; CHECK:       # %bb.0:1402; CHECK-NEXT:    vsetvli zero, a0, e64, m1, tu, mu1403; CHECK-NEXT:    vfnmacc.vf v9, fa0, v8, v0.t1404; CHECK-NEXT:    vmv1r.v v8, v91405; CHECK-NEXT:    ret1406  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 01407  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer1408  %nega = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %a, <vscale x 1 x i1> splat (i1 -1), i32 %evl)1409  %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)1410  %v = call <vscale x 1 x double> @llvm.vp.fma.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %nega, <vscale x 1 x double> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)1411  %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)1412  ret <vscale x 1 x double> %u1413}1414 1415define <vscale x 1 x double> @vfnmacc_vf_nxv1f64_unmasked(<vscale x 1 x double> %a, double %b, <vscale x 1 x double> %c, i32 zeroext %evl) {1416; CHECK-LABEL: vfnmacc_vf_nxv1f64_unmasked:1417; CHECK:       # %bb.0:1418; CHECK-NEXT:    vsetvli zero, a0, e64, m1, tu, ma1419; CHECK-NEXT:    vfnmacc.vf v9, fa0, v81420; CHECK-NEXT:    vmv1r.v v8, v91421; CHECK-NEXT:    ret1422  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 01423  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer1424  %nega = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %a, <vscale x 1 x i1> splat (i1 -1), i32 %evl)1425  %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)1426  %v = call <vscale x 1 x double> @llvm.vp.fma.nxv1f64(<vscale x 1 x double> %nega, <vscale x 1 x double> %vb, <vscale x 1 x double> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)1427  %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)1428  ret <vscale x 1 x double> %u1429}1430 1431define <vscale x 1 x double> @vfnmacc_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) {1432; CHECK-LABEL: vfnmacc_vv_nxv1f64_ta:1433; CHECK:       # %bb.0:1434; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, mu1435; CHECK-NEXT:    vfnmacc.vv v10, v8, v9, v0.t1436; CHECK-NEXT:    vmv.v.v v8, v101437; CHECK-NEXT:    ret1438  %nega = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %a, <vscale x 1 x i1> splat (i1 -1), i32 %evl)1439  %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)1440  %v = call <vscale x 1 x double> @llvm.vp.fma.nxv1f64(<vscale x 1 x double> %nega, <vscale x 1 x double> %b, <vscale x 1 x double> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)1441  %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)1442  ret <vscale x 1 x double> %u1443}1444 1445define <vscale x 1 x double> @vfnmacc_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) {1446; CHECK-LABEL: vfnmacc_vf_nxv1f64_ta:1447; CHECK:       # %bb.0:1448; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, mu1449; CHECK-NEXT:    vfnmacc.vf v9, fa0, v8, v0.t1450; CHECK-NEXT:    vmv.v.v v8, v91451; CHECK-NEXT:    ret1452  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 01453  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer1454  %nega = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %a, <vscale x 1 x i1> splat (i1 -1), i32 %evl)1455  %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)1456  %v = call <vscale x 1 x double> @llvm.vp.fma.nxv1f64(<vscale x 1 x double> %nega, <vscale x 1 x double> %vb, <vscale x 1 x double> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)1457  %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)1458  ret <vscale x 1 x double> %u1459}1460 1461define <vscale x 1 x double> @vfnmacc_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) {1462; CHECK-LABEL: vfnmacc_vf_nxv1f64_commute_ta:1463; CHECK:       # %bb.0:1464; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, mu1465; CHECK-NEXT:    vfnmacc.vf v9, fa0, v8, v0.t1466; CHECK-NEXT:    vmv.v.v v8, v91467; CHECK-NEXT:    ret1468  %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 01469  %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer1470  %nega = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %a, <vscale x 1 x i1> splat (i1 -1), i32 %evl)1471  %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)1472  %v = call <vscale x 1 x double> @llvm.vp.fma.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %nega, <vscale x 1 x double> %negc, <vscale x 1 x i1> splat (i1 -1), i32 %evl)1473  %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)1474  ret <vscale x 1 x double> %u1475}1476 1477define <vscale x 2 x double> @vfnmacc_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) {1478; CHECK-LABEL: vfnmacc_vv_nxv2f64:1479; CHECK:       # %bb.0:1480; CHECK-NEXT:    vsetvli zero, a0, e64, m2, tu, mu1481; CHECK-NEXT:    vfnmacc.vv v12, v8, v10, v0.t1482; CHECK-NEXT:    vmv2r.v v8, v121483; CHECK-NEXT:    ret1484  %nega = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x i1> splat (i1 -1), i32 %evl)1485  %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)1486  %v = call <vscale x 2 x double> @llvm.vp.fma.nxv2f64(<vscale x 2 x double> %nega, <vscale x 2 x double> %b, <vscale x 2 x double> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)1487  %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)1488  ret <vscale x 2 x double> %u1489}1490 1491define <vscale x 2 x double> @vfnmacc_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) {1492; CHECK-LABEL: vfnmacc_vv_nxv2f64_unmasked:1493; CHECK:       # %bb.0:1494; CHECK-NEXT:    vsetvli zero, a0, e64, m2, tu, ma1495; CHECK-NEXT:    vfnmacc.vv v12, v8, v101496; CHECK-NEXT:    vmv2r.v v8, v121497; CHECK-NEXT:    ret1498  %nega = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x i1> splat (i1 -1), i32 %evl)1499  %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)1500  %v = call <vscale x 2 x double> @llvm.vp.fma.nxv2f64(<vscale x 2 x double> %nega, <vscale x 2 x double> %b, <vscale x 2 x double> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)1501  %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)1502  ret <vscale x 2 x double> %u1503}1504 1505define <vscale x 2 x double> @vfnmacc_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) {1506; CHECK-LABEL: vfnmacc_vf_nxv2f64:1507; CHECK:       # %bb.0:1508; CHECK-NEXT:    vsetvli zero, a0, e64, m2, tu, mu1509; CHECK-NEXT:    vfnmacc.vf v10, fa0, v8, v0.t1510; CHECK-NEXT:    vmv2r.v v8, v101511; CHECK-NEXT:    ret1512  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 01513  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer1514  %nega = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x i1> splat (i1 -1), i32 %evl)1515  %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)1516  %v = call <vscale x 2 x double> @llvm.vp.fma.nxv2f64(<vscale x 2 x double> %nega, <vscale x 2 x double> %vb, <vscale x 2 x double> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)1517  %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)1518  ret <vscale x 2 x double> %u1519}1520 1521define <vscale x 2 x double> @vfnmacc_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) {1522; CHECK-LABEL: vfnmacc_vf_nxv2f64_commute:1523; CHECK:       # %bb.0:1524; CHECK-NEXT:    vsetvli zero, a0, e64, m2, tu, mu1525; CHECK-NEXT:    vfnmacc.vf v10, fa0, v8, v0.t1526; CHECK-NEXT:    vmv2r.v v8, v101527; CHECK-NEXT:    ret1528  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 01529  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer1530  %nega = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x i1> splat (i1 -1), i32 %evl)1531  %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)1532  %v = call <vscale x 2 x double> @llvm.vp.fma.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x double> %nega, <vscale x 2 x double> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)1533  %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)1534  ret <vscale x 2 x double> %u1535}1536 1537define <vscale x 2 x double> @vfnmacc_vf_nxv2f64_unmasked(<vscale x 2 x double> %a, double %b, <vscale x 2 x double> %c, i32 zeroext %evl) {1538; CHECK-LABEL: vfnmacc_vf_nxv2f64_unmasked:1539; CHECK:       # %bb.0:1540; CHECK-NEXT:    vsetvli zero, a0, e64, m2, tu, ma1541; CHECK-NEXT:    vfnmacc.vf v10, fa0, v81542; CHECK-NEXT:    vmv2r.v v8, v101543; CHECK-NEXT:    ret1544  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 01545  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer1546  %nega = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x i1> splat (i1 -1), i32 %evl)1547  %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)1548  %v = call <vscale x 2 x double> @llvm.vp.fma.nxv2f64(<vscale x 2 x double> %nega, <vscale x 2 x double> %vb, <vscale x 2 x double> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)1549  %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)1550  ret <vscale x 2 x double> %u1551}1552 1553define <vscale x 2 x double> @vfnmacc_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) {1554; CHECK-LABEL: vfnmacc_vv_nxv2f64_ta:1555; CHECK:       # %bb.0:1556; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, mu1557; CHECK-NEXT:    vfnmacc.vv v12, v8, v10, v0.t1558; CHECK-NEXT:    vmv.v.v v8, v121559; CHECK-NEXT:    ret1560  %nega = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x i1> splat (i1 -1), i32 %evl)1561  %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)1562  %v = call <vscale x 2 x double> @llvm.vp.fma.nxv2f64(<vscale x 2 x double> %nega, <vscale x 2 x double> %b, <vscale x 2 x double> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)1563  %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)1564  ret <vscale x 2 x double> %u1565}1566 1567define <vscale x 2 x double> @vfnmacc_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) {1568; CHECK-LABEL: vfnmacc_vf_nxv2f64_ta:1569; CHECK:       # %bb.0:1570; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, mu1571; CHECK-NEXT:    vfnmacc.vf v10, fa0, v8, v0.t1572; CHECK-NEXT:    vmv.v.v v8, v101573; CHECK-NEXT:    ret1574  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 01575  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer1576  %nega = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x i1> splat (i1 -1), i32 %evl)1577  %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)1578  %v = call <vscale x 2 x double> @llvm.vp.fma.nxv2f64(<vscale x 2 x double> %nega, <vscale x 2 x double> %vb, <vscale x 2 x double> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)1579  %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)1580  ret <vscale x 2 x double> %u1581}1582 1583define <vscale x 2 x double> @vfnmacc_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) {1584; CHECK-LABEL: vfnmacc_vf_nxv2f64_commute_ta:1585; CHECK:       # %bb.0:1586; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, mu1587; CHECK-NEXT:    vfnmacc.vf v10, fa0, v8, v0.t1588; CHECK-NEXT:    vmv.v.v v8, v101589; CHECK-NEXT:    ret1590  %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 01591  %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer1592  %nega = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x i1> splat (i1 -1), i32 %evl)1593  %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)1594  %v = call <vscale x 2 x double> @llvm.vp.fma.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x double> %nega, <vscale x 2 x double> %negc, <vscale x 2 x i1> splat (i1 -1), i32 %evl)1595  %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)1596  ret <vscale x 2 x double> %u1597}1598 1599define <vscale x 4 x double> @vfnmacc_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) {1600; CHECK-LABEL: vfnmacc_vv_nxv4f64:1601; CHECK:       # %bb.0:1602; CHECK-NEXT:    vsetvli zero, a0, e64, m4, tu, mu1603; CHECK-NEXT:    vfnmacc.vv v16, v8, v12, v0.t1604; CHECK-NEXT:    vmv4r.v v8, v161605; CHECK-NEXT:    ret1606  %nega = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %a, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1607  %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)1608  %v = call <vscale x 4 x double> @llvm.vp.fma.nxv4f64(<vscale x 4 x double> %nega, <vscale x 4 x double> %b, <vscale x 4 x double> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1609  %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)1610  ret <vscale x 4 x double> %u1611}1612 1613define <vscale x 4 x double> @vfnmacc_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) {1614; CHECK-LABEL: vfnmacc_vv_nxv4f64_unmasked:1615; CHECK:       # %bb.0:1616; CHECK-NEXT:    vsetvli zero, a0, e64, m4, tu, ma1617; CHECK-NEXT:    vfnmacc.vv v16, v8, v121618; CHECK-NEXT:    vmv4r.v v8, v161619; CHECK-NEXT:    ret1620  %nega = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %a, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1621  %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)1622  %v = call <vscale x 4 x double> @llvm.vp.fma.nxv4f64(<vscale x 4 x double> %nega, <vscale x 4 x double> %b, <vscale x 4 x double> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1623  %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)1624  ret <vscale x 4 x double> %u1625}1626 1627define <vscale x 4 x double> @vfnmacc_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) {1628; CHECK-LABEL: vfnmacc_vf_nxv4f64:1629; CHECK:       # %bb.0:1630; CHECK-NEXT:    vsetvli zero, a0, e64, m4, tu, mu1631; CHECK-NEXT:    vfnmacc.vf v12, fa0, v8, v0.t1632; CHECK-NEXT:    vmv4r.v v8, v121633; CHECK-NEXT:    ret1634  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 01635  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer1636  %nega = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %a, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1637  %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)1638  %v = call <vscale x 4 x double> @llvm.vp.fma.nxv4f64(<vscale x 4 x double> %nega, <vscale x 4 x double> %vb, <vscale x 4 x double> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1639  %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)1640  ret <vscale x 4 x double> %u1641}1642 1643define <vscale x 4 x double> @vfnmacc_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) {1644; CHECK-LABEL: vfnmacc_vf_nxv4f64_commute:1645; CHECK:       # %bb.0:1646; CHECK-NEXT:    vsetvli zero, a0, e64, m4, tu, mu1647; CHECK-NEXT:    vfnmacc.vf v12, fa0, v8, v0.t1648; CHECK-NEXT:    vmv4r.v v8, v121649; CHECK-NEXT:    ret1650  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 01651  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer1652  %nega = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %a, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1653  %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)1654  %v = call <vscale x 4 x double> @llvm.vp.fma.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x double> %nega, <vscale x 4 x double> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1655  %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)1656  ret <vscale x 4 x double> %u1657}1658 1659define <vscale x 4 x double> @vfnmacc_vf_nxv4f64_unmasked(<vscale x 4 x double> %a, double %b, <vscale x 4 x double> %c, i32 zeroext %evl) {1660; CHECK-LABEL: vfnmacc_vf_nxv4f64_unmasked:1661; CHECK:       # %bb.0:1662; CHECK-NEXT:    vsetvli zero, a0, e64, m4, tu, ma1663; CHECK-NEXT:    vfnmacc.vf v12, fa0, v81664; CHECK-NEXT:    vmv4r.v v8, v121665; CHECK-NEXT:    ret1666  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 01667  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer1668  %nega = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %a, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1669  %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)1670  %v = call <vscale x 4 x double> @llvm.vp.fma.nxv4f64(<vscale x 4 x double> %nega, <vscale x 4 x double> %vb, <vscale x 4 x double> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1671  %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)1672  ret <vscale x 4 x double> %u1673}1674 1675define <vscale x 4 x double> @vfnmacc_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) {1676; CHECK-LABEL: vfnmacc_vv_nxv4f64_ta:1677; CHECK:       # %bb.0:1678; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, mu1679; CHECK-NEXT:    vfnmacc.vv v16, v8, v12, v0.t1680; CHECK-NEXT:    vmv.v.v v8, v161681; CHECK-NEXT:    ret1682  %nega = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %a, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1683  %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)1684  %v = call <vscale x 4 x double> @llvm.vp.fma.nxv4f64(<vscale x 4 x double> %nega, <vscale x 4 x double> %b, <vscale x 4 x double> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1685  %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)1686  ret <vscale x 4 x double> %u1687}1688 1689define <vscale x 4 x double> @vfnmacc_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) {1690; CHECK-LABEL: vfnmacc_vf_nxv4f64_ta:1691; CHECK:       # %bb.0:1692; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, mu1693; CHECK-NEXT:    vfnmacc.vf v12, fa0, v8, v0.t1694; CHECK-NEXT:    vmv.v.v v8, v121695; CHECK-NEXT:    ret1696  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 01697  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer1698  %nega = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %a, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1699  %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)1700  %v = call <vscale x 4 x double> @llvm.vp.fma.nxv4f64(<vscale x 4 x double> %nega, <vscale x 4 x double> %vb, <vscale x 4 x double> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1701  %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)1702  ret <vscale x 4 x double> %u1703}1704 1705define <vscale x 4 x double> @vfnmacc_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) {1706; CHECK-LABEL: vfnmacc_vf_nxv4f64_commute_ta:1707; CHECK:       # %bb.0:1708; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, mu1709; CHECK-NEXT:    vfnmacc.vf v12, fa0, v8, v0.t1710; CHECK-NEXT:    vmv.v.v v8, v121711; CHECK-NEXT:    ret1712  %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 01713  %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer1714  %nega = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %a, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1715  %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)1716  %v = call <vscale x 4 x double> @llvm.vp.fma.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x double> %nega, <vscale x 4 x double> %negc, <vscale x 4 x i1> splat (i1 -1), i32 %evl)1717  %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)1718  ret <vscale x 4 x double> %u1719}1720 1721define <vscale x 8 x double> @vfnmacc_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) {1722; CHECK-LABEL: vfnmacc_vv_nxv8f64:1723; CHECK:       # %bb.0:1724; CHECK-NEXT:    vl8re64.v v24, (a0)1725; CHECK-NEXT:    vsetvli zero, a1, e64, m8, tu, mu1726; CHECK-NEXT:    vfnmacc.vv v24, v8, v16, v0.t1727; CHECK-NEXT:    vmv8r.v v8, v241728; CHECK-NEXT:    ret1729  %nega = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %a, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1730  %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)1731  %v = call <vscale x 8 x double> @llvm.vp.fma.nxv8f64(<vscale x 8 x double> %nega, <vscale x 8 x double> %b, <vscale x 8 x double> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1732  %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)1733  ret <vscale x 8 x double> %u1734}1735 1736define <vscale x 8 x double> @vfnmacc_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) {1737; CHECK-LABEL: vfnmacc_vv_nxv8f64_unmasked:1738; CHECK:       # %bb.0:1739; CHECK-NEXT:    vl8re64.v v24, (a0)1740; CHECK-NEXT:    vsetvli zero, a1, e64, m8, tu, ma1741; CHECK-NEXT:    vfnmacc.vv v24, v8, v161742; CHECK-NEXT:    vmv8r.v v8, v241743; CHECK-NEXT:    ret1744  %nega = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %a, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1745  %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)1746  %v = call <vscale x 8 x double> @llvm.vp.fma.nxv8f64(<vscale x 8 x double> %nega, <vscale x 8 x double> %b, <vscale x 8 x double> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1747  %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)1748  ret <vscale x 8 x double> %u1749}1750 1751define <vscale x 8 x double> @vfnmacc_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) {1752; CHECK-LABEL: vfnmacc_vf_nxv8f64:1753; CHECK:       # %bb.0:1754; CHECK-NEXT:    vsetvli zero, a0, e64, m8, tu, mu1755; CHECK-NEXT:    vfnmacc.vf v16, fa0, v8, v0.t1756; CHECK-NEXT:    vmv8r.v v8, v161757; CHECK-NEXT:    ret1758  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 01759  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer1760  %nega = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %a, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1761  %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)1762  %v = call <vscale x 8 x double> @llvm.vp.fma.nxv8f64(<vscale x 8 x double> %nega, <vscale x 8 x double> %vb, <vscale x 8 x double> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1763  %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)1764  ret <vscale x 8 x double> %u1765}1766 1767define <vscale x 8 x double> @vfnmacc_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) {1768; CHECK-LABEL: vfnmacc_vf_nxv8f64_commute:1769; CHECK:       # %bb.0:1770; CHECK-NEXT:    vsetvli zero, a0, e64, m8, tu, mu1771; CHECK-NEXT:    vfnmacc.vf v16, fa0, v8, v0.t1772; CHECK-NEXT:    vmv8r.v v8, v161773; CHECK-NEXT:    ret1774  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 01775  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer1776  %nega = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %a, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1777  %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)1778  %v = call <vscale x 8 x double> @llvm.vp.fma.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %nega, <vscale x 8 x double> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1779  %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)1780  ret <vscale x 8 x double> %u1781}1782 1783define <vscale x 8 x double> @vfnmacc_vf_nxv8f64_unmasked(<vscale x 8 x double> %a, double %b, <vscale x 8 x double> %c, i32 zeroext %evl) {1784; CHECK-LABEL: vfnmacc_vf_nxv8f64_unmasked:1785; CHECK:       # %bb.0:1786; CHECK-NEXT:    vsetvli zero, a0, e64, m8, tu, ma1787; CHECK-NEXT:    vfnmacc.vf v16, fa0, v81788; CHECK-NEXT:    vmv8r.v v8, v161789; CHECK-NEXT:    ret1790  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 01791  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer1792  %nega = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %a, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1793  %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)1794  %v = call <vscale x 8 x double> @llvm.vp.fma.nxv8f64(<vscale x 8 x double> %nega, <vscale x 8 x double> %vb, <vscale x 8 x double> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1795  %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)1796  ret <vscale x 8 x double> %u1797}1798 1799define <vscale x 8 x double> @vfnmacc_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) {1800; CHECK-LABEL: vfnmacc_vv_nxv8f64_ta:1801; CHECK:       # %bb.0:1802; CHECK-NEXT:    vl8re64.v v24, (a0)1803; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, mu1804; CHECK-NEXT:    vfnmacc.vv v24, v8, v16, v0.t1805; CHECK-NEXT:    vmv.v.v v8, v241806; CHECK-NEXT:    ret1807  %nega = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %a, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1808  %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)1809  %v = call <vscale x 8 x double> @llvm.vp.fma.nxv8f64(<vscale x 8 x double> %nega, <vscale x 8 x double> %b, <vscale x 8 x double> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1810  %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)1811  ret <vscale x 8 x double> %u1812}1813 1814define <vscale x 8 x double> @vfnmacc_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) {1815; CHECK-LABEL: vfnmacc_vf_nxv8f64_ta:1816; CHECK:       # %bb.0:1817; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, mu1818; CHECK-NEXT:    vfnmacc.vf v16, fa0, v8, v0.t1819; CHECK-NEXT:    vmv.v.v v8, v161820; CHECK-NEXT:    ret1821  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 01822  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer1823  %nega = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %a, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1824  %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)1825  %v = call <vscale x 8 x double> @llvm.vp.fma.nxv8f64(<vscale x 8 x double> %nega, <vscale x 8 x double> %vb, <vscale x 8 x double> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1826  %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)1827  ret <vscale x 8 x double> %u1828}1829 1830define <vscale x 8 x double> @vfnmacc_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) {1831; CHECK-LABEL: vfnmacc_vf_nxv8f64_commute_ta:1832; CHECK:       # %bb.0:1833; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, mu1834; CHECK-NEXT:    vfnmacc.vf v16, fa0, v8, v0.t1835; CHECK-NEXT:    vmv.v.v v8, v161836; CHECK-NEXT:    ret1837  %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 01838  %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer1839  %nega = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %a, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1840  %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)1841  %v = call <vscale x 8 x double> @llvm.vp.fma.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %nega, <vscale x 8 x double> %negc, <vscale x 8 x i1> splat (i1 -1), i32 %evl)1842  %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)1843  ret <vscale x 8 x double> %u1844}1845