1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv32 -mattr=+d,+zvfh,+v,+m -target-abi=ilp32d \
3 ; RUN: -verify-machineinstrs < %s | FileCheck %s
4 ; RUN: llc -mtriple=riscv64 -mattr=+d,+zvfh,+v,+m -target-abi=lp64d \
5 ; RUN: -verify-machineinstrs < %s | FileCheck %s
7 declare <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half>, <vscale x 1 x half>, <vscale x 1 x half>, <vscale x 1 x i1>, i32)
9 define <vscale x 1 x half> @vfma_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %b, <vscale x 1 x half> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {
10 ; CHECK-LABEL: vfma_vv_nxv1f16:
12 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
13 ; CHECK-NEXT: vfmadd.vv v9, v8, v10, v0.t
14 ; CHECK-NEXT: vmv1r.v v8, v9
16 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %b, <vscale x 1 x half> %c, <vscale x 1 x i1> %m, i32 %evl)
17 ret <vscale x 1 x half> %v
20 define <vscale x 1 x half> @vfma_vv_nxv1f16_unmasked(<vscale x 1 x half> %va, <vscale x 1 x half> %b, <vscale x 1 x half> %c, i32 zeroext %evl) {
21 ; CHECK-LABEL: vfma_vv_nxv1f16_unmasked:
23 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
24 ; CHECK-NEXT: vfmadd.vv v8, v9, v10
26 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %b, <vscale x 1 x half> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)
27 ret <vscale x 1 x half> %v
30 define <vscale x 1 x half> @vfma_vf_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
31 ; CHECK-LABEL: vfma_vf_nxv1f16:
33 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
34 ; CHECK-NEXT: vfmadd.vf v8, fa0, v9, v0.t
36 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
37 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
38 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 %evl)
39 ret <vscale x 1 x half> %v
42 define <vscale x 1 x half> @vfma_vf_nxv1f16_commute(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
43 ; CHECK-LABEL: vfma_vf_nxv1f16_commute:
45 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
46 ; CHECK-NEXT: vfmadd.vf v8, fa0, v9, v0.t
48 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
49 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
50 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %va, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 %evl)
51 ret <vscale x 1 x half> %v
54 define <vscale x 1 x half> @vfma_vf_nxv1f16_unmasked(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, i32 zeroext %evl) {
55 ; CHECK-LABEL: vfma_vf_nxv1f16_unmasked:
57 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
58 ; CHECK-NEXT: vfmadd.vf v8, fa0, v9
60 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
61 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
62 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, <vscale x 1 x half> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
63 ret <vscale x 1 x half> %v
66 define <vscale x 1 x half> @vfma_vf_nxv1f16_unmasked_commute(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, i32 zeroext %evl) {
67 ; CHECK-LABEL: vfma_vf_nxv1f16_unmasked_commute:
69 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
70 ; CHECK-NEXT: vfmadd.vf v8, fa0, v9
72 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
73 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
74 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %va, <vscale x 1 x half> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
75 ret <vscale x 1 x half> %v
78 declare <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half>, <vscale x 2 x half>, <vscale x 2 x half>, <vscale x 2 x i1>, i32)
80 define <vscale x 2 x half> @vfma_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %b, <vscale x 2 x half> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {
81 ; CHECK-LABEL: vfma_vv_nxv2f16:
83 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
84 ; CHECK-NEXT: vfmadd.vv v9, v8, v10, v0.t
85 ; CHECK-NEXT: vmv1r.v v8, v9
87 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %b, <vscale x 2 x half> %c, <vscale x 2 x i1> %m, i32 %evl)
88 ret <vscale x 2 x half> %v
91 define <vscale x 2 x half> @vfma_vv_nxv2f16_unmasked(<vscale x 2 x half> %va, <vscale x 2 x half> %b, <vscale x 2 x half> %c, i32 zeroext %evl) {
92 ; CHECK-LABEL: vfma_vv_nxv2f16_unmasked:
94 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
95 ; CHECK-NEXT: vfmadd.vv v8, v9, v10
97 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %b, <vscale x 2 x half> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)
98 ret <vscale x 2 x half> %v
101 define <vscale x 2 x half> @vfma_vf_nxv2f16(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
102 ; CHECK-LABEL: vfma_vf_nxv2f16:
104 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
105 ; CHECK-NEXT: vfmadd.vf v8, fa0, v9, v0.t
107 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
108 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
109 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 %evl)
110 ret <vscale x 2 x half> %v
113 define <vscale x 2 x half> @vfma_vf_nxv2f16_commute(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
114 ; CHECK-LABEL: vfma_vf_nxv2f16_commute:
116 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
117 ; CHECK-NEXT: vfmadd.vf v8, fa0, v9, v0.t
119 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
120 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
121 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x half> %va, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 %evl)
122 ret <vscale x 2 x half> %v
125 define <vscale x 2 x half> @vfma_vf_nxv2f16_unmasked(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, i32 zeroext %evl) {
126 ; CHECK-LABEL: vfma_vf_nxv2f16_unmasked:
128 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
129 ; CHECK-NEXT: vfmadd.vf v8, fa0, v9
131 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
132 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
133 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, <vscale x 2 x half> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
134 ret <vscale x 2 x half> %v
137 define <vscale x 2 x half> @vfma_vf_nxv2f16_unmasked_commute(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, i32 zeroext %evl) {
138 ; CHECK-LABEL: vfma_vf_nxv2f16_unmasked_commute:
140 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
141 ; CHECK-NEXT: vfmadd.vf v8, fa0, v9
143 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
144 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
145 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x half> %va, <vscale x 2 x half> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
146 ret <vscale x 2 x half> %v
149 declare <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half>, <vscale x 4 x half>, <vscale x 4 x half>, <vscale x 4 x i1>, i32)
151 define <vscale x 4 x half> @vfma_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %b, <vscale x 4 x half> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {
152 ; CHECK-LABEL: vfma_vv_nxv4f16:
154 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
155 ; CHECK-NEXT: vfmadd.vv v9, v8, v10, v0.t
156 ; CHECK-NEXT: vmv.v.v v8, v9
158 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %b, <vscale x 4 x half> %c, <vscale x 4 x i1> %m, i32 %evl)
159 ret <vscale x 4 x half> %v
162 define <vscale x 4 x half> @vfma_vv_nxv4f16_unmasked(<vscale x 4 x half> %va, <vscale x 4 x half> %b, <vscale x 4 x half> %c, i32 zeroext %evl) {
163 ; CHECK-LABEL: vfma_vv_nxv4f16_unmasked:
165 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
166 ; CHECK-NEXT: vfmadd.vv v8, v9, v10
168 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %b, <vscale x 4 x half> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)
169 ret <vscale x 4 x half> %v
172 define <vscale x 4 x half> @vfma_vf_nxv4f16(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
173 ; CHECK-LABEL: vfma_vf_nxv4f16:
175 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
176 ; CHECK-NEXT: vfmadd.vf v8, fa0, v9, v0.t
178 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
179 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
180 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 %evl)
181 ret <vscale x 4 x half> %v
184 define <vscale x 4 x half> @vfma_vf_nxv4f16_commute(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
185 ; CHECK-LABEL: vfma_vf_nxv4f16_commute:
187 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
188 ; CHECK-NEXT: vfmadd.vf v8, fa0, v9, v0.t
190 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
191 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
192 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x half> %va, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 %evl)
193 ret <vscale x 4 x half> %v
196 define <vscale x 4 x half> @vfma_vf_nxv4f16_unmasked(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, i32 zeroext %evl) {
197 ; CHECK-LABEL: vfma_vf_nxv4f16_unmasked:
199 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
200 ; CHECK-NEXT: vfmadd.vf v8, fa0, v9
202 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
203 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
204 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, <vscale x 4 x half> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
205 ret <vscale x 4 x half> %v
208 define <vscale x 4 x half> @vfma_vf_nxv4f16_unmasked_commute(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, i32 zeroext %evl) {
209 ; CHECK-LABEL: vfma_vf_nxv4f16_unmasked_commute:
211 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
212 ; CHECK-NEXT: vfmadd.vf v8, fa0, v9
214 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
215 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
216 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x half> %va, <vscale x 4 x half> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
217 ret <vscale x 4 x half> %v
220 declare <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x i1>, i32)
222 define <vscale x 8 x half> @vfma_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %b, <vscale x 8 x half> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {
223 ; CHECK-LABEL: vfma_vv_nxv8f16:
225 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
226 ; CHECK-NEXT: vfmadd.vv v10, v8, v12, v0.t
227 ; CHECK-NEXT: vmv.v.v v8, v10
229 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %b, <vscale x 8 x half> %c, <vscale x 8 x i1> %m, i32 %evl)
230 ret <vscale x 8 x half> %v
233 define <vscale x 8 x half> @vfma_vv_nxv8f16_unmasked(<vscale x 8 x half> %va, <vscale x 8 x half> %b, <vscale x 8 x half> %c, i32 zeroext %evl) {
234 ; CHECK-LABEL: vfma_vv_nxv8f16_unmasked:
236 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
237 ; CHECK-NEXT: vfmadd.vv v8, v10, v12
239 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %b, <vscale x 8 x half> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)
240 ret <vscale x 8 x half> %v
243 define <vscale x 8 x half> @vfma_vf_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
244 ; CHECK-LABEL: vfma_vf_nxv8f16:
246 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
247 ; CHECK-NEXT: vfmadd.vf v8, fa0, v10, v0.t
249 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
250 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
251 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 %evl)
252 ret <vscale x 8 x half> %v
255 define <vscale x 8 x half> @vfma_vf_nxv8f16_commute(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
256 ; CHECK-LABEL: vfma_vf_nxv8f16_commute:
258 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
259 ; CHECK-NEXT: vfmadd.vf v8, fa0, v10, v0.t
261 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
262 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
263 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %va, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 %evl)
264 ret <vscale x 8 x half> %v
267 define <vscale x 8 x half> @vfma_vf_nxv8f16_unmasked(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, i32 zeroext %evl) {
268 ; CHECK-LABEL: vfma_vf_nxv8f16_unmasked:
270 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
271 ; CHECK-NEXT: vfmadd.vf v8, fa0, v10
273 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
274 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
275 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, <vscale x 8 x half> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
276 ret <vscale x 8 x half> %v
279 define <vscale x 8 x half> @vfma_vf_nxv8f16_unmasked_commute(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, i32 zeroext %evl) {
280 ; CHECK-LABEL: vfma_vf_nxv8f16_unmasked_commute:
282 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
283 ; CHECK-NEXT: vfmadd.vf v8, fa0, v10
285 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
286 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
287 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %va, <vscale x 8 x half> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
288 ret <vscale x 8 x half> %v
291 declare <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half>, <vscale x 16 x half>, <vscale x 16 x half>, <vscale x 16 x i1>, i32)
293 define <vscale x 16 x half> @vfma_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %b, <vscale x 16 x half> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {
294 ; CHECK-LABEL: vfma_vv_nxv16f16:
296 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
297 ; CHECK-NEXT: vfmadd.vv v12, v8, v16, v0.t
298 ; CHECK-NEXT: vmv.v.v v8, v12
300 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %b, <vscale x 16 x half> %c, <vscale x 16 x i1> %m, i32 %evl)
301 ret <vscale x 16 x half> %v
304 define <vscale x 16 x half> @vfma_vv_nxv16f16_unmasked(<vscale x 16 x half> %va, <vscale x 16 x half> %b, <vscale x 16 x half> %c, i32 zeroext %evl) {
305 ; CHECK-LABEL: vfma_vv_nxv16f16_unmasked:
307 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
308 ; CHECK-NEXT: vfmadd.vv v8, v12, v16
310 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %b, <vscale x 16 x half> %c, <vscale x 16 x i1> splat (i1 true), i32 %evl)
311 ret <vscale x 16 x half> %v
314 define <vscale x 16 x half> @vfma_vf_nxv16f16(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {
315 ; CHECK-LABEL: vfma_vf_nxv16f16:
317 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
318 ; CHECK-NEXT: vfmadd.vf v8, fa0, v12, v0.t
320 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
321 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
322 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 %evl)
323 ret <vscale x 16 x half> %v
326 define <vscale x 16 x half> @vfma_vf_nxv16f16_commute(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {
327 ; CHECK-LABEL: vfma_vf_nxv16f16_commute:
329 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
330 ; CHECK-NEXT: vfmadd.vf v8, fa0, v12, v0.t
332 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
333 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
334 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x half> %va, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 %evl)
335 ret <vscale x 16 x half> %v
338 define <vscale x 16 x half> @vfma_vf_nxv16f16_unmasked(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, i32 zeroext %evl) {
339 ; CHECK-LABEL: vfma_vf_nxv16f16_unmasked:
341 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
342 ; CHECK-NEXT: vfmadd.vf v8, fa0, v12
344 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
345 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
346 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, <vscale x 16 x half> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
347 ret <vscale x 16 x half> %v
350 define <vscale x 16 x half> @vfma_vf_nxv16f16_unmasked_commute(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, i32 zeroext %evl) {
351 ; CHECK-LABEL: vfma_vf_nxv16f16_unmasked_commute:
353 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
354 ; CHECK-NEXT: vfmadd.vf v8, fa0, v12
356 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
357 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
358 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x half> %va, <vscale x 16 x half> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
359 ret <vscale x 16 x half> %v
362 declare <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half>, <vscale x 32 x half>, <vscale x 32 x half>, <vscale x 32 x i1>, i32)
364 define <vscale x 32 x half> @vfma_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %b, <vscale x 32 x half> %c, <vscale x 32 x i1> %m, i32 zeroext %evl) {
365 ; CHECK-LABEL: vfma_vv_nxv32f16:
367 ; CHECK-NEXT: vl8re16.v v24, (a0)
368 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
369 ; CHECK-NEXT: vfmadd.vv v16, v8, v24, v0.t
370 ; CHECK-NEXT: vmv.v.v v8, v16
372 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %b, <vscale x 32 x half> %c, <vscale x 32 x i1> %m, i32 %evl)
373 ret <vscale x 32 x half> %v
376 define <vscale x 32 x half> @vfma_vv_nxv32f16_unmasked(<vscale x 32 x half> %va, <vscale x 32 x half> %b, <vscale x 32 x half> %c, i32 zeroext %evl) {
377 ; CHECK-LABEL: vfma_vv_nxv32f16_unmasked:
379 ; CHECK-NEXT: vl8re16.v v24, (a0)
380 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
381 ; CHECK-NEXT: vfmadd.vv v8, v16, v24
383 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %b, <vscale x 32 x half> %c, <vscale x 32 x i1> splat (i1 true), i32 %evl)
384 ret <vscale x 32 x half> %v
387 define <vscale x 32 x half> @vfma_vf_nxv32f16(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 zeroext %evl) {
388 ; CHECK-LABEL: vfma_vf_nxv32f16:
390 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
391 ; CHECK-NEXT: vfmadd.vf v8, fa0, v16, v0.t
393 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
394 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
395 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 %evl)
396 ret <vscale x 32 x half> %v
399 define <vscale x 32 x half> @vfma_vf_nxv32f16_commute(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 zeroext %evl) {
400 ; CHECK-LABEL: vfma_vf_nxv32f16_commute:
402 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
403 ; CHECK-NEXT: vfmadd.vf v8, fa0, v16, v0.t
405 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
406 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
407 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x half> %va, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 %evl)
408 ret <vscale x 32 x half> %v
411 define <vscale x 32 x half> @vfma_vf_nxv32f16_unmasked(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, i32 zeroext %evl) {
412 ; CHECK-LABEL: vfma_vf_nxv32f16_unmasked:
414 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
415 ; CHECK-NEXT: vfmadd.vf v8, fa0, v16
417 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
418 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
419 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, <vscale x 32 x half> %vc, <vscale x 32 x i1> splat (i1 true), i32 %evl)
420 ret <vscale x 32 x half> %v
423 define <vscale x 32 x half> @vfma_vf_nxv32f16_unmasked_commute(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, i32 zeroext %evl) {
424 ; CHECK-LABEL: vfma_vf_nxv32f16_unmasked_commute:
426 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
427 ; CHECK-NEXT: vfmadd.vf v8, fa0, v16
429 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
430 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
431 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x half> %va, <vscale x 32 x half> %vc, <vscale x 32 x i1> splat (i1 true), i32 %evl)
432 ret <vscale x 32 x half> %v
435 declare <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float>, <vscale x 1 x float>, <vscale x 1 x float>, <vscale x 1 x i1>, i32)
437 define <vscale x 1 x float> @vfma_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %b, <vscale x 1 x float> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {
438 ; CHECK-LABEL: vfma_vv_nxv1f32:
440 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
441 ; CHECK-NEXT: vfmadd.vv v9, v8, v10, v0.t
442 ; CHECK-NEXT: vmv1r.v v8, v9
444 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %b, <vscale x 1 x float> %c, <vscale x 1 x i1> %m, i32 %evl)
445 ret <vscale x 1 x float> %v
448 define <vscale x 1 x float> @vfma_vv_nxv1f32_unmasked(<vscale x 1 x float> %va, <vscale x 1 x float> %b, <vscale x 1 x float> %c, i32 zeroext %evl) {
449 ; CHECK-LABEL: vfma_vv_nxv1f32_unmasked:
451 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
452 ; CHECK-NEXT: vfmadd.vv v8, v9, v10
454 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %b, <vscale x 1 x float> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)
455 ret <vscale x 1 x float> %v
458 define <vscale x 1 x float> @vfma_vf_nxv1f32(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
459 ; CHECK-LABEL: vfma_vf_nxv1f32:
461 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
462 ; CHECK-NEXT: vfmadd.vf v8, fa0, v9, v0.t
464 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
465 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
466 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 %evl)
467 ret <vscale x 1 x float> %v
470 define <vscale x 1 x float> @vfma_vf_nxv1f32_commute(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
471 ; CHECK-LABEL: vfma_vf_nxv1f32_commute:
473 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
474 ; CHECK-NEXT: vfmadd.vf v8, fa0, v9, v0.t
476 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
477 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
478 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x float> %va, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 %evl)
479 ret <vscale x 1 x float> %v
482 define <vscale x 1 x float> @vfma_vf_nxv1f32_unmasked(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, i32 zeroext %evl) {
483 ; CHECK-LABEL: vfma_vf_nxv1f32_unmasked:
485 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
486 ; CHECK-NEXT: vfmadd.vf v8, fa0, v9
488 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
489 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
490 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, <vscale x 1 x float> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
491 ret <vscale x 1 x float> %v
494 define <vscale x 1 x float> @vfma_vf_nxv1f32_unmasked_commute(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, i32 zeroext %evl) {
495 ; CHECK-LABEL: vfma_vf_nxv1f32_unmasked_commute:
497 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
498 ; CHECK-NEXT: vfmadd.vf v8, fa0, v9
500 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
501 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
502 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x float> %va, <vscale x 1 x float> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
503 ret <vscale x 1 x float> %v
506 declare <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float>, <vscale x 2 x float>, <vscale x 2 x float>, <vscale x 2 x i1>, i32)
508 define <vscale x 2 x float> @vfma_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %b, <vscale x 2 x float> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {
509 ; CHECK-LABEL: vfma_vv_nxv2f32:
511 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
512 ; CHECK-NEXT: vfmadd.vv v9, v8, v10, v0.t
513 ; CHECK-NEXT: vmv.v.v v8, v9
515 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %b, <vscale x 2 x float> %c, <vscale x 2 x i1> %m, i32 %evl)
516 ret <vscale x 2 x float> %v
519 define <vscale x 2 x float> @vfma_vv_nxv2f32_unmasked(<vscale x 2 x float> %va, <vscale x 2 x float> %b, <vscale x 2 x float> %c, i32 zeroext %evl) {
520 ; CHECK-LABEL: vfma_vv_nxv2f32_unmasked:
522 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
523 ; CHECK-NEXT: vfmadd.vv v8, v9, v10
525 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %b, <vscale x 2 x float> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)
526 ret <vscale x 2 x float> %v
529 define <vscale x 2 x float> @vfma_vf_nxv2f32(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
530 ; CHECK-LABEL: vfma_vf_nxv2f32:
532 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
533 ; CHECK-NEXT: vfmadd.vf v8, fa0, v9, v0.t
535 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
536 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
537 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 %evl)
538 ret <vscale x 2 x float> %v
541 define <vscale x 2 x float> @vfma_vf_nxv2f32_commute(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
542 ; CHECK-LABEL: vfma_vf_nxv2f32_commute:
544 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
545 ; CHECK-NEXT: vfmadd.vf v8, fa0, v9, v0.t
547 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
548 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
549 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x float> %va, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 %evl)
550 ret <vscale x 2 x float> %v
553 define <vscale x 2 x float> @vfma_vf_nxv2f32_unmasked(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, i32 zeroext %evl) {
554 ; CHECK-LABEL: vfma_vf_nxv2f32_unmasked:
556 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
557 ; CHECK-NEXT: vfmadd.vf v8, fa0, v9
559 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
560 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
561 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, <vscale x 2 x float> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
562 ret <vscale x 2 x float> %v
565 define <vscale x 2 x float> @vfma_vf_nxv2f32_unmasked_commute(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, i32 zeroext %evl) {
566 ; CHECK-LABEL: vfma_vf_nxv2f32_unmasked_commute:
568 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
569 ; CHECK-NEXT: vfmadd.vf v8, fa0, v9
571 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
572 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
573 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x float> %va, <vscale x 2 x float> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
574 ret <vscale x 2 x float> %v
577 declare <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x i1>, i32)
579 define <vscale x 4 x float> @vfma_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %b, <vscale x 4 x float> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {
580 ; CHECK-LABEL: vfma_vv_nxv4f32:
582 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
583 ; CHECK-NEXT: vfmadd.vv v10, v8, v12, v0.t
584 ; CHECK-NEXT: vmv.v.v v8, v10
586 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %b, <vscale x 4 x float> %c, <vscale x 4 x i1> %m, i32 %evl)
587 ret <vscale x 4 x float> %v
590 define <vscale x 4 x float> @vfma_vv_nxv4f32_unmasked(<vscale x 4 x float> %va, <vscale x 4 x float> %b, <vscale x 4 x float> %c, i32 zeroext %evl) {
591 ; CHECK-LABEL: vfma_vv_nxv4f32_unmasked:
593 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
594 ; CHECK-NEXT: vfmadd.vv v8, v10, v12
596 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %b, <vscale x 4 x float> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)
597 ret <vscale x 4 x float> %v
600 define <vscale x 4 x float> @vfma_vf_nxv4f32(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
601 ; CHECK-LABEL: vfma_vf_nxv4f32:
603 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
604 ; CHECK-NEXT: vfmadd.vf v8, fa0, v10, v0.t
606 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
607 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
608 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 %evl)
609 ret <vscale x 4 x float> %v
612 define <vscale x 4 x float> @vfma_vf_nxv4f32_commute(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
613 ; CHECK-LABEL: vfma_vf_nxv4f32_commute:
615 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
616 ; CHECK-NEXT: vfmadd.vf v8, fa0, v10, v0.t
618 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
619 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
620 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x float> %va, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 %evl)
621 ret <vscale x 4 x float> %v
624 define <vscale x 4 x float> @vfma_vf_nxv4f32_unmasked(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, i32 zeroext %evl) {
625 ; CHECK-LABEL: vfma_vf_nxv4f32_unmasked:
627 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
628 ; CHECK-NEXT: vfmadd.vf v8, fa0, v10
630 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
631 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
632 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, <vscale x 4 x float> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
633 ret <vscale x 4 x float> %v
636 define <vscale x 4 x float> @vfma_vf_nxv4f32_unmasked_commute(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, i32 zeroext %evl) {
637 ; CHECK-LABEL: vfma_vf_nxv4f32_unmasked_commute:
639 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
640 ; CHECK-NEXT: vfmadd.vf v8, fa0, v10
642 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
643 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
644 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x float> %va, <vscale x 4 x float> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
645 ret <vscale x 4 x float> %v
648 declare <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float>, <vscale x 8 x float>, <vscale x 8 x float>, <vscale x 8 x i1>, i32)
650 define <vscale x 8 x float> @vfma_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %b, <vscale x 8 x float> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {
651 ; CHECK-LABEL: vfma_vv_nxv8f32:
653 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
654 ; CHECK-NEXT: vfmadd.vv v12, v8, v16, v0.t
655 ; CHECK-NEXT: vmv.v.v v8, v12
657 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %b, <vscale x 8 x float> %c, <vscale x 8 x i1> %m, i32 %evl)
658 ret <vscale x 8 x float> %v
661 define <vscale x 8 x float> @vfma_vv_nxv8f32_unmasked(<vscale x 8 x float> %va, <vscale x 8 x float> %b, <vscale x 8 x float> %c, i32 zeroext %evl) {
662 ; CHECK-LABEL: vfma_vv_nxv8f32_unmasked:
664 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
665 ; CHECK-NEXT: vfmadd.vv v8, v12, v16
667 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %b, <vscale x 8 x float> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)
668 ret <vscale x 8 x float> %v
671 define <vscale x 8 x float> @vfma_vf_nxv8f32(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
672 ; CHECK-LABEL: vfma_vf_nxv8f32:
674 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
675 ; CHECK-NEXT: vfmadd.vf v8, fa0, v12, v0.t
677 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
678 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
679 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 %evl)
680 ret <vscale x 8 x float> %v
683 define <vscale x 8 x float> @vfma_vf_nxv8f32_commute(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
684 ; CHECK-LABEL: vfma_vf_nxv8f32_commute:
686 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
687 ; CHECK-NEXT: vfmadd.vf v8, fa0, v12, v0.t
689 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
690 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
691 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x float> %va, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 %evl)
692 ret <vscale x 8 x float> %v
695 define <vscale x 8 x float> @vfma_vf_nxv8f32_unmasked(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, i32 zeroext %evl) {
696 ; CHECK-LABEL: vfma_vf_nxv8f32_unmasked:
698 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
699 ; CHECK-NEXT: vfmadd.vf v8, fa0, v12
701 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
702 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
703 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, <vscale x 8 x float> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
704 ret <vscale x 8 x float> %v
707 define <vscale x 8 x float> @vfma_vf_nxv8f32_unmasked_commute(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, i32 zeroext %evl) {
708 ; CHECK-LABEL: vfma_vf_nxv8f32_unmasked_commute:
710 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
711 ; CHECK-NEXT: vfmadd.vf v8, fa0, v12
713 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
714 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
715 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x float> %va, <vscale x 8 x float> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
716 ret <vscale x 8 x float> %v
719 declare <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float>, <vscale x 16 x float>, <vscale x 16 x float>, <vscale x 16 x i1>, i32)
721 define <vscale x 16 x float> @vfma_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %b, <vscale x 16 x float> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {
722 ; CHECK-LABEL: vfma_vv_nxv16f32:
724 ; CHECK-NEXT: vl8re32.v v24, (a0)
725 ; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma
726 ; CHECK-NEXT: vfmadd.vv v16, v8, v24, v0.t
727 ; CHECK-NEXT: vmv.v.v v8, v16
729 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %b, <vscale x 16 x float> %c, <vscale x 16 x i1> %m, i32 %evl)
730 ret <vscale x 16 x float> %v
733 define <vscale x 16 x float> @vfma_vv_nxv16f32_unmasked(<vscale x 16 x float> %va, <vscale x 16 x float> %b, <vscale x 16 x float> %c, i32 zeroext %evl) {
734 ; CHECK-LABEL: vfma_vv_nxv16f32_unmasked:
736 ; CHECK-NEXT: vl8re32.v v24, (a0)
737 ; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma
738 ; CHECK-NEXT: vfmadd.vv v8, v16, v24
740 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %b, <vscale x 16 x float> %c, <vscale x 16 x i1> splat (i1 true), i32 %evl)
741 ret <vscale x 16 x float> %v
744 define <vscale x 16 x float> @vfma_vf_nxv16f32(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {
745 ; CHECK-LABEL: vfma_vf_nxv16f32:
747 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
748 ; CHECK-NEXT: vfmadd.vf v8, fa0, v16, v0.t
750 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
751 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
752 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 %evl)
753 ret <vscale x 16 x float> %v
756 define <vscale x 16 x float> @vfma_vf_nxv16f32_commute(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {
757 ; CHECK-LABEL: vfma_vf_nxv16f32_commute:
759 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
760 ; CHECK-NEXT: vfmadd.vf v8, fa0, v16, v0.t
762 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
763 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
764 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x float> %va, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 %evl)
765 ret <vscale x 16 x float> %v
768 define <vscale x 16 x float> @vfma_vf_nxv16f32_unmasked(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, i32 zeroext %evl) {
769 ; CHECK-LABEL: vfma_vf_nxv16f32_unmasked:
771 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
772 ; CHECK-NEXT: vfmadd.vf v8, fa0, v16
774 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
775 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
776 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, <vscale x 16 x float> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
777 ret <vscale x 16 x float> %v
780 define <vscale x 16 x float> @vfma_vf_nxv16f32_unmasked_commute(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, i32 zeroext %evl) {
781 ; CHECK-LABEL: vfma_vf_nxv16f32_unmasked_commute:
783 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
784 ; CHECK-NEXT: vfmadd.vf v8, fa0, v16
786 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
787 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
788 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x float> %va, <vscale x 16 x float> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
789 ret <vscale x 16 x float> %v
792 declare <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double>, <vscale x 1 x double>, <vscale x 1 x double>, <vscale x 1 x i1>, i32)
794 define <vscale x 1 x double> @vfma_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %b, <vscale x 1 x double> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {
795 ; CHECK-LABEL: vfma_vv_nxv1f64:
797 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
798 ; CHECK-NEXT: vfmadd.vv v9, v8, v10, v0.t
799 ; CHECK-NEXT: vmv.v.v v8, v9
801 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %b, <vscale x 1 x double> %c, <vscale x 1 x i1> %m, i32 %evl)
802 ret <vscale x 1 x double> %v
805 define <vscale x 1 x double> @vfma_vv_nxv1f64_unmasked(<vscale x 1 x double> %va, <vscale x 1 x double> %b, <vscale x 1 x double> %c, i32 zeroext %evl) {
806 ; CHECK-LABEL: vfma_vv_nxv1f64_unmasked:
808 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
809 ; CHECK-NEXT: vfmadd.vv v8, v9, v10
811 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %b, <vscale x 1 x double> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)
812 ret <vscale x 1 x double> %v
815 define <vscale x 1 x double> @vfma_vf_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
816 ; CHECK-LABEL: vfma_vf_nxv1f64:
818 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
819 ; CHECK-NEXT: vfmadd.vf v8, fa0, v9, v0.t
821 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
822 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
823 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 %evl)
824 ret <vscale x 1 x double> %v
827 define <vscale x 1 x double> @vfma_vf_nxv1f64_commute(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
828 ; CHECK-LABEL: vfma_vf_nxv1f64_commute:
830 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
831 ; CHECK-NEXT: vfmadd.vf v8, fa0, v9, v0.t
833 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
834 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
835 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %va, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 %evl)
836 ret <vscale x 1 x double> %v
839 define <vscale x 1 x double> @vfma_vf_nxv1f64_unmasked(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, i32 zeroext %evl) {
840 ; CHECK-LABEL: vfma_vf_nxv1f64_unmasked:
842 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
843 ; CHECK-NEXT: vfmadd.vf v8, fa0, v9
845 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
846 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
847 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, <vscale x 1 x double> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
848 ret <vscale x 1 x double> %v
851 define <vscale x 1 x double> @vfma_vf_nxv1f64_unmasked_commute(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, i32 zeroext %evl) {
852 ; CHECK-LABEL: vfma_vf_nxv1f64_unmasked_commute:
854 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
855 ; CHECK-NEXT: vfmadd.vf v8, fa0, v9
857 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
858 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
859 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %va, <vscale x 1 x double> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
860 ret <vscale x 1 x double> %v
863 declare <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x i1>, i32)
865 define <vscale x 2 x double> @vfma_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %b, <vscale x 2 x double> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {
866 ; CHECK-LABEL: vfma_vv_nxv2f64:
868 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
869 ; CHECK-NEXT: vfmadd.vv v10, v8, v12, v0.t
870 ; CHECK-NEXT: vmv.v.v v8, v10
872 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %b, <vscale x 2 x double> %c, <vscale x 2 x i1> %m, i32 %evl)
873 ret <vscale x 2 x double> %v
876 define <vscale x 2 x double> @vfma_vv_nxv2f64_unmasked(<vscale x 2 x double> %va, <vscale x 2 x double> %b, <vscale x 2 x double> %c, i32 zeroext %evl) {
877 ; CHECK-LABEL: vfma_vv_nxv2f64_unmasked:
879 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
880 ; CHECK-NEXT: vfmadd.vv v8, v10, v12
882 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %b, <vscale x 2 x double> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)
883 ret <vscale x 2 x double> %v
886 define <vscale x 2 x double> @vfma_vf_nxv2f64(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
887 ; CHECK-LABEL: vfma_vf_nxv2f64:
889 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
890 ; CHECK-NEXT: vfmadd.vf v8, fa0, v10, v0.t
892 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
893 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
894 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 %evl)
895 ret <vscale x 2 x double> %v
898 define <vscale x 2 x double> @vfma_vf_nxv2f64_commute(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
899 ; CHECK-LABEL: vfma_vf_nxv2f64_commute:
901 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
902 ; CHECK-NEXT: vfmadd.vf v8, fa0, v10, v0.t
904 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
905 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
906 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x double> %va, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 %evl)
907 ret <vscale x 2 x double> %v
910 define <vscale x 2 x double> @vfma_vf_nxv2f64_unmasked(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, i32 zeroext %evl) {
911 ; CHECK-LABEL: vfma_vf_nxv2f64_unmasked:
913 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
914 ; CHECK-NEXT: vfmadd.vf v8, fa0, v10
916 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
917 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
918 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, <vscale x 2 x double> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
919 ret <vscale x 2 x double> %v
922 define <vscale x 2 x double> @vfma_vf_nxv2f64_unmasked_commute(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, i32 zeroext %evl) {
923 ; CHECK-LABEL: vfma_vf_nxv2f64_unmasked_commute:
925 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
926 ; CHECK-NEXT: vfmadd.vf v8, fa0, v10
928 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
929 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
930 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x double> %va, <vscale x 2 x double> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
931 ret <vscale x 2 x double> %v
934 declare <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double>, <vscale x 4 x double>, <vscale x 4 x double>, <vscale x 4 x i1>, i32)
936 define <vscale x 4 x double> @vfma_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %b, <vscale x 4 x double> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {
937 ; CHECK-LABEL: vfma_vv_nxv4f64:
939 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
940 ; CHECK-NEXT: vfmadd.vv v12, v8, v16, v0.t
941 ; CHECK-NEXT: vmv.v.v v8, v12
943 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %b, <vscale x 4 x double> %c, <vscale x 4 x i1> %m, i32 %evl)
944 ret <vscale x 4 x double> %v
947 define <vscale x 4 x double> @vfma_vv_nxv4f64_unmasked(<vscale x 4 x double> %va, <vscale x 4 x double> %b, <vscale x 4 x double> %c, i32 zeroext %evl) {
948 ; CHECK-LABEL: vfma_vv_nxv4f64_unmasked:
950 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
951 ; CHECK-NEXT: vfmadd.vv v8, v12, v16
953 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %b, <vscale x 4 x double> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)
954 ret <vscale x 4 x double> %v
957 define <vscale x 4 x double> @vfma_vf_nxv4f64(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
958 ; CHECK-LABEL: vfma_vf_nxv4f64:
960 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
961 ; CHECK-NEXT: vfmadd.vf v8, fa0, v12, v0.t
963 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
964 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
965 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 %evl)
966 ret <vscale x 4 x double> %v
969 define <vscale x 4 x double> @vfma_vf_nxv4f64_commute(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
970 ; CHECK-LABEL: vfma_vf_nxv4f64_commute:
972 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
973 ; CHECK-NEXT: vfmadd.vf v8, fa0, v12, v0.t
975 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
976 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
977 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x double> %va, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 %evl)
978 ret <vscale x 4 x double> %v
981 define <vscale x 4 x double> @vfma_vf_nxv4f64_unmasked(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, i32 zeroext %evl) {
982 ; CHECK-LABEL: vfma_vf_nxv4f64_unmasked:
984 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
985 ; CHECK-NEXT: vfmadd.vf v8, fa0, v12
987 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
988 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
989 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, <vscale x 4 x double> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
990 ret <vscale x 4 x double> %v
993 define <vscale x 4 x double> @vfma_vf_nxv4f64_unmasked_commute(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, i32 zeroext %evl) {
994 ; CHECK-LABEL: vfma_vf_nxv4f64_unmasked_commute:
996 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
997 ; CHECK-NEXT: vfmadd.vf v8, fa0, v12
999 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
1000 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
1001 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x double> %va, <vscale x 4 x double> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
1002 ret <vscale x 4 x double> %v
1005 declare <vscale x 7 x double> @llvm.vp.fmuladd.nxv7f64(<vscale x 7 x double>, <vscale x 7 x double>, <vscale x 7 x double>, <vscale x 7 x i1>, i32)
1007 define <vscale x 7 x double> @vfma_vv_nxv7f64(<vscale x 7 x double> %va, <vscale x 7 x double> %b, <vscale x 7 x double> %c, <vscale x 7 x i1> %m, i32 zeroext %evl) {
1008 ; CHECK-LABEL: vfma_vv_nxv7f64:
1010 ; CHECK-NEXT: vl8re64.v v24, (a0)
1011 ; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma
1012 ; CHECK-NEXT: vfmadd.vv v16, v8, v24, v0.t
1013 ; CHECK-NEXT: vmv.v.v v8, v16
1015 %v = call <vscale x 7 x double> @llvm.vp.fmuladd.nxv7f64(<vscale x 7 x double> %va, <vscale x 7 x double> %b, <vscale x 7 x double> %c, <vscale x 7 x i1> %m, i32 %evl)
1016 ret <vscale x 7 x double> %v
1019 define <vscale x 7 x double> @vfma_vv_nxv7f64_unmasked(<vscale x 7 x double> %va, <vscale x 7 x double> %b, <vscale x 7 x double> %c, i32 zeroext %evl) {
1020 ; CHECK-LABEL: vfma_vv_nxv7f64_unmasked:
1022 ; CHECK-NEXT: vl8re64.v v24, (a0)
1023 ; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma
1024 ; CHECK-NEXT: vfmadd.vv v8, v16, v24
1026 %v = call <vscale x 7 x double> @llvm.vp.fmuladd.nxv7f64(<vscale x 7 x double> %va, <vscale x 7 x double> %b, <vscale x 7 x double> %c, <vscale x 7 x i1> splat (i1 true), i32 %evl)
1027 ret <vscale x 7 x double> %v
1030 declare <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double>, <vscale x 8 x double>, <vscale x 8 x double>, <vscale x 8 x i1>, i32)
1032 define <vscale x 8 x double> @vfma_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %b, <vscale x 8 x double> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1033 ; CHECK-LABEL: vfma_vv_nxv8f64:
1035 ; CHECK-NEXT: vl8re64.v v24, (a0)
1036 ; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma
1037 ; CHECK-NEXT: vfmadd.vv v16, v8, v24, v0.t
1038 ; CHECK-NEXT: vmv.v.v v8, v16
1040 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %b, <vscale x 8 x double> %c, <vscale x 8 x i1> %m, i32 %evl)
1041 ret <vscale x 8 x double> %v
1044 define <vscale x 8 x double> @vfma_vv_nxv8f64_unmasked(<vscale x 8 x double> %va, <vscale x 8 x double> %b, <vscale x 8 x double> %c, i32 zeroext %evl) {
1045 ; CHECK-LABEL: vfma_vv_nxv8f64_unmasked:
1047 ; CHECK-NEXT: vl8re64.v v24, (a0)
1048 ; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma
1049 ; CHECK-NEXT: vfmadd.vv v8, v16, v24
1051 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %b, <vscale x 8 x double> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)
1052 ret <vscale x 8 x double> %v
1055 define <vscale x 8 x double> @vfma_vf_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1056 ; CHECK-LABEL: vfma_vf_nxv8f64:
1058 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1059 ; CHECK-NEXT: vfmadd.vf v8, fa0, v16, v0.t
1061 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
1062 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
1063 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 %evl)
1064 ret <vscale x 8 x double> %v
1067 define <vscale x 8 x double> @vfma_vf_nxv8f64_commute(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1068 ; CHECK-LABEL: vfma_vf_nxv8f64_commute:
1070 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1071 ; CHECK-NEXT: vfmadd.vf v8, fa0, v16, v0.t
1073 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
1074 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
1075 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %va, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 %evl)
1076 ret <vscale x 8 x double> %v
1079 define <vscale x 8 x double> @vfma_vf_nxv8f64_unmasked(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, i32 zeroext %evl) {
1080 ; CHECK-LABEL: vfma_vf_nxv8f64_unmasked:
1082 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1083 ; CHECK-NEXT: vfmadd.vf v8, fa0, v16
1085 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
1086 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
1087 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, <vscale x 8 x double> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
1088 ret <vscale x 8 x double> %v
1091 define <vscale x 8 x double> @vfma_vf_nxv8f64_unmasked_commute(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, i32 zeroext %evl) {
1092 ; CHECK-LABEL: vfma_vf_nxv8f64_unmasked_commute:
1094 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1095 ; CHECK-NEXT: vfmadd.vf v8, fa0, v16
1097 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
1098 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
1099 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %va, <vscale x 8 x double> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
1100 ret <vscale x 8 x double> %v
1103 declare <vscale x 16 x double> @llvm.vp.fmuladd.nxv16f64(<vscale x 16 x double>, <vscale x 16 x double>, <vscale x 16 x double>, <vscale x 16 x i1>, i32)
1105 define <vscale x 16 x double> @vfma_vv_nxv16f64(<vscale x 16 x double> %va, <vscale x 16 x double> %b, <vscale x 16 x double> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {
1106 ; CHECK-LABEL: vfma_vv_nxv16f64:
1108 ; CHECK-NEXT: addi sp, sp, -16
1109 ; CHECK-NEXT: .cfi_def_cfa_offset 16
1110 ; CHECK-NEXT: csrr a1, vlenb
1111 ; CHECK-NEXT: li a3, 48
1112 ; CHECK-NEXT: mul a1, a1, a3
1113 ; CHECK-NEXT: sub sp, sp, a1
1114 ; CHECK-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x30, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 48 * vlenb
1115 ; CHECK-NEXT: vsetvli a1, zero, e8, mf4, ta, ma
1116 ; CHECK-NEXT: vmv1r.v v7, v0
1117 ; CHECK-NEXT: csrr a1, vlenb
1118 ; CHECK-NEXT: li a3, 24
1119 ; CHECK-NEXT: mul a1, a1, a3
1120 ; CHECK-NEXT: add a1, sp, a1
1121 ; CHECK-NEXT: addi a1, a1, 16
1122 ; CHECK-NEXT: vs8r.v v16, (a1) # Unknown-size Folded Spill
1123 ; CHECK-NEXT: csrr a1, vlenb
1124 ; CHECK-NEXT: slli a1, a1, 5
1125 ; CHECK-NEXT: add a1, sp, a1
1126 ; CHECK-NEXT: addi a1, a1, 16
1127 ; CHECK-NEXT: vs8r.v v8, (a1) # Unknown-size Folded Spill
1128 ; CHECK-NEXT: csrr a1, vlenb
1129 ; CHECK-NEXT: srli a3, a1, 3
1130 ; CHECK-NEXT: slli a5, a1, 3
1131 ; CHECK-NEXT: sub a6, a4, a1
1132 ; CHECK-NEXT: add a7, a2, a5
1133 ; CHECK-NEXT: add a5, a0, a5
1134 ; CHECK-NEXT: vl8re64.v v8, (a7)
1135 ; CHECK-NEXT: csrr a7, vlenb
1136 ; CHECK-NEXT: slli a7, a7, 3
1137 ; CHECK-NEXT: add a7, sp, a7
1138 ; CHECK-NEXT: addi a7, a7, 16
1139 ; CHECK-NEXT: vs8r.v v8, (a7) # Unknown-size Folded Spill
1140 ; CHECK-NEXT: sltu a7, a4, a6
1141 ; CHECK-NEXT: addi a7, a7, -1
1142 ; CHECK-NEXT: vl8re64.v v8, (a5)
1143 ; CHECK-NEXT: csrr a5, vlenb
1144 ; CHECK-NEXT: li t0, 40
1145 ; CHECK-NEXT: mul a5, a5, t0
1146 ; CHECK-NEXT: add a5, sp, a5
1147 ; CHECK-NEXT: addi a5, a5, 16
1148 ; CHECK-NEXT: vs8r.v v8, (a5) # Unknown-size Folded Spill
1149 ; CHECK-NEXT: vl8re64.v v8, (a2)
1150 ; CHECK-NEXT: csrr a2, vlenb
1151 ; CHECK-NEXT: slli a2, a2, 4
1152 ; CHECK-NEXT: add a2, sp, a2
1153 ; CHECK-NEXT: addi a2, a2, 16
1154 ; CHECK-NEXT: vs8r.v v8, (a2) # Unknown-size Folded Spill
1155 ; CHECK-NEXT: vl8re64.v v8, (a0)
1156 ; CHECK-NEXT: addi a0, sp, 16
1157 ; CHECK-NEXT: vs8r.v v8, (a0) # Unknown-size Folded Spill
1158 ; CHECK-NEXT: vslidedown.vx v0, v0, a3
1159 ; CHECK-NEXT: and a0, a7, a6
1160 ; CHECK-NEXT: csrr a2, vlenb
1161 ; CHECK-NEXT: li a3, 24
1162 ; CHECK-NEXT: mul a2, a2, a3
1163 ; CHECK-NEXT: add a2, sp, a2
1164 ; CHECK-NEXT: addi a2, a2, 16
1165 ; CHECK-NEXT: vl8r.v v24, (a2) # Unknown-size Folded Reload
1166 ; CHECK-NEXT: csrr a2, vlenb
1167 ; CHECK-NEXT: slli a2, a2, 3
1168 ; CHECK-NEXT: add a2, sp, a2
1169 ; CHECK-NEXT: addi a2, a2, 16
1170 ; CHECK-NEXT: vl8r.v v16, (a2) # Unknown-size Folded Reload
1171 ; CHECK-NEXT: csrr a2, vlenb
1172 ; CHECK-NEXT: li a3, 40
1173 ; CHECK-NEXT: mul a2, a2, a3
1174 ; CHECK-NEXT: add a2, sp, a2
1175 ; CHECK-NEXT: addi a2, a2, 16
1176 ; CHECK-NEXT: vl8r.v v8, (a2) # Unknown-size Folded Reload
1177 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1178 ; CHECK-NEXT: vfmadd.vv v8, v24, v16, v0.t
1179 ; CHECK-NEXT: csrr a0, vlenb
1180 ; CHECK-NEXT: li a2, 40
1181 ; CHECK-NEXT: mul a0, a0, a2
1182 ; CHECK-NEXT: add a0, sp, a0
1183 ; CHECK-NEXT: addi a0, a0, 16
1184 ; CHECK-NEXT: vs8r.v v8, (a0) # Unknown-size Folded Spill
1185 ; CHECK-NEXT: bltu a4, a1, .LBB92_2
1186 ; CHECK-NEXT: # %bb.1:
1187 ; CHECK-NEXT: mv a4, a1
1188 ; CHECK-NEXT: .LBB92_2:
1189 ; CHECK-NEXT: vmv1r.v v0, v7
1190 ; CHECK-NEXT: csrr a0, vlenb
1191 ; CHECK-NEXT: slli a0, a0, 5
1192 ; CHECK-NEXT: add a0, sp, a0
1193 ; CHECK-NEXT: addi a0, a0, 16
1194 ; CHECK-NEXT: vl8r.v v24, (a0) # Unknown-size Folded Reload
1195 ; CHECK-NEXT: csrr a0, vlenb
1196 ; CHECK-NEXT: slli a0, a0, 4
1197 ; CHECK-NEXT: add a0, sp, a0
1198 ; CHECK-NEXT: addi a0, a0, 16
1199 ; CHECK-NEXT: vl8r.v v16, (a0) # Unknown-size Folded Reload
1200 ; CHECK-NEXT: addi a0, sp, 16
1201 ; CHECK-NEXT: vl8r.v v8, (a0) # Unknown-size Folded Reload
1202 ; CHECK-NEXT: vsetvli zero, a4, e64, m8, ta, ma
1203 ; CHECK-NEXT: vfmadd.vv v8, v24, v16, v0.t
1204 ; CHECK-NEXT: csrr a0, vlenb
1205 ; CHECK-NEXT: li a1, 40
1206 ; CHECK-NEXT: mul a0, a0, a1
1207 ; CHECK-NEXT: add a0, sp, a0
1208 ; CHECK-NEXT: addi a0, a0, 16
1209 ; CHECK-NEXT: vl8r.v v16, (a0) # Unknown-size Folded Reload
1210 ; CHECK-NEXT: csrr a0, vlenb
1211 ; CHECK-NEXT: li a1, 48
1212 ; CHECK-NEXT: mul a0, a0, a1
1213 ; CHECK-NEXT: add sp, sp, a0
1214 ; CHECK-NEXT: .cfi_def_cfa sp, 16
1215 ; CHECK-NEXT: addi sp, sp, 16
1216 ; CHECK-NEXT: .cfi_def_cfa_offset 0
1218 %v = call <vscale x 16 x double> @llvm.vp.fmuladd.nxv16f64(<vscale x 16 x double> %va, <vscale x 16 x double> %b, <vscale x 16 x double> %c, <vscale x 16 x i1> %m, i32 %evl)
1219 ret <vscale x 16 x double> %v
1222 define <vscale x 16 x double> @vfma_vv_nxv16f64_unmasked(<vscale x 16 x double> %va, <vscale x 16 x double> %b, <vscale x 16 x double> %c, i32 zeroext %evl) {
1223 ; CHECK-LABEL: vfma_vv_nxv16f64_unmasked:
1225 ; CHECK-NEXT: addi sp, sp, -16
1226 ; CHECK-NEXT: .cfi_def_cfa_offset 16
1227 ; CHECK-NEXT: csrr a1, vlenb
1228 ; CHECK-NEXT: slli a1, a1, 5
1229 ; CHECK-NEXT: sub sp, sp, a1
1230 ; CHECK-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x20, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 32 * vlenb
1231 ; CHECK-NEXT: csrr a1, vlenb
1232 ; CHECK-NEXT: slli a1, a1, 4
1233 ; CHECK-NEXT: add a1, sp, a1
1234 ; CHECK-NEXT: addi a1, a1, 16
1235 ; CHECK-NEXT: vs8r.v v16, (a1) # Unknown-size Folded Spill
1236 ; CHECK-NEXT: csrr a1, vlenb
1237 ; CHECK-NEXT: li a3, 24
1238 ; CHECK-NEXT: mul a1, a1, a3
1239 ; CHECK-NEXT: add a1, sp, a1
1240 ; CHECK-NEXT: addi a1, a1, 16
1241 ; CHECK-NEXT: vs8r.v v8, (a1) # Unknown-size Folded Spill
1242 ; CHECK-NEXT: csrr a1, vlenb
1243 ; CHECK-NEXT: slli a3, a1, 3
1244 ; CHECK-NEXT: add a5, a2, a3
1245 ; CHECK-NEXT: vl8re64.v v8, (a5)
1246 ; CHECK-NEXT: csrr a5, vlenb
1247 ; CHECK-NEXT: slli a5, a5, 3
1248 ; CHECK-NEXT: add a5, sp, a5
1249 ; CHECK-NEXT: addi a5, a5, 16
1250 ; CHECK-NEXT: vs8r.v v8, (a5) # Unknown-size Folded Spill
1251 ; CHECK-NEXT: sub a5, a4, a1
1252 ; CHECK-NEXT: add a3, a0, a3
1253 ; CHECK-NEXT: vl8re64.v v24, (a3)
1254 ; CHECK-NEXT: sltu a3, a4, a5
1255 ; CHECK-NEXT: vl8re64.v v8, (a2)
1256 ; CHECK-NEXT: addi a2, sp, 16
1257 ; CHECK-NEXT: vs8r.v v8, (a2) # Unknown-size Folded Spill
1258 ; CHECK-NEXT: vl8re64.v v0, (a0)
1259 ; CHECK-NEXT: addi a3, a3, -1
1260 ; CHECK-NEXT: and a3, a3, a5
1261 ; CHECK-NEXT: csrr a0, vlenb
1262 ; CHECK-NEXT: slli a0, a0, 4
1263 ; CHECK-NEXT: add a0, sp, a0
1264 ; CHECK-NEXT: addi a0, a0, 16
1265 ; CHECK-NEXT: vl8r.v v16, (a0) # Unknown-size Folded Reload
1266 ; CHECK-NEXT: csrr a0, vlenb
1267 ; CHECK-NEXT: slli a0, a0, 3
1268 ; CHECK-NEXT: add a0, sp, a0
1269 ; CHECK-NEXT: addi a0, a0, 16
1270 ; CHECK-NEXT: vl8r.v v8, (a0) # Unknown-size Folded Reload
1271 ; CHECK-NEXT: vsetvli zero, a3, e64, m8, ta, ma
1272 ; CHECK-NEXT: vfmadd.vv v24, v16, v8
1273 ; CHECK-NEXT: bltu a4, a1, .LBB93_2
1274 ; CHECK-NEXT: # %bb.1:
1275 ; CHECK-NEXT: mv a4, a1
1276 ; CHECK-NEXT: .LBB93_2:
1277 ; CHECK-NEXT: csrr a0, vlenb
1278 ; CHECK-NEXT: li a1, 24
1279 ; CHECK-NEXT: mul a0, a0, a1
1280 ; CHECK-NEXT: add a0, sp, a0
1281 ; CHECK-NEXT: addi a0, a0, 16
1282 ; CHECK-NEXT: vl8r.v v16, (a0) # Unknown-size Folded Reload
1283 ; CHECK-NEXT: addi a0, sp, 16
1284 ; CHECK-NEXT: vl8r.v v8, (a0) # Unknown-size Folded Reload
1285 ; CHECK-NEXT: vsetvli zero, a4, e64, m8, ta, ma
1286 ; CHECK-NEXT: vfmadd.vv v0, v16, v8
1287 ; CHECK-NEXT: vmv.v.v v8, v0
1288 ; CHECK-NEXT: vmv8r.v v16, v24
1289 ; CHECK-NEXT: csrr a0, vlenb
1290 ; CHECK-NEXT: slli a0, a0, 5
1291 ; CHECK-NEXT: add sp, sp, a0
1292 ; CHECK-NEXT: .cfi_def_cfa sp, 16
1293 ; CHECK-NEXT: addi sp, sp, 16
1294 ; CHECK-NEXT: .cfi_def_cfa_offset 0
1296 %v = call <vscale x 16 x double> @llvm.vp.fmuladd.nxv16f64(<vscale x 16 x double> %va, <vscale x 16 x double> %b, <vscale x 16 x double> %c, <vscale x 16 x i1> splat (i1 true), i32 %evl)
1297 ret <vscale x 16 x double> %v
1300 declare <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half>, <vscale x 1 x i1>, i32)
1302 define <vscale x 1 x half> @vfmsub_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %b, <vscale x 1 x half> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1303 ; CHECK-LABEL: vfmsub_vv_nxv1f16:
1305 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1306 ; CHECK-NEXT: vfmsub.vv v9, v8, v10, v0.t
1307 ; CHECK-NEXT: vmv1r.v v8, v9
1309 %negc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %c, <vscale x 1 x i1> %m, i32 %evl)
1310 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %b, <vscale x 1 x half> %negc, <vscale x 1 x i1> %m, i32 %evl)
1311 ret <vscale x 1 x half> %v
1314 define <vscale x 1 x half> @vfmsub_vv_nxv1f16_unmasked(<vscale x 1 x half> %va, <vscale x 1 x half> %b, <vscale x 1 x half> %c, i32 zeroext %evl) {
1315 ; CHECK-LABEL: vfmsub_vv_nxv1f16_unmasked:
1317 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1318 ; CHECK-NEXT: vfmsub.vv v8, v9, v10
1320 %negc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1321 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %b, <vscale x 1 x half> %negc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1322 ret <vscale x 1 x half> %v
1325 define <vscale x 1 x half> @vfmsub_vf_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1326 ; CHECK-LABEL: vfmsub_vf_nxv1f16:
1328 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1329 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9, v0.t
1331 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1332 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1333 %negvc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 %evl)
1334 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, <vscale x 1 x half> %negvc, <vscale x 1 x i1> %m, i32 %evl)
1335 ret <vscale x 1 x half> %v
1338 define <vscale x 1 x half> @vfmsub_vf_nxv1f16_commute(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1339 ; CHECK-LABEL: vfmsub_vf_nxv1f16_commute:
1341 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1342 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9, v0.t
1344 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1345 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1346 %negvc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 %evl)
1347 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %va, <vscale x 1 x half> %negvc, <vscale x 1 x i1> %m, i32 %evl)
1348 ret <vscale x 1 x half> %v
1351 define <vscale x 1 x half> @vfmsub_vf_nxv1f16_unmasked(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, i32 zeroext %evl) {
1352 ; CHECK-LABEL: vfmsub_vf_nxv1f16_unmasked:
1354 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1355 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9
1357 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1358 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1359 %negvc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1360 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, <vscale x 1 x half> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1361 ret <vscale x 1 x half> %v
1364 define <vscale x 1 x half> @vfmsub_vf_nxv1f16_unmasked_commute(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, i32 zeroext %evl) {
1365 ; CHECK-LABEL: vfmsub_vf_nxv1f16_unmasked_commute:
1367 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1368 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9
1370 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1371 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1372 %negvc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1373 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %va, <vscale x 1 x half> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1374 ret <vscale x 1 x half> %v
1377 define <vscale x 1 x half> @vfnmadd_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %b, <vscale x 1 x half> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1378 ; CHECK-LABEL: vfnmadd_vv_nxv1f16:
1380 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1381 ; CHECK-NEXT: vfnmadd.vv v9, v8, v10, v0.t
1382 ; CHECK-NEXT: vmv1r.v v8, v9
1384 %negb = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %b, <vscale x 1 x i1> %m, i32 %evl)
1385 %negc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %c, <vscale x 1 x i1> %m, i32 %evl)
1386 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %negb, <vscale x 1 x half> %negc, <vscale x 1 x i1> %m, i32 %evl)
1387 ret <vscale x 1 x half> %v
1390 define <vscale x 1 x half> @vfnmadd_vv_nxv1f16_commuted(<vscale x 1 x half> %va, <vscale x 1 x half> %b, <vscale x 1 x half> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1391 ; CHECK-LABEL: vfnmadd_vv_nxv1f16_commuted:
1393 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1394 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10, v0.t
1396 %negb = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %b, <vscale x 1 x i1> %m, i32 %evl)
1397 %negc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %c, <vscale x 1 x i1> %m, i32 %evl)
1398 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %negb, <vscale x 1 x half> %va, <vscale x 1 x half> %negc, <vscale x 1 x i1> %m, i32 %evl)
1399 ret <vscale x 1 x half> %v
1402 define <vscale x 1 x half> @vfnmadd_vv_nxv1f16_unmasked(<vscale x 1 x half> %va, <vscale x 1 x half> %b, <vscale x 1 x half> %c, i32 zeroext %evl) {
1403 ; CHECK-LABEL: vfnmadd_vv_nxv1f16_unmasked:
1405 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1406 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
1408 %negb = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1409 %negc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1410 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %negb, <vscale x 1 x half> %negc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1411 ret <vscale x 1 x half> %v
1414 define <vscale x 1 x half> @vfnmadd_vv_nxv1f16_unmasked_commuted(<vscale x 1 x half> %va, <vscale x 1 x half> %b, <vscale x 1 x half> %c, i32 zeroext %evl) {
1415 ; CHECK-LABEL: vfnmadd_vv_nxv1f16_unmasked_commuted:
1417 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1418 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
1420 %negb = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1421 %negc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1422 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %negb, <vscale x 1 x half> %va, <vscale x 1 x half> %negc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1423 ret <vscale x 1 x half> %v
1426 define <vscale x 1 x half> @vfnmadd_vf_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1427 ; CHECK-LABEL: vfnmadd_vf_nxv1f16:
1429 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1430 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
1432 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1433 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1434 %negva = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x i1> %m, i32 %evl)
1435 %negvc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 %evl)
1436 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %negva, <vscale x 1 x half> %vb, <vscale x 1 x half> %negvc, <vscale x 1 x i1> %m, i32 %evl)
1437 ret <vscale x 1 x half> %v
1440 define <vscale x 1 x half> @vfnmadd_vf_nxv1f16_commute(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1441 ; CHECK-LABEL: vfnmadd_vf_nxv1f16_commute:
1443 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1444 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
1446 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1447 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1448 %negva = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x i1> %m, i32 %evl)
1449 %negvc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 %evl)
1450 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %negva, <vscale x 1 x half> %negvc, <vscale x 1 x i1> %m, i32 %evl)
1451 ret <vscale x 1 x half> %v
1454 define <vscale x 1 x half> @vfnmadd_vf_nxv1f16_unmasked(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, i32 zeroext %evl) {
1455 ; CHECK-LABEL: vfnmadd_vf_nxv1f16_unmasked:
1457 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1458 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
1460 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1461 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1462 %negva = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1463 %negvc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1464 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %negva, <vscale x 1 x half> %vb, <vscale x 1 x half> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1465 ret <vscale x 1 x half> %v
1468 define <vscale x 1 x half> @vfnmadd_vf_nxv1f16_unmasked_commute(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, i32 zeroext %evl) {
1469 ; CHECK-LABEL: vfnmadd_vf_nxv1f16_unmasked_commute:
1471 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1472 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
1474 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1475 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1476 %negva = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1477 %negvc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1478 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %negva, <vscale x 1 x half> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1479 ret <vscale x 1 x half> %v
1482 define <vscale x 1 x half> @vfnmadd_vf_nxv1f16_neg_splat(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1483 ; CHECK-LABEL: vfnmadd_vf_nxv1f16_neg_splat:
1485 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1486 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
1488 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1489 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1490 %negvb = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x i1> %m, i32 %evl)
1491 %negvc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 %evl)
1492 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %negvb, <vscale x 1 x half> %negvc, <vscale x 1 x i1> %m, i32 %evl)
1493 ret <vscale x 1 x half> %v
1496 define <vscale x 1 x half> @vfnmadd_vf_nxv1f16_neg_splat_commute(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1497 ; CHECK-LABEL: vfnmadd_vf_nxv1f16_neg_splat_commute:
1499 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1500 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
1502 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1503 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1504 %negvb = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x i1> %m, i32 %evl)
1505 %negvc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 %evl)
1506 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %negvb, <vscale x 1 x half> %va, <vscale x 1 x half> %negvc, <vscale x 1 x i1> %m, i32 %evl)
1507 ret <vscale x 1 x half> %v
1510 define <vscale x 1 x half> @vfnmadd_vf_nxv1f16_neg_splat_unmasked(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, i32 zeroext %evl) {
1511 ; CHECK-LABEL: vfnmadd_vf_nxv1f16_neg_splat_unmasked:
1513 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1514 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
1516 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1517 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1518 %negvb = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1519 %negvc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1520 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %negvb, <vscale x 1 x half> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1521 ret <vscale x 1 x half> %v
1524 define <vscale x 1 x half> @vfnmadd_vf_nxv1f16_neg_splat_unmasked_commute(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, i32 zeroext %evl) {
1525 ; CHECK-LABEL: vfnmadd_vf_nxv1f16_neg_splat_unmasked_commute:
1527 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1528 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
1530 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1531 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1532 %negvb = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1533 %negvc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1534 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %negvb, <vscale x 1 x half> %va, <vscale x 1 x half> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1535 ret <vscale x 1 x half> %v
1538 define <vscale x 1 x half> @vfnmsub_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %b, <vscale x 1 x half> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1539 ; CHECK-LABEL: vfnmsub_vv_nxv1f16:
1541 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1542 ; CHECK-NEXT: vfnmadd.vv v9, v8, v10, v0.t
1543 ; CHECK-NEXT: vmv1r.v v8, v9
1545 %negb = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %b, <vscale x 1 x i1> %m, i32 %evl)
1546 %negc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %c, <vscale x 1 x i1> %m, i32 %evl)
1547 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %negb, <vscale x 1 x half> %negc, <vscale x 1 x i1> %m, i32 %evl)
1548 ret <vscale x 1 x half> %v
1551 define <vscale x 1 x half> @vfnmsub_vv_nxv1f16_commuted(<vscale x 1 x half> %va, <vscale x 1 x half> %b, <vscale x 1 x half> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1552 ; CHECK-LABEL: vfnmsub_vv_nxv1f16_commuted:
1554 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1555 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10, v0.t
1557 %negb = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %b, <vscale x 1 x i1> %m, i32 %evl)
1558 %negc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %c, <vscale x 1 x i1> %m, i32 %evl)
1559 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %negb, <vscale x 1 x half> %va, <vscale x 1 x half> %negc, <vscale x 1 x i1> %m, i32 %evl)
1560 ret <vscale x 1 x half> %v
1563 define <vscale x 1 x half> @vfnmsub_vv_nxv1f16_unmasked(<vscale x 1 x half> %va, <vscale x 1 x half> %b, <vscale x 1 x half> %c, i32 zeroext %evl) {
1564 ; CHECK-LABEL: vfnmsub_vv_nxv1f16_unmasked:
1566 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1567 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
1569 %negb = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1570 %negc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1571 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %negb, <vscale x 1 x half> %negc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1572 ret <vscale x 1 x half> %v
1575 define <vscale x 1 x half> @vfnmsub_vv_nxv1f16_unmasked_commuted(<vscale x 1 x half> %va, <vscale x 1 x half> %b, <vscale x 1 x half> %c, i32 zeroext %evl) {
1576 ; CHECK-LABEL: vfnmsub_vv_nxv1f16_unmasked_commuted:
1578 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1579 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
1581 %negb = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1582 %negc = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1583 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %negb, <vscale x 1 x half> %va, <vscale x 1 x half> %negc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1584 ret <vscale x 1 x half> %v
1587 define <vscale x 1 x half> @vfnmsub_vf_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1588 ; CHECK-LABEL: vfnmsub_vf_nxv1f16:
1590 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1591 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
1593 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1594 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1595 %negva = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x i1> %m, i32 %evl)
1596 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %negva, <vscale x 1 x half> %vb, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 %evl)
1597 ret <vscale x 1 x half> %v
1600 define <vscale x 1 x half> @vfnmsub_vf_nxv1f16_commute(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1601 ; CHECK-LABEL: vfnmsub_vf_nxv1f16_commute:
1603 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1604 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
1606 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1607 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1608 %negva = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x i1> %m, i32 %evl)
1609 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %negva, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 %evl)
1610 ret <vscale x 1 x half> %v
1613 define <vscale x 1 x half> @vfnmsub_vf_nxv1f16_unmasked(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, i32 zeroext %evl) {
1614 ; CHECK-LABEL: vfnmsub_vf_nxv1f16_unmasked:
1616 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1617 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
1619 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1620 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1621 %negva = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1622 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %negva, <vscale x 1 x half> %vb, <vscale x 1 x half> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1623 ret <vscale x 1 x half> %v
1626 define <vscale x 1 x half> @vfnmsub_vf_nxv1f16_unmasked_commute(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, i32 zeroext %evl) {
1627 ; CHECK-LABEL: vfnmsub_vf_nxv1f16_unmasked_commute:
1629 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1630 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
1632 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1633 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1634 %negva = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1635 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %negva, <vscale x 1 x half> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1636 ret <vscale x 1 x half> %v
1639 define <vscale x 1 x half> @vfnmsub_vf_nxv1f16_neg_splat(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1640 ; CHECK-LABEL: vfnmsub_vf_nxv1f16_neg_splat:
1642 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1643 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
1645 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1646 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1647 %negvb = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x i1> %m, i32 %evl)
1648 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %negvb, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 %evl)
1649 ret <vscale x 1 x half> %v
1652 define <vscale x 1 x half> @vfnmsub_vf_nxv1f16_neg_splat_commute(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1653 ; CHECK-LABEL: vfnmsub_vf_nxv1f16_neg_splat_commute:
1655 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1656 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
1658 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1659 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1660 %negvb = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x i1> %m, i32 %evl)
1661 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %negvb, <vscale x 1 x half> %va, <vscale x 1 x half> %vc, <vscale x 1 x i1> %m, i32 %evl)
1662 ret <vscale x 1 x half> %v
1665 define <vscale x 1 x half> @vfnmsub_vf_nxv1f16_neg_splat_unmasked(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, i32 zeroext %evl) {
1666 ; CHECK-LABEL: vfnmsub_vf_nxv1f16_neg_splat_unmasked:
1668 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1669 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
1671 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1672 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1673 %negvb = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1674 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %negvb, <vscale x 1 x half> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1675 ret <vscale x 1 x half> %v
1678 define <vscale x 1 x half> @vfnmsub_vf_nxv1f16_neg_splat_unmasked_commute(<vscale x 1 x half> %va, half %b, <vscale x 1 x half> %vc, i32 zeroext %evl) {
1679 ; CHECK-LABEL: vfnmsub_vf_nxv1f16_neg_splat_unmasked_commute:
1681 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1682 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
1684 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1685 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1686 %negvb = call <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1687 %v = call <vscale x 1 x half> @llvm.vp.fmuladd.nxv1f16(<vscale x 1 x half> %negvb, <vscale x 1 x half> %va, <vscale x 1 x half> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1688 ret <vscale x 1 x half> %v
1691 declare <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half>, <vscale x 2 x i1>, i32)
1693 define <vscale x 2 x half> @vfmsub_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %b, <vscale x 2 x half> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1694 ; CHECK-LABEL: vfmsub_vv_nxv2f16:
1696 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1697 ; CHECK-NEXT: vfmsub.vv v9, v8, v10, v0.t
1698 ; CHECK-NEXT: vmv1r.v v8, v9
1700 %negc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %c, <vscale x 2 x i1> %m, i32 %evl)
1701 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %b, <vscale x 2 x half> %negc, <vscale x 2 x i1> %m, i32 %evl)
1702 ret <vscale x 2 x half> %v
1705 define <vscale x 2 x half> @vfmsub_vv_nxv2f16_unmasked(<vscale x 2 x half> %va, <vscale x 2 x half> %b, <vscale x 2 x half> %c, i32 zeroext %evl) {
1706 ; CHECK-LABEL: vfmsub_vv_nxv2f16_unmasked:
1708 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1709 ; CHECK-NEXT: vfmsub.vv v8, v9, v10
1711 %negc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1712 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %b, <vscale x 2 x half> %negc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1713 ret <vscale x 2 x half> %v
1716 define <vscale x 2 x half> @vfmsub_vf_nxv2f16(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1717 ; CHECK-LABEL: vfmsub_vf_nxv2f16:
1719 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1720 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9, v0.t
1722 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1723 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1724 %negvc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 %evl)
1725 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, <vscale x 2 x half> %negvc, <vscale x 2 x i1> %m, i32 %evl)
1726 ret <vscale x 2 x half> %v
1729 define <vscale x 2 x half> @vfmsub_vf_nxv2f16_commute(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1730 ; CHECK-LABEL: vfmsub_vf_nxv2f16_commute:
1732 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1733 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9, v0.t
1735 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1736 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1737 %negvc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 %evl)
1738 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x half> %va, <vscale x 2 x half> %negvc, <vscale x 2 x i1> %m, i32 %evl)
1739 ret <vscale x 2 x half> %v
1742 define <vscale x 2 x half> @vfmsub_vf_nxv2f16_unmasked(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, i32 zeroext %evl) {
1743 ; CHECK-LABEL: vfmsub_vf_nxv2f16_unmasked:
1745 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1746 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9
1748 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1749 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1750 %negvc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1751 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, <vscale x 2 x half> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1752 ret <vscale x 2 x half> %v
1755 define <vscale x 2 x half> @vfmsub_vf_nxv2f16_unmasked_commute(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, i32 zeroext %evl) {
1756 ; CHECK-LABEL: vfmsub_vf_nxv2f16_unmasked_commute:
1758 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1759 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9
1761 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1762 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1763 %negvc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1764 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x half> %va, <vscale x 2 x half> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1765 ret <vscale x 2 x half> %v
1768 define <vscale x 2 x half> @vfnmadd_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %b, <vscale x 2 x half> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1769 ; CHECK-LABEL: vfnmadd_vv_nxv2f16:
1771 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1772 ; CHECK-NEXT: vfnmadd.vv v9, v8, v10, v0.t
1773 ; CHECK-NEXT: vmv1r.v v8, v9
1775 %negb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %b, <vscale x 2 x i1> %m, i32 %evl)
1776 %negc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %c, <vscale x 2 x i1> %m, i32 %evl)
1777 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %negb, <vscale x 2 x half> %negc, <vscale x 2 x i1> %m, i32 %evl)
1778 ret <vscale x 2 x half> %v
1781 define <vscale x 2 x half> @vfnmadd_vv_nxv2f16_commuted(<vscale x 2 x half> %va, <vscale x 2 x half> %b, <vscale x 2 x half> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1782 ; CHECK-LABEL: vfnmadd_vv_nxv2f16_commuted:
1784 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1785 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10, v0.t
1787 %negb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %b, <vscale x 2 x i1> %m, i32 %evl)
1788 %negc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %c, <vscale x 2 x i1> %m, i32 %evl)
1789 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %negb, <vscale x 2 x half> %va, <vscale x 2 x half> %negc, <vscale x 2 x i1> %m, i32 %evl)
1790 ret <vscale x 2 x half> %v
1793 define <vscale x 2 x half> @vfnmadd_vv_nxv2f16_unmasked(<vscale x 2 x half> %va, <vscale x 2 x half> %b, <vscale x 2 x half> %c, i32 zeroext %evl) {
1794 ; CHECK-LABEL: vfnmadd_vv_nxv2f16_unmasked:
1796 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1797 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
1799 %negb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1800 %negc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1801 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %negb, <vscale x 2 x half> %negc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1802 ret <vscale x 2 x half> %v
1805 define <vscale x 2 x half> @vfnmadd_vv_nxv2f16_unmasked_commuted(<vscale x 2 x half> %va, <vscale x 2 x half> %b, <vscale x 2 x half> %c, i32 zeroext %evl) {
1806 ; CHECK-LABEL: vfnmadd_vv_nxv2f16_unmasked_commuted:
1808 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1809 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
1811 %negb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1812 %negc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1813 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %negb, <vscale x 2 x half> %va, <vscale x 2 x half> %negc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1814 ret <vscale x 2 x half> %v
1817 define <vscale x 2 x half> @vfnmadd_vf_nxv2f16(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1818 ; CHECK-LABEL: vfnmadd_vf_nxv2f16:
1820 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1821 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
1823 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1824 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1825 %negva = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x i1> %m, i32 %evl)
1826 %negvc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 %evl)
1827 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %negva, <vscale x 2 x half> %vb, <vscale x 2 x half> %negvc, <vscale x 2 x i1> %m, i32 %evl)
1828 ret <vscale x 2 x half> %v
1831 define <vscale x 2 x half> @vfnmadd_vf_nxv2f16_commute(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1832 ; CHECK-LABEL: vfnmadd_vf_nxv2f16_commute:
1834 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1835 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
1837 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1838 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1839 %negva = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x i1> %m, i32 %evl)
1840 %negvc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 %evl)
1841 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x half> %negva, <vscale x 2 x half> %negvc, <vscale x 2 x i1> %m, i32 %evl)
1842 ret <vscale x 2 x half> %v
1845 define <vscale x 2 x half> @vfnmadd_vf_nxv2f16_unmasked(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, i32 zeroext %evl) {
1846 ; CHECK-LABEL: vfnmadd_vf_nxv2f16_unmasked:
1848 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1849 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
1851 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1852 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1853 %negva = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1854 %negvc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1855 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %negva, <vscale x 2 x half> %vb, <vscale x 2 x half> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1856 ret <vscale x 2 x half> %v
1859 define <vscale x 2 x half> @vfnmadd_vf_nxv2f16_unmasked_commute(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, i32 zeroext %evl) {
1860 ; CHECK-LABEL: vfnmadd_vf_nxv2f16_unmasked_commute:
1862 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1863 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
1865 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1866 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1867 %negva = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1868 %negvc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1869 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x half> %negva, <vscale x 2 x half> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1870 ret <vscale x 2 x half> %v
1873 define <vscale x 2 x half> @vfnmadd_vf_nxv2f16_neg_splat(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1874 ; CHECK-LABEL: vfnmadd_vf_nxv2f16_neg_splat:
1876 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1877 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
1879 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1880 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1881 %negvb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x i1> %m, i32 %evl)
1882 %negvc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 %evl)
1883 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %negvb, <vscale x 2 x half> %negvc, <vscale x 2 x i1> %m, i32 %evl)
1884 ret <vscale x 2 x half> %v
1887 define <vscale x 2 x half> @vfnmadd_vf_nxv2f16_neg_splat_commute(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1888 ; CHECK-LABEL: vfnmadd_vf_nxv2f16_neg_splat_commute:
1890 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1891 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
1893 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1894 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1895 %negvb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x i1> %m, i32 %evl)
1896 %negvc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 %evl)
1897 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %negvb, <vscale x 2 x half> %va, <vscale x 2 x half> %negvc, <vscale x 2 x i1> %m, i32 %evl)
1898 ret <vscale x 2 x half> %v
1901 define <vscale x 2 x half> @vfnmadd_vf_nxv2f16_neg_splat_unmasked(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, i32 zeroext %evl) {
1902 ; CHECK-LABEL: vfnmadd_vf_nxv2f16_neg_splat_unmasked:
1904 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1905 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
1907 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1908 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1909 %negvb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1910 %negvc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1911 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %negvb, <vscale x 2 x half> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1912 ret <vscale x 2 x half> %v
1915 define <vscale x 2 x half> @vfnmadd_vf_nxv2f16_neg_splat_unmasked_commute(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, i32 zeroext %evl) {
1916 ; CHECK-LABEL: vfnmadd_vf_nxv2f16_neg_splat_unmasked_commute:
1918 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1919 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
1921 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1922 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1923 %negvb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1924 %negvc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1925 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %negvb, <vscale x 2 x half> %va, <vscale x 2 x half> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1926 ret <vscale x 2 x half> %v
1929 define <vscale x 2 x half> @vfnmsub_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %b, <vscale x 2 x half> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1930 ; CHECK-LABEL: vfnmsub_vv_nxv2f16:
1932 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1933 ; CHECK-NEXT: vfnmadd.vv v9, v8, v10, v0.t
1934 ; CHECK-NEXT: vmv1r.v v8, v9
1936 %negb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %b, <vscale x 2 x i1> %m, i32 %evl)
1937 %negc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %c, <vscale x 2 x i1> %m, i32 %evl)
1938 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %negb, <vscale x 2 x half> %negc, <vscale x 2 x i1> %m, i32 %evl)
1939 ret <vscale x 2 x half> %v
1942 define <vscale x 2 x half> @vfnmsub_vv_nxv2f16_commuted(<vscale x 2 x half> %va, <vscale x 2 x half> %b, <vscale x 2 x half> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1943 ; CHECK-LABEL: vfnmsub_vv_nxv2f16_commuted:
1945 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1946 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10, v0.t
1948 %negb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %b, <vscale x 2 x i1> %m, i32 %evl)
1949 %negc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %c, <vscale x 2 x i1> %m, i32 %evl)
1950 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %negb, <vscale x 2 x half> %va, <vscale x 2 x half> %negc, <vscale x 2 x i1> %m, i32 %evl)
1951 ret <vscale x 2 x half> %v
1954 define <vscale x 2 x half> @vfnmsub_vv_nxv2f16_unmasked(<vscale x 2 x half> %va, <vscale x 2 x half> %b, <vscale x 2 x half> %c, i32 zeroext %evl) {
1955 ; CHECK-LABEL: vfnmsub_vv_nxv2f16_unmasked:
1957 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1958 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
1960 %negb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1961 %negc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1962 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %negb, <vscale x 2 x half> %negc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1963 ret <vscale x 2 x half> %v
1966 define <vscale x 2 x half> @vfnmsub_vv_nxv2f16_unmasked_commuted(<vscale x 2 x half> %va, <vscale x 2 x half> %b, <vscale x 2 x half> %c, i32 zeroext %evl) {
1967 ; CHECK-LABEL: vfnmsub_vv_nxv2f16_unmasked_commuted:
1969 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1970 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
1972 %negb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1973 %negc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1974 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %negb, <vscale x 2 x half> %va, <vscale x 2 x half> %negc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1975 ret <vscale x 2 x half> %v
1978 define <vscale x 2 x half> @vfnmsub_vf_nxv2f16(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1979 ; CHECK-LABEL: vfnmsub_vf_nxv2f16:
1981 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1982 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
1984 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1985 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1986 %negva = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x i1> %m, i32 %evl)
1987 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %negva, <vscale x 2 x half> %vb, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 %evl)
1988 ret <vscale x 2 x half> %v
1991 define <vscale x 2 x half> @vfnmsub_vf_nxv2f16_commute(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1992 ; CHECK-LABEL: vfnmsub_vf_nxv2f16_commute:
1994 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1995 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
1997 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1998 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1999 %negva = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x i1> %m, i32 %evl)
2000 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x half> %negva, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 %evl)
2001 ret <vscale x 2 x half> %v
2004 define <vscale x 2 x half> @vfnmsub_vf_nxv2f16_unmasked(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, i32 zeroext %evl) {
2005 ; CHECK-LABEL: vfnmsub_vf_nxv2f16_unmasked:
2007 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
2008 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
2010 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
2011 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
2012 %negva = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x i1> splat (i1 true), i32 %evl)
2013 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %negva, <vscale x 2 x half> %vb, <vscale x 2 x half> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
2014 ret <vscale x 2 x half> %v
2017 define <vscale x 2 x half> @vfnmsub_vf_nxv2f16_unmasked_commute(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, i32 zeroext %evl) {
2018 ; CHECK-LABEL: vfnmsub_vf_nxv2f16_unmasked_commute:
2020 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
2021 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
2023 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
2024 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
2025 %negva = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x i1> splat (i1 true), i32 %evl)
2026 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x half> %negva, <vscale x 2 x half> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
2027 ret <vscale x 2 x half> %v
2030 define <vscale x 2 x half> @vfnmsub_vf_nxv2f16_neg_splat(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
2031 ; CHECK-LABEL: vfnmsub_vf_nxv2f16_neg_splat:
2033 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
2034 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
2036 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
2037 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
2038 %negvb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x i1> %m, i32 %evl)
2039 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %negvb, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 %evl)
2040 ret <vscale x 2 x half> %v
2043 define <vscale x 2 x half> @vfnmsub_vf_nxv2f16_neg_splat_commute(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
2044 ; CHECK-LABEL: vfnmsub_vf_nxv2f16_neg_splat_commute:
2046 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
2047 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
2049 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
2050 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
2051 %negvb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x i1> %m, i32 %evl)
2052 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %negvb, <vscale x 2 x half> %va, <vscale x 2 x half> %vc, <vscale x 2 x i1> %m, i32 %evl)
2053 ret <vscale x 2 x half> %v
2056 define <vscale x 2 x half> @vfnmsub_vf_nxv2f16_neg_splat_unmasked(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, i32 zeroext %evl) {
2057 ; CHECK-LABEL: vfnmsub_vf_nxv2f16_neg_splat_unmasked:
2059 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
2060 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
2062 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
2063 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
2064 %negvb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)
2065 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %negvb, <vscale x 2 x half> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
2066 ret <vscale x 2 x half> %v
2069 define <vscale x 2 x half> @vfnmsub_vf_nxv2f16_neg_splat_unmasked_commute(<vscale x 2 x half> %va, half %b, <vscale x 2 x half> %vc, i32 zeroext %evl) {
2070 ; CHECK-LABEL: vfnmsub_vf_nxv2f16_neg_splat_unmasked_commute:
2072 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
2073 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
2075 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
2076 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
2077 %negvb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)
2078 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %negvb, <vscale x 2 x half> %va, <vscale x 2 x half> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
2079 ret <vscale x 2 x half> %v
2082 declare <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half>, <vscale x 4 x i1>, i32)
2084 define <vscale x 4 x half> @vfmsub_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %b, <vscale x 4 x half> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {
2085 ; CHECK-LABEL: vfmsub_vv_nxv4f16:
2087 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2088 ; CHECK-NEXT: vfmsub.vv v9, v8, v10, v0.t
2089 ; CHECK-NEXT: vmv.v.v v8, v9
2091 %negc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %c, <vscale x 4 x i1> %m, i32 %evl)
2092 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %b, <vscale x 4 x half> %negc, <vscale x 4 x i1> %m, i32 %evl)
2093 ret <vscale x 4 x half> %v
2096 define <vscale x 4 x half> @vfmsub_vv_nxv4f16_unmasked(<vscale x 4 x half> %va, <vscale x 4 x half> %b, <vscale x 4 x half> %c, i32 zeroext %evl) {
2097 ; CHECK-LABEL: vfmsub_vv_nxv4f16_unmasked:
2099 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2100 ; CHECK-NEXT: vfmsub.vv v8, v9, v10
2102 %negc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2103 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %b, <vscale x 4 x half> %negc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2104 ret <vscale x 4 x half> %v
2107 define <vscale x 4 x half> @vfmsub_vf_nxv4f16(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
2108 ; CHECK-LABEL: vfmsub_vf_nxv4f16:
2110 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2111 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9, v0.t
2113 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
2114 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
2115 %negvc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 %evl)
2116 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, <vscale x 4 x half> %negvc, <vscale x 4 x i1> %m, i32 %evl)
2117 ret <vscale x 4 x half> %v
2120 define <vscale x 4 x half> @vfmsub_vf_nxv4f16_commute(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
2121 ; CHECK-LABEL: vfmsub_vf_nxv4f16_commute:
2123 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2124 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9, v0.t
2126 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
2127 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
2128 %negvc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 %evl)
2129 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x half> %va, <vscale x 4 x half> %negvc, <vscale x 4 x i1> %m, i32 %evl)
2130 ret <vscale x 4 x half> %v
2133 define <vscale x 4 x half> @vfmsub_vf_nxv4f16_unmasked(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, i32 zeroext %evl) {
2134 ; CHECK-LABEL: vfmsub_vf_nxv4f16_unmasked:
2136 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2137 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9
2139 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
2140 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
2141 %negvc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2142 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, <vscale x 4 x half> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2143 ret <vscale x 4 x half> %v
2146 define <vscale x 4 x half> @vfmsub_vf_nxv4f16_unmasked_commute(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, i32 zeroext %evl) {
2147 ; CHECK-LABEL: vfmsub_vf_nxv4f16_unmasked_commute:
2149 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2150 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9
2152 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
2153 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
2154 %negvc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2155 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x half> %va, <vscale x 4 x half> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2156 ret <vscale x 4 x half> %v
2159 define <vscale x 4 x half> @vfnmadd_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %b, <vscale x 4 x half> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {
2160 ; CHECK-LABEL: vfnmadd_vv_nxv4f16:
2162 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2163 ; CHECK-NEXT: vfnmadd.vv v9, v8, v10, v0.t
2164 ; CHECK-NEXT: vmv.v.v v8, v9
2166 %negb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %b, <vscale x 4 x i1> %m, i32 %evl)
2167 %negc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %c, <vscale x 4 x i1> %m, i32 %evl)
2168 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %negb, <vscale x 4 x half> %negc, <vscale x 4 x i1> %m, i32 %evl)
2169 ret <vscale x 4 x half> %v
2172 define <vscale x 4 x half> @vfnmadd_vv_nxv4f16_commuted(<vscale x 4 x half> %va, <vscale x 4 x half> %b, <vscale x 4 x half> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {
2173 ; CHECK-LABEL: vfnmadd_vv_nxv4f16_commuted:
2175 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2176 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10, v0.t
2178 %negb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %b, <vscale x 4 x i1> %m, i32 %evl)
2179 %negc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %c, <vscale x 4 x i1> %m, i32 %evl)
2180 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %negb, <vscale x 4 x half> %va, <vscale x 4 x half> %negc, <vscale x 4 x i1> %m, i32 %evl)
2181 ret <vscale x 4 x half> %v
2184 define <vscale x 4 x half> @vfnmadd_vv_nxv4f16_unmasked(<vscale x 4 x half> %va, <vscale x 4 x half> %b, <vscale x 4 x half> %c, i32 zeroext %evl) {
2185 ; CHECK-LABEL: vfnmadd_vv_nxv4f16_unmasked:
2187 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2188 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
2190 %negb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2191 %negc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2192 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %negb, <vscale x 4 x half> %negc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2193 ret <vscale x 4 x half> %v
2196 define <vscale x 4 x half> @vfnmadd_vv_nxv4f16_unmasked_commuted(<vscale x 4 x half> %va, <vscale x 4 x half> %b, <vscale x 4 x half> %c, i32 zeroext %evl) {
2197 ; CHECK-LABEL: vfnmadd_vv_nxv4f16_unmasked_commuted:
2199 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2200 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
2202 %negb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2203 %negc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2204 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %negb, <vscale x 4 x half> %va, <vscale x 4 x half> %negc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2205 ret <vscale x 4 x half> %v
2208 define <vscale x 4 x half> @vfnmadd_vf_nxv4f16(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
2209 ; CHECK-LABEL: vfnmadd_vf_nxv4f16:
2211 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2212 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
2214 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
2215 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
2216 %negva = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x i1> %m, i32 %evl)
2217 %negvc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 %evl)
2218 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %negva, <vscale x 4 x half> %vb, <vscale x 4 x half> %negvc, <vscale x 4 x i1> %m, i32 %evl)
2219 ret <vscale x 4 x half> %v
2222 define <vscale x 4 x half> @vfnmadd_vf_nxv4f16_commute(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
2223 ; CHECK-LABEL: vfnmadd_vf_nxv4f16_commute:
2225 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2226 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
2228 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
2229 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
2230 %negva = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x i1> %m, i32 %evl)
2231 %negvc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 %evl)
2232 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x half> %negva, <vscale x 4 x half> %negvc, <vscale x 4 x i1> %m, i32 %evl)
2233 ret <vscale x 4 x half> %v
2236 define <vscale x 4 x half> @vfnmadd_vf_nxv4f16_unmasked(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, i32 zeroext %evl) {
2237 ; CHECK-LABEL: vfnmadd_vf_nxv4f16_unmasked:
2239 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2240 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
2242 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
2243 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
2244 %negva = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2245 %negvc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2246 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %negva, <vscale x 4 x half> %vb, <vscale x 4 x half> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2247 ret <vscale x 4 x half> %v
2250 define <vscale x 4 x half> @vfnmadd_vf_nxv4f16_unmasked_commute(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, i32 zeroext %evl) {
2251 ; CHECK-LABEL: vfnmadd_vf_nxv4f16_unmasked_commute:
2253 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2254 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
2256 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
2257 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
2258 %negva = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2259 %negvc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2260 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x half> %negva, <vscale x 4 x half> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2261 ret <vscale x 4 x half> %v
2264 define <vscale x 4 x half> @vfnmadd_vf_nxv4f16_neg_splat(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
2265 ; CHECK-LABEL: vfnmadd_vf_nxv4f16_neg_splat:
2267 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2268 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
2270 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
2271 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
2272 %negvb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x i1> %m, i32 %evl)
2273 %negvc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 %evl)
2274 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %negvb, <vscale x 4 x half> %negvc, <vscale x 4 x i1> %m, i32 %evl)
2275 ret <vscale x 4 x half> %v
2278 define <vscale x 4 x half> @vfnmadd_vf_nxv4f16_neg_splat_commute(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
2279 ; CHECK-LABEL: vfnmadd_vf_nxv4f16_neg_splat_commute:
2281 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2282 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
2284 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
2285 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
2286 %negvb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x i1> %m, i32 %evl)
2287 %negvc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 %evl)
2288 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %negvb, <vscale x 4 x half> %va, <vscale x 4 x half> %negvc, <vscale x 4 x i1> %m, i32 %evl)
2289 ret <vscale x 4 x half> %v
2292 define <vscale x 4 x half> @vfnmadd_vf_nxv4f16_neg_splat_unmasked(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, i32 zeroext %evl) {
2293 ; CHECK-LABEL: vfnmadd_vf_nxv4f16_neg_splat_unmasked:
2295 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2296 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
2298 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
2299 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
2300 %negvb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2301 %negvc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2302 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %negvb, <vscale x 4 x half> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2303 ret <vscale x 4 x half> %v
2306 define <vscale x 4 x half> @vfnmadd_vf_nxv4f16_neg_splat_unmasked_commute(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, i32 zeroext %evl) {
2307 ; CHECK-LABEL: vfnmadd_vf_nxv4f16_neg_splat_unmasked_commute:
2309 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2310 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
2312 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
2313 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
2314 %negvb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2315 %negvc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2316 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %negvb, <vscale x 4 x half> %va, <vscale x 4 x half> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2317 ret <vscale x 4 x half> %v
2320 define <vscale x 4 x half> @vfnmsub_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %b, <vscale x 4 x half> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {
2321 ; CHECK-LABEL: vfnmsub_vv_nxv4f16:
2323 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2324 ; CHECK-NEXT: vfnmadd.vv v9, v8, v10, v0.t
2325 ; CHECK-NEXT: vmv.v.v v8, v9
2327 %negb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %b, <vscale x 4 x i1> %m, i32 %evl)
2328 %negc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %c, <vscale x 4 x i1> %m, i32 %evl)
2329 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %negb, <vscale x 4 x half> %negc, <vscale x 4 x i1> %m, i32 %evl)
2330 ret <vscale x 4 x half> %v
2333 define <vscale x 4 x half> @vfnmsub_vv_nxv4f16_commuted(<vscale x 4 x half> %va, <vscale x 4 x half> %b, <vscale x 4 x half> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {
2334 ; CHECK-LABEL: vfnmsub_vv_nxv4f16_commuted:
2336 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2337 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10, v0.t
2339 %negb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %b, <vscale x 4 x i1> %m, i32 %evl)
2340 %negc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %c, <vscale x 4 x i1> %m, i32 %evl)
2341 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %negb, <vscale x 4 x half> %va, <vscale x 4 x half> %negc, <vscale x 4 x i1> %m, i32 %evl)
2342 ret <vscale x 4 x half> %v
2345 define <vscale x 4 x half> @vfnmsub_vv_nxv4f16_unmasked(<vscale x 4 x half> %va, <vscale x 4 x half> %b, <vscale x 4 x half> %c, i32 zeroext %evl) {
2346 ; CHECK-LABEL: vfnmsub_vv_nxv4f16_unmasked:
2348 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2349 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
2351 %negb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2352 %negc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2353 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %negb, <vscale x 4 x half> %negc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2354 ret <vscale x 4 x half> %v
2357 define <vscale x 4 x half> @vfnmsub_vv_nxv4f16_unmasked_commuted(<vscale x 4 x half> %va, <vscale x 4 x half> %b, <vscale x 4 x half> %c, i32 zeroext %evl) {
2358 ; CHECK-LABEL: vfnmsub_vv_nxv4f16_unmasked_commuted:
2360 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2361 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
2363 %negb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2364 %negc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2365 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %negb, <vscale x 4 x half> %va, <vscale x 4 x half> %negc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2366 ret <vscale x 4 x half> %v
2369 define <vscale x 4 x half> @vfnmsub_vf_nxv4f16(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
2370 ; CHECK-LABEL: vfnmsub_vf_nxv4f16:
2372 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2373 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
2375 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
2376 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
2377 %negva = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x i1> %m, i32 %evl)
2378 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %negva, <vscale x 4 x half> %vb, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 %evl)
2379 ret <vscale x 4 x half> %v
2382 define <vscale x 4 x half> @vfnmsub_vf_nxv4f16_commute(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
2383 ; CHECK-LABEL: vfnmsub_vf_nxv4f16_commute:
2385 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2386 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
2388 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
2389 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
2390 %negva = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x i1> %m, i32 %evl)
2391 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x half> %negva, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 %evl)
2392 ret <vscale x 4 x half> %v
2395 define <vscale x 4 x half> @vfnmsub_vf_nxv4f16_unmasked(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, i32 zeroext %evl) {
2396 ; CHECK-LABEL: vfnmsub_vf_nxv4f16_unmasked:
2398 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2399 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
2401 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
2402 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
2403 %negva = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2404 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %negva, <vscale x 4 x half> %vb, <vscale x 4 x half> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2405 ret <vscale x 4 x half> %v
2408 define <vscale x 4 x half> @vfnmsub_vf_nxv4f16_unmasked_commute(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, i32 zeroext %evl) {
2409 ; CHECK-LABEL: vfnmsub_vf_nxv4f16_unmasked_commute:
2411 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2412 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
2414 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
2415 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
2416 %negva = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2417 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x half> %negva, <vscale x 4 x half> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2418 ret <vscale x 4 x half> %v
2421 define <vscale x 4 x half> @vfnmsub_vf_nxv4f16_neg_splat(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
2422 ; CHECK-LABEL: vfnmsub_vf_nxv4f16_neg_splat:
2424 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2425 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
2427 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
2428 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
2429 %negvb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x i1> %m, i32 %evl)
2430 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %negvb, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 %evl)
2431 ret <vscale x 4 x half> %v
2434 define <vscale x 4 x half> @vfnmsub_vf_nxv4f16_neg_splat_commute(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
2435 ; CHECK-LABEL: vfnmsub_vf_nxv4f16_neg_splat_commute:
2437 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2438 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
2440 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
2441 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
2442 %negvb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x i1> %m, i32 %evl)
2443 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %negvb, <vscale x 4 x half> %va, <vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 %evl)
2444 ret <vscale x 4 x half> %v
2447 define <vscale x 4 x half> @vfnmsub_vf_nxv4f16_neg_splat_unmasked(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, i32 zeroext %evl) {
2448 ; CHECK-LABEL: vfnmsub_vf_nxv4f16_neg_splat_unmasked:
2450 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2451 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
2453 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
2454 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
2455 %negvb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2456 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %negvb, <vscale x 4 x half> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2457 ret <vscale x 4 x half> %v
2460 define <vscale x 4 x half> @vfnmsub_vf_nxv4f16_neg_splat_unmasked_commute(<vscale x 4 x half> %va, half %b, <vscale x 4 x half> %vc, i32 zeroext %evl) {
2461 ; CHECK-LABEL: vfnmsub_vf_nxv4f16_neg_splat_unmasked_commute:
2463 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2464 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
2466 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
2467 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
2468 %negvb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2469 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %negvb, <vscale x 4 x half> %va, <vscale x 4 x half> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2470 ret <vscale x 4 x half> %v
2473 declare <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half>, <vscale x 8 x i1>, i32)
2475 define <vscale x 8 x half> @vfmsub_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %b, <vscale x 8 x half> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2476 ; CHECK-LABEL: vfmsub_vv_nxv8f16:
2478 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2479 ; CHECK-NEXT: vfmsub.vv v10, v8, v12, v0.t
2480 ; CHECK-NEXT: vmv.v.v v8, v10
2482 %negc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %c, <vscale x 8 x i1> %m, i32 %evl)
2483 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %b, <vscale x 8 x half> %negc, <vscale x 8 x i1> %m, i32 %evl)
2484 ret <vscale x 8 x half> %v
2487 define <vscale x 8 x half> @vfmsub_vv_nxv8f16_unmasked(<vscale x 8 x half> %va, <vscale x 8 x half> %b, <vscale x 8 x half> %c, i32 zeroext %evl) {
2488 ; CHECK-LABEL: vfmsub_vv_nxv8f16_unmasked:
2490 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2491 ; CHECK-NEXT: vfmsub.vv v8, v10, v12
2493 %negc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2494 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %b, <vscale x 8 x half> %negc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2495 ret <vscale x 8 x half> %v
2498 define <vscale x 8 x half> @vfmsub_vf_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2499 ; CHECK-LABEL: vfmsub_vf_nxv8f16:
2501 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2502 ; CHECK-NEXT: vfmsub.vf v8, fa0, v10, v0.t
2504 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2505 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2506 %negvc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 %evl)
2507 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, <vscale x 8 x half> %negvc, <vscale x 8 x i1> %m, i32 %evl)
2508 ret <vscale x 8 x half> %v
2511 define <vscale x 8 x half> @vfmsub_vf_nxv8f16_commute(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2512 ; CHECK-LABEL: vfmsub_vf_nxv8f16_commute:
2514 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2515 ; CHECK-NEXT: vfmsub.vf v8, fa0, v10, v0.t
2517 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2518 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2519 %negvc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 %evl)
2520 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %va, <vscale x 8 x half> %negvc, <vscale x 8 x i1> %m, i32 %evl)
2521 ret <vscale x 8 x half> %v
2524 define <vscale x 8 x half> @vfmsub_vf_nxv8f16_unmasked(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, i32 zeroext %evl) {
2525 ; CHECK-LABEL: vfmsub_vf_nxv8f16_unmasked:
2527 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2528 ; CHECK-NEXT: vfmsub.vf v8, fa0, v10
2530 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2531 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2532 %negvc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2533 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, <vscale x 8 x half> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2534 ret <vscale x 8 x half> %v
2537 define <vscale x 8 x half> @vfmsub_vf_nxv8f16_unmasked_commute(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, i32 zeroext %evl) {
2538 ; CHECK-LABEL: vfmsub_vf_nxv8f16_unmasked_commute:
2540 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2541 ; CHECK-NEXT: vfmsub.vf v8, fa0, v10
2543 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2544 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2545 %negvc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2546 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %va, <vscale x 8 x half> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2547 ret <vscale x 8 x half> %v
2550 define <vscale x 8 x half> @vfnmadd_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %b, <vscale x 8 x half> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2551 ; CHECK-LABEL: vfnmadd_vv_nxv8f16:
2553 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2554 ; CHECK-NEXT: vfnmadd.vv v10, v8, v12, v0.t
2555 ; CHECK-NEXT: vmv.v.v v8, v10
2557 %negb = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %b, <vscale x 8 x i1> %m, i32 %evl)
2558 %negc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %c, <vscale x 8 x i1> %m, i32 %evl)
2559 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %negb, <vscale x 8 x half> %negc, <vscale x 8 x i1> %m, i32 %evl)
2560 ret <vscale x 8 x half> %v
2563 define <vscale x 8 x half> @vfnmadd_vv_nxv8f16_commuted(<vscale x 8 x half> %va, <vscale x 8 x half> %b, <vscale x 8 x half> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2564 ; CHECK-LABEL: vfnmadd_vv_nxv8f16_commuted:
2566 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2567 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12, v0.t
2569 %negb = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %b, <vscale x 8 x i1> %m, i32 %evl)
2570 %negc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %c, <vscale x 8 x i1> %m, i32 %evl)
2571 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %negb, <vscale x 8 x half> %va, <vscale x 8 x half> %negc, <vscale x 8 x i1> %m, i32 %evl)
2572 ret <vscale x 8 x half> %v
2575 define <vscale x 8 x half> @vfnmadd_vv_nxv8f16_unmasked(<vscale x 8 x half> %va, <vscale x 8 x half> %b, <vscale x 8 x half> %c, i32 zeroext %evl) {
2576 ; CHECK-LABEL: vfnmadd_vv_nxv8f16_unmasked:
2578 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2579 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12
2581 %negb = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2582 %negc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2583 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %negb, <vscale x 8 x half> %negc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2584 ret <vscale x 8 x half> %v
2587 define <vscale x 8 x half> @vfnmadd_vv_nxv8f16_unmasked_commuted(<vscale x 8 x half> %va, <vscale x 8 x half> %b, <vscale x 8 x half> %c, i32 zeroext %evl) {
2588 ; CHECK-LABEL: vfnmadd_vv_nxv8f16_unmasked_commuted:
2590 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2591 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12
2593 %negb = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2594 %negc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2595 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %negb, <vscale x 8 x half> %va, <vscale x 8 x half> %negc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2596 ret <vscale x 8 x half> %v
2599 define <vscale x 8 x half> @vfnmadd_vf_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2600 ; CHECK-LABEL: vfnmadd_vf_nxv8f16:
2602 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2603 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10, v0.t
2605 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2606 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2607 %negva = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x i1> %m, i32 %evl)
2608 %negvc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 %evl)
2609 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %negva, <vscale x 8 x half> %vb, <vscale x 8 x half> %negvc, <vscale x 8 x i1> %m, i32 %evl)
2610 ret <vscale x 8 x half> %v
2613 define <vscale x 8 x half> @vfnmadd_vf_nxv8f16_commute(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2614 ; CHECK-LABEL: vfnmadd_vf_nxv8f16_commute:
2616 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2617 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10, v0.t
2619 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2620 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2621 %negva = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x i1> %m, i32 %evl)
2622 %negvc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 %evl)
2623 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %negva, <vscale x 8 x half> %negvc, <vscale x 8 x i1> %m, i32 %evl)
2624 ret <vscale x 8 x half> %v
2627 define <vscale x 8 x half> @vfnmadd_vf_nxv8f16_unmasked(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, i32 zeroext %evl) {
2628 ; CHECK-LABEL: vfnmadd_vf_nxv8f16_unmasked:
2630 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2631 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10
2633 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2634 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2635 %negva = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2636 %negvc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2637 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %negva, <vscale x 8 x half> %vb, <vscale x 8 x half> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2638 ret <vscale x 8 x half> %v
2641 define <vscale x 8 x half> @vfnmadd_vf_nxv8f16_unmasked_commute(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, i32 zeroext %evl) {
2642 ; CHECK-LABEL: vfnmadd_vf_nxv8f16_unmasked_commute:
2644 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2645 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10
2647 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2648 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2649 %negva = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2650 %negvc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2651 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %negva, <vscale x 8 x half> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2652 ret <vscale x 8 x half> %v
2655 define <vscale x 8 x half> @vfnmadd_vf_nxv8f16_neg_splat(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2656 ; CHECK-LABEL: vfnmadd_vf_nxv8f16_neg_splat:
2658 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2659 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10, v0.t
2661 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2662 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2663 %negvb = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x i1> %m, i32 %evl)
2664 %negvc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 %evl)
2665 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %negvb, <vscale x 8 x half> %negvc, <vscale x 8 x i1> %m, i32 %evl)
2666 ret <vscale x 8 x half> %v
2669 define <vscale x 8 x half> @vfnmadd_vf_nxv8f16_neg_splat_commute(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2670 ; CHECK-LABEL: vfnmadd_vf_nxv8f16_neg_splat_commute:
2672 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2673 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10, v0.t
2675 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2676 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2677 %negvb = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x i1> %m, i32 %evl)
2678 %negvc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 %evl)
2679 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %negvb, <vscale x 8 x half> %va, <vscale x 8 x half> %negvc, <vscale x 8 x i1> %m, i32 %evl)
2680 ret <vscale x 8 x half> %v
2683 define <vscale x 8 x half> @vfnmadd_vf_nxv8f16_neg_splat_unmasked(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, i32 zeroext %evl) {
2684 ; CHECK-LABEL: vfnmadd_vf_nxv8f16_neg_splat_unmasked:
2686 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2687 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10
2689 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2690 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2691 %negvb = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2692 %negvc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2693 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %negvb, <vscale x 8 x half> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2694 ret <vscale x 8 x half> %v
2697 define <vscale x 8 x half> @vfnmadd_vf_nxv8f16_neg_splat_unmasked_commute(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, i32 zeroext %evl) {
2698 ; CHECK-LABEL: vfnmadd_vf_nxv8f16_neg_splat_unmasked_commute:
2700 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2701 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10
2703 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2704 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2705 %negvb = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2706 %negvc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2707 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %negvb, <vscale x 8 x half> %va, <vscale x 8 x half> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2708 ret <vscale x 8 x half> %v
2711 define <vscale x 8 x half> @vfnmsub_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %b, <vscale x 8 x half> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2712 ; CHECK-LABEL: vfnmsub_vv_nxv8f16:
2714 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2715 ; CHECK-NEXT: vfnmadd.vv v10, v8, v12, v0.t
2716 ; CHECK-NEXT: vmv.v.v v8, v10
2718 %negb = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %b, <vscale x 8 x i1> %m, i32 %evl)
2719 %negc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %c, <vscale x 8 x i1> %m, i32 %evl)
2720 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %negb, <vscale x 8 x half> %negc, <vscale x 8 x i1> %m, i32 %evl)
2721 ret <vscale x 8 x half> %v
2724 define <vscale x 8 x half> @vfnmsub_vv_nxv8f16_commuted(<vscale x 8 x half> %va, <vscale x 8 x half> %b, <vscale x 8 x half> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2725 ; CHECK-LABEL: vfnmsub_vv_nxv8f16_commuted:
2727 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2728 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12, v0.t
2730 %negb = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %b, <vscale x 8 x i1> %m, i32 %evl)
2731 %negc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %c, <vscale x 8 x i1> %m, i32 %evl)
2732 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %negb, <vscale x 8 x half> %va, <vscale x 8 x half> %negc, <vscale x 8 x i1> %m, i32 %evl)
2733 ret <vscale x 8 x half> %v
2736 define <vscale x 8 x half> @vfnmsub_vv_nxv8f16_unmasked(<vscale x 8 x half> %va, <vscale x 8 x half> %b, <vscale x 8 x half> %c, i32 zeroext %evl) {
2737 ; CHECK-LABEL: vfnmsub_vv_nxv8f16_unmasked:
2739 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2740 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12
2742 %negb = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2743 %negc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2744 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %negb, <vscale x 8 x half> %negc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2745 ret <vscale x 8 x half> %v
2748 define <vscale x 8 x half> @vfnmsub_vv_nxv8f16_unmasked_commuted(<vscale x 8 x half> %va, <vscale x 8 x half> %b, <vscale x 8 x half> %c, i32 zeroext %evl) {
2749 ; CHECK-LABEL: vfnmsub_vv_nxv8f16_unmasked_commuted:
2751 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2752 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12
2754 %negb = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2755 %negc = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2756 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %negb, <vscale x 8 x half> %va, <vscale x 8 x half> %negc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2757 ret <vscale x 8 x half> %v
2760 define <vscale x 8 x half> @vfnmsub_vf_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2761 ; CHECK-LABEL: vfnmsub_vf_nxv8f16:
2763 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2764 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10, v0.t
2766 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2767 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2768 %negva = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x i1> %m, i32 %evl)
2769 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %negva, <vscale x 8 x half> %vb, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 %evl)
2770 ret <vscale x 8 x half> %v
2773 define <vscale x 8 x half> @vfnmsub_vf_nxv8f16_commute(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2774 ; CHECK-LABEL: vfnmsub_vf_nxv8f16_commute:
2776 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2777 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10, v0.t
2779 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2780 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2781 %negva = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x i1> %m, i32 %evl)
2782 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %negva, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 %evl)
2783 ret <vscale x 8 x half> %v
2786 define <vscale x 8 x half> @vfnmsub_vf_nxv8f16_unmasked(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, i32 zeroext %evl) {
2787 ; CHECK-LABEL: vfnmsub_vf_nxv8f16_unmasked:
2789 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2790 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10
2792 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2793 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2794 %negva = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2795 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %negva, <vscale x 8 x half> %vb, <vscale x 8 x half> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2796 ret <vscale x 8 x half> %v
2799 define <vscale x 8 x half> @vfnmsub_vf_nxv8f16_unmasked_commute(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, i32 zeroext %evl) {
2800 ; CHECK-LABEL: vfnmsub_vf_nxv8f16_unmasked_commute:
2802 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2803 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10
2805 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2806 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2807 %negva = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2808 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %negva, <vscale x 8 x half> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2809 ret <vscale x 8 x half> %v
2812 define <vscale x 8 x half> @vfnmsub_vf_nxv8f16_neg_splat(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2813 ; CHECK-LABEL: vfnmsub_vf_nxv8f16_neg_splat:
2815 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2816 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10, v0.t
2818 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2819 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2820 %negvb = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x i1> %m, i32 %evl)
2821 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %negvb, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 %evl)
2822 ret <vscale x 8 x half> %v
2825 define <vscale x 8 x half> @vfnmsub_vf_nxv8f16_neg_splat_commute(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2826 ; CHECK-LABEL: vfnmsub_vf_nxv8f16_neg_splat_commute:
2828 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2829 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10, v0.t
2831 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2832 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2833 %negvb = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x i1> %m, i32 %evl)
2834 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %negvb, <vscale x 8 x half> %va, <vscale x 8 x half> %vc, <vscale x 8 x i1> %m, i32 %evl)
2835 ret <vscale x 8 x half> %v
2838 define <vscale x 8 x half> @vfnmsub_vf_nxv8f16_neg_splat_unmasked(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, i32 zeroext %evl) {
2839 ; CHECK-LABEL: vfnmsub_vf_nxv8f16_neg_splat_unmasked:
2841 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2842 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10
2844 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2845 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2846 %negvb = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2847 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %negvb, <vscale x 8 x half> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2848 ret <vscale x 8 x half> %v
2851 define <vscale x 8 x half> @vfnmsub_vf_nxv8f16_neg_splat_unmasked_commute(<vscale x 8 x half> %va, half %b, <vscale x 8 x half> %vc, i32 zeroext %evl) {
2852 ; CHECK-LABEL: vfnmsub_vf_nxv8f16_neg_splat_unmasked_commute:
2854 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2855 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10
2857 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2858 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2859 %negvb = call <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2860 %v = call <vscale x 8 x half> @llvm.vp.fmuladd.nxv8f16(<vscale x 8 x half> %negvb, <vscale x 8 x half> %va, <vscale x 8 x half> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2861 ret <vscale x 8 x half> %v
2864 declare <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half>, <vscale x 16 x i1>, i32)
2866 define <vscale x 16 x half> @vfmsub_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %b, <vscale x 16 x half> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {
2867 ; CHECK-LABEL: vfmsub_vv_nxv16f16:
2869 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2870 ; CHECK-NEXT: vfmsub.vv v12, v8, v16, v0.t
2871 ; CHECK-NEXT: vmv.v.v v8, v12
2873 %negc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %c, <vscale x 16 x i1> %m, i32 %evl)
2874 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %b, <vscale x 16 x half> %negc, <vscale x 16 x i1> %m, i32 %evl)
2875 ret <vscale x 16 x half> %v
2878 define <vscale x 16 x half> @vfmsub_vv_nxv16f16_unmasked(<vscale x 16 x half> %va, <vscale x 16 x half> %b, <vscale x 16 x half> %c, i32 zeroext %evl) {
2879 ; CHECK-LABEL: vfmsub_vv_nxv16f16_unmasked:
2881 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2882 ; CHECK-NEXT: vfmsub.vv v8, v12, v16
2884 %negc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %c, <vscale x 16 x i1> splat (i1 true), i32 %evl)
2885 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %b, <vscale x 16 x half> %negc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
2886 ret <vscale x 16 x half> %v
2889 define <vscale x 16 x half> @vfmsub_vf_nxv16f16(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {
2890 ; CHECK-LABEL: vfmsub_vf_nxv16f16:
2892 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2893 ; CHECK-NEXT: vfmsub.vf v8, fa0, v12, v0.t
2895 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2896 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2897 %negvc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 %evl)
2898 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, <vscale x 16 x half> %negvc, <vscale x 16 x i1> %m, i32 %evl)
2899 ret <vscale x 16 x half> %v
2902 define <vscale x 16 x half> @vfmsub_vf_nxv16f16_commute(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {
2903 ; CHECK-LABEL: vfmsub_vf_nxv16f16_commute:
2905 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2906 ; CHECK-NEXT: vfmsub.vf v8, fa0, v12, v0.t
2908 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2909 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2910 %negvc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 %evl)
2911 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x half> %va, <vscale x 16 x half> %negvc, <vscale x 16 x i1> %m, i32 %evl)
2912 ret <vscale x 16 x half> %v
2915 define <vscale x 16 x half> @vfmsub_vf_nxv16f16_unmasked(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, i32 zeroext %evl) {
2916 ; CHECK-LABEL: vfmsub_vf_nxv16f16_unmasked:
2918 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2919 ; CHECK-NEXT: vfmsub.vf v8, fa0, v12
2921 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2922 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2923 %negvc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
2924 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, <vscale x 16 x half> %negvc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
2925 ret <vscale x 16 x half> %v
2928 define <vscale x 16 x half> @vfmsub_vf_nxv16f16_unmasked_commute(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, i32 zeroext %evl) {
2929 ; CHECK-LABEL: vfmsub_vf_nxv16f16_unmasked_commute:
2931 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2932 ; CHECK-NEXT: vfmsub.vf v8, fa0, v12
2934 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2935 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2936 %negvc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
2937 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x half> %va, <vscale x 16 x half> %negvc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
2938 ret <vscale x 16 x half> %v
2941 define <vscale x 16 x half> @vfnmadd_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %b, <vscale x 16 x half> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {
2942 ; CHECK-LABEL: vfnmadd_vv_nxv16f16:
2944 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2945 ; CHECK-NEXT: vfnmadd.vv v12, v8, v16, v0.t
2946 ; CHECK-NEXT: vmv.v.v v8, v12
2948 %negb = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %b, <vscale x 16 x i1> %m, i32 %evl)
2949 %negc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %c, <vscale x 16 x i1> %m, i32 %evl)
2950 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %negb, <vscale x 16 x half> %negc, <vscale x 16 x i1> %m, i32 %evl)
2951 ret <vscale x 16 x half> %v
2954 define <vscale x 16 x half> @vfnmadd_vv_nxv16f16_commuted(<vscale x 16 x half> %va, <vscale x 16 x half> %b, <vscale x 16 x half> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {
2955 ; CHECK-LABEL: vfnmadd_vv_nxv16f16_commuted:
2957 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2958 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16, v0.t
2960 %negb = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %b, <vscale x 16 x i1> %m, i32 %evl)
2961 %negc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %c, <vscale x 16 x i1> %m, i32 %evl)
2962 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %negb, <vscale x 16 x half> %va, <vscale x 16 x half> %negc, <vscale x 16 x i1> %m, i32 %evl)
2963 ret <vscale x 16 x half> %v
2966 define <vscale x 16 x half> @vfnmadd_vv_nxv16f16_unmasked(<vscale x 16 x half> %va, <vscale x 16 x half> %b, <vscale x 16 x half> %c, i32 zeroext %evl) {
2967 ; CHECK-LABEL: vfnmadd_vv_nxv16f16_unmasked:
2969 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2970 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16
2972 %negb = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %b, <vscale x 16 x i1> splat (i1 true), i32 %evl)
2973 %negc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %c, <vscale x 16 x i1> splat (i1 true), i32 %evl)
2974 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %negb, <vscale x 16 x half> %negc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
2975 ret <vscale x 16 x half> %v
2978 define <vscale x 16 x half> @vfnmadd_vv_nxv16f16_unmasked_commuted(<vscale x 16 x half> %va, <vscale x 16 x half> %b, <vscale x 16 x half> %c, i32 zeroext %evl) {
2979 ; CHECK-LABEL: vfnmadd_vv_nxv16f16_unmasked_commuted:
2981 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2982 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16
2984 %negb = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %b, <vscale x 16 x i1> splat (i1 true), i32 %evl)
2985 %negc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %c, <vscale x 16 x i1> splat (i1 true), i32 %evl)
2986 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %negb, <vscale x 16 x half> %va, <vscale x 16 x half> %negc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
2987 ret <vscale x 16 x half> %v
2990 define <vscale x 16 x half> @vfnmadd_vf_nxv16f16(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {
2991 ; CHECK-LABEL: vfnmadd_vf_nxv16f16:
2993 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2994 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12, v0.t
2996 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2997 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2998 %negva = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x i1> %m, i32 %evl)
2999 %negvc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 %evl)
3000 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %negva, <vscale x 16 x half> %vb, <vscale x 16 x half> %negvc, <vscale x 16 x i1> %m, i32 %evl)
3001 ret <vscale x 16 x half> %v
3004 define <vscale x 16 x half> @vfnmadd_vf_nxv16f16_commute(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {
3005 ; CHECK-LABEL: vfnmadd_vf_nxv16f16_commute:
3007 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3008 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12, v0.t
3010 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3011 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3012 %negva = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x i1> %m, i32 %evl)
3013 %negvc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 %evl)
3014 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x half> %negva, <vscale x 16 x half> %negvc, <vscale x 16 x i1> %m, i32 %evl)
3015 ret <vscale x 16 x half> %v
3018 define <vscale x 16 x half> @vfnmadd_vf_nxv16f16_unmasked(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, i32 zeroext %evl) {
3019 ; CHECK-LABEL: vfnmadd_vf_nxv16f16_unmasked:
3021 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3022 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12
3024 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3025 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3026 %negva = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x i1> splat (i1 true), i32 %evl)
3027 %negvc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
3028 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %negva, <vscale x 16 x half> %vb, <vscale x 16 x half> %negvc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
3029 ret <vscale x 16 x half> %v
3032 define <vscale x 16 x half> @vfnmadd_vf_nxv16f16_unmasked_commute(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, i32 zeroext %evl) {
3033 ; CHECK-LABEL: vfnmadd_vf_nxv16f16_unmasked_commute:
3035 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3036 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12
3038 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3039 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3040 %negva = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x i1> splat (i1 true), i32 %evl)
3041 %negvc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
3042 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x half> %negva, <vscale x 16 x half> %negvc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
3043 ret <vscale x 16 x half> %v
3046 define <vscale x 16 x half> @vfnmadd_vf_nxv16f16_neg_splat(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {
3047 ; CHECK-LABEL: vfnmadd_vf_nxv16f16_neg_splat:
3049 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3050 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12, v0.t
3052 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3053 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3054 %negvb = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x i1> %m, i32 %evl)
3055 %negvc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 %evl)
3056 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %negvb, <vscale x 16 x half> %negvc, <vscale x 16 x i1> %m, i32 %evl)
3057 ret <vscale x 16 x half> %v
3060 define <vscale x 16 x half> @vfnmadd_vf_nxv16f16_neg_splat_commute(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {
3061 ; CHECK-LABEL: vfnmadd_vf_nxv16f16_neg_splat_commute:
3063 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3064 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12, v0.t
3066 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3067 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3068 %negvb = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x i1> %m, i32 %evl)
3069 %negvc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 %evl)
3070 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %negvb, <vscale x 16 x half> %va, <vscale x 16 x half> %negvc, <vscale x 16 x i1> %m, i32 %evl)
3071 ret <vscale x 16 x half> %v
3074 define <vscale x 16 x half> @vfnmadd_vf_nxv16f16_neg_splat_unmasked(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, i32 zeroext %evl) {
3075 ; CHECK-LABEL: vfnmadd_vf_nxv16f16_neg_splat_unmasked:
3077 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3078 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12
3080 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3081 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3082 %negvb = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x i1> splat (i1 true), i32 %evl)
3083 %negvc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
3084 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %negvb, <vscale x 16 x half> %negvc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
3085 ret <vscale x 16 x half> %v
3088 define <vscale x 16 x half> @vfnmadd_vf_nxv16f16_neg_splat_unmasked_commute(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, i32 zeroext %evl) {
3089 ; CHECK-LABEL: vfnmadd_vf_nxv16f16_neg_splat_unmasked_commute:
3091 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3092 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12
3094 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3095 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3096 %negvb = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x i1> splat (i1 true), i32 %evl)
3097 %negvc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
3098 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %negvb, <vscale x 16 x half> %va, <vscale x 16 x half> %negvc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
3099 ret <vscale x 16 x half> %v
3102 define <vscale x 16 x half> @vfnmsub_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %b, <vscale x 16 x half> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {
3103 ; CHECK-LABEL: vfnmsub_vv_nxv16f16:
3105 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3106 ; CHECK-NEXT: vfnmadd.vv v12, v8, v16, v0.t
3107 ; CHECK-NEXT: vmv.v.v v8, v12
3109 %negb = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %b, <vscale x 16 x i1> %m, i32 %evl)
3110 %negc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %c, <vscale x 16 x i1> %m, i32 %evl)
3111 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %negb, <vscale x 16 x half> %negc, <vscale x 16 x i1> %m, i32 %evl)
3112 ret <vscale x 16 x half> %v
3115 define <vscale x 16 x half> @vfnmsub_vv_nxv16f16_commuted(<vscale x 16 x half> %va, <vscale x 16 x half> %b, <vscale x 16 x half> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {
3116 ; CHECK-LABEL: vfnmsub_vv_nxv16f16_commuted:
3118 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3119 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16, v0.t
3121 %negb = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %b, <vscale x 16 x i1> %m, i32 %evl)
3122 %negc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %c, <vscale x 16 x i1> %m, i32 %evl)
3123 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %negb, <vscale x 16 x half> %va, <vscale x 16 x half> %negc, <vscale x 16 x i1> %m, i32 %evl)
3124 ret <vscale x 16 x half> %v
3127 define <vscale x 16 x half> @vfnmsub_vv_nxv16f16_unmasked(<vscale x 16 x half> %va, <vscale x 16 x half> %b, <vscale x 16 x half> %c, i32 zeroext %evl) {
3128 ; CHECK-LABEL: vfnmsub_vv_nxv16f16_unmasked:
3130 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3131 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16
3133 %negb = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %b, <vscale x 16 x i1> splat (i1 true), i32 %evl)
3134 %negc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %c, <vscale x 16 x i1> splat (i1 true), i32 %evl)
3135 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %negb, <vscale x 16 x half> %negc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
3136 ret <vscale x 16 x half> %v
3139 define <vscale x 16 x half> @vfnmsub_vv_nxv16f16_unmasked_commuted(<vscale x 16 x half> %va, <vscale x 16 x half> %b, <vscale x 16 x half> %c, i32 zeroext %evl) {
3140 ; CHECK-LABEL: vfnmsub_vv_nxv16f16_unmasked_commuted:
3142 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3143 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16
3145 %negb = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %b, <vscale x 16 x i1> splat (i1 true), i32 %evl)
3146 %negc = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %c, <vscale x 16 x i1> splat (i1 true), i32 %evl)
3147 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %negb, <vscale x 16 x half> %va, <vscale x 16 x half> %negc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
3148 ret <vscale x 16 x half> %v
3151 define <vscale x 16 x half> @vfnmsub_vf_nxv16f16(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {
3152 ; CHECK-LABEL: vfnmsub_vf_nxv16f16:
3154 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3155 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12, v0.t
3157 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3158 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3159 %negva = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x i1> %m, i32 %evl)
3160 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %negva, <vscale x 16 x half> %vb, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 %evl)
3161 ret <vscale x 16 x half> %v
3164 define <vscale x 16 x half> @vfnmsub_vf_nxv16f16_commute(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {
3165 ; CHECK-LABEL: vfnmsub_vf_nxv16f16_commute:
3167 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3168 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12, v0.t
3170 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3171 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3172 %negva = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x i1> %m, i32 %evl)
3173 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x half> %negva, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 %evl)
3174 ret <vscale x 16 x half> %v
3177 define <vscale x 16 x half> @vfnmsub_vf_nxv16f16_unmasked(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, i32 zeroext %evl) {
3178 ; CHECK-LABEL: vfnmsub_vf_nxv16f16_unmasked:
3180 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3181 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12
3183 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3184 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3185 %negva = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x i1> splat (i1 true), i32 %evl)
3186 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %negva, <vscale x 16 x half> %vb, <vscale x 16 x half> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
3187 ret <vscale x 16 x half> %v
3190 define <vscale x 16 x half> @vfnmsub_vf_nxv16f16_unmasked_commute(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, i32 zeroext %evl) {
3191 ; CHECK-LABEL: vfnmsub_vf_nxv16f16_unmasked_commute:
3193 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3194 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12
3196 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3197 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3198 %negva = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x i1> splat (i1 true), i32 %evl)
3199 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x half> %negva, <vscale x 16 x half> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
3200 ret <vscale x 16 x half> %v
3203 define <vscale x 16 x half> @vfnmsub_vf_nxv16f16_neg_splat(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {
3204 ; CHECK-LABEL: vfnmsub_vf_nxv16f16_neg_splat:
3206 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3207 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12, v0.t
3209 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3210 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3211 %negvb = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x i1> %m, i32 %evl)
3212 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %negvb, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 %evl)
3213 ret <vscale x 16 x half> %v
3216 define <vscale x 16 x half> @vfnmsub_vf_nxv16f16_neg_splat_commute(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {
3217 ; CHECK-LABEL: vfnmsub_vf_nxv16f16_neg_splat_commute:
3219 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3220 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12, v0.t
3222 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3223 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3224 %negvb = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x i1> %m, i32 %evl)
3225 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %negvb, <vscale x 16 x half> %va, <vscale x 16 x half> %vc, <vscale x 16 x i1> %m, i32 %evl)
3226 ret <vscale x 16 x half> %v
3229 define <vscale x 16 x half> @vfnmsub_vf_nxv16f16_neg_splat_unmasked(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, i32 zeroext %evl) {
3230 ; CHECK-LABEL: vfnmsub_vf_nxv16f16_neg_splat_unmasked:
3232 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3233 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12
3235 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3236 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3237 %negvb = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x i1> splat (i1 true), i32 %evl)
3238 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %negvb, <vscale x 16 x half> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
3239 ret <vscale x 16 x half> %v
3242 define <vscale x 16 x half> @vfnmsub_vf_nxv16f16_neg_splat_unmasked_commute(<vscale x 16 x half> %va, half %b, <vscale x 16 x half> %vc, i32 zeroext %evl) {
3243 ; CHECK-LABEL: vfnmsub_vf_nxv16f16_neg_splat_unmasked_commute:
3245 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3246 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12
3248 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3249 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3250 %negvb = call <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x i1> splat (i1 true), i32 %evl)
3251 %v = call <vscale x 16 x half> @llvm.vp.fmuladd.nxv16f16(<vscale x 16 x half> %negvb, <vscale x 16 x half> %va, <vscale x 16 x half> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
3252 ret <vscale x 16 x half> %v
3255 declare <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half>, <vscale x 32 x i1>, i32)
3257 define <vscale x 32 x half> @vfmsub_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %b, <vscale x 32 x half> %c, <vscale x 32 x i1> %m, i32 zeroext %evl) {
3258 ; CHECK-LABEL: vfmsub_vv_nxv32f16:
3260 ; CHECK-NEXT: vl8re16.v v24, (a0)
3261 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
3262 ; CHECK-NEXT: vfmsub.vv v16, v8, v24, v0.t
3263 ; CHECK-NEXT: vmv.v.v v8, v16
3265 %negc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %c, <vscale x 32 x i1> %m, i32 %evl)
3266 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %b, <vscale x 32 x half> %negc, <vscale x 32 x i1> %m, i32 %evl)
3267 ret <vscale x 32 x half> %v
3270 define <vscale x 32 x half> @vfmsub_vv_nxv32f16_unmasked(<vscale x 32 x half> %va, <vscale x 32 x half> %b, <vscale x 32 x half> %c, i32 zeroext %evl) {
3271 ; CHECK-LABEL: vfmsub_vv_nxv32f16_unmasked:
3273 ; CHECK-NEXT: vl8re16.v v24, (a0)
3274 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
3275 ; CHECK-NEXT: vfmsub.vv v8, v16, v24
3277 %negc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %c, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3278 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %b, <vscale x 32 x half> %negc, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3279 ret <vscale x 32 x half> %v
3282 define <vscale x 32 x half> @vfmsub_vf_nxv32f16(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 zeroext %evl) {
3283 ; CHECK-LABEL: vfmsub_vf_nxv32f16:
3285 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3286 ; CHECK-NEXT: vfmsub.vf v8, fa0, v16, v0.t
3288 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3289 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3290 %negvc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 %evl)
3291 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, <vscale x 32 x half> %negvc, <vscale x 32 x i1> %m, i32 %evl)
3292 ret <vscale x 32 x half> %v
3295 define <vscale x 32 x half> @vfmsub_vf_nxv32f16_commute(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 zeroext %evl) {
3296 ; CHECK-LABEL: vfmsub_vf_nxv32f16_commute:
3298 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3299 ; CHECK-NEXT: vfmsub.vf v8, fa0, v16, v0.t
3301 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3302 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3303 %negvc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 %evl)
3304 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x half> %va, <vscale x 32 x half> %negvc, <vscale x 32 x i1> %m, i32 %evl)
3305 ret <vscale x 32 x half> %v
3308 define <vscale x 32 x half> @vfmsub_vf_nxv32f16_unmasked(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, i32 zeroext %evl) {
3309 ; CHECK-LABEL: vfmsub_vf_nxv32f16_unmasked:
3311 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3312 ; CHECK-NEXT: vfmsub.vf v8, fa0, v16
3314 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3315 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3316 %negvc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vc, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3317 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, <vscale x 32 x half> %negvc, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3318 ret <vscale x 32 x half> %v
3321 define <vscale x 32 x half> @vfmsub_vf_nxv32f16_unmasked_commute(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, i32 zeroext %evl) {
3322 ; CHECK-LABEL: vfmsub_vf_nxv32f16_unmasked_commute:
3324 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3325 ; CHECK-NEXT: vfmsub.vf v8, fa0, v16
3327 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3328 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3329 %negvc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vc, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3330 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x half> %va, <vscale x 32 x half> %negvc, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3331 ret <vscale x 32 x half> %v
3334 define <vscale x 32 x half> @vfnmadd_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %b, <vscale x 32 x half> %c, <vscale x 32 x i1> %m, i32 zeroext %evl) {
3335 ; CHECK-LABEL: vfnmadd_vv_nxv32f16:
3337 ; CHECK-NEXT: vl8re16.v v24, (a0)
3338 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
3339 ; CHECK-NEXT: vfnmadd.vv v16, v8, v24, v0.t
3340 ; CHECK-NEXT: vmv.v.v v8, v16
3342 %negb = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %b, <vscale x 32 x i1> %m, i32 %evl)
3343 %negc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %c, <vscale x 32 x i1> %m, i32 %evl)
3344 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %negb, <vscale x 32 x half> %negc, <vscale x 32 x i1> %m, i32 %evl)
3345 ret <vscale x 32 x half> %v
3348 define <vscale x 32 x half> @vfnmadd_vv_nxv32f16_commuted(<vscale x 32 x half> %va, <vscale x 32 x half> %b, <vscale x 32 x half> %c, <vscale x 32 x i1> %m, i32 zeroext %evl) {
3349 ; CHECK-LABEL: vfnmadd_vv_nxv32f16_commuted:
3351 ; CHECK-NEXT: vl8re16.v v24, (a0)
3352 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
3353 ; CHECK-NEXT: vfnmadd.vv v8, v16, v24, v0.t
3355 %negb = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %b, <vscale x 32 x i1> %m, i32 %evl)
3356 %negc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %c, <vscale x 32 x i1> %m, i32 %evl)
3357 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %negb, <vscale x 32 x half> %va, <vscale x 32 x half> %negc, <vscale x 32 x i1> %m, i32 %evl)
3358 ret <vscale x 32 x half> %v
3361 define <vscale x 32 x half> @vfnmadd_vv_nxv32f16_unmasked(<vscale x 32 x half> %va, <vscale x 32 x half> %b, <vscale x 32 x half> %c, i32 zeroext %evl) {
3362 ; CHECK-LABEL: vfnmadd_vv_nxv32f16_unmasked:
3364 ; CHECK-NEXT: vl8re16.v v24, (a0)
3365 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
3366 ; CHECK-NEXT: vfnmadd.vv v8, v16, v24
3368 %negb = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %b, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3369 %negc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %c, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3370 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %negb, <vscale x 32 x half> %negc, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3371 ret <vscale x 32 x half> %v
3374 define <vscale x 32 x half> @vfnmadd_vv_nxv32f16_unmasked_commuted(<vscale x 32 x half> %va, <vscale x 32 x half> %b, <vscale x 32 x half> %c, i32 zeroext %evl) {
3375 ; CHECK-LABEL: vfnmadd_vv_nxv32f16_unmasked_commuted:
3377 ; CHECK-NEXT: vl8re16.v v24, (a0)
3378 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
3379 ; CHECK-NEXT: vfnmadd.vv v8, v16, v24
3381 %negb = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %b, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3382 %negc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %c, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3383 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %negb, <vscale x 32 x half> %va, <vscale x 32 x half> %negc, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3384 ret <vscale x 32 x half> %v
3387 define <vscale x 32 x half> @vfnmadd_vf_nxv32f16(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 zeroext %evl) {
3388 ; CHECK-LABEL: vfnmadd_vf_nxv32f16:
3390 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3391 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16, v0.t
3393 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3394 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3395 %negva = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x i1> %m, i32 %evl)
3396 %negvc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 %evl)
3397 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %negva, <vscale x 32 x half> %vb, <vscale x 32 x half> %negvc, <vscale x 32 x i1> %m, i32 %evl)
3398 ret <vscale x 32 x half> %v
3401 define <vscale x 32 x half> @vfnmadd_vf_nxv32f16_commute(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 zeroext %evl) {
3402 ; CHECK-LABEL: vfnmadd_vf_nxv32f16_commute:
3404 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3405 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16, v0.t
3407 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3408 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3409 %negva = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x i1> %m, i32 %evl)
3410 %negvc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 %evl)
3411 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x half> %negva, <vscale x 32 x half> %negvc, <vscale x 32 x i1> %m, i32 %evl)
3412 ret <vscale x 32 x half> %v
3415 define <vscale x 32 x half> @vfnmadd_vf_nxv32f16_unmasked(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, i32 zeroext %evl) {
3416 ; CHECK-LABEL: vfnmadd_vf_nxv32f16_unmasked:
3418 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3419 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16
3421 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3422 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3423 %negva = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3424 %negvc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vc, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3425 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %negva, <vscale x 32 x half> %vb, <vscale x 32 x half> %negvc, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3426 ret <vscale x 32 x half> %v
3429 define <vscale x 32 x half> @vfnmadd_vf_nxv32f16_unmasked_commute(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, i32 zeroext %evl) {
3430 ; CHECK-LABEL: vfnmadd_vf_nxv32f16_unmasked_commute:
3432 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3433 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16
3435 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3436 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3437 %negva = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3438 %negvc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vc, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3439 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x half> %negva, <vscale x 32 x half> %negvc, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3440 ret <vscale x 32 x half> %v
3443 define <vscale x 32 x half> @vfnmadd_vf_nxv32f16_neg_splat(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 zeroext %evl) {
3444 ; CHECK-LABEL: vfnmadd_vf_nxv32f16_neg_splat:
3446 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3447 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16, v0.t
3449 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3450 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3451 %negvb = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x i1> %m, i32 %evl)
3452 %negvc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 %evl)
3453 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %negvb, <vscale x 32 x half> %negvc, <vscale x 32 x i1> %m, i32 %evl)
3454 ret <vscale x 32 x half> %v
3457 define <vscale x 32 x half> @vfnmadd_vf_nxv32f16_neg_splat_commute(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 zeroext %evl) {
3458 ; CHECK-LABEL: vfnmadd_vf_nxv32f16_neg_splat_commute:
3460 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3461 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16, v0.t
3463 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3464 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3465 %negvb = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x i1> %m, i32 %evl)
3466 %negvc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 %evl)
3467 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %negvb, <vscale x 32 x half> %va, <vscale x 32 x half> %negvc, <vscale x 32 x i1> %m, i32 %evl)
3468 ret <vscale x 32 x half> %v
3471 define <vscale x 32 x half> @vfnmadd_vf_nxv32f16_neg_splat_unmasked(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, i32 zeroext %evl) {
3472 ; CHECK-LABEL: vfnmadd_vf_nxv32f16_neg_splat_unmasked:
3474 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3475 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16
3477 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3478 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3479 %negvb = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3480 %negvc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vc, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3481 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %negvb, <vscale x 32 x half> %negvc, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3482 ret <vscale x 32 x half> %v
3485 define <vscale x 32 x half> @vfnmadd_vf_nxv32f16_neg_splat_unmasked_commute(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, i32 zeroext %evl) {
3486 ; CHECK-LABEL: vfnmadd_vf_nxv32f16_neg_splat_unmasked_commute:
3488 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3489 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16
3491 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3492 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3493 %negvb = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3494 %negvc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vc, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3495 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %negvb, <vscale x 32 x half> %va, <vscale x 32 x half> %negvc, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3496 ret <vscale x 32 x half> %v
3499 define <vscale x 32 x half> @vfnmsub_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %b, <vscale x 32 x half> %c, <vscale x 32 x i1> %m, i32 zeroext %evl) {
3500 ; CHECK-LABEL: vfnmsub_vv_nxv32f16:
3502 ; CHECK-NEXT: vl8re16.v v24, (a0)
3503 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
3504 ; CHECK-NEXT: vfnmadd.vv v16, v8, v24, v0.t
3505 ; CHECK-NEXT: vmv.v.v v8, v16
3507 %negb = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %b, <vscale x 32 x i1> %m, i32 %evl)
3508 %negc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %c, <vscale x 32 x i1> %m, i32 %evl)
3509 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %negb, <vscale x 32 x half> %negc, <vscale x 32 x i1> %m, i32 %evl)
3510 ret <vscale x 32 x half> %v
3513 define <vscale x 32 x half> @vfnmsub_vv_nxv32f16_commuted(<vscale x 32 x half> %va, <vscale x 32 x half> %b, <vscale x 32 x half> %c, <vscale x 32 x i1> %m, i32 zeroext %evl) {
3514 ; CHECK-LABEL: vfnmsub_vv_nxv32f16_commuted:
3516 ; CHECK-NEXT: vl8re16.v v24, (a0)
3517 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
3518 ; CHECK-NEXT: vfnmadd.vv v8, v16, v24, v0.t
3520 %negb = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %b, <vscale x 32 x i1> %m, i32 %evl)
3521 %negc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %c, <vscale x 32 x i1> %m, i32 %evl)
3522 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %negb, <vscale x 32 x half> %va, <vscale x 32 x half> %negc, <vscale x 32 x i1> %m, i32 %evl)
3523 ret <vscale x 32 x half> %v
3526 define <vscale x 32 x half> @vfnmsub_vv_nxv32f16_unmasked(<vscale x 32 x half> %va, <vscale x 32 x half> %b, <vscale x 32 x half> %c, i32 zeroext %evl) {
3527 ; CHECK-LABEL: vfnmsub_vv_nxv32f16_unmasked:
3529 ; CHECK-NEXT: vl8re16.v v24, (a0)
3530 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
3531 ; CHECK-NEXT: vfnmadd.vv v8, v16, v24
3533 %negb = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %b, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3534 %negc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %c, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3535 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %negb, <vscale x 32 x half> %negc, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3536 ret <vscale x 32 x half> %v
3539 define <vscale x 32 x half> @vfnmsub_vv_nxv32f16_unmasked_commuted(<vscale x 32 x half> %va, <vscale x 32 x half> %b, <vscale x 32 x half> %c, i32 zeroext %evl) {
3540 ; CHECK-LABEL: vfnmsub_vv_nxv32f16_unmasked_commuted:
3542 ; CHECK-NEXT: vl8re16.v v24, (a0)
3543 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
3544 ; CHECK-NEXT: vfnmadd.vv v8, v16, v24
3546 %negb = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %b, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3547 %negc = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %c, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3548 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %negb, <vscale x 32 x half> %va, <vscale x 32 x half> %negc, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3549 ret <vscale x 32 x half> %v
3552 define <vscale x 32 x half> @vfnmsub_vf_nxv32f16(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 zeroext %evl) {
3553 ; CHECK-LABEL: vfnmsub_vf_nxv32f16:
3555 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3556 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16, v0.t
3558 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3559 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3560 %negva = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x i1> %m, i32 %evl)
3561 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %negva, <vscale x 32 x half> %vb, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 %evl)
3562 ret <vscale x 32 x half> %v
3565 define <vscale x 32 x half> @vfnmsub_vf_nxv32f16_commute(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 zeroext %evl) {
3566 ; CHECK-LABEL: vfnmsub_vf_nxv32f16_commute:
3568 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3569 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16, v0.t
3571 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3572 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3573 %negva = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x i1> %m, i32 %evl)
3574 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x half> %negva, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 %evl)
3575 ret <vscale x 32 x half> %v
3578 define <vscale x 32 x half> @vfnmsub_vf_nxv32f16_unmasked(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, i32 zeroext %evl) {
3579 ; CHECK-LABEL: vfnmsub_vf_nxv32f16_unmasked:
3581 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3582 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16
3584 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3585 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3586 %negva = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3587 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %negva, <vscale x 32 x half> %vb, <vscale x 32 x half> %vc, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3588 ret <vscale x 32 x half> %v
3591 define <vscale x 32 x half> @vfnmsub_vf_nxv32f16_unmasked_commute(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, i32 zeroext %evl) {
3592 ; CHECK-LABEL: vfnmsub_vf_nxv32f16_unmasked_commute:
3594 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3595 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16
3597 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3598 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3599 %negva = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3600 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x half> %negva, <vscale x 32 x half> %vc, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3601 ret <vscale x 32 x half> %v
3604 define <vscale x 32 x half> @vfnmsub_vf_nxv32f16_neg_splat(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 zeroext %evl) {
3605 ; CHECK-LABEL: vfnmsub_vf_nxv32f16_neg_splat:
3607 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3608 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16, v0.t
3610 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3611 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3612 %negvb = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x i1> %m, i32 %evl)
3613 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %negvb, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 %evl)
3614 ret <vscale x 32 x half> %v
3617 define <vscale x 32 x half> @vfnmsub_vf_nxv32f16_neg_splat_commute(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 zeroext %evl) {
3618 ; CHECK-LABEL: vfnmsub_vf_nxv32f16_neg_splat_commute:
3620 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3621 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16, v0.t
3623 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3624 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3625 %negvb = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x i1> %m, i32 %evl)
3626 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %negvb, <vscale x 32 x half> %va, <vscale x 32 x half> %vc, <vscale x 32 x i1> %m, i32 %evl)
3627 ret <vscale x 32 x half> %v
3630 define <vscale x 32 x half> @vfnmsub_vf_nxv32f16_neg_splat_unmasked(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, i32 zeroext %evl) {
3631 ; CHECK-LABEL: vfnmsub_vf_nxv32f16_neg_splat_unmasked:
3633 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3634 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16
3636 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3637 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3638 %negvb = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3639 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %negvb, <vscale x 32 x half> %vc, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3640 ret <vscale x 32 x half> %v
3643 define <vscale x 32 x half> @vfnmsub_vf_nxv32f16_neg_splat_unmasked_commute(<vscale x 32 x half> %va, half %b, <vscale x 32 x half> %vc, i32 zeroext %evl) {
3644 ; CHECK-LABEL: vfnmsub_vf_nxv32f16_neg_splat_unmasked_commute:
3646 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3647 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16
3649 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3650 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3651 %negvb = call <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3652 %v = call <vscale x 32 x half> @llvm.vp.fmuladd.nxv32f16(<vscale x 32 x half> %negvb, <vscale x 32 x half> %va, <vscale x 32 x half> %vc, <vscale x 32 x i1> splat (i1 true), i32 %evl)
3653 ret <vscale x 32 x half> %v
3656 declare <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float>, <vscale x 1 x i1>, i32)
3658 define <vscale x 1 x float> @vfmsub_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %b, <vscale x 1 x float> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {
3659 ; CHECK-LABEL: vfmsub_vv_nxv1f32:
3661 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3662 ; CHECK-NEXT: vfmsub.vv v9, v8, v10, v0.t
3663 ; CHECK-NEXT: vmv1r.v v8, v9
3665 %negc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %c, <vscale x 1 x i1> %m, i32 %evl)
3666 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %b, <vscale x 1 x float> %negc, <vscale x 1 x i1> %m, i32 %evl)
3667 ret <vscale x 1 x float> %v
3670 define <vscale x 1 x float> @vfmsub_vv_nxv1f32_unmasked(<vscale x 1 x float> %va, <vscale x 1 x float> %b, <vscale x 1 x float> %c, i32 zeroext %evl) {
3671 ; CHECK-LABEL: vfmsub_vv_nxv1f32_unmasked:
3673 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3674 ; CHECK-NEXT: vfmsub.vv v8, v9, v10
3676 %negc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3677 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %b, <vscale x 1 x float> %negc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3678 ret <vscale x 1 x float> %v
3681 define <vscale x 1 x float> @vfmsub_vf_nxv1f32(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
3682 ; CHECK-LABEL: vfmsub_vf_nxv1f32:
3684 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3685 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9, v0.t
3687 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3688 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3689 %negvc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 %evl)
3690 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, <vscale x 1 x float> %negvc, <vscale x 1 x i1> %m, i32 %evl)
3691 ret <vscale x 1 x float> %v
3694 define <vscale x 1 x float> @vfmsub_vf_nxv1f32_commute(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
3695 ; CHECK-LABEL: vfmsub_vf_nxv1f32_commute:
3697 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3698 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9, v0.t
3700 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3701 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3702 %negvc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 %evl)
3703 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x float> %va, <vscale x 1 x float> %negvc, <vscale x 1 x i1> %m, i32 %evl)
3704 ret <vscale x 1 x float> %v
3707 define <vscale x 1 x float> @vfmsub_vf_nxv1f32_unmasked(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, i32 zeroext %evl) {
3708 ; CHECK-LABEL: vfmsub_vf_nxv1f32_unmasked:
3710 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3711 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9
3713 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3714 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3715 %negvc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3716 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, <vscale x 1 x float> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3717 ret <vscale x 1 x float> %v
3720 define <vscale x 1 x float> @vfmsub_vf_nxv1f32_unmasked_commute(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, i32 zeroext %evl) {
3721 ; CHECK-LABEL: vfmsub_vf_nxv1f32_unmasked_commute:
3723 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3724 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9
3726 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3727 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3728 %negvc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3729 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x float> %va, <vscale x 1 x float> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3730 ret <vscale x 1 x float> %v
3733 define <vscale x 1 x float> @vfnmadd_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %b, <vscale x 1 x float> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {
3734 ; CHECK-LABEL: vfnmadd_vv_nxv1f32:
3736 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3737 ; CHECK-NEXT: vfnmadd.vv v9, v8, v10, v0.t
3738 ; CHECK-NEXT: vmv1r.v v8, v9
3740 %negb = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %b, <vscale x 1 x i1> %m, i32 %evl)
3741 %negc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %c, <vscale x 1 x i1> %m, i32 %evl)
3742 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %negb, <vscale x 1 x float> %negc, <vscale x 1 x i1> %m, i32 %evl)
3743 ret <vscale x 1 x float> %v
3746 define <vscale x 1 x float> @vfnmadd_vv_nxv1f32_commuted(<vscale x 1 x float> %va, <vscale x 1 x float> %b, <vscale x 1 x float> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {
3747 ; CHECK-LABEL: vfnmadd_vv_nxv1f32_commuted:
3749 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3750 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10, v0.t
3752 %negb = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %b, <vscale x 1 x i1> %m, i32 %evl)
3753 %negc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %c, <vscale x 1 x i1> %m, i32 %evl)
3754 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %negb, <vscale x 1 x float> %va, <vscale x 1 x float> %negc, <vscale x 1 x i1> %m, i32 %evl)
3755 ret <vscale x 1 x float> %v
3758 define <vscale x 1 x float> @vfnmadd_vv_nxv1f32_unmasked(<vscale x 1 x float> %va, <vscale x 1 x float> %b, <vscale x 1 x float> %c, i32 zeroext %evl) {
3759 ; CHECK-LABEL: vfnmadd_vv_nxv1f32_unmasked:
3761 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3762 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
3764 %negb = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3765 %negc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3766 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %negb, <vscale x 1 x float> %negc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3767 ret <vscale x 1 x float> %v
3770 define <vscale x 1 x float> @vfnmadd_vv_nxv1f32_unmasked_commuted(<vscale x 1 x float> %va, <vscale x 1 x float> %b, <vscale x 1 x float> %c, i32 zeroext %evl) {
3771 ; CHECK-LABEL: vfnmadd_vv_nxv1f32_unmasked_commuted:
3773 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3774 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
3776 %negb = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3777 %negc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3778 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %negb, <vscale x 1 x float> %va, <vscale x 1 x float> %negc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3779 ret <vscale x 1 x float> %v
3782 define <vscale x 1 x float> @vfnmadd_vf_nxv1f32(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
3783 ; CHECK-LABEL: vfnmadd_vf_nxv1f32:
3785 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3786 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
3788 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3789 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3790 %negva = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x i1> %m, i32 %evl)
3791 %negvc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 %evl)
3792 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %negva, <vscale x 1 x float> %vb, <vscale x 1 x float> %negvc, <vscale x 1 x i1> %m, i32 %evl)
3793 ret <vscale x 1 x float> %v
3796 define <vscale x 1 x float> @vfnmadd_vf_nxv1f32_commute(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
3797 ; CHECK-LABEL: vfnmadd_vf_nxv1f32_commute:
3799 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3800 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
3802 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3803 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3804 %negva = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x i1> %m, i32 %evl)
3805 %negvc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 %evl)
3806 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x float> %negva, <vscale x 1 x float> %negvc, <vscale x 1 x i1> %m, i32 %evl)
3807 ret <vscale x 1 x float> %v
3810 define <vscale x 1 x float> @vfnmadd_vf_nxv1f32_unmasked(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, i32 zeroext %evl) {
3811 ; CHECK-LABEL: vfnmadd_vf_nxv1f32_unmasked:
3813 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3814 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
3816 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3817 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3818 %negva = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3819 %negvc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3820 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %negva, <vscale x 1 x float> %vb, <vscale x 1 x float> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3821 ret <vscale x 1 x float> %v
3824 define <vscale x 1 x float> @vfnmadd_vf_nxv1f32_unmasked_commute(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, i32 zeroext %evl) {
3825 ; CHECK-LABEL: vfnmadd_vf_nxv1f32_unmasked_commute:
3827 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3828 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
3830 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3831 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3832 %negva = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3833 %negvc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3834 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x float> %negva, <vscale x 1 x float> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3835 ret <vscale x 1 x float> %v
3838 define <vscale x 1 x float> @vfnmadd_vf_nxv1f32_neg_splat(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
3839 ; CHECK-LABEL: vfnmadd_vf_nxv1f32_neg_splat:
3841 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3842 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
3844 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3845 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3846 %negvb = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x i1> %m, i32 %evl)
3847 %negvc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 %evl)
3848 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %negvb, <vscale x 1 x float> %negvc, <vscale x 1 x i1> %m, i32 %evl)
3849 ret <vscale x 1 x float> %v
3852 define <vscale x 1 x float> @vfnmadd_vf_nxv1f32_neg_splat_commute(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
3853 ; CHECK-LABEL: vfnmadd_vf_nxv1f32_neg_splat_commute:
3855 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3856 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
3858 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3859 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3860 %negvb = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x i1> %m, i32 %evl)
3861 %negvc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 %evl)
3862 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %negvb, <vscale x 1 x float> %va, <vscale x 1 x float> %negvc, <vscale x 1 x i1> %m, i32 %evl)
3863 ret <vscale x 1 x float> %v
3866 define <vscale x 1 x float> @vfnmadd_vf_nxv1f32_neg_splat_unmasked(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, i32 zeroext %evl) {
3867 ; CHECK-LABEL: vfnmadd_vf_nxv1f32_neg_splat_unmasked:
3869 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3870 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
3872 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3873 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3874 %negvb = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3875 %negvc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3876 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %negvb, <vscale x 1 x float> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3877 ret <vscale x 1 x float> %v
3880 define <vscale x 1 x float> @vfnmadd_vf_nxv1f32_neg_splat_unmasked_commute(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, i32 zeroext %evl) {
3881 ; CHECK-LABEL: vfnmadd_vf_nxv1f32_neg_splat_unmasked_commute:
3883 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3884 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
3886 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3887 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3888 %negvb = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3889 %negvc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3890 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %negvb, <vscale x 1 x float> %va, <vscale x 1 x float> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3891 ret <vscale x 1 x float> %v
3894 define <vscale x 1 x float> @vfnmsub_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %b, <vscale x 1 x float> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {
3895 ; CHECK-LABEL: vfnmsub_vv_nxv1f32:
3897 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3898 ; CHECK-NEXT: vfnmadd.vv v9, v8, v10, v0.t
3899 ; CHECK-NEXT: vmv1r.v v8, v9
3901 %negb = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %b, <vscale x 1 x i1> %m, i32 %evl)
3902 %negc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %c, <vscale x 1 x i1> %m, i32 %evl)
3903 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %negb, <vscale x 1 x float> %negc, <vscale x 1 x i1> %m, i32 %evl)
3904 ret <vscale x 1 x float> %v
3907 define <vscale x 1 x float> @vfnmsub_vv_nxv1f32_commuted(<vscale x 1 x float> %va, <vscale x 1 x float> %b, <vscale x 1 x float> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {
3908 ; CHECK-LABEL: vfnmsub_vv_nxv1f32_commuted:
3910 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3911 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10, v0.t
3913 %negb = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %b, <vscale x 1 x i1> %m, i32 %evl)
3914 %negc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %c, <vscale x 1 x i1> %m, i32 %evl)
3915 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %negb, <vscale x 1 x float> %va, <vscale x 1 x float> %negc, <vscale x 1 x i1> %m, i32 %evl)
3916 ret <vscale x 1 x float> %v
3919 define <vscale x 1 x float> @vfnmsub_vv_nxv1f32_unmasked(<vscale x 1 x float> %va, <vscale x 1 x float> %b, <vscale x 1 x float> %c, i32 zeroext %evl) {
3920 ; CHECK-LABEL: vfnmsub_vv_nxv1f32_unmasked:
3922 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3923 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
3925 %negb = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3926 %negc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3927 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %negb, <vscale x 1 x float> %negc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3928 ret <vscale x 1 x float> %v
3931 define <vscale x 1 x float> @vfnmsub_vv_nxv1f32_unmasked_commuted(<vscale x 1 x float> %va, <vscale x 1 x float> %b, <vscale x 1 x float> %c, i32 zeroext %evl) {
3932 ; CHECK-LABEL: vfnmsub_vv_nxv1f32_unmasked_commuted:
3934 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3935 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
3937 %negb = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3938 %negc = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3939 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %negb, <vscale x 1 x float> %va, <vscale x 1 x float> %negc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3940 ret <vscale x 1 x float> %v
3943 define <vscale x 1 x float> @vfnmsub_vf_nxv1f32(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
3944 ; CHECK-LABEL: vfnmsub_vf_nxv1f32:
3946 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3947 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
3949 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3950 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3951 %negva = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x i1> %m, i32 %evl)
3952 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %negva, <vscale x 1 x float> %vb, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 %evl)
3953 ret <vscale x 1 x float> %v
3956 define <vscale x 1 x float> @vfnmsub_vf_nxv1f32_commute(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
3957 ; CHECK-LABEL: vfnmsub_vf_nxv1f32_commute:
3959 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3960 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
3962 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3963 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3964 %negva = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x i1> %m, i32 %evl)
3965 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x float> %negva, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 %evl)
3966 ret <vscale x 1 x float> %v
3969 define <vscale x 1 x float> @vfnmsub_vf_nxv1f32_unmasked(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, i32 zeroext %evl) {
3970 ; CHECK-LABEL: vfnmsub_vf_nxv1f32_unmasked:
3972 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3973 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
3975 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3976 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3977 %negva = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3978 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %negva, <vscale x 1 x float> %vb, <vscale x 1 x float> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3979 ret <vscale x 1 x float> %v
3982 define <vscale x 1 x float> @vfnmsub_vf_nxv1f32_unmasked_commute(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, i32 zeroext %evl) {
3983 ; CHECK-LABEL: vfnmsub_vf_nxv1f32_unmasked_commute:
3985 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3986 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
3988 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3989 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3990 %negva = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3991 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x float> %negva, <vscale x 1 x float> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
3992 ret <vscale x 1 x float> %v
3995 define <vscale x 1 x float> @vfnmsub_vf_nxv1f32_neg_splat(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
3996 ; CHECK-LABEL: vfnmsub_vf_nxv1f32_neg_splat:
3998 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3999 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
4001 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
4002 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
4003 %negvb = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x i1> %m, i32 %evl)
4004 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %negvb, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 %evl)
4005 ret <vscale x 1 x float> %v
4008 define <vscale x 1 x float> @vfnmsub_vf_nxv1f32_neg_splat_commute(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
4009 ; CHECK-LABEL: vfnmsub_vf_nxv1f32_neg_splat_commute:
4011 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
4012 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
4014 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
4015 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
4016 %negvb = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x i1> %m, i32 %evl)
4017 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %negvb, <vscale x 1 x float> %va, <vscale x 1 x float> %vc, <vscale x 1 x i1> %m, i32 %evl)
4018 ret <vscale x 1 x float> %v
4021 define <vscale x 1 x float> @vfnmsub_vf_nxv1f32_neg_splat_unmasked(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, i32 zeroext %evl) {
4022 ; CHECK-LABEL: vfnmsub_vf_nxv1f32_neg_splat_unmasked:
4024 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
4025 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
4027 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
4028 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
4029 %negvb = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)
4030 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %negvb, <vscale x 1 x float> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
4031 ret <vscale x 1 x float> %v
4034 define <vscale x 1 x float> @vfnmsub_vf_nxv1f32_neg_splat_unmasked_commute(<vscale x 1 x float> %va, float %b, <vscale x 1 x float> %vc, i32 zeroext %evl) {
4035 ; CHECK-LABEL: vfnmsub_vf_nxv1f32_neg_splat_unmasked_commute:
4037 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
4038 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
4040 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
4041 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
4042 %negvb = call <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)
4043 %v = call <vscale x 1 x float> @llvm.vp.fmuladd.nxv1f32(<vscale x 1 x float> %negvb, <vscale x 1 x float> %va, <vscale x 1 x float> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
4044 ret <vscale x 1 x float> %v
4047 declare <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float>, <vscale x 2 x i1>, i32)
4049 define <vscale x 2 x float> @vfmsub_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %b, <vscale x 2 x float> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {
4050 ; CHECK-LABEL: vfmsub_vv_nxv2f32:
4052 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4053 ; CHECK-NEXT: vfmsub.vv v9, v8, v10, v0.t
4054 ; CHECK-NEXT: vmv.v.v v8, v9
4056 %negc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %c, <vscale x 2 x i1> %m, i32 %evl)
4057 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %b, <vscale x 2 x float> %negc, <vscale x 2 x i1> %m, i32 %evl)
4058 ret <vscale x 2 x float> %v
4061 define <vscale x 2 x float> @vfmsub_vv_nxv2f32_unmasked(<vscale x 2 x float> %va, <vscale x 2 x float> %b, <vscale x 2 x float> %c, i32 zeroext %evl) {
4062 ; CHECK-LABEL: vfmsub_vv_nxv2f32_unmasked:
4064 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4065 ; CHECK-NEXT: vfmsub.vv v8, v9, v10
4067 %negc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4068 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %b, <vscale x 2 x float> %negc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4069 ret <vscale x 2 x float> %v
4072 define <vscale x 2 x float> @vfmsub_vf_nxv2f32(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
4073 ; CHECK-LABEL: vfmsub_vf_nxv2f32:
4075 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4076 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9, v0.t
4078 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4079 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4080 %negvc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 %evl)
4081 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, <vscale x 2 x float> %negvc, <vscale x 2 x i1> %m, i32 %evl)
4082 ret <vscale x 2 x float> %v
4085 define <vscale x 2 x float> @vfmsub_vf_nxv2f32_commute(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
4086 ; CHECK-LABEL: vfmsub_vf_nxv2f32_commute:
4088 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4089 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9, v0.t
4091 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4092 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4093 %negvc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 %evl)
4094 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x float> %va, <vscale x 2 x float> %negvc, <vscale x 2 x i1> %m, i32 %evl)
4095 ret <vscale x 2 x float> %v
4098 define <vscale x 2 x float> @vfmsub_vf_nxv2f32_unmasked(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, i32 zeroext %evl) {
4099 ; CHECK-LABEL: vfmsub_vf_nxv2f32_unmasked:
4101 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4102 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9
4104 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4105 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4106 %negvc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4107 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, <vscale x 2 x float> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4108 ret <vscale x 2 x float> %v
4111 define <vscale x 2 x float> @vfmsub_vf_nxv2f32_unmasked_commute(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, i32 zeroext %evl) {
4112 ; CHECK-LABEL: vfmsub_vf_nxv2f32_unmasked_commute:
4114 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4115 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9
4117 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4118 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4119 %negvc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4120 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x float> %va, <vscale x 2 x float> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4121 ret <vscale x 2 x float> %v
4124 define <vscale x 2 x float> @vfnmadd_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %b, <vscale x 2 x float> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {
4125 ; CHECK-LABEL: vfnmadd_vv_nxv2f32:
4127 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4128 ; CHECK-NEXT: vfnmadd.vv v9, v8, v10, v0.t
4129 ; CHECK-NEXT: vmv.v.v v8, v9
4131 %negb = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %b, <vscale x 2 x i1> %m, i32 %evl)
4132 %negc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %c, <vscale x 2 x i1> %m, i32 %evl)
4133 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %negb, <vscale x 2 x float> %negc, <vscale x 2 x i1> %m, i32 %evl)
4134 ret <vscale x 2 x float> %v
4137 define <vscale x 2 x float> @vfnmadd_vv_nxv2f32_commuted(<vscale x 2 x float> %va, <vscale x 2 x float> %b, <vscale x 2 x float> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {
4138 ; CHECK-LABEL: vfnmadd_vv_nxv2f32_commuted:
4140 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4141 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10, v0.t
4143 %negb = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %b, <vscale x 2 x i1> %m, i32 %evl)
4144 %negc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %c, <vscale x 2 x i1> %m, i32 %evl)
4145 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %negb, <vscale x 2 x float> %va, <vscale x 2 x float> %negc, <vscale x 2 x i1> %m, i32 %evl)
4146 ret <vscale x 2 x float> %v
4149 define <vscale x 2 x float> @vfnmadd_vv_nxv2f32_unmasked(<vscale x 2 x float> %va, <vscale x 2 x float> %b, <vscale x 2 x float> %c, i32 zeroext %evl) {
4150 ; CHECK-LABEL: vfnmadd_vv_nxv2f32_unmasked:
4152 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4153 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
4155 %negb = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4156 %negc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4157 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %negb, <vscale x 2 x float> %negc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4158 ret <vscale x 2 x float> %v
4161 define <vscale x 2 x float> @vfnmadd_vv_nxv2f32_unmasked_commuted(<vscale x 2 x float> %va, <vscale x 2 x float> %b, <vscale x 2 x float> %c, i32 zeroext %evl) {
4162 ; CHECK-LABEL: vfnmadd_vv_nxv2f32_unmasked_commuted:
4164 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4165 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
4167 %negb = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4168 %negc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4169 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %negb, <vscale x 2 x float> %va, <vscale x 2 x float> %negc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4170 ret <vscale x 2 x float> %v
4173 define <vscale x 2 x float> @vfnmadd_vf_nxv2f32(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
4174 ; CHECK-LABEL: vfnmadd_vf_nxv2f32:
4176 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4177 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
4179 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4180 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4181 %negva = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x i1> %m, i32 %evl)
4182 %negvc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 %evl)
4183 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %negva, <vscale x 2 x float> %vb, <vscale x 2 x float> %negvc, <vscale x 2 x i1> %m, i32 %evl)
4184 ret <vscale x 2 x float> %v
4187 define <vscale x 2 x float> @vfnmadd_vf_nxv2f32_commute(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
4188 ; CHECK-LABEL: vfnmadd_vf_nxv2f32_commute:
4190 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4191 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
4193 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4194 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4195 %negva = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x i1> %m, i32 %evl)
4196 %negvc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 %evl)
4197 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x float> %negva, <vscale x 2 x float> %negvc, <vscale x 2 x i1> %m, i32 %evl)
4198 ret <vscale x 2 x float> %v
4201 define <vscale x 2 x float> @vfnmadd_vf_nxv2f32_unmasked(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, i32 zeroext %evl) {
4202 ; CHECK-LABEL: vfnmadd_vf_nxv2f32_unmasked:
4204 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4205 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
4207 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4208 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4209 %negva = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4210 %negvc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4211 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %negva, <vscale x 2 x float> %vb, <vscale x 2 x float> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4212 ret <vscale x 2 x float> %v
4215 define <vscale x 2 x float> @vfnmadd_vf_nxv2f32_unmasked_commute(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, i32 zeroext %evl) {
4216 ; CHECK-LABEL: vfnmadd_vf_nxv2f32_unmasked_commute:
4218 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4219 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
4221 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4222 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4223 %negva = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4224 %negvc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4225 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x float> %negva, <vscale x 2 x float> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4226 ret <vscale x 2 x float> %v
4229 define <vscale x 2 x float> @vfnmadd_vf_nxv2f32_neg_splat(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
4230 ; CHECK-LABEL: vfnmadd_vf_nxv2f32_neg_splat:
4232 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4233 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
4235 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4236 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4237 %negvb = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x i1> %m, i32 %evl)
4238 %negvc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 %evl)
4239 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %negvb, <vscale x 2 x float> %negvc, <vscale x 2 x i1> %m, i32 %evl)
4240 ret <vscale x 2 x float> %v
4243 define <vscale x 2 x float> @vfnmadd_vf_nxv2f32_neg_splat_commute(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
4244 ; CHECK-LABEL: vfnmadd_vf_nxv2f32_neg_splat_commute:
4246 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4247 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
4249 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4250 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4251 %negvb = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x i1> %m, i32 %evl)
4252 %negvc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 %evl)
4253 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %negvb, <vscale x 2 x float> %va, <vscale x 2 x float> %negvc, <vscale x 2 x i1> %m, i32 %evl)
4254 ret <vscale x 2 x float> %v
4257 define <vscale x 2 x float> @vfnmadd_vf_nxv2f32_neg_splat_unmasked(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, i32 zeroext %evl) {
4258 ; CHECK-LABEL: vfnmadd_vf_nxv2f32_neg_splat_unmasked:
4260 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4261 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
4263 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4264 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4265 %negvb = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4266 %negvc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4267 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %negvb, <vscale x 2 x float> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4268 ret <vscale x 2 x float> %v
4271 define <vscale x 2 x float> @vfnmadd_vf_nxv2f32_neg_splat_unmasked_commute(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, i32 zeroext %evl) {
4272 ; CHECK-LABEL: vfnmadd_vf_nxv2f32_neg_splat_unmasked_commute:
4274 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4275 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
4277 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4278 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4279 %negvb = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4280 %negvc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4281 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %negvb, <vscale x 2 x float> %va, <vscale x 2 x float> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4282 ret <vscale x 2 x float> %v
4285 define <vscale x 2 x float> @vfnmsub_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %b, <vscale x 2 x float> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {
4286 ; CHECK-LABEL: vfnmsub_vv_nxv2f32:
4288 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4289 ; CHECK-NEXT: vfnmadd.vv v9, v8, v10, v0.t
4290 ; CHECK-NEXT: vmv.v.v v8, v9
4292 %negb = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %b, <vscale x 2 x i1> %m, i32 %evl)
4293 %negc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %c, <vscale x 2 x i1> %m, i32 %evl)
4294 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %negb, <vscale x 2 x float> %negc, <vscale x 2 x i1> %m, i32 %evl)
4295 ret <vscale x 2 x float> %v
4298 define <vscale x 2 x float> @vfnmsub_vv_nxv2f32_commuted(<vscale x 2 x float> %va, <vscale x 2 x float> %b, <vscale x 2 x float> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {
4299 ; CHECK-LABEL: vfnmsub_vv_nxv2f32_commuted:
4301 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4302 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10, v0.t
4304 %negb = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %b, <vscale x 2 x i1> %m, i32 %evl)
4305 %negc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %c, <vscale x 2 x i1> %m, i32 %evl)
4306 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %negb, <vscale x 2 x float> %va, <vscale x 2 x float> %negc, <vscale x 2 x i1> %m, i32 %evl)
4307 ret <vscale x 2 x float> %v
4310 define <vscale x 2 x float> @vfnmsub_vv_nxv2f32_unmasked(<vscale x 2 x float> %va, <vscale x 2 x float> %b, <vscale x 2 x float> %c, i32 zeroext %evl) {
4311 ; CHECK-LABEL: vfnmsub_vv_nxv2f32_unmasked:
4313 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4314 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
4316 %negb = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4317 %negc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4318 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %negb, <vscale x 2 x float> %negc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4319 ret <vscale x 2 x float> %v
4322 define <vscale x 2 x float> @vfnmsub_vv_nxv2f32_unmasked_commuted(<vscale x 2 x float> %va, <vscale x 2 x float> %b, <vscale x 2 x float> %c, i32 zeroext %evl) {
4323 ; CHECK-LABEL: vfnmsub_vv_nxv2f32_unmasked_commuted:
4325 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4326 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
4328 %negb = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4329 %negc = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4330 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %negb, <vscale x 2 x float> %va, <vscale x 2 x float> %negc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4331 ret <vscale x 2 x float> %v
4334 define <vscale x 2 x float> @vfnmsub_vf_nxv2f32(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
4335 ; CHECK-LABEL: vfnmsub_vf_nxv2f32:
4337 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4338 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
4340 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4341 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4342 %negva = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x i1> %m, i32 %evl)
4343 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %negva, <vscale x 2 x float> %vb, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 %evl)
4344 ret <vscale x 2 x float> %v
4347 define <vscale x 2 x float> @vfnmsub_vf_nxv2f32_commute(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
4348 ; CHECK-LABEL: vfnmsub_vf_nxv2f32_commute:
4350 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4351 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
4353 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4354 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4355 %negva = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x i1> %m, i32 %evl)
4356 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x float> %negva, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 %evl)
4357 ret <vscale x 2 x float> %v
4360 define <vscale x 2 x float> @vfnmsub_vf_nxv2f32_unmasked(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, i32 zeroext %evl) {
4361 ; CHECK-LABEL: vfnmsub_vf_nxv2f32_unmasked:
4363 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4364 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
4366 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4367 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4368 %negva = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4369 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %negva, <vscale x 2 x float> %vb, <vscale x 2 x float> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4370 ret <vscale x 2 x float> %v
4373 define <vscale x 2 x float> @vfnmsub_vf_nxv2f32_unmasked_commute(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, i32 zeroext %evl) {
4374 ; CHECK-LABEL: vfnmsub_vf_nxv2f32_unmasked_commute:
4376 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4377 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
4379 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4380 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4381 %negva = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4382 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x float> %negva, <vscale x 2 x float> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4383 ret <vscale x 2 x float> %v
4386 define <vscale x 2 x float> @vfnmsub_vf_nxv2f32_neg_splat(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
4387 ; CHECK-LABEL: vfnmsub_vf_nxv2f32_neg_splat:
4389 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4390 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
4392 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4393 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4394 %negvb = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x i1> %m, i32 %evl)
4395 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %negvb, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 %evl)
4396 ret <vscale x 2 x float> %v
4399 define <vscale x 2 x float> @vfnmsub_vf_nxv2f32_neg_splat_commute(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
4400 ; CHECK-LABEL: vfnmsub_vf_nxv2f32_neg_splat_commute:
4402 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4403 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
4405 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4406 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4407 %negvb = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x i1> %m, i32 %evl)
4408 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %negvb, <vscale x 2 x float> %va, <vscale x 2 x float> %vc, <vscale x 2 x i1> %m, i32 %evl)
4409 ret <vscale x 2 x float> %v
4412 define <vscale x 2 x float> @vfnmsub_vf_nxv2f32_neg_splat_unmasked(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, i32 zeroext %evl) {
4413 ; CHECK-LABEL: vfnmsub_vf_nxv2f32_neg_splat_unmasked:
4415 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4416 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
4418 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4419 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4420 %negvb = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4421 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %negvb, <vscale x 2 x float> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4422 ret <vscale x 2 x float> %v
4425 define <vscale x 2 x float> @vfnmsub_vf_nxv2f32_neg_splat_unmasked_commute(<vscale x 2 x float> %va, float %b, <vscale x 2 x float> %vc, i32 zeroext %evl) {
4426 ; CHECK-LABEL: vfnmsub_vf_nxv2f32_neg_splat_unmasked_commute:
4428 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4429 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
4431 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4432 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4433 %negvb = call <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4434 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %negvb, <vscale x 2 x float> %va, <vscale x 2 x float> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
4435 ret <vscale x 2 x float> %v
4438 declare <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float>, <vscale x 4 x i1>, i32)
4440 define <vscale x 4 x float> @vfmsub_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %b, <vscale x 4 x float> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {
4441 ; CHECK-LABEL: vfmsub_vv_nxv4f32:
4443 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4444 ; CHECK-NEXT: vfmsub.vv v10, v8, v12, v0.t
4445 ; CHECK-NEXT: vmv.v.v v8, v10
4447 %negc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %c, <vscale x 4 x i1> %m, i32 %evl)
4448 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %b, <vscale x 4 x float> %negc, <vscale x 4 x i1> %m, i32 %evl)
4449 ret <vscale x 4 x float> %v
4452 define <vscale x 4 x float> @vfmsub_vv_nxv4f32_unmasked(<vscale x 4 x float> %va, <vscale x 4 x float> %b, <vscale x 4 x float> %c, i32 zeroext %evl) {
4453 ; CHECK-LABEL: vfmsub_vv_nxv4f32_unmasked:
4455 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4456 ; CHECK-NEXT: vfmsub.vv v8, v10, v12
4458 %negc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4459 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %b, <vscale x 4 x float> %negc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4460 ret <vscale x 4 x float> %v
4463 define <vscale x 4 x float> @vfmsub_vf_nxv4f32(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
4464 ; CHECK-LABEL: vfmsub_vf_nxv4f32:
4466 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4467 ; CHECK-NEXT: vfmsub.vf v8, fa0, v10, v0.t
4469 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4470 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4471 %negvc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 %evl)
4472 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, <vscale x 4 x float> %negvc, <vscale x 4 x i1> %m, i32 %evl)
4473 ret <vscale x 4 x float> %v
4476 define <vscale x 4 x float> @vfmsub_vf_nxv4f32_commute(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
4477 ; CHECK-LABEL: vfmsub_vf_nxv4f32_commute:
4479 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4480 ; CHECK-NEXT: vfmsub.vf v8, fa0, v10, v0.t
4482 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4483 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4484 %negvc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 %evl)
4485 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x float> %va, <vscale x 4 x float> %negvc, <vscale x 4 x i1> %m, i32 %evl)
4486 ret <vscale x 4 x float> %v
4489 define <vscale x 4 x float> @vfmsub_vf_nxv4f32_unmasked(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, i32 zeroext %evl) {
4490 ; CHECK-LABEL: vfmsub_vf_nxv4f32_unmasked:
4492 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4493 ; CHECK-NEXT: vfmsub.vf v8, fa0, v10
4495 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4496 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4497 %negvc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4498 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, <vscale x 4 x float> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4499 ret <vscale x 4 x float> %v
4502 define <vscale x 4 x float> @vfmsub_vf_nxv4f32_unmasked_commute(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, i32 zeroext %evl) {
4503 ; CHECK-LABEL: vfmsub_vf_nxv4f32_unmasked_commute:
4505 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4506 ; CHECK-NEXT: vfmsub.vf v8, fa0, v10
4508 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4509 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4510 %negvc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4511 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x float> %va, <vscale x 4 x float> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4512 ret <vscale x 4 x float> %v
4515 define <vscale x 4 x float> @vfnmadd_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %b, <vscale x 4 x float> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {
4516 ; CHECK-LABEL: vfnmadd_vv_nxv4f32:
4518 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4519 ; CHECK-NEXT: vfnmadd.vv v10, v8, v12, v0.t
4520 ; CHECK-NEXT: vmv.v.v v8, v10
4522 %negb = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %b, <vscale x 4 x i1> %m, i32 %evl)
4523 %negc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %c, <vscale x 4 x i1> %m, i32 %evl)
4524 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %negb, <vscale x 4 x float> %negc, <vscale x 4 x i1> %m, i32 %evl)
4525 ret <vscale x 4 x float> %v
4528 define <vscale x 4 x float> @vfnmadd_vv_nxv4f32_commuted(<vscale x 4 x float> %va, <vscale x 4 x float> %b, <vscale x 4 x float> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {
4529 ; CHECK-LABEL: vfnmadd_vv_nxv4f32_commuted:
4531 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4532 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12, v0.t
4534 %negb = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %b, <vscale x 4 x i1> %m, i32 %evl)
4535 %negc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %c, <vscale x 4 x i1> %m, i32 %evl)
4536 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %negb, <vscale x 4 x float> %va, <vscale x 4 x float> %negc, <vscale x 4 x i1> %m, i32 %evl)
4537 ret <vscale x 4 x float> %v
4540 define <vscale x 4 x float> @vfnmadd_vv_nxv4f32_unmasked(<vscale x 4 x float> %va, <vscale x 4 x float> %b, <vscale x 4 x float> %c, i32 zeroext %evl) {
4541 ; CHECK-LABEL: vfnmadd_vv_nxv4f32_unmasked:
4543 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4544 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12
4546 %negb = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4547 %negc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4548 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %negb, <vscale x 4 x float> %negc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4549 ret <vscale x 4 x float> %v
4552 define <vscale x 4 x float> @vfnmadd_vv_nxv4f32_unmasked_commuted(<vscale x 4 x float> %va, <vscale x 4 x float> %b, <vscale x 4 x float> %c, i32 zeroext %evl) {
4553 ; CHECK-LABEL: vfnmadd_vv_nxv4f32_unmasked_commuted:
4555 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4556 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12
4558 %negb = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4559 %negc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4560 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %negb, <vscale x 4 x float> %va, <vscale x 4 x float> %negc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4561 ret <vscale x 4 x float> %v
4564 define <vscale x 4 x float> @vfnmadd_vf_nxv4f32(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
4565 ; CHECK-LABEL: vfnmadd_vf_nxv4f32:
4567 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4568 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10, v0.t
4570 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4571 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4572 %negva = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x i1> %m, i32 %evl)
4573 %negvc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 %evl)
4574 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %negva, <vscale x 4 x float> %vb, <vscale x 4 x float> %negvc, <vscale x 4 x i1> %m, i32 %evl)
4575 ret <vscale x 4 x float> %v
4578 define <vscale x 4 x float> @vfnmadd_vf_nxv4f32_commute(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
4579 ; CHECK-LABEL: vfnmadd_vf_nxv4f32_commute:
4581 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4582 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10, v0.t
4584 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4585 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4586 %negva = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x i1> %m, i32 %evl)
4587 %negvc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 %evl)
4588 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x float> %negva, <vscale x 4 x float> %negvc, <vscale x 4 x i1> %m, i32 %evl)
4589 ret <vscale x 4 x float> %v
4592 define <vscale x 4 x float> @vfnmadd_vf_nxv4f32_unmasked(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, i32 zeroext %evl) {
4593 ; CHECK-LABEL: vfnmadd_vf_nxv4f32_unmasked:
4595 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4596 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10
4598 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4599 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4600 %negva = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4601 %negvc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4602 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %negva, <vscale x 4 x float> %vb, <vscale x 4 x float> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4603 ret <vscale x 4 x float> %v
4606 define <vscale x 4 x float> @vfnmadd_vf_nxv4f32_unmasked_commute(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, i32 zeroext %evl) {
4607 ; CHECK-LABEL: vfnmadd_vf_nxv4f32_unmasked_commute:
4609 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4610 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10
4612 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4613 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4614 %negva = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4615 %negvc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4616 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x float> %negva, <vscale x 4 x float> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4617 ret <vscale x 4 x float> %v
4620 define <vscale x 4 x float> @vfnmadd_vf_nxv4f32_neg_splat(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
4621 ; CHECK-LABEL: vfnmadd_vf_nxv4f32_neg_splat:
4623 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4624 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10, v0.t
4626 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4627 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4628 %negvb = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x i1> %m, i32 %evl)
4629 %negvc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 %evl)
4630 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %negvb, <vscale x 4 x float> %negvc, <vscale x 4 x i1> %m, i32 %evl)
4631 ret <vscale x 4 x float> %v
4634 define <vscale x 4 x float> @vfnmadd_vf_nxv4f32_neg_splat_commute(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
4635 ; CHECK-LABEL: vfnmadd_vf_nxv4f32_neg_splat_commute:
4637 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4638 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10, v0.t
4640 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4641 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4642 %negvb = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x i1> %m, i32 %evl)
4643 %negvc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 %evl)
4644 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %negvb, <vscale x 4 x float> %va, <vscale x 4 x float> %negvc, <vscale x 4 x i1> %m, i32 %evl)
4645 ret <vscale x 4 x float> %v
4648 define <vscale x 4 x float> @vfnmadd_vf_nxv4f32_neg_splat_unmasked(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, i32 zeroext %evl) {
4649 ; CHECK-LABEL: vfnmadd_vf_nxv4f32_neg_splat_unmasked:
4651 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4652 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10
4654 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4655 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4656 %negvb = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4657 %negvc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4658 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %negvb, <vscale x 4 x float> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4659 ret <vscale x 4 x float> %v
4662 define <vscale x 4 x float> @vfnmadd_vf_nxv4f32_neg_splat_unmasked_commute(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, i32 zeroext %evl) {
4663 ; CHECK-LABEL: vfnmadd_vf_nxv4f32_neg_splat_unmasked_commute:
4665 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4666 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10
4668 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4669 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4670 %negvb = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4671 %negvc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4672 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %negvb, <vscale x 4 x float> %va, <vscale x 4 x float> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4673 ret <vscale x 4 x float> %v
4676 define <vscale x 4 x float> @vfnmsub_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %b, <vscale x 4 x float> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {
4677 ; CHECK-LABEL: vfnmsub_vv_nxv4f32:
4679 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4680 ; CHECK-NEXT: vfnmadd.vv v10, v8, v12, v0.t
4681 ; CHECK-NEXT: vmv.v.v v8, v10
4683 %negb = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %b, <vscale x 4 x i1> %m, i32 %evl)
4684 %negc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %c, <vscale x 4 x i1> %m, i32 %evl)
4685 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %negb, <vscale x 4 x float> %negc, <vscale x 4 x i1> %m, i32 %evl)
4686 ret <vscale x 4 x float> %v
4689 define <vscale x 4 x float> @vfnmsub_vv_nxv4f32_commuted(<vscale x 4 x float> %va, <vscale x 4 x float> %b, <vscale x 4 x float> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {
4690 ; CHECK-LABEL: vfnmsub_vv_nxv4f32_commuted:
4692 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4693 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12, v0.t
4695 %negb = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %b, <vscale x 4 x i1> %m, i32 %evl)
4696 %negc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %c, <vscale x 4 x i1> %m, i32 %evl)
4697 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %negb, <vscale x 4 x float> %va, <vscale x 4 x float> %negc, <vscale x 4 x i1> %m, i32 %evl)
4698 ret <vscale x 4 x float> %v
4701 define <vscale x 4 x float> @vfnmsub_vv_nxv4f32_unmasked(<vscale x 4 x float> %va, <vscale x 4 x float> %b, <vscale x 4 x float> %c, i32 zeroext %evl) {
4702 ; CHECK-LABEL: vfnmsub_vv_nxv4f32_unmasked:
4704 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4705 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12
4707 %negb = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4708 %negc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4709 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %negb, <vscale x 4 x float> %negc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4710 ret <vscale x 4 x float> %v
4713 define <vscale x 4 x float> @vfnmsub_vv_nxv4f32_unmasked_commuted(<vscale x 4 x float> %va, <vscale x 4 x float> %b, <vscale x 4 x float> %c, i32 zeroext %evl) {
4714 ; CHECK-LABEL: vfnmsub_vv_nxv4f32_unmasked_commuted:
4716 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4717 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12
4719 %negb = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4720 %negc = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4721 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %negb, <vscale x 4 x float> %va, <vscale x 4 x float> %negc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4722 ret <vscale x 4 x float> %v
4725 define <vscale x 4 x float> @vfnmsub_vf_nxv4f32(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
4726 ; CHECK-LABEL: vfnmsub_vf_nxv4f32:
4728 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4729 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10, v0.t
4731 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4732 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4733 %negva = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x i1> %m, i32 %evl)
4734 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %negva, <vscale x 4 x float> %vb, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 %evl)
4735 ret <vscale x 4 x float> %v
4738 define <vscale x 4 x float> @vfnmsub_vf_nxv4f32_commute(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
4739 ; CHECK-LABEL: vfnmsub_vf_nxv4f32_commute:
4741 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4742 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10, v0.t
4744 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4745 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4746 %negva = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x i1> %m, i32 %evl)
4747 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x float> %negva, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 %evl)
4748 ret <vscale x 4 x float> %v
4751 define <vscale x 4 x float> @vfnmsub_vf_nxv4f32_unmasked(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, i32 zeroext %evl) {
4752 ; CHECK-LABEL: vfnmsub_vf_nxv4f32_unmasked:
4754 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4755 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10
4757 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4758 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4759 %negva = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4760 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %negva, <vscale x 4 x float> %vb, <vscale x 4 x float> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4761 ret <vscale x 4 x float> %v
4764 define <vscale x 4 x float> @vfnmsub_vf_nxv4f32_unmasked_commute(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, i32 zeroext %evl) {
4765 ; CHECK-LABEL: vfnmsub_vf_nxv4f32_unmasked_commute:
4767 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4768 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10
4770 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4771 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4772 %negva = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4773 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x float> %negva, <vscale x 4 x float> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4774 ret <vscale x 4 x float> %v
4777 define <vscale x 4 x float> @vfnmsub_vf_nxv4f32_neg_splat(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
4778 ; CHECK-LABEL: vfnmsub_vf_nxv4f32_neg_splat:
4780 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4781 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10, v0.t
4783 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4784 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4785 %negvb = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x i1> %m, i32 %evl)
4786 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %negvb, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 %evl)
4787 ret <vscale x 4 x float> %v
4790 define <vscale x 4 x float> @vfnmsub_vf_nxv4f32_neg_splat_commute(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
4791 ; CHECK-LABEL: vfnmsub_vf_nxv4f32_neg_splat_commute:
4793 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4794 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10, v0.t
4796 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4797 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4798 %negvb = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x i1> %m, i32 %evl)
4799 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %negvb, <vscale x 4 x float> %va, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 %evl)
4800 ret <vscale x 4 x float> %v
4803 define <vscale x 4 x float> @vfnmsub_vf_nxv4f32_neg_splat_unmasked(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, i32 zeroext %evl) {
4804 ; CHECK-LABEL: vfnmsub_vf_nxv4f32_neg_splat_unmasked:
4806 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4807 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10
4809 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4810 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4811 %negvb = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4812 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %negvb, <vscale x 4 x float> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4813 ret <vscale x 4 x float> %v
4816 define <vscale x 4 x float> @vfnmsub_vf_nxv4f32_neg_splat_unmasked_commute(<vscale x 4 x float> %va, float %b, <vscale x 4 x float> %vc, i32 zeroext %evl) {
4817 ; CHECK-LABEL: vfnmsub_vf_nxv4f32_neg_splat_unmasked_commute:
4819 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4820 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10
4822 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4823 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4824 %negvb = call <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4825 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %negvb, <vscale x 4 x float> %va, <vscale x 4 x float> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
4826 ret <vscale x 4 x float> %v
4829 declare <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float>, <vscale x 8 x i1>, i32)
4831 define <vscale x 8 x float> @vfmsub_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %b, <vscale x 8 x float> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {
4832 ; CHECK-LABEL: vfmsub_vv_nxv8f32:
4834 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
4835 ; CHECK-NEXT: vfmsub.vv v12, v8, v16, v0.t
4836 ; CHECK-NEXT: vmv.v.v v8, v12
4838 %negc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %c, <vscale x 8 x i1> %m, i32 %evl)
4839 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %b, <vscale x 8 x float> %negc, <vscale x 8 x i1> %m, i32 %evl)
4840 ret <vscale x 8 x float> %v
4843 define <vscale x 8 x float> @vfmsub_vv_nxv8f32_unmasked(<vscale x 8 x float> %va, <vscale x 8 x float> %b, <vscale x 8 x float> %c, i32 zeroext %evl) {
4844 ; CHECK-LABEL: vfmsub_vv_nxv8f32_unmasked:
4846 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
4847 ; CHECK-NEXT: vfmsub.vv v8, v12, v16
4849 %negc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)
4850 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %b, <vscale x 8 x float> %negc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
4851 ret <vscale x 8 x float> %v
4854 define <vscale x 8 x float> @vfmsub_vf_nxv8f32(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
4855 ; CHECK-LABEL: vfmsub_vf_nxv8f32:
4857 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
4858 ; CHECK-NEXT: vfmsub.vf v8, fa0, v12, v0.t
4860 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
4861 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
4862 %negvc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 %evl)
4863 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, <vscale x 8 x float> %negvc, <vscale x 8 x i1> %m, i32 %evl)
4864 ret <vscale x 8 x float> %v
4867 define <vscale x 8 x float> @vfmsub_vf_nxv8f32_commute(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
4868 ; CHECK-LABEL: vfmsub_vf_nxv8f32_commute:
4870 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
4871 ; CHECK-NEXT: vfmsub.vf v8, fa0, v12, v0.t
4873 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
4874 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
4875 %negvc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 %evl)
4876 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x float> %va, <vscale x 8 x float> %negvc, <vscale x 8 x i1> %m, i32 %evl)
4877 ret <vscale x 8 x float> %v
4880 define <vscale x 8 x float> @vfmsub_vf_nxv8f32_unmasked(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, i32 zeroext %evl) {
4881 ; CHECK-LABEL: vfmsub_vf_nxv8f32_unmasked:
4883 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
4884 ; CHECK-NEXT: vfmsub.vf v8, fa0, v12
4886 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
4887 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
4888 %negvc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
4889 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, <vscale x 8 x float> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
4890 ret <vscale x 8 x float> %v
4893 define <vscale x 8 x float> @vfmsub_vf_nxv8f32_unmasked_commute(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, i32 zeroext %evl) {
4894 ; CHECK-LABEL: vfmsub_vf_nxv8f32_unmasked_commute:
4896 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
4897 ; CHECK-NEXT: vfmsub.vf v8, fa0, v12
4899 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
4900 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
4901 %negvc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
4902 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x float> %va, <vscale x 8 x float> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
4903 ret <vscale x 8 x float> %v
4906 define <vscale x 8 x float> @vfnmadd_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %b, <vscale x 8 x float> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {
4907 ; CHECK-LABEL: vfnmadd_vv_nxv8f32:
4909 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
4910 ; CHECK-NEXT: vfnmadd.vv v12, v8, v16, v0.t
4911 ; CHECK-NEXT: vmv.v.v v8, v12
4913 %negb = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %b, <vscale x 8 x i1> %m, i32 %evl)
4914 %negc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %c, <vscale x 8 x i1> %m, i32 %evl)
4915 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %negb, <vscale x 8 x float> %negc, <vscale x 8 x i1> %m, i32 %evl)
4916 ret <vscale x 8 x float> %v
4919 define <vscale x 8 x float> @vfnmadd_vv_nxv8f32_commuted(<vscale x 8 x float> %va, <vscale x 8 x float> %b, <vscale x 8 x float> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {
4920 ; CHECK-LABEL: vfnmadd_vv_nxv8f32_commuted:
4922 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
4923 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16, v0.t
4925 %negb = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %b, <vscale x 8 x i1> %m, i32 %evl)
4926 %negc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %c, <vscale x 8 x i1> %m, i32 %evl)
4927 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %negb, <vscale x 8 x float> %va, <vscale x 8 x float> %negc, <vscale x 8 x i1> %m, i32 %evl)
4928 ret <vscale x 8 x float> %v
4931 define <vscale x 8 x float> @vfnmadd_vv_nxv8f32_unmasked(<vscale x 8 x float> %va, <vscale x 8 x float> %b, <vscale x 8 x float> %c, i32 zeroext %evl) {
4932 ; CHECK-LABEL: vfnmadd_vv_nxv8f32_unmasked:
4934 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
4935 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16
4937 %negb = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)
4938 %negc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)
4939 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %negb, <vscale x 8 x float> %negc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
4940 ret <vscale x 8 x float> %v
4943 define <vscale x 8 x float> @vfnmadd_vv_nxv8f32_unmasked_commuted(<vscale x 8 x float> %va, <vscale x 8 x float> %b, <vscale x 8 x float> %c, i32 zeroext %evl) {
4944 ; CHECK-LABEL: vfnmadd_vv_nxv8f32_unmasked_commuted:
4946 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
4947 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16
4949 %negb = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)
4950 %negc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)
4951 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %negb, <vscale x 8 x float> %va, <vscale x 8 x float> %negc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
4952 ret <vscale x 8 x float> %v
4955 define <vscale x 8 x float> @vfnmadd_vf_nxv8f32(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
4956 ; CHECK-LABEL: vfnmadd_vf_nxv8f32:
4958 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
4959 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12, v0.t
4961 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
4962 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
4963 %negva = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x i1> %m, i32 %evl)
4964 %negvc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 %evl)
4965 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %negva, <vscale x 8 x float> %vb, <vscale x 8 x float> %negvc, <vscale x 8 x i1> %m, i32 %evl)
4966 ret <vscale x 8 x float> %v
4969 define <vscale x 8 x float> @vfnmadd_vf_nxv8f32_commute(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
4970 ; CHECK-LABEL: vfnmadd_vf_nxv8f32_commute:
4972 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
4973 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12, v0.t
4975 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
4976 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
4977 %negva = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x i1> %m, i32 %evl)
4978 %negvc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 %evl)
4979 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x float> %negva, <vscale x 8 x float> %negvc, <vscale x 8 x i1> %m, i32 %evl)
4980 ret <vscale x 8 x float> %v
4983 define <vscale x 8 x float> @vfnmadd_vf_nxv8f32_unmasked(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, i32 zeroext %evl) {
4984 ; CHECK-LABEL: vfnmadd_vf_nxv8f32_unmasked:
4986 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
4987 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12
4989 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
4990 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
4991 %negva = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x i1> splat (i1 true), i32 %evl)
4992 %negvc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
4993 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %negva, <vscale x 8 x float> %vb, <vscale x 8 x float> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
4994 ret <vscale x 8 x float> %v
4997 define <vscale x 8 x float> @vfnmadd_vf_nxv8f32_unmasked_commute(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, i32 zeroext %evl) {
4998 ; CHECK-LABEL: vfnmadd_vf_nxv8f32_unmasked_commute:
5000 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
5001 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12
5003 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5004 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5005 %negva = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x i1> splat (i1 true), i32 %evl)
5006 %negvc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
5007 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x float> %negva, <vscale x 8 x float> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
5008 ret <vscale x 8 x float> %v
5011 define <vscale x 8 x float> @vfnmadd_vf_nxv8f32_neg_splat(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
5012 ; CHECK-LABEL: vfnmadd_vf_nxv8f32_neg_splat:
5014 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
5015 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12, v0.t
5017 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5018 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5019 %negvb = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x i1> %m, i32 %evl)
5020 %negvc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 %evl)
5021 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %negvb, <vscale x 8 x float> %negvc, <vscale x 8 x i1> %m, i32 %evl)
5022 ret <vscale x 8 x float> %v
5025 define <vscale x 8 x float> @vfnmadd_vf_nxv8f32_neg_splat_commute(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
5026 ; CHECK-LABEL: vfnmadd_vf_nxv8f32_neg_splat_commute:
5028 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
5029 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12, v0.t
5031 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5032 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5033 %negvb = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x i1> %m, i32 %evl)
5034 %negvc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 %evl)
5035 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %negvb, <vscale x 8 x float> %va, <vscale x 8 x float> %negvc, <vscale x 8 x i1> %m, i32 %evl)
5036 ret <vscale x 8 x float> %v
5039 define <vscale x 8 x float> @vfnmadd_vf_nxv8f32_neg_splat_unmasked(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, i32 zeroext %evl) {
5040 ; CHECK-LABEL: vfnmadd_vf_nxv8f32_neg_splat_unmasked:
5042 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
5043 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12
5045 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5046 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5047 %negvb = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)
5048 %negvc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
5049 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %negvb, <vscale x 8 x float> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
5050 ret <vscale x 8 x float> %v
5053 define <vscale x 8 x float> @vfnmadd_vf_nxv8f32_neg_splat_unmasked_commute(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, i32 zeroext %evl) {
5054 ; CHECK-LABEL: vfnmadd_vf_nxv8f32_neg_splat_unmasked_commute:
5056 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
5057 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12
5059 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5060 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5061 %negvb = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)
5062 %negvc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
5063 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %negvb, <vscale x 8 x float> %va, <vscale x 8 x float> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
5064 ret <vscale x 8 x float> %v
5067 define <vscale x 8 x float> @vfnmsub_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %b, <vscale x 8 x float> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {
5068 ; CHECK-LABEL: vfnmsub_vv_nxv8f32:
5070 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
5071 ; CHECK-NEXT: vfnmadd.vv v12, v8, v16, v0.t
5072 ; CHECK-NEXT: vmv.v.v v8, v12
5074 %negb = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %b, <vscale x 8 x i1> %m, i32 %evl)
5075 %negc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %c, <vscale x 8 x i1> %m, i32 %evl)
5076 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %negb, <vscale x 8 x float> %negc, <vscale x 8 x i1> %m, i32 %evl)
5077 ret <vscale x 8 x float> %v
5080 define <vscale x 8 x float> @vfnmsub_vv_nxv8f32_commuted(<vscale x 8 x float> %va, <vscale x 8 x float> %b, <vscale x 8 x float> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {
5081 ; CHECK-LABEL: vfnmsub_vv_nxv8f32_commuted:
5083 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
5084 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16, v0.t
5086 %negb = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %b, <vscale x 8 x i1> %m, i32 %evl)
5087 %negc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %c, <vscale x 8 x i1> %m, i32 %evl)
5088 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %negb, <vscale x 8 x float> %va, <vscale x 8 x float> %negc, <vscale x 8 x i1> %m, i32 %evl)
5089 ret <vscale x 8 x float> %v
5092 define <vscale x 8 x float> @vfnmsub_vv_nxv8f32_unmasked(<vscale x 8 x float> %va, <vscale x 8 x float> %b, <vscale x 8 x float> %c, i32 zeroext %evl) {
5093 ; CHECK-LABEL: vfnmsub_vv_nxv8f32_unmasked:
5095 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
5096 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16
5098 %negb = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)
5099 %negc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)
5100 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %negb, <vscale x 8 x float> %negc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
5101 ret <vscale x 8 x float> %v
5104 define <vscale x 8 x float> @vfnmsub_vv_nxv8f32_unmasked_commuted(<vscale x 8 x float> %va, <vscale x 8 x float> %b, <vscale x 8 x float> %c, i32 zeroext %evl) {
5105 ; CHECK-LABEL: vfnmsub_vv_nxv8f32_unmasked_commuted:
5107 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
5108 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16
5110 %negb = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)
5111 %negc = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)
5112 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %negb, <vscale x 8 x float> %va, <vscale x 8 x float> %negc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
5113 ret <vscale x 8 x float> %v
5116 define <vscale x 8 x float> @vfnmsub_vf_nxv8f32(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
5117 ; CHECK-LABEL: vfnmsub_vf_nxv8f32:
5119 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
5120 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12, v0.t
5122 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5123 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5124 %negva = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x i1> %m, i32 %evl)
5125 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %negva, <vscale x 8 x float> %vb, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 %evl)
5126 ret <vscale x 8 x float> %v
5129 define <vscale x 8 x float> @vfnmsub_vf_nxv8f32_commute(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
5130 ; CHECK-LABEL: vfnmsub_vf_nxv8f32_commute:
5132 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
5133 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12, v0.t
5135 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5136 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5137 %negva = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x i1> %m, i32 %evl)
5138 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x float> %negva, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 %evl)
5139 ret <vscale x 8 x float> %v
5142 define <vscale x 8 x float> @vfnmsub_vf_nxv8f32_unmasked(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, i32 zeroext %evl) {
5143 ; CHECK-LABEL: vfnmsub_vf_nxv8f32_unmasked:
5145 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
5146 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12
5148 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5149 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5150 %negva = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x i1> splat (i1 true), i32 %evl)
5151 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %negva, <vscale x 8 x float> %vb, <vscale x 8 x float> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
5152 ret <vscale x 8 x float> %v
5155 define <vscale x 8 x float> @vfnmsub_vf_nxv8f32_unmasked_commute(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, i32 zeroext %evl) {
5156 ; CHECK-LABEL: vfnmsub_vf_nxv8f32_unmasked_commute:
5158 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
5159 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12
5161 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5162 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5163 %negva = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x i1> splat (i1 true), i32 %evl)
5164 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x float> %negva, <vscale x 8 x float> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
5165 ret <vscale x 8 x float> %v
5168 define <vscale x 8 x float> @vfnmsub_vf_nxv8f32_neg_splat(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
5169 ; CHECK-LABEL: vfnmsub_vf_nxv8f32_neg_splat:
5171 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
5172 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12, v0.t
5174 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5175 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5176 %negvb = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x i1> %m, i32 %evl)
5177 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %negvb, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 %evl)
5178 ret <vscale x 8 x float> %v
5181 define <vscale x 8 x float> @vfnmsub_vf_nxv8f32_neg_splat_commute(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
5182 ; CHECK-LABEL: vfnmsub_vf_nxv8f32_neg_splat_commute:
5184 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
5185 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12, v0.t
5187 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5188 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5189 %negvb = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x i1> %m, i32 %evl)
5190 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %negvb, <vscale x 8 x float> %va, <vscale x 8 x float> %vc, <vscale x 8 x i1> %m, i32 %evl)
5191 ret <vscale x 8 x float> %v
5194 define <vscale x 8 x float> @vfnmsub_vf_nxv8f32_neg_splat_unmasked(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, i32 zeroext %evl) {
5195 ; CHECK-LABEL: vfnmsub_vf_nxv8f32_neg_splat_unmasked:
5197 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
5198 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12
5200 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5201 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5202 %negvb = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)
5203 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %negvb, <vscale x 8 x float> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
5204 ret <vscale x 8 x float> %v
5207 define <vscale x 8 x float> @vfnmsub_vf_nxv8f32_neg_splat_unmasked_commute(<vscale x 8 x float> %va, float %b, <vscale x 8 x float> %vc, i32 zeroext %evl) {
5208 ; CHECK-LABEL: vfnmsub_vf_nxv8f32_neg_splat_unmasked_commute:
5210 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
5211 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12
5213 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5214 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5215 %negvb = call <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)
5216 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %negvb, <vscale x 8 x float> %va, <vscale x 8 x float> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
5217 ret <vscale x 8 x float> %v
5220 declare <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float>, <vscale x 16 x i1>, i32)
5222 define <vscale x 16 x float> @vfmsub_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %b, <vscale x 16 x float> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {
5223 ; CHECK-LABEL: vfmsub_vv_nxv16f32:
5225 ; CHECK-NEXT: vl8re32.v v24, (a0)
5226 ; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma
5227 ; CHECK-NEXT: vfmsub.vv v16, v8, v24, v0.t
5228 ; CHECK-NEXT: vmv.v.v v8, v16
5230 %negc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %c, <vscale x 16 x i1> %m, i32 %evl)
5231 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %b, <vscale x 16 x float> %negc, <vscale x 16 x i1> %m, i32 %evl)
5232 ret <vscale x 16 x float> %v
5235 define <vscale x 16 x float> @vfmsub_vv_nxv16f32_unmasked(<vscale x 16 x float> %va, <vscale x 16 x float> %b, <vscale x 16 x float> %c, i32 zeroext %evl) {
5236 ; CHECK-LABEL: vfmsub_vv_nxv16f32_unmasked:
5238 ; CHECK-NEXT: vl8re32.v v24, (a0)
5239 ; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma
5240 ; CHECK-NEXT: vfmsub.vv v8, v16, v24
5242 %negc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %c, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5243 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %b, <vscale x 16 x float> %negc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5244 ret <vscale x 16 x float> %v
5247 define <vscale x 16 x float> @vfmsub_vf_nxv16f32(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {
5248 ; CHECK-LABEL: vfmsub_vf_nxv16f32:
5250 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5251 ; CHECK-NEXT: vfmsub.vf v8, fa0, v16, v0.t
5253 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5254 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5255 %negvc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 %evl)
5256 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, <vscale x 16 x float> %negvc, <vscale x 16 x i1> %m, i32 %evl)
5257 ret <vscale x 16 x float> %v
5260 define <vscale x 16 x float> @vfmsub_vf_nxv16f32_commute(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {
5261 ; CHECK-LABEL: vfmsub_vf_nxv16f32_commute:
5263 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5264 ; CHECK-NEXT: vfmsub.vf v8, fa0, v16, v0.t
5266 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5267 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5268 %negvc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 %evl)
5269 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x float> %va, <vscale x 16 x float> %negvc, <vscale x 16 x i1> %m, i32 %evl)
5270 ret <vscale x 16 x float> %v
5273 define <vscale x 16 x float> @vfmsub_vf_nxv16f32_unmasked(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, i32 zeroext %evl) {
5274 ; CHECK-LABEL: vfmsub_vf_nxv16f32_unmasked:
5276 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5277 ; CHECK-NEXT: vfmsub.vf v8, fa0, v16
5279 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5280 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5281 %negvc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5282 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, <vscale x 16 x float> %negvc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5283 ret <vscale x 16 x float> %v
5286 define <vscale x 16 x float> @vfmsub_vf_nxv16f32_unmasked_commute(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, i32 zeroext %evl) {
5287 ; CHECK-LABEL: vfmsub_vf_nxv16f32_unmasked_commute:
5289 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5290 ; CHECK-NEXT: vfmsub.vf v8, fa0, v16
5292 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5293 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5294 %negvc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5295 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x float> %va, <vscale x 16 x float> %negvc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5296 ret <vscale x 16 x float> %v
5299 define <vscale x 16 x float> @vfnmadd_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %b, <vscale x 16 x float> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {
5300 ; CHECK-LABEL: vfnmadd_vv_nxv16f32:
5302 ; CHECK-NEXT: vl8re32.v v24, (a0)
5303 ; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma
5304 ; CHECK-NEXT: vfnmadd.vv v16, v8, v24, v0.t
5305 ; CHECK-NEXT: vmv.v.v v8, v16
5307 %negb = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %b, <vscale x 16 x i1> %m, i32 %evl)
5308 %negc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %c, <vscale x 16 x i1> %m, i32 %evl)
5309 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %negb, <vscale x 16 x float> %negc, <vscale x 16 x i1> %m, i32 %evl)
5310 ret <vscale x 16 x float> %v
5313 define <vscale x 16 x float> @vfnmadd_vv_nxv16f32_commuted(<vscale x 16 x float> %va, <vscale x 16 x float> %b, <vscale x 16 x float> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {
5314 ; CHECK-LABEL: vfnmadd_vv_nxv16f32_commuted:
5316 ; CHECK-NEXT: vl8re32.v v24, (a0)
5317 ; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma
5318 ; CHECK-NEXT: vfnmadd.vv v8, v16, v24, v0.t
5320 %negb = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %b, <vscale x 16 x i1> %m, i32 %evl)
5321 %negc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %c, <vscale x 16 x i1> %m, i32 %evl)
5322 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %negb, <vscale x 16 x float> %va, <vscale x 16 x float> %negc, <vscale x 16 x i1> %m, i32 %evl)
5323 ret <vscale x 16 x float> %v
5326 define <vscale x 16 x float> @vfnmadd_vv_nxv16f32_unmasked(<vscale x 16 x float> %va, <vscale x 16 x float> %b, <vscale x 16 x float> %c, i32 zeroext %evl) {
5327 ; CHECK-LABEL: vfnmadd_vv_nxv16f32_unmasked:
5329 ; CHECK-NEXT: vl8re32.v v24, (a0)
5330 ; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma
5331 ; CHECK-NEXT: vfnmadd.vv v8, v16, v24
5333 %negb = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %b, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5334 %negc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %c, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5335 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %negb, <vscale x 16 x float> %negc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5336 ret <vscale x 16 x float> %v
5339 define <vscale x 16 x float> @vfnmadd_vv_nxv16f32_unmasked_commuted(<vscale x 16 x float> %va, <vscale x 16 x float> %b, <vscale x 16 x float> %c, i32 zeroext %evl) {
5340 ; CHECK-LABEL: vfnmadd_vv_nxv16f32_unmasked_commuted:
5342 ; CHECK-NEXT: vl8re32.v v24, (a0)
5343 ; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma
5344 ; CHECK-NEXT: vfnmadd.vv v8, v16, v24
5346 %negb = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %b, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5347 %negc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %c, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5348 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %negb, <vscale x 16 x float> %va, <vscale x 16 x float> %negc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5349 ret <vscale x 16 x float> %v
5352 define <vscale x 16 x float> @vfnmadd_vf_nxv16f32(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {
5353 ; CHECK-LABEL: vfnmadd_vf_nxv16f32:
5355 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5356 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16, v0.t
5358 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5359 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5360 %negva = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x i1> %m, i32 %evl)
5361 %negvc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 %evl)
5362 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %negva, <vscale x 16 x float> %vb, <vscale x 16 x float> %negvc, <vscale x 16 x i1> %m, i32 %evl)
5363 ret <vscale x 16 x float> %v
5366 define <vscale x 16 x float> @vfnmadd_vf_nxv16f32_commute(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {
5367 ; CHECK-LABEL: vfnmadd_vf_nxv16f32_commute:
5369 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5370 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16, v0.t
5372 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5373 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5374 %negva = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x i1> %m, i32 %evl)
5375 %negvc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 %evl)
5376 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x float> %negva, <vscale x 16 x float> %negvc, <vscale x 16 x i1> %m, i32 %evl)
5377 ret <vscale x 16 x float> %v
5380 define <vscale x 16 x float> @vfnmadd_vf_nxv16f32_unmasked(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, i32 zeroext %evl) {
5381 ; CHECK-LABEL: vfnmadd_vf_nxv16f32_unmasked:
5383 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5384 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16
5386 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5387 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5388 %negva = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5389 %negvc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5390 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %negva, <vscale x 16 x float> %vb, <vscale x 16 x float> %negvc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5391 ret <vscale x 16 x float> %v
5394 define <vscale x 16 x float> @vfnmadd_vf_nxv16f32_unmasked_commute(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, i32 zeroext %evl) {
5395 ; CHECK-LABEL: vfnmadd_vf_nxv16f32_unmasked_commute:
5397 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5398 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16
5400 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5401 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5402 %negva = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5403 %negvc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5404 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x float> %negva, <vscale x 16 x float> %negvc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5405 ret <vscale x 16 x float> %v
5408 define <vscale x 16 x float> @vfnmadd_vf_nxv16f32_neg_splat(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {
5409 ; CHECK-LABEL: vfnmadd_vf_nxv16f32_neg_splat:
5411 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5412 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16, v0.t
5414 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5415 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5416 %negvb = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x i1> %m, i32 %evl)
5417 %negvc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 %evl)
5418 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %negvb, <vscale x 16 x float> %negvc, <vscale x 16 x i1> %m, i32 %evl)
5419 ret <vscale x 16 x float> %v
5422 define <vscale x 16 x float> @vfnmadd_vf_nxv16f32_neg_splat_commute(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {
5423 ; CHECK-LABEL: vfnmadd_vf_nxv16f32_neg_splat_commute:
5425 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5426 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16, v0.t
5428 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5429 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5430 %negvb = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x i1> %m, i32 %evl)
5431 %negvc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 %evl)
5432 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %negvb, <vscale x 16 x float> %va, <vscale x 16 x float> %negvc, <vscale x 16 x i1> %m, i32 %evl)
5433 ret <vscale x 16 x float> %v
5436 define <vscale x 16 x float> @vfnmadd_vf_nxv16f32_neg_splat_unmasked(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, i32 zeroext %evl) {
5437 ; CHECK-LABEL: vfnmadd_vf_nxv16f32_neg_splat_unmasked:
5439 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5440 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16
5442 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5443 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5444 %negvb = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5445 %negvc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5446 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %negvb, <vscale x 16 x float> %negvc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5447 ret <vscale x 16 x float> %v
5450 define <vscale x 16 x float> @vfnmadd_vf_nxv16f32_neg_splat_unmasked_commute(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, i32 zeroext %evl) {
5451 ; CHECK-LABEL: vfnmadd_vf_nxv16f32_neg_splat_unmasked_commute:
5453 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5454 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16
5456 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5457 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5458 %negvb = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5459 %negvc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5460 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %negvb, <vscale x 16 x float> %va, <vscale x 16 x float> %negvc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5461 ret <vscale x 16 x float> %v
5464 define <vscale x 16 x float> @vfnmsub_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %b, <vscale x 16 x float> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {
5465 ; CHECK-LABEL: vfnmsub_vv_nxv16f32:
5467 ; CHECK-NEXT: vl8re32.v v24, (a0)
5468 ; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma
5469 ; CHECK-NEXT: vfnmadd.vv v16, v8, v24, v0.t
5470 ; CHECK-NEXT: vmv.v.v v8, v16
5472 %negb = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %b, <vscale x 16 x i1> %m, i32 %evl)
5473 %negc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %c, <vscale x 16 x i1> %m, i32 %evl)
5474 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %negb, <vscale x 16 x float> %negc, <vscale x 16 x i1> %m, i32 %evl)
5475 ret <vscale x 16 x float> %v
5478 define <vscale x 16 x float> @vfnmsub_vv_nxv16f32_commuted(<vscale x 16 x float> %va, <vscale x 16 x float> %b, <vscale x 16 x float> %c, <vscale x 16 x i1> %m, i32 zeroext %evl) {
5479 ; CHECK-LABEL: vfnmsub_vv_nxv16f32_commuted:
5481 ; CHECK-NEXT: vl8re32.v v24, (a0)
5482 ; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma
5483 ; CHECK-NEXT: vfnmadd.vv v8, v16, v24, v0.t
5485 %negb = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %b, <vscale x 16 x i1> %m, i32 %evl)
5486 %negc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %c, <vscale x 16 x i1> %m, i32 %evl)
5487 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %negb, <vscale x 16 x float> %va, <vscale x 16 x float> %negc, <vscale x 16 x i1> %m, i32 %evl)
5488 ret <vscale x 16 x float> %v
5491 define <vscale x 16 x float> @vfnmsub_vv_nxv16f32_unmasked(<vscale x 16 x float> %va, <vscale x 16 x float> %b, <vscale x 16 x float> %c, i32 zeroext %evl) {
5492 ; CHECK-LABEL: vfnmsub_vv_nxv16f32_unmasked:
5494 ; CHECK-NEXT: vl8re32.v v24, (a0)
5495 ; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma
5496 ; CHECK-NEXT: vfnmadd.vv v8, v16, v24
5498 %negb = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %b, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5499 %negc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %c, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5500 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %negb, <vscale x 16 x float> %negc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5501 ret <vscale x 16 x float> %v
5504 define <vscale x 16 x float> @vfnmsub_vv_nxv16f32_unmasked_commuted(<vscale x 16 x float> %va, <vscale x 16 x float> %b, <vscale x 16 x float> %c, i32 zeroext %evl) {
5505 ; CHECK-LABEL: vfnmsub_vv_nxv16f32_unmasked_commuted:
5507 ; CHECK-NEXT: vl8re32.v v24, (a0)
5508 ; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma
5509 ; CHECK-NEXT: vfnmadd.vv v8, v16, v24
5511 %negb = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %b, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5512 %negc = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %c, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5513 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %negb, <vscale x 16 x float> %va, <vscale x 16 x float> %negc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5514 ret <vscale x 16 x float> %v
5517 define <vscale x 16 x float> @vfnmsub_vf_nxv16f32(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {
5518 ; CHECK-LABEL: vfnmsub_vf_nxv16f32:
5520 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5521 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16, v0.t
5523 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5524 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5525 %negva = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x i1> %m, i32 %evl)
5526 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %negva, <vscale x 16 x float> %vb, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 %evl)
5527 ret <vscale x 16 x float> %v
5530 define <vscale x 16 x float> @vfnmsub_vf_nxv16f32_commute(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {
5531 ; CHECK-LABEL: vfnmsub_vf_nxv16f32_commute:
5533 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5534 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16, v0.t
5536 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5537 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5538 %negva = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x i1> %m, i32 %evl)
5539 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x float> %negva, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 %evl)
5540 ret <vscale x 16 x float> %v
5543 define <vscale x 16 x float> @vfnmsub_vf_nxv16f32_unmasked(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, i32 zeroext %evl) {
5544 ; CHECK-LABEL: vfnmsub_vf_nxv16f32_unmasked:
5546 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5547 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16
5549 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5550 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5551 %negva = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5552 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %negva, <vscale x 16 x float> %vb, <vscale x 16 x float> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5553 ret <vscale x 16 x float> %v
5556 define <vscale x 16 x float> @vfnmsub_vf_nxv16f32_unmasked_commute(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, i32 zeroext %evl) {
5557 ; CHECK-LABEL: vfnmsub_vf_nxv16f32_unmasked_commute:
5559 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5560 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16
5562 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5563 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5564 %negva = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5565 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x float> %negva, <vscale x 16 x float> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5566 ret <vscale x 16 x float> %v
5569 define <vscale x 16 x float> @vfnmsub_vf_nxv16f32_neg_splat(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {
5570 ; CHECK-LABEL: vfnmsub_vf_nxv16f32_neg_splat:
5572 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5573 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16, v0.t
5575 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5576 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5577 %negvb = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x i1> %m, i32 %evl)
5578 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %negvb, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 %evl)
5579 ret <vscale x 16 x float> %v
5582 define <vscale x 16 x float> @vfnmsub_vf_nxv16f32_neg_splat_commute(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 zeroext %evl) {
5583 ; CHECK-LABEL: vfnmsub_vf_nxv16f32_neg_splat_commute:
5585 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5586 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16, v0.t
5588 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5589 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5590 %negvb = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x i1> %m, i32 %evl)
5591 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %negvb, <vscale x 16 x float> %va, <vscale x 16 x float> %vc, <vscale x 16 x i1> %m, i32 %evl)
5592 ret <vscale x 16 x float> %v
5595 define <vscale x 16 x float> @vfnmsub_vf_nxv16f32_neg_splat_unmasked(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, i32 zeroext %evl) {
5596 ; CHECK-LABEL: vfnmsub_vf_nxv16f32_neg_splat_unmasked:
5598 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5599 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16
5601 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5602 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5603 %negvb = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5604 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %negvb, <vscale x 16 x float> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5605 ret <vscale x 16 x float> %v
5608 define <vscale x 16 x float> @vfnmsub_vf_nxv16f32_neg_splat_unmasked_commute(<vscale x 16 x float> %va, float %b, <vscale x 16 x float> %vc, i32 zeroext %evl) {
5609 ; CHECK-LABEL: vfnmsub_vf_nxv16f32_neg_splat_unmasked_commute:
5611 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5612 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16
5614 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5615 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5616 %negvb = call <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5617 %v = call <vscale x 16 x float> @llvm.vp.fmuladd.nxv16f32(<vscale x 16 x float> %negvb, <vscale x 16 x float> %va, <vscale x 16 x float> %vc, <vscale x 16 x i1> splat (i1 true), i32 %evl)
5618 ret <vscale x 16 x float> %v
5621 declare <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double>, <vscale x 1 x i1>, i32)
5623 define <vscale x 1 x double> @vfmsub_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %b, <vscale x 1 x double> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {
5624 ; CHECK-LABEL: vfmsub_vv_nxv1f64:
5626 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5627 ; CHECK-NEXT: vfmsub.vv v9, v8, v10, v0.t
5628 ; CHECK-NEXT: vmv.v.v v8, v9
5630 %negc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %c, <vscale x 1 x i1> %m, i32 %evl)
5631 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %b, <vscale x 1 x double> %negc, <vscale x 1 x i1> %m, i32 %evl)
5632 ret <vscale x 1 x double> %v
5635 define <vscale x 1 x double> @vfmsub_vv_nxv1f64_unmasked(<vscale x 1 x double> %va, <vscale x 1 x double> %b, <vscale x 1 x double> %c, i32 zeroext %evl) {
5636 ; CHECK-LABEL: vfmsub_vv_nxv1f64_unmasked:
5638 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5639 ; CHECK-NEXT: vfmsub.vv v8, v9, v10
5641 %negc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5642 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %b, <vscale x 1 x double> %negc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5643 ret <vscale x 1 x double> %v
5646 define <vscale x 1 x double> @vfmsub_vf_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
5647 ; CHECK-LABEL: vfmsub_vf_nxv1f64:
5649 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5650 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9, v0.t
5652 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5653 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5654 %negvc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 %evl)
5655 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, <vscale x 1 x double> %negvc, <vscale x 1 x i1> %m, i32 %evl)
5656 ret <vscale x 1 x double> %v
5659 define <vscale x 1 x double> @vfmsub_vf_nxv1f64_commute(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
5660 ; CHECK-LABEL: vfmsub_vf_nxv1f64_commute:
5662 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5663 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9, v0.t
5665 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5666 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5667 %negvc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 %evl)
5668 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %va, <vscale x 1 x double> %negvc, <vscale x 1 x i1> %m, i32 %evl)
5669 ret <vscale x 1 x double> %v
5672 define <vscale x 1 x double> @vfmsub_vf_nxv1f64_unmasked(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, i32 zeroext %evl) {
5673 ; CHECK-LABEL: vfmsub_vf_nxv1f64_unmasked:
5675 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5676 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9
5678 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5679 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5680 %negvc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5681 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, <vscale x 1 x double> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5682 ret <vscale x 1 x double> %v
5685 define <vscale x 1 x double> @vfmsub_vf_nxv1f64_unmasked_commute(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, i32 zeroext %evl) {
5686 ; CHECK-LABEL: vfmsub_vf_nxv1f64_unmasked_commute:
5688 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5689 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9
5691 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5692 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5693 %negvc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5694 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %va, <vscale x 1 x double> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5695 ret <vscale x 1 x double> %v
5698 define <vscale x 1 x double> @vfnmadd_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %b, <vscale x 1 x double> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {
5699 ; CHECK-LABEL: vfnmadd_vv_nxv1f64:
5701 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5702 ; CHECK-NEXT: vfnmadd.vv v9, v8, v10, v0.t
5703 ; CHECK-NEXT: vmv.v.v v8, v9
5705 %negb = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %b, <vscale x 1 x i1> %m, i32 %evl)
5706 %negc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %c, <vscale x 1 x i1> %m, i32 %evl)
5707 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %negb, <vscale x 1 x double> %negc, <vscale x 1 x i1> %m, i32 %evl)
5708 ret <vscale x 1 x double> %v
5711 define <vscale x 1 x double> @vfnmadd_vv_nxv1f64_commuted(<vscale x 1 x double> %va, <vscale x 1 x double> %b, <vscale x 1 x double> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {
5712 ; CHECK-LABEL: vfnmadd_vv_nxv1f64_commuted:
5714 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5715 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10, v0.t
5717 %negb = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %b, <vscale x 1 x i1> %m, i32 %evl)
5718 %negc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %c, <vscale x 1 x i1> %m, i32 %evl)
5719 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %negb, <vscale x 1 x double> %va, <vscale x 1 x double> %negc, <vscale x 1 x i1> %m, i32 %evl)
5720 ret <vscale x 1 x double> %v
5723 define <vscale x 1 x double> @vfnmadd_vv_nxv1f64_unmasked(<vscale x 1 x double> %va, <vscale x 1 x double> %b, <vscale x 1 x double> %c, i32 zeroext %evl) {
5724 ; CHECK-LABEL: vfnmadd_vv_nxv1f64_unmasked:
5726 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5727 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
5729 %negb = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5730 %negc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5731 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %negb, <vscale x 1 x double> %negc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5732 ret <vscale x 1 x double> %v
5735 define <vscale x 1 x double> @vfnmadd_vv_nxv1f64_unmasked_commuted(<vscale x 1 x double> %va, <vscale x 1 x double> %b, <vscale x 1 x double> %c, i32 zeroext %evl) {
5736 ; CHECK-LABEL: vfnmadd_vv_nxv1f64_unmasked_commuted:
5738 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5739 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
5741 %negb = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5742 %negc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5743 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %negb, <vscale x 1 x double> %va, <vscale x 1 x double> %negc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5744 ret <vscale x 1 x double> %v
5747 define <vscale x 1 x double> @vfnmadd_vf_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
5748 ; CHECK-LABEL: vfnmadd_vf_nxv1f64:
5750 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5751 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
5753 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5754 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5755 %negva = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x i1> %m, i32 %evl)
5756 %negvc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 %evl)
5757 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %negva, <vscale x 1 x double> %vb, <vscale x 1 x double> %negvc, <vscale x 1 x i1> %m, i32 %evl)
5758 ret <vscale x 1 x double> %v
5761 define <vscale x 1 x double> @vfnmadd_vf_nxv1f64_commute(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
5762 ; CHECK-LABEL: vfnmadd_vf_nxv1f64_commute:
5764 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5765 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
5767 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5768 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5769 %negva = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x i1> %m, i32 %evl)
5770 %negvc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 %evl)
5771 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %negva, <vscale x 1 x double> %negvc, <vscale x 1 x i1> %m, i32 %evl)
5772 ret <vscale x 1 x double> %v
5775 define <vscale x 1 x double> @vfnmadd_vf_nxv1f64_unmasked(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, i32 zeroext %evl) {
5776 ; CHECK-LABEL: vfnmadd_vf_nxv1f64_unmasked:
5778 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5779 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
5781 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5782 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5783 %negva = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5784 %negvc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5785 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %negva, <vscale x 1 x double> %vb, <vscale x 1 x double> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5786 ret <vscale x 1 x double> %v
5789 define <vscale x 1 x double> @vfnmadd_vf_nxv1f64_unmasked_commute(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, i32 zeroext %evl) {
5790 ; CHECK-LABEL: vfnmadd_vf_nxv1f64_unmasked_commute:
5792 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5793 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
5795 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5796 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5797 %negva = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5798 %negvc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5799 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %negva, <vscale x 1 x double> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5800 ret <vscale x 1 x double> %v
5803 define <vscale x 1 x double> @vfnmadd_vf_nxv1f64_neg_splat(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
5804 ; CHECK-LABEL: vfnmadd_vf_nxv1f64_neg_splat:
5806 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5807 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
5809 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5810 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5811 %negvb = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x i1> %m, i32 %evl)
5812 %negvc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 %evl)
5813 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %negvb, <vscale x 1 x double> %negvc, <vscale x 1 x i1> %m, i32 %evl)
5814 ret <vscale x 1 x double> %v
5817 define <vscale x 1 x double> @vfnmadd_vf_nxv1f64_neg_splat_commute(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
5818 ; CHECK-LABEL: vfnmadd_vf_nxv1f64_neg_splat_commute:
5820 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5821 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
5823 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5824 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5825 %negvb = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x i1> %m, i32 %evl)
5826 %negvc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 %evl)
5827 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %negvb, <vscale x 1 x double> %va, <vscale x 1 x double> %negvc, <vscale x 1 x i1> %m, i32 %evl)
5828 ret <vscale x 1 x double> %v
5831 define <vscale x 1 x double> @vfnmadd_vf_nxv1f64_neg_splat_unmasked(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, i32 zeroext %evl) {
5832 ; CHECK-LABEL: vfnmadd_vf_nxv1f64_neg_splat_unmasked:
5834 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5835 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
5837 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5838 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5839 %negvb = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5840 %negvc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5841 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %negvb, <vscale x 1 x double> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5842 ret <vscale x 1 x double> %v
5845 define <vscale x 1 x double> @vfnmadd_vf_nxv1f64_neg_splat_unmasked_commute(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, i32 zeroext %evl) {
5846 ; CHECK-LABEL: vfnmadd_vf_nxv1f64_neg_splat_unmasked_commute:
5848 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5849 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
5851 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5852 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5853 %negvb = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5854 %negvc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5855 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %negvb, <vscale x 1 x double> %va, <vscale x 1 x double> %negvc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5856 ret <vscale x 1 x double> %v
5859 define <vscale x 1 x double> @vfnmsub_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %b, <vscale x 1 x double> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {
5860 ; CHECK-LABEL: vfnmsub_vv_nxv1f64:
5862 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5863 ; CHECK-NEXT: vfnmadd.vv v9, v8, v10, v0.t
5864 ; CHECK-NEXT: vmv.v.v v8, v9
5866 %negb = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %b, <vscale x 1 x i1> %m, i32 %evl)
5867 %negc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %c, <vscale x 1 x i1> %m, i32 %evl)
5868 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %negb, <vscale x 1 x double> %negc, <vscale x 1 x i1> %m, i32 %evl)
5869 ret <vscale x 1 x double> %v
5872 define <vscale x 1 x double> @vfnmsub_vv_nxv1f64_commuted(<vscale x 1 x double> %va, <vscale x 1 x double> %b, <vscale x 1 x double> %c, <vscale x 1 x i1> %m, i32 zeroext %evl) {
5873 ; CHECK-LABEL: vfnmsub_vv_nxv1f64_commuted:
5875 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5876 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10, v0.t
5878 %negb = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %b, <vscale x 1 x i1> %m, i32 %evl)
5879 %negc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %c, <vscale x 1 x i1> %m, i32 %evl)
5880 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %negb, <vscale x 1 x double> %va, <vscale x 1 x double> %negc, <vscale x 1 x i1> %m, i32 %evl)
5881 ret <vscale x 1 x double> %v
5884 define <vscale x 1 x double> @vfnmsub_vv_nxv1f64_unmasked(<vscale x 1 x double> %va, <vscale x 1 x double> %b, <vscale x 1 x double> %c, i32 zeroext %evl) {
5885 ; CHECK-LABEL: vfnmsub_vv_nxv1f64_unmasked:
5887 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5888 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
5890 %negb = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5891 %negc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5892 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %negb, <vscale x 1 x double> %negc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5893 ret <vscale x 1 x double> %v
5896 define <vscale x 1 x double> @vfnmsub_vv_nxv1f64_unmasked_commuted(<vscale x 1 x double> %va, <vscale x 1 x double> %b, <vscale x 1 x double> %c, i32 zeroext %evl) {
5897 ; CHECK-LABEL: vfnmsub_vv_nxv1f64_unmasked_commuted:
5899 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5900 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
5902 %negb = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5903 %negc = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %c, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5904 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %negb, <vscale x 1 x double> %va, <vscale x 1 x double> %negc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5905 ret <vscale x 1 x double> %v
5908 define <vscale x 1 x double> @vfnmsub_vf_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
5909 ; CHECK-LABEL: vfnmsub_vf_nxv1f64:
5911 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5912 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
5914 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5915 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5916 %negva = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x i1> %m, i32 %evl)
5917 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %negva, <vscale x 1 x double> %vb, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 %evl)
5918 ret <vscale x 1 x double> %v
5921 define <vscale x 1 x double> @vfnmsub_vf_nxv1f64_commute(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
5922 ; CHECK-LABEL: vfnmsub_vf_nxv1f64_commute:
5924 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5925 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
5927 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5928 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5929 %negva = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x i1> %m, i32 %evl)
5930 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %negva, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 %evl)
5931 ret <vscale x 1 x double> %v
5934 define <vscale x 1 x double> @vfnmsub_vf_nxv1f64_unmasked(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, i32 zeroext %evl) {
5935 ; CHECK-LABEL: vfnmsub_vf_nxv1f64_unmasked:
5937 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5938 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
5940 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5941 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5942 %negva = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5943 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %negva, <vscale x 1 x double> %vb, <vscale x 1 x double> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5944 ret <vscale x 1 x double> %v
5947 define <vscale x 1 x double> @vfnmsub_vf_nxv1f64_unmasked_commute(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, i32 zeroext %evl) {
5948 ; CHECK-LABEL: vfnmsub_vf_nxv1f64_unmasked_commute:
5950 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5951 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
5953 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5954 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5955 %negva = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5956 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %negva, <vscale x 1 x double> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5957 ret <vscale x 1 x double> %v
5960 define <vscale x 1 x double> @vfnmsub_vf_nxv1f64_neg_splat(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
5961 ; CHECK-LABEL: vfnmsub_vf_nxv1f64_neg_splat:
5963 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5964 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
5966 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5967 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5968 %negvb = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x i1> %m, i32 %evl)
5969 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %negvb, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 %evl)
5970 ret <vscale x 1 x double> %v
5973 define <vscale x 1 x double> @vfnmsub_vf_nxv1f64_neg_splat_commute(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 zeroext %evl) {
5974 ; CHECK-LABEL: vfnmsub_vf_nxv1f64_neg_splat_commute:
5976 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5977 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
5979 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5980 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5981 %negvb = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x i1> %m, i32 %evl)
5982 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %negvb, <vscale x 1 x double> %va, <vscale x 1 x double> %vc, <vscale x 1 x i1> %m, i32 %evl)
5983 ret <vscale x 1 x double> %v
5986 define <vscale x 1 x double> @vfnmsub_vf_nxv1f64_neg_splat_unmasked(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, i32 zeroext %evl) {
5987 ; CHECK-LABEL: vfnmsub_vf_nxv1f64_neg_splat_unmasked:
5989 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5990 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
5992 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5993 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5994 %negvb = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5995 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %negvb, <vscale x 1 x double> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
5996 ret <vscale x 1 x double> %v
5999 define <vscale x 1 x double> @vfnmsub_vf_nxv1f64_neg_splat_unmasked_commute(<vscale x 1 x double> %va, double %b, <vscale x 1 x double> %vc, i32 zeroext %evl) {
6000 ; CHECK-LABEL: vfnmsub_vf_nxv1f64_neg_splat_unmasked_commute:
6002 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
6003 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
6005 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
6006 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
6007 %negvb = call <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)
6008 %v = call <vscale x 1 x double> @llvm.vp.fmuladd.nxv1f64(<vscale x 1 x double> %negvb, <vscale x 1 x double> %va, <vscale x 1 x double> %vc, <vscale x 1 x i1> splat (i1 true), i32 %evl)
6009 ret <vscale x 1 x double> %v
6012 declare <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double>, <vscale x 2 x i1>, i32)
6014 define <vscale x 2 x double> @vfmsub_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %b, <vscale x 2 x double> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {
6015 ; CHECK-LABEL: vfmsub_vv_nxv2f64:
6017 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6018 ; CHECK-NEXT: vfmsub.vv v10, v8, v12, v0.t
6019 ; CHECK-NEXT: vmv.v.v v8, v10
6021 %negc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %c, <vscale x 2 x i1> %m, i32 %evl)
6022 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %b, <vscale x 2 x double> %negc, <vscale x 2 x i1> %m, i32 %evl)
6023 ret <vscale x 2 x double> %v
6026 define <vscale x 2 x double> @vfmsub_vv_nxv2f64_unmasked(<vscale x 2 x double> %va, <vscale x 2 x double> %b, <vscale x 2 x double> %c, i32 zeroext %evl) {
6027 ; CHECK-LABEL: vfmsub_vv_nxv2f64_unmasked:
6029 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6030 ; CHECK-NEXT: vfmsub.vv v8, v10, v12
6032 %negc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6033 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %b, <vscale x 2 x double> %negc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6034 ret <vscale x 2 x double> %v
6037 define <vscale x 2 x double> @vfmsub_vf_nxv2f64(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
6038 ; CHECK-LABEL: vfmsub_vf_nxv2f64:
6040 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6041 ; CHECK-NEXT: vfmsub.vf v8, fa0, v10, v0.t
6043 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6044 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6045 %negvc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 %evl)
6046 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, <vscale x 2 x double> %negvc, <vscale x 2 x i1> %m, i32 %evl)
6047 ret <vscale x 2 x double> %v
6050 define <vscale x 2 x double> @vfmsub_vf_nxv2f64_commute(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
6051 ; CHECK-LABEL: vfmsub_vf_nxv2f64_commute:
6053 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6054 ; CHECK-NEXT: vfmsub.vf v8, fa0, v10, v0.t
6056 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6057 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6058 %negvc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 %evl)
6059 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x double> %va, <vscale x 2 x double> %negvc, <vscale x 2 x i1> %m, i32 %evl)
6060 ret <vscale x 2 x double> %v
6063 define <vscale x 2 x double> @vfmsub_vf_nxv2f64_unmasked(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, i32 zeroext %evl) {
6064 ; CHECK-LABEL: vfmsub_vf_nxv2f64_unmasked:
6066 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6067 ; CHECK-NEXT: vfmsub.vf v8, fa0, v10
6069 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6070 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6071 %negvc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6072 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, <vscale x 2 x double> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6073 ret <vscale x 2 x double> %v
6076 define <vscale x 2 x double> @vfmsub_vf_nxv2f64_unmasked_commute(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, i32 zeroext %evl) {
6077 ; CHECK-LABEL: vfmsub_vf_nxv2f64_unmasked_commute:
6079 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6080 ; CHECK-NEXT: vfmsub.vf v8, fa0, v10
6082 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6083 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6084 %negvc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6085 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x double> %va, <vscale x 2 x double> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6086 ret <vscale x 2 x double> %v
6089 define <vscale x 2 x double> @vfnmadd_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %b, <vscale x 2 x double> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {
6090 ; CHECK-LABEL: vfnmadd_vv_nxv2f64:
6092 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6093 ; CHECK-NEXT: vfnmadd.vv v10, v8, v12, v0.t
6094 ; CHECK-NEXT: vmv.v.v v8, v10
6096 %negb = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %b, <vscale x 2 x i1> %m, i32 %evl)
6097 %negc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %c, <vscale x 2 x i1> %m, i32 %evl)
6098 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %negb, <vscale x 2 x double> %negc, <vscale x 2 x i1> %m, i32 %evl)
6099 ret <vscale x 2 x double> %v
6102 define <vscale x 2 x double> @vfnmadd_vv_nxv2f64_commuted(<vscale x 2 x double> %va, <vscale x 2 x double> %b, <vscale x 2 x double> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {
6103 ; CHECK-LABEL: vfnmadd_vv_nxv2f64_commuted:
6105 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6106 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12, v0.t
6108 %negb = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %b, <vscale x 2 x i1> %m, i32 %evl)
6109 %negc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %c, <vscale x 2 x i1> %m, i32 %evl)
6110 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %negb, <vscale x 2 x double> %va, <vscale x 2 x double> %negc, <vscale x 2 x i1> %m, i32 %evl)
6111 ret <vscale x 2 x double> %v
6114 define <vscale x 2 x double> @vfnmadd_vv_nxv2f64_unmasked(<vscale x 2 x double> %va, <vscale x 2 x double> %b, <vscale x 2 x double> %c, i32 zeroext %evl) {
6115 ; CHECK-LABEL: vfnmadd_vv_nxv2f64_unmasked:
6117 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6118 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12
6120 %negb = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6121 %negc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6122 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %negb, <vscale x 2 x double> %negc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6123 ret <vscale x 2 x double> %v
6126 define <vscale x 2 x double> @vfnmadd_vv_nxv2f64_unmasked_commuted(<vscale x 2 x double> %va, <vscale x 2 x double> %b, <vscale x 2 x double> %c, i32 zeroext %evl) {
6127 ; CHECK-LABEL: vfnmadd_vv_nxv2f64_unmasked_commuted:
6129 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6130 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12
6132 %negb = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6133 %negc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6134 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %negb, <vscale x 2 x double> %va, <vscale x 2 x double> %negc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6135 ret <vscale x 2 x double> %v
6138 define <vscale x 2 x double> @vfnmadd_vf_nxv2f64(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
6139 ; CHECK-LABEL: vfnmadd_vf_nxv2f64:
6141 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6142 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10, v0.t
6144 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6145 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6146 %negva = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x i1> %m, i32 %evl)
6147 %negvc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 %evl)
6148 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %negva, <vscale x 2 x double> %vb, <vscale x 2 x double> %negvc, <vscale x 2 x i1> %m, i32 %evl)
6149 ret <vscale x 2 x double> %v
6152 define <vscale x 2 x double> @vfnmadd_vf_nxv2f64_commute(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
6153 ; CHECK-LABEL: vfnmadd_vf_nxv2f64_commute:
6155 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6156 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10, v0.t
6158 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6159 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6160 %negva = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x i1> %m, i32 %evl)
6161 %negvc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 %evl)
6162 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x double> %negva, <vscale x 2 x double> %negvc, <vscale x 2 x i1> %m, i32 %evl)
6163 ret <vscale x 2 x double> %v
6166 define <vscale x 2 x double> @vfnmadd_vf_nxv2f64_unmasked(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, i32 zeroext %evl) {
6167 ; CHECK-LABEL: vfnmadd_vf_nxv2f64_unmasked:
6169 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6170 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10
6172 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6173 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6174 %negva = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6175 %negvc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6176 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %negva, <vscale x 2 x double> %vb, <vscale x 2 x double> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6177 ret <vscale x 2 x double> %v
6180 define <vscale x 2 x double> @vfnmadd_vf_nxv2f64_unmasked_commute(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, i32 zeroext %evl) {
6181 ; CHECK-LABEL: vfnmadd_vf_nxv2f64_unmasked_commute:
6183 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6184 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10
6186 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6187 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6188 %negva = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6189 %negvc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6190 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x double> %negva, <vscale x 2 x double> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6191 ret <vscale x 2 x double> %v
6194 define <vscale x 2 x double> @vfnmadd_vf_nxv2f64_neg_splat(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
6195 ; CHECK-LABEL: vfnmadd_vf_nxv2f64_neg_splat:
6197 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6198 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10, v0.t
6200 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6201 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6202 %negvb = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x i1> %m, i32 %evl)
6203 %negvc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 %evl)
6204 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %negvb, <vscale x 2 x double> %negvc, <vscale x 2 x i1> %m, i32 %evl)
6205 ret <vscale x 2 x double> %v
6208 define <vscale x 2 x double> @vfnmadd_vf_nxv2f64_neg_splat_commute(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
6209 ; CHECK-LABEL: vfnmadd_vf_nxv2f64_neg_splat_commute:
6211 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6212 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10, v0.t
6214 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6215 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6216 %negvb = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x i1> %m, i32 %evl)
6217 %negvc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 %evl)
6218 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %negvb, <vscale x 2 x double> %va, <vscale x 2 x double> %negvc, <vscale x 2 x i1> %m, i32 %evl)
6219 ret <vscale x 2 x double> %v
6222 define <vscale x 2 x double> @vfnmadd_vf_nxv2f64_neg_splat_unmasked(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, i32 zeroext %evl) {
6223 ; CHECK-LABEL: vfnmadd_vf_nxv2f64_neg_splat_unmasked:
6225 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6226 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10
6228 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6229 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6230 %negvb = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6231 %negvc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6232 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %negvb, <vscale x 2 x double> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6233 ret <vscale x 2 x double> %v
6236 define <vscale x 2 x double> @vfnmadd_vf_nxv2f64_neg_splat_unmasked_commute(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, i32 zeroext %evl) {
6237 ; CHECK-LABEL: vfnmadd_vf_nxv2f64_neg_splat_unmasked_commute:
6239 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6240 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10
6242 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6243 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6244 %negvb = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6245 %negvc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6246 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %negvb, <vscale x 2 x double> %va, <vscale x 2 x double> %negvc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6247 ret <vscale x 2 x double> %v
6250 define <vscale x 2 x double> @vfnmsub_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %b, <vscale x 2 x double> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {
6251 ; CHECK-LABEL: vfnmsub_vv_nxv2f64:
6253 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6254 ; CHECK-NEXT: vfnmadd.vv v10, v8, v12, v0.t
6255 ; CHECK-NEXT: vmv.v.v v8, v10
6257 %negb = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %b, <vscale x 2 x i1> %m, i32 %evl)
6258 %negc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %c, <vscale x 2 x i1> %m, i32 %evl)
6259 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %negb, <vscale x 2 x double> %negc, <vscale x 2 x i1> %m, i32 %evl)
6260 ret <vscale x 2 x double> %v
6263 define <vscale x 2 x double> @vfnmsub_vv_nxv2f64_commuted(<vscale x 2 x double> %va, <vscale x 2 x double> %b, <vscale x 2 x double> %c, <vscale x 2 x i1> %m, i32 zeroext %evl) {
6264 ; CHECK-LABEL: vfnmsub_vv_nxv2f64_commuted:
6266 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6267 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12, v0.t
6269 %negb = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %b, <vscale x 2 x i1> %m, i32 %evl)
6270 %negc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %c, <vscale x 2 x i1> %m, i32 %evl)
6271 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %negb, <vscale x 2 x double> %va, <vscale x 2 x double> %negc, <vscale x 2 x i1> %m, i32 %evl)
6272 ret <vscale x 2 x double> %v
6275 define <vscale x 2 x double> @vfnmsub_vv_nxv2f64_unmasked(<vscale x 2 x double> %va, <vscale x 2 x double> %b, <vscale x 2 x double> %c, i32 zeroext %evl) {
6276 ; CHECK-LABEL: vfnmsub_vv_nxv2f64_unmasked:
6278 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6279 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12
6281 %negb = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6282 %negc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6283 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %negb, <vscale x 2 x double> %negc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6284 ret <vscale x 2 x double> %v
6287 define <vscale x 2 x double> @vfnmsub_vv_nxv2f64_unmasked_commuted(<vscale x 2 x double> %va, <vscale x 2 x double> %b, <vscale x 2 x double> %c, i32 zeroext %evl) {
6288 ; CHECK-LABEL: vfnmsub_vv_nxv2f64_unmasked_commuted:
6290 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6291 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12
6293 %negb = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6294 %negc = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6295 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %negb, <vscale x 2 x double> %va, <vscale x 2 x double> %negc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6296 ret <vscale x 2 x double> %v
6299 define <vscale x 2 x double> @vfnmsub_vf_nxv2f64(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
6300 ; CHECK-LABEL: vfnmsub_vf_nxv2f64:
6302 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6303 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10, v0.t
6305 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6306 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6307 %negva = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x i1> %m, i32 %evl)
6308 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %negva, <vscale x 2 x double> %vb, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 %evl)
6309 ret <vscale x 2 x double> %v
6312 define <vscale x 2 x double> @vfnmsub_vf_nxv2f64_commute(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
6313 ; CHECK-LABEL: vfnmsub_vf_nxv2f64_commute:
6315 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6316 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10, v0.t
6318 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6319 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6320 %negva = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x i1> %m, i32 %evl)
6321 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x double> %negva, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 %evl)
6322 ret <vscale x 2 x double> %v
6325 define <vscale x 2 x double> @vfnmsub_vf_nxv2f64_unmasked(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, i32 zeroext %evl) {
6326 ; CHECK-LABEL: vfnmsub_vf_nxv2f64_unmasked:
6328 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6329 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10
6331 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6332 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6333 %negva = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6334 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %negva, <vscale x 2 x double> %vb, <vscale x 2 x double> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6335 ret <vscale x 2 x double> %v
6338 define <vscale x 2 x double> @vfnmsub_vf_nxv2f64_unmasked_commute(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, i32 zeroext %evl) {
6339 ; CHECK-LABEL: vfnmsub_vf_nxv2f64_unmasked_commute:
6341 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6342 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10
6344 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6345 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6346 %negva = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6347 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x double> %negva, <vscale x 2 x double> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6348 ret <vscale x 2 x double> %v
6351 define <vscale x 2 x double> @vfnmsub_vf_nxv2f64_neg_splat(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
6352 ; CHECK-LABEL: vfnmsub_vf_nxv2f64_neg_splat:
6354 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6355 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10, v0.t
6357 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6358 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6359 %negvb = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x i1> %m, i32 %evl)
6360 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %negvb, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 %evl)
6361 ret <vscale x 2 x double> %v
6364 define <vscale x 2 x double> @vfnmsub_vf_nxv2f64_neg_splat_commute(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 zeroext %evl) {
6365 ; CHECK-LABEL: vfnmsub_vf_nxv2f64_neg_splat_commute:
6367 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6368 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10, v0.t
6370 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6371 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6372 %negvb = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x i1> %m, i32 %evl)
6373 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %negvb, <vscale x 2 x double> %va, <vscale x 2 x double> %vc, <vscale x 2 x i1> %m, i32 %evl)
6374 ret <vscale x 2 x double> %v
6377 define <vscale x 2 x double> @vfnmsub_vf_nxv2f64_neg_splat_unmasked(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, i32 zeroext %evl) {
6378 ; CHECK-LABEL: vfnmsub_vf_nxv2f64_neg_splat_unmasked:
6380 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6381 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10
6383 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6384 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6385 %negvb = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6386 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %negvb, <vscale x 2 x double> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6387 ret <vscale x 2 x double> %v
6390 define <vscale x 2 x double> @vfnmsub_vf_nxv2f64_neg_splat_unmasked_commute(<vscale x 2 x double> %va, double %b, <vscale x 2 x double> %vc, i32 zeroext %evl) {
6391 ; CHECK-LABEL: vfnmsub_vf_nxv2f64_neg_splat_unmasked_commute:
6393 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6394 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10
6396 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6397 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6398 %negvb = call <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6399 %v = call <vscale x 2 x double> @llvm.vp.fmuladd.nxv2f64(<vscale x 2 x double> %negvb, <vscale x 2 x double> %va, <vscale x 2 x double> %vc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
6400 ret <vscale x 2 x double> %v
6403 declare <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double>, <vscale x 4 x i1>, i32)
6405 define <vscale x 4 x double> @vfmsub_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %b, <vscale x 4 x double> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {
6406 ; CHECK-LABEL: vfmsub_vv_nxv4f64:
6408 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6409 ; CHECK-NEXT: vfmsub.vv v12, v8, v16, v0.t
6410 ; CHECK-NEXT: vmv.v.v v8, v12
6412 %negc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %c, <vscale x 4 x i1> %m, i32 %evl)
6413 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %b, <vscale x 4 x double> %negc, <vscale x 4 x i1> %m, i32 %evl)
6414 ret <vscale x 4 x double> %v
6417 define <vscale x 4 x double> @vfmsub_vv_nxv4f64_unmasked(<vscale x 4 x double> %va, <vscale x 4 x double> %b, <vscale x 4 x double> %c, i32 zeroext %evl) {
6418 ; CHECK-LABEL: vfmsub_vv_nxv4f64_unmasked:
6420 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6421 ; CHECK-NEXT: vfmsub.vv v8, v12, v16
6423 %negc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6424 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %b, <vscale x 4 x double> %negc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6425 ret <vscale x 4 x double> %v
6428 define <vscale x 4 x double> @vfmsub_vf_nxv4f64(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
6429 ; CHECK-LABEL: vfmsub_vf_nxv4f64:
6431 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6432 ; CHECK-NEXT: vfmsub.vf v8, fa0, v12, v0.t
6434 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6435 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6436 %negvc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 %evl)
6437 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, <vscale x 4 x double> %negvc, <vscale x 4 x i1> %m, i32 %evl)
6438 ret <vscale x 4 x double> %v
6441 define <vscale x 4 x double> @vfmsub_vf_nxv4f64_commute(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
6442 ; CHECK-LABEL: vfmsub_vf_nxv4f64_commute:
6444 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6445 ; CHECK-NEXT: vfmsub.vf v8, fa0, v12, v0.t
6447 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6448 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6449 %negvc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 %evl)
6450 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x double> %va, <vscale x 4 x double> %negvc, <vscale x 4 x i1> %m, i32 %evl)
6451 ret <vscale x 4 x double> %v
6454 define <vscale x 4 x double> @vfmsub_vf_nxv4f64_unmasked(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, i32 zeroext %evl) {
6455 ; CHECK-LABEL: vfmsub_vf_nxv4f64_unmasked:
6457 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6458 ; CHECK-NEXT: vfmsub.vf v8, fa0, v12
6460 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6461 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6462 %negvc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6463 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, <vscale x 4 x double> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6464 ret <vscale x 4 x double> %v
6467 define <vscale x 4 x double> @vfmsub_vf_nxv4f64_unmasked_commute(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, i32 zeroext %evl) {
6468 ; CHECK-LABEL: vfmsub_vf_nxv4f64_unmasked_commute:
6470 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6471 ; CHECK-NEXT: vfmsub.vf v8, fa0, v12
6473 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6474 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6475 %negvc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6476 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x double> %va, <vscale x 4 x double> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6477 ret <vscale x 4 x double> %v
6480 define <vscale x 4 x double> @vfnmadd_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %b, <vscale x 4 x double> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {
6481 ; CHECK-LABEL: vfnmadd_vv_nxv4f64:
6483 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6484 ; CHECK-NEXT: vfnmadd.vv v12, v8, v16, v0.t
6485 ; CHECK-NEXT: vmv.v.v v8, v12
6487 %negb = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %b, <vscale x 4 x i1> %m, i32 %evl)
6488 %negc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %c, <vscale x 4 x i1> %m, i32 %evl)
6489 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %negb, <vscale x 4 x double> %negc, <vscale x 4 x i1> %m, i32 %evl)
6490 ret <vscale x 4 x double> %v
6493 define <vscale x 4 x double> @vfnmadd_vv_nxv4f64_commuted(<vscale x 4 x double> %va, <vscale x 4 x double> %b, <vscale x 4 x double> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {
6494 ; CHECK-LABEL: vfnmadd_vv_nxv4f64_commuted:
6496 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6497 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16, v0.t
6499 %negb = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %b, <vscale x 4 x i1> %m, i32 %evl)
6500 %negc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %c, <vscale x 4 x i1> %m, i32 %evl)
6501 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %negb, <vscale x 4 x double> %va, <vscale x 4 x double> %negc, <vscale x 4 x i1> %m, i32 %evl)
6502 ret <vscale x 4 x double> %v
6505 define <vscale x 4 x double> @vfnmadd_vv_nxv4f64_unmasked(<vscale x 4 x double> %va, <vscale x 4 x double> %b, <vscale x 4 x double> %c, i32 zeroext %evl) {
6506 ; CHECK-LABEL: vfnmadd_vv_nxv4f64_unmasked:
6508 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6509 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16
6511 %negb = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6512 %negc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6513 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %negb, <vscale x 4 x double> %negc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6514 ret <vscale x 4 x double> %v
6517 define <vscale x 4 x double> @vfnmadd_vv_nxv4f64_unmasked_commuted(<vscale x 4 x double> %va, <vscale x 4 x double> %b, <vscale x 4 x double> %c, i32 zeroext %evl) {
6518 ; CHECK-LABEL: vfnmadd_vv_nxv4f64_unmasked_commuted:
6520 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6521 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16
6523 %negb = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6524 %negc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6525 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %negb, <vscale x 4 x double> %va, <vscale x 4 x double> %negc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6526 ret <vscale x 4 x double> %v
6529 define <vscale x 4 x double> @vfnmadd_vf_nxv4f64(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
6530 ; CHECK-LABEL: vfnmadd_vf_nxv4f64:
6532 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6533 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12, v0.t
6535 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6536 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6537 %negva = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x i1> %m, i32 %evl)
6538 %negvc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 %evl)
6539 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %negva, <vscale x 4 x double> %vb, <vscale x 4 x double> %negvc, <vscale x 4 x i1> %m, i32 %evl)
6540 ret <vscale x 4 x double> %v
6543 define <vscale x 4 x double> @vfnmadd_vf_nxv4f64_commute(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
6544 ; CHECK-LABEL: vfnmadd_vf_nxv4f64_commute:
6546 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6547 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12, v0.t
6549 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6550 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6551 %negva = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x i1> %m, i32 %evl)
6552 %negvc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 %evl)
6553 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x double> %negva, <vscale x 4 x double> %negvc, <vscale x 4 x i1> %m, i32 %evl)
6554 ret <vscale x 4 x double> %v
6557 define <vscale x 4 x double> @vfnmadd_vf_nxv4f64_unmasked(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, i32 zeroext %evl) {
6558 ; CHECK-LABEL: vfnmadd_vf_nxv4f64_unmasked:
6560 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6561 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12
6563 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6564 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6565 %negva = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6566 %negvc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6567 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %negva, <vscale x 4 x double> %vb, <vscale x 4 x double> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6568 ret <vscale x 4 x double> %v
6571 define <vscale x 4 x double> @vfnmadd_vf_nxv4f64_unmasked_commute(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, i32 zeroext %evl) {
6572 ; CHECK-LABEL: vfnmadd_vf_nxv4f64_unmasked_commute:
6574 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6575 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12
6577 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6578 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6579 %negva = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6580 %negvc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6581 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x double> %negva, <vscale x 4 x double> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6582 ret <vscale x 4 x double> %v
6585 define <vscale x 4 x double> @vfnmadd_vf_nxv4f64_neg_splat(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
6586 ; CHECK-LABEL: vfnmadd_vf_nxv4f64_neg_splat:
6588 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6589 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12, v0.t
6591 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6592 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6593 %negvb = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x i1> %m, i32 %evl)
6594 %negvc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 %evl)
6595 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %negvb, <vscale x 4 x double> %negvc, <vscale x 4 x i1> %m, i32 %evl)
6596 ret <vscale x 4 x double> %v
6599 define <vscale x 4 x double> @vfnmadd_vf_nxv4f64_neg_splat_commute(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
6600 ; CHECK-LABEL: vfnmadd_vf_nxv4f64_neg_splat_commute:
6602 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6603 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12, v0.t
6605 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6606 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6607 %negvb = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x i1> %m, i32 %evl)
6608 %negvc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 %evl)
6609 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %negvb, <vscale x 4 x double> %va, <vscale x 4 x double> %negvc, <vscale x 4 x i1> %m, i32 %evl)
6610 ret <vscale x 4 x double> %v
6613 define <vscale x 4 x double> @vfnmadd_vf_nxv4f64_neg_splat_unmasked(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, i32 zeroext %evl) {
6614 ; CHECK-LABEL: vfnmadd_vf_nxv4f64_neg_splat_unmasked:
6616 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6617 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12
6619 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6620 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6621 %negvb = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6622 %negvc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6623 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %negvb, <vscale x 4 x double> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6624 ret <vscale x 4 x double> %v
6627 define <vscale x 4 x double> @vfnmadd_vf_nxv4f64_neg_splat_unmasked_commute(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, i32 zeroext %evl) {
6628 ; CHECK-LABEL: vfnmadd_vf_nxv4f64_neg_splat_unmasked_commute:
6630 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6631 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12
6633 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6634 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6635 %negvb = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6636 %negvc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6637 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %negvb, <vscale x 4 x double> %va, <vscale x 4 x double> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6638 ret <vscale x 4 x double> %v
6641 define <vscale x 4 x double> @vfnmsub_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %b, <vscale x 4 x double> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {
6642 ; CHECK-LABEL: vfnmsub_vv_nxv4f64:
6644 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6645 ; CHECK-NEXT: vfnmadd.vv v12, v8, v16, v0.t
6646 ; CHECK-NEXT: vmv.v.v v8, v12
6648 %negb = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %b, <vscale x 4 x i1> %m, i32 %evl)
6649 %negc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %c, <vscale x 4 x i1> %m, i32 %evl)
6650 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %negb, <vscale x 4 x double> %negc, <vscale x 4 x i1> %m, i32 %evl)
6651 ret <vscale x 4 x double> %v
6654 define <vscale x 4 x double> @vfnmsub_vv_nxv4f64_commuted(<vscale x 4 x double> %va, <vscale x 4 x double> %b, <vscale x 4 x double> %c, <vscale x 4 x i1> %m, i32 zeroext %evl) {
6655 ; CHECK-LABEL: vfnmsub_vv_nxv4f64_commuted:
6657 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6658 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16, v0.t
6660 %negb = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %b, <vscale x 4 x i1> %m, i32 %evl)
6661 %negc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %c, <vscale x 4 x i1> %m, i32 %evl)
6662 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %negb, <vscale x 4 x double> %va, <vscale x 4 x double> %negc, <vscale x 4 x i1> %m, i32 %evl)
6663 ret <vscale x 4 x double> %v
6666 define <vscale x 4 x double> @vfnmsub_vv_nxv4f64_unmasked(<vscale x 4 x double> %va, <vscale x 4 x double> %b, <vscale x 4 x double> %c, i32 zeroext %evl) {
6667 ; CHECK-LABEL: vfnmsub_vv_nxv4f64_unmasked:
6669 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6670 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16
6672 %negb = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6673 %negc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6674 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %negb, <vscale x 4 x double> %negc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6675 ret <vscale x 4 x double> %v
6678 define <vscale x 4 x double> @vfnmsub_vv_nxv4f64_unmasked_commuted(<vscale x 4 x double> %va, <vscale x 4 x double> %b, <vscale x 4 x double> %c, i32 zeroext %evl) {
6679 ; CHECK-LABEL: vfnmsub_vv_nxv4f64_unmasked_commuted:
6681 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6682 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16
6684 %negb = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6685 %negc = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %c, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6686 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %negb, <vscale x 4 x double> %va, <vscale x 4 x double> %negc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6687 ret <vscale x 4 x double> %v
6690 define <vscale x 4 x double> @vfnmsub_vf_nxv4f64(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
6691 ; CHECK-LABEL: vfnmsub_vf_nxv4f64:
6693 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6694 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12, v0.t
6696 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6697 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6698 %negva = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x i1> %m, i32 %evl)
6699 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %negva, <vscale x 4 x double> %vb, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 %evl)
6700 ret <vscale x 4 x double> %v
6703 define <vscale x 4 x double> @vfnmsub_vf_nxv4f64_commute(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
6704 ; CHECK-LABEL: vfnmsub_vf_nxv4f64_commute:
6706 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6707 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12, v0.t
6709 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6710 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6711 %negva = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x i1> %m, i32 %evl)
6712 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x double> %negva, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 %evl)
6713 ret <vscale x 4 x double> %v
6716 define <vscale x 4 x double> @vfnmsub_vf_nxv4f64_unmasked(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, i32 zeroext %evl) {
6717 ; CHECK-LABEL: vfnmsub_vf_nxv4f64_unmasked:
6719 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6720 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12
6722 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6723 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6724 %negva = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6725 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %negva, <vscale x 4 x double> %vb, <vscale x 4 x double> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6726 ret <vscale x 4 x double> %v
6729 define <vscale x 4 x double> @vfnmsub_vf_nxv4f64_unmasked_commute(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, i32 zeroext %evl) {
6730 ; CHECK-LABEL: vfnmsub_vf_nxv4f64_unmasked_commute:
6732 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6733 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12
6735 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6736 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6737 %negva = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6738 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x double> %negva, <vscale x 4 x double> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6739 ret <vscale x 4 x double> %v
6742 define <vscale x 4 x double> @vfnmsub_vf_nxv4f64_neg_splat(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
6743 ; CHECK-LABEL: vfnmsub_vf_nxv4f64_neg_splat:
6745 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6746 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12, v0.t
6748 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6749 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6750 %negvb = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x i1> %m, i32 %evl)
6751 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %negvb, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 %evl)
6752 ret <vscale x 4 x double> %v
6755 define <vscale x 4 x double> @vfnmsub_vf_nxv4f64_neg_splat_commute(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 zeroext %evl) {
6756 ; CHECK-LABEL: vfnmsub_vf_nxv4f64_neg_splat_commute:
6758 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6759 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12, v0.t
6761 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6762 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6763 %negvb = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x i1> %m, i32 %evl)
6764 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %negvb, <vscale x 4 x double> %va, <vscale x 4 x double> %vc, <vscale x 4 x i1> %m, i32 %evl)
6765 ret <vscale x 4 x double> %v
6768 define <vscale x 4 x double> @vfnmsub_vf_nxv4f64_neg_splat_unmasked(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, i32 zeroext %evl) {
6769 ; CHECK-LABEL: vfnmsub_vf_nxv4f64_neg_splat_unmasked:
6771 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6772 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12
6774 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6775 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6776 %negvb = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6777 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %negvb, <vscale x 4 x double> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6778 ret <vscale x 4 x double> %v
6781 define <vscale x 4 x double> @vfnmsub_vf_nxv4f64_neg_splat_unmasked_commute(<vscale x 4 x double> %va, double %b, <vscale x 4 x double> %vc, i32 zeroext %evl) {
6782 ; CHECK-LABEL: vfnmsub_vf_nxv4f64_neg_splat_unmasked_commute:
6784 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6785 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12
6787 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6788 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6789 %negvb = call <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6790 %v = call <vscale x 4 x double> @llvm.vp.fmuladd.nxv4f64(<vscale x 4 x double> %negvb, <vscale x 4 x double> %va, <vscale x 4 x double> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
6791 ret <vscale x 4 x double> %v
6794 declare <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double>, <vscale x 8 x i1>, i32)
6796 define <vscale x 8 x double> @vfmsub_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %b, <vscale x 8 x double> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {
6797 ; CHECK-LABEL: vfmsub_vv_nxv8f64:
6799 ; CHECK-NEXT: vl8re64.v v24, (a0)
6800 ; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma
6801 ; CHECK-NEXT: vfmsub.vv v16, v8, v24, v0.t
6802 ; CHECK-NEXT: vmv.v.v v8, v16
6804 %negc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %c, <vscale x 8 x i1> %m, i32 %evl)
6805 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %b, <vscale x 8 x double> %negc, <vscale x 8 x i1> %m, i32 %evl)
6806 ret <vscale x 8 x double> %v
6809 define <vscale x 8 x double> @vfmsub_vv_nxv8f64_unmasked(<vscale x 8 x double> %va, <vscale x 8 x double> %b, <vscale x 8 x double> %c, i32 zeroext %evl) {
6810 ; CHECK-LABEL: vfmsub_vv_nxv8f64_unmasked:
6812 ; CHECK-NEXT: vl8re64.v v24, (a0)
6813 ; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma
6814 ; CHECK-NEXT: vfmsub.vv v8, v16, v24
6816 %negc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)
6817 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %b, <vscale x 8 x double> %negc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
6818 ret <vscale x 8 x double> %v
6821 define <vscale x 8 x double> @vfmsub_vf_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
6822 ; CHECK-LABEL: vfmsub_vf_nxv8f64:
6824 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
6825 ; CHECK-NEXT: vfmsub.vf v8, fa0, v16, v0.t
6827 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
6828 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
6829 %negvc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 %evl)
6830 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, <vscale x 8 x double> %negvc, <vscale x 8 x i1> %m, i32 %evl)
6831 ret <vscale x 8 x double> %v
6834 define <vscale x 8 x double> @vfmsub_vf_nxv8f64_commute(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
6835 ; CHECK-LABEL: vfmsub_vf_nxv8f64_commute:
6837 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
6838 ; CHECK-NEXT: vfmsub.vf v8, fa0, v16, v0.t
6840 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
6841 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
6842 %negvc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 %evl)
6843 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %va, <vscale x 8 x double> %negvc, <vscale x 8 x i1> %m, i32 %evl)
6844 ret <vscale x 8 x double> %v
6847 define <vscale x 8 x double> @vfmsub_vf_nxv8f64_unmasked(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, i32 zeroext %evl) {
6848 ; CHECK-LABEL: vfmsub_vf_nxv8f64_unmasked:
6850 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
6851 ; CHECK-NEXT: vfmsub.vf v8, fa0, v16
6853 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
6854 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
6855 %negvc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
6856 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, <vscale x 8 x double> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
6857 ret <vscale x 8 x double> %v
6860 define <vscale x 8 x double> @vfmsub_vf_nxv8f64_unmasked_commute(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, i32 zeroext %evl) {
6861 ; CHECK-LABEL: vfmsub_vf_nxv8f64_unmasked_commute:
6863 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
6864 ; CHECK-NEXT: vfmsub.vf v8, fa0, v16
6866 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
6867 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
6868 %negvc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
6869 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %va, <vscale x 8 x double> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
6870 ret <vscale x 8 x double> %v
6873 define <vscale x 8 x double> @vfnmadd_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %b, <vscale x 8 x double> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {
6874 ; CHECK-LABEL: vfnmadd_vv_nxv8f64:
6876 ; CHECK-NEXT: vl8re64.v v24, (a0)
6877 ; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma
6878 ; CHECK-NEXT: vfnmadd.vv v16, v8, v24, v0.t
6879 ; CHECK-NEXT: vmv.v.v v8, v16
6881 %negb = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %b, <vscale x 8 x i1> %m, i32 %evl)
6882 %negc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %c, <vscale x 8 x i1> %m, i32 %evl)
6883 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %negb, <vscale x 8 x double> %negc, <vscale x 8 x i1> %m, i32 %evl)
6884 ret <vscale x 8 x double> %v
6887 define <vscale x 8 x double> @vfnmadd_vv_nxv8f64_commuted(<vscale x 8 x double> %va, <vscale x 8 x double> %b, <vscale x 8 x double> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {
6888 ; CHECK-LABEL: vfnmadd_vv_nxv8f64_commuted:
6890 ; CHECK-NEXT: vl8re64.v v24, (a0)
6891 ; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma
6892 ; CHECK-NEXT: vfnmadd.vv v8, v16, v24, v0.t
6894 %negb = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %b, <vscale x 8 x i1> %m, i32 %evl)
6895 %negc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %c, <vscale x 8 x i1> %m, i32 %evl)
6896 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %negb, <vscale x 8 x double> %va, <vscale x 8 x double> %negc, <vscale x 8 x i1> %m, i32 %evl)
6897 ret <vscale x 8 x double> %v
6900 define <vscale x 8 x double> @vfnmadd_vv_nxv8f64_unmasked(<vscale x 8 x double> %va, <vscale x 8 x double> %b, <vscale x 8 x double> %c, i32 zeroext %evl) {
6901 ; CHECK-LABEL: vfnmadd_vv_nxv8f64_unmasked:
6903 ; CHECK-NEXT: vl8re64.v v24, (a0)
6904 ; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma
6905 ; CHECK-NEXT: vfnmadd.vv v8, v16, v24
6907 %negb = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)
6908 %negc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)
6909 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %negb, <vscale x 8 x double> %negc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
6910 ret <vscale x 8 x double> %v
6913 define <vscale x 8 x double> @vfnmadd_vv_nxv8f64_unmasked_commuted(<vscale x 8 x double> %va, <vscale x 8 x double> %b, <vscale x 8 x double> %c, i32 zeroext %evl) {
6914 ; CHECK-LABEL: vfnmadd_vv_nxv8f64_unmasked_commuted:
6916 ; CHECK-NEXT: vl8re64.v v24, (a0)
6917 ; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma
6918 ; CHECK-NEXT: vfnmadd.vv v8, v16, v24
6920 %negb = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)
6921 %negc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)
6922 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %negb, <vscale x 8 x double> %va, <vscale x 8 x double> %negc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
6923 ret <vscale x 8 x double> %v
6926 define <vscale x 8 x double> @vfnmadd_vf_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
6927 ; CHECK-LABEL: vfnmadd_vf_nxv8f64:
6929 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
6930 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16, v0.t
6932 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
6933 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
6934 %negva = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x i1> %m, i32 %evl)
6935 %negvc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 %evl)
6936 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %negva, <vscale x 8 x double> %vb, <vscale x 8 x double> %negvc, <vscale x 8 x i1> %m, i32 %evl)
6937 ret <vscale x 8 x double> %v
6940 define <vscale x 8 x double> @vfnmadd_vf_nxv8f64_commute(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
6941 ; CHECK-LABEL: vfnmadd_vf_nxv8f64_commute:
6943 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
6944 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16, v0.t
6946 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
6947 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
6948 %negva = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x i1> %m, i32 %evl)
6949 %negvc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 %evl)
6950 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %negva, <vscale x 8 x double> %negvc, <vscale x 8 x i1> %m, i32 %evl)
6951 ret <vscale x 8 x double> %v
6954 define <vscale x 8 x double> @vfnmadd_vf_nxv8f64_unmasked(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, i32 zeroext %evl) {
6955 ; CHECK-LABEL: vfnmadd_vf_nxv8f64_unmasked:
6957 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
6958 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16
6960 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
6961 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
6962 %negva = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x i1> splat (i1 true), i32 %evl)
6963 %negvc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
6964 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %negva, <vscale x 8 x double> %vb, <vscale x 8 x double> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
6965 ret <vscale x 8 x double> %v
6968 define <vscale x 8 x double> @vfnmadd_vf_nxv8f64_unmasked_commute(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, i32 zeroext %evl) {
6969 ; CHECK-LABEL: vfnmadd_vf_nxv8f64_unmasked_commute:
6971 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
6972 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16
6974 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
6975 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
6976 %negva = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x i1> splat (i1 true), i32 %evl)
6977 %negvc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
6978 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %negva, <vscale x 8 x double> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
6979 ret <vscale x 8 x double> %v
6982 define <vscale x 8 x double> @vfnmadd_vf_nxv8f64_neg_splat(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
6983 ; CHECK-LABEL: vfnmadd_vf_nxv8f64_neg_splat:
6985 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
6986 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16, v0.t
6988 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
6989 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
6990 %negvb = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x i1> %m, i32 %evl)
6991 %negvc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 %evl)
6992 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %negvb, <vscale x 8 x double> %negvc, <vscale x 8 x i1> %m, i32 %evl)
6993 ret <vscale x 8 x double> %v
6996 define <vscale x 8 x double> @vfnmadd_vf_nxv8f64_neg_splat_commute(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
6997 ; CHECK-LABEL: vfnmadd_vf_nxv8f64_neg_splat_commute:
6999 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
7000 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16, v0.t
7002 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7003 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7004 %negvb = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x i1> %m, i32 %evl)
7005 %negvc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 %evl)
7006 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %negvb, <vscale x 8 x double> %va, <vscale x 8 x double> %negvc, <vscale x 8 x i1> %m, i32 %evl)
7007 ret <vscale x 8 x double> %v
7010 define <vscale x 8 x double> @vfnmadd_vf_nxv8f64_neg_splat_unmasked(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, i32 zeroext %evl) {
7011 ; CHECK-LABEL: vfnmadd_vf_nxv8f64_neg_splat_unmasked:
7013 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
7014 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16
7016 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7017 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7018 %negvb = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)
7019 %negvc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
7020 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %negvb, <vscale x 8 x double> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
7021 ret <vscale x 8 x double> %v
7024 define <vscale x 8 x double> @vfnmadd_vf_nxv8f64_neg_splat_unmasked_commute(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, i32 zeroext %evl) {
7025 ; CHECK-LABEL: vfnmadd_vf_nxv8f64_neg_splat_unmasked_commute:
7027 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
7028 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16
7030 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7031 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7032 %negvb = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)
7033 %negvc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
7034 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %negvb, <vscale x 8 x double> %va, <vscale x 8 x double> %negvc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
7035 ret <vscale x 8 x double> %v
7038 define <vscale x 8 x double> @vfnmsub_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %b, <vscale x 8 x double> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {
7039 ; CHECK-LABEL: vfnmsub_vv_nxv8f64:
7041 ; CHECK-NEXT: vl8re64.v v24, (a0)
7042 ; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma
7043 ; CHECK-NEXT: vfnmadd.vv v16, v8, v24, v0.t
7044 ; CHECK-NEXT: vmv.v.v v8, v16
7046 %negb = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %b, <vscale x 8 x i1> %m, i32 %evl)
7047 %negc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %c, <vscale x 8 x i1> %m, i32 %evl)
7048 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %negb, <vscale x 8 x double> %negc, <vscale x 8 x i1> %m, i32 %evl)
7049 ret <vscale x 8 x double> %v
7052 define <vscale x 8 x double> @vfnmsub_vv_nxv8f64_commuted(<vscale x 8 x double> %va, <vscale x 8 x double> %b, <vscale x 8 x double> %c, <vscale x 8 x i1> %m, i32 zeroext %evl) {
7053 ; CHECK-LABEL: vfnmsub_vv_nxv8f64_commuted:
7055 ; CHECK-NEXT: vl8re64.v v24, (a0)
7056 ; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma
7057 ; CHECK-NEXT: vfnmadd.vv v8, v16, v24, v0.t
7059 %negb = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %b, <vscale x 8 x i1> %m, i32 %evl)
7060 %negc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %c, <vscale x 8 x i1> %m, i32 %evl)
7061 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %negb, <vscale x 8 x double> %va, <vscale x 8 x double> %negc, <vscale x 8 x i1> %m, i32 %evl)
7062 ret <vscale x 8 x double> %v
7065 define <vscale x 8 x double> @vfnmsub_vv_nxv8f64_unmasked(<vscale x 8 x double> %va, <vscale x 8 x double> %b, <vscale x 8 x double> %c, i32 zeroext %evl) {
7066 ; CHECK-LABEL: vfnmsub_vv_nxv8f64_unmasked:
7068 ; CHECK-NEXT: vl8re64.v v24, (a0)
7069 ; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma
7070 ; CHECK-NEXT: vfnmadd.vv v8, v16, v24
7072 %negb = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)
7073 %negc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)
7074 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %negb, <vscale x 8 x double> %negc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
7075 ret <vscale x 8 x double> %v
7078 define <vscale x 8 x double> @vfnmsub_vv_nxv8f64_unmasked_commuted(<vscale x 8 x double> %va, <vscale x 8 x double> %b, <vscale x 8 x double> %c, i32 zeroext %evl) {
7079 ; CHECK-LABEL: vfnmsub_vv_nxv8f64_unmasked_commuted:
7081 ; CHECK-NEXT: vl8re64.v v24, (a0)
7082 ; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma
7083 ; CHECK-NEXT: vfnmadd.vv v8, v16, v24
7085 %negb = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)
7086 %negc = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %c, <vscale x 8 x i1> splat (i1 true), i32 %evl)
7087 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %negb, <vscale x 8 x double> %va, <vscale x 8 x double> %negc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
7088 ret <vscale x 8 x double> %v
7091 define <vscale x 8 x double> @vfnmsub_vf_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
7092 ; CHECK-LABEL: vfnmsub_vf_nxv8f64:
7094 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
7095 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16, v0.t
7097 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7098 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7099 %negva = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x i1> %m, i32 %evl)
7100 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %negva, <vscale x 8 x double> %vb, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 %evl)
7101 ret <vscale x 8 x double> %v
7104 define <vscale x 8 x double> @vfnmsub_vf_nxv8f64_commute(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
7105 ; CHECK-LABEL: vfnmsub_vf_nxv8f64_commute:
7107 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
7108 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16, v0.t
7110 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7111 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7112 %negva = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x i1> %m, i32 %evl)
7113 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %negva, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 %evl)
7114 ret <vscale x 8 x double> %v
7117 define <vscale x 8 x double> @vfnmsub_vf_nxv8f64_unmasked(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, i32 zeroext %evl) {
7118 ; CHECK-LABEL: vfnmsub_vf_nxv8f64_unmasked:
7120 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
7121 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16
7123 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7124 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7125 %negva = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x i1> splat (i1 true), i32 %evl)
7126 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %negva, <vscale x 8 x double> %vb, <vscale x 8 x double> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
7127 ret <vscale x 8 x double> %v
7130 define <vscale x 8 x double> @vfnmsub_vf_nxv8f64_unmasked_commute(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, i32 zeroext %evl) {
7131 ; CHECK-LABEL: vfnmsub_vf_nxv8f64_unmasked_commute:
7133 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
7134 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16
7136 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7137 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7138 %negva = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x i1> splat (i1 true), i32 %evl)
7139 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %negva, <vscale x 8 x double> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
7140 ret <vscale x 8 x double> %v
7143 define <vscale x 8 x double> @vfnmsub_vf_nxv8f64_neg_splat(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
7144 ; CHECK-LABEL: vfnmsub_vf_nxv8f64_neg_splat:
7146 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
7147 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16, v0.t
7149 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7150 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7151 %negvb = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x i1> %m, i32 %evl)
7152 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %negvb, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 %evl)
7153 ret <vscale x 8 x double> %v
7156 define <vscale x 8 x double> @vfnmsub_vf_nxv8f64_neg_splat_commute(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 zeroext %evl) {
7157 ; CHECK-LABEL: vfnmsub_vf_nxv8f64_neg_splat_commute:
7159 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
7160 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16, v0.t
7162 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7163 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7164 %negvb = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x i1> %m, i32 %evl)
7165 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %negvb, <vscale x 8 x double> %va, <vscale x 8 x double> %vc, <vscale x 8 x i1> %m, i32 %evl)
7166 ret <vscale x 8 x double> %v
7169 define <vscale x 8 x double> @vfnmsub_vf_nxv8f64_neg_splat_unmasked(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, i32 zeroext %evl) {
7170 ; CHECK-LABEL: vfnmsub_vf_nxv8f64_neg_splat_unmasked:
7172 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
7173 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16
7175 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7176 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7177 %negvb = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)
7178 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %negvb, <vscale x 8 x double> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
7179 ret <vscale x 8 x double> %v
7182 define <vscale x 8 x double> @vfnmsub_vf_nxv8f64_neg_splat_unmasked_commute(<vscale x 8 x double> %va, double %b, <vscale x 8 x double> %vc, i32 zeroext %evl) {
7183 ; CHECK-LABEL: vfnmsub_vf_nxv8f64_neg_splat_unmasked_commute:
7185 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
7186 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16
7188 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7189 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7190 %negvb = call <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)
7191 %v = call <vscale x 8 x double> @llvm.vp.fmuladd.nxv8f64(<vscale x 8 x double> %negvb, <vscale x 8 x double> %va, <vscale x 8 x double> %vc, <vscale x 8 x i1> splat (i1 true), i32 %evl)
7192 ret <vscale x 8 x double> %v