1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv32 -mattr=+d,+zfh,+zvfh,+v,+m -target-abi=ilp32d \
3 ; RUN: -verify-machineinstrs < %s | FileCheck %s
4 ; RUN: llc -mtriple=riscv64 -mattr=+d,+zfh,+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, 40
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, 0x28, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 40 * vlenb
1115 ; CHECK-NEXT: vmv1r.v v7, v0
1116 ; CHECK-NEXT: csrr a1, vlenb
1117 ; CHECK-NEXT: li a3, 24
1118 ; CHECK-NEXT: mul a1, a1, a3
1119 ; CHECK-NEXT: add a1, sp, a1
1120 ; CHECK-NEXT: addi a1, a1, 16
1121 ; CHECK-NEXT: vs8r.v v16, (a1) # Unknown-size Folded Spill
1122 ; CHECK-NEXT: csrr a1, vlenb
1123 ; CHECK-NEXT: slli a1, a1, 5
1124 ; CHECK-NEXT: add a1, sp, a1
1125 ; CHECK-NEXT: addi a1, a1, 16
1126 ; CHECK-NEXT: vs8r.v v8, (a1) # Unknown-size Folded Spill
1127 ; CHECK-NEXT: csrr a1, vlenb
1128 ; CHECK-NEXT: srli a3, a1, 3
1129 ; CHECK-NEXT: slli a5, a1, 3
1130 ; CHECK-NEXT: add a6, a2, a5
1131 ; CHECK-NEXT: vl8re64.v v8, (a6)
1132 ; CHECK-NEXT: csrr a6, vlenb
1133 ; CHECK-NEXT: slli a6, a6, 4
1134 ; CHECK-NEXT: add a6, sp, a6
1135 ; CHECK-NEXT: addi a6, a6, 16
1136 ; CHECK-NEXT: vs8r.v v8, (a6) # Unknown-size Folded Spill
1137 ; CHECK-NEXT: add a5, a0, a5
1138 ; CHECK-NEXT: sub a6, a4, a1
1139 ; CHECK-NEXT: sltu a7, a4, a6
1140 ; CHECK-NEXT: addi a7, a7, -1
1141 ; CHECK-NEXT: vl8re64.v v8, (a5)
1142 ; CHECK-NEXT: vl8re64.v v16, (a2)
1143 ; CHECK-NEXT: csrr a2, vlenb
1144 ; CHECK-NEXT: slli a2, a2, 3
1145 ; CHECK-NEXT: add a2, sp, a2
1146 ; CHECK-NEXT: addi a2, a2, 16
1147 ; CHECK-NEXT: vs8r.v v16, (a2) # Unknown-size Folded Spill
1148 ; CHECK-NEXT: vl8re64.v v16, (a0)
1149 ; CHECK-NEXT: addi a0, sp, 16
1150 ; CHECK-NEXT: vs8r.v v16, (a0) # Unknown-size Folded Spill
1151 ; CHECK-NEXT: vsetvli a0, zero, e8, mf4, ta, ma
1152 ; CHECK-NEXT: vslidedown.vx v0, v0, a3
1153 ; CHECK-NEXT: and a0, a7, a6
1154 ; CHECK-NEXT: csrr a2, vlenb
1155 ; CHECK-NEXT: li a3, 24
1156 ; CHECK-NEXT: mul a2, a2, a3
1157 ; CHECK-NEXT: add a2, sp, a2
1158 ; CHECK-NEXT: addi a2, a2, 16
1159 ; CHECK-NEXT: vl8r.v v24, (a2) # Unknown-size Folded Reload
1160 ; CHECK-NEXT: csrr a2, vlenb
1161 ; CHECK-NEXT: slli a2, a2, 4
1162 ; CHECK-NEXT: add a2, sp, a2
1163 ; CHECK-NEXT: addi a2, a2, 16
1164 ; CHECK-NEXT: vl8r.v v16, (a2) # Unknown-size Folded Reload
1165 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1166 ; CHECK-NEXT: vfmadd.vv v8, v24, v16, v0.t
1167 ; CHECK-NEXT: csrr a0, vlenb
1168 ; CHECK-NEXT: li a2, 24
1169 ; CHECK-NEXT: mul a0, a0, a2
1170 ; CHECK-NEXT: add a0, sp, a0
1171 ; CHECK-NEXT: addi a0, a0, 16
1172 ; CHECK-NEXT: vs8r.v v8, (a0) # Unknown-size Folded Spill
1173 ; CHECK-NEXT: bltu a4, a1, .LBB92_2
1174 ; CHECK-NEXT: # %bb.1:
1175 ; CHECK-NEXT: mv a4, a1
1176 ; CHECK-NEXT: .LBB92_2:
1177 ; CHECK-NEXT: vmv1r.v v0, v7
1178 ; CHECK-NEXT: csrr a0, vlenb
1179 ; CHECK-NEXT: slli a0, a0, 5
1180 ; CHECK-NEXT: add a0, sp, a0
1181 ; CHECK-NEXT: addi a0, a0, 16
1182 ; CHECK-NEXT: vl8r.v v24, (a0) # Unknown-size Folded Reload
1183 ; CHECK-NEXT: csrr a0, vlenb
1184 ; CHECK-NEXT: slli a0, a0, 3
1185 ; CHECK-NEXT: add a0, sp, a0
1186 ; CHECK-NEXT: addi a0, a0, 16
1187 ; CHECK-NEXT: vl8r.v v8, (a0) # Unknown-size Folded Reload
1188 ; CHECK-NEXT: addi a0, sp, 16
1189 ; CHECK-NEXT: vl8r.v v16, (a0) # Unknown-size Folded Reload
1190 ; CHECK-NEXT: vsetvli zero, a4, e64, m8, ta, ma
1191 ; CHECK-NEXT: vfmadd.vv v16, v24, v8, v0.t
1192 ; CHECK-NEXT: vmv.v.v v8, v16
1193 ; CHECK-NEXT: csrr a0, vlenb
1194 ; CHECK-NEXT: li a1, 24
1195 ; CHECK-NEXT: mul a0, a0, a1
1196 ; CHECK-NEXT: add a0, sp, a0
1197 ; CHECK-NEXT: addi a0, a0, 16
1198 ; CHECK-NEXT: vl8r.v v16, (a0) # Unknown-size Folded Reload
1199 ; CHECK-NEXT: csrr a0, vlenb
1200 ; CHECK-NEXT: li a1, 40
1201 ; CHECK-NEXT: mul a0, a0, a1
1202 ; CHECK-NEXT: add sp, sp, a0
1203 ; CHECK-NEXT: addi sp, sp, 16
1205 %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)
1206 ret <vscale x 16 x double> %v
1209 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) {
1210 ; CHECK-LABEL: vfma_vv_nxv16f64_unmasked:
1212 ; CHECK-NEXT: addi sp, sp, -16
1213 ; CHECK-NEXT: .cfi_def_cfa_offset 16
1214 ; CHECK-NEXT: csrr a1, vlenb
1215 ; CHECK-NEXT: li a3, 24
1216 ; CHECK-NEXT: mul a1, a1, a3
1217 ; CHECK-NEXT: sub sp, sp, a1
1218 ; CHECK-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x18, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 24 * vlenb
1219 ; CHECK-NEXT: csrr a1, vlenb
1220 ; CHECK-NEXT: slli a1, a1, 3
1221 ; CHECK-NEXT: add a1, sp, a1
1222 ; CHECK-NEXT: addi a1, a1, 16
1223 ; CHECK-NEXT: vs8r.v v16, (a1) # Unknown-size Folded Spill
1224 ; CHECK-NEXT: csrr a1, vlenb
1225 ; CHECK-NEXT: slli a1, a1, 4
1226 ; CHECK-NEXT: add a1, sp, a1
1227 ; CHECK-NEXT: addi a1, a1, 16
1228 ; CHECK-NEXT: vs8r.v v8, (a1) # Unknown-size Folded Spill
1229 ; CHECK-NEXT: csrr a1, vlenb
1230 ; CHECK-NEXT: slli a3, a1, 3
1231 ; CHECK-NEXT: add a5, a2, a3
1232 ; CHECK-NEXT: vl8re64.v v24, (a5)
1233 ; CHECK-NEXT: add a3, a0, a3
1234 ; CHECK-NEXT: vl8re64.v v16, (a3)
1235 ; CHECK-NEXT: sub a3, a4, a1
1236 ; CHECK-NEXT: sltu a5, a4, a3
1237 ; CHECK-NEXT: vl8re64.v v8, (a2)
1238 ; CHECK-NEXT: addi a2, sp, 16
1239 ; CHECK-NEXT: vs8r.v v8, (a2) # Unknown-size Folded Spill
1240 ; CHECK-NEXT: vl8re64.v v0, (a0)
1241 ; CHECK-NEXT: addi a5, a5, -1
1242 ; CHECK-NEXT: and a3, a5, a3
1243 ; CHECK-NEXT: csrr a0, vlenb
1244 ; CHECK-NEXT: slli a0, a0, 3
1245 ; CHECK-NEXT: add a0, sp, a0
1246 ; CHECK-NEXT: addi a0, a0, 16
1247 ; CHECK-NEXT: vl8r.v v8, (a0) # Unknown-size Folded Reload
1248 ; CHECK-NEXT: vsetvli zero, a3, e64, m8, ta, ma
1249 ; CHECK-NEXT: vfmadd.vv v16, v8, v24
1250 ; CHECK-NEXT: bltu a4, a1, .LBB93_2
1251 ; CHECK-NEXT: # %bb.1:
1252 ; CHECK-NEXT: mv a4, a1
1253 ; CHECK-NEXT: .LBB93_2:
1254 ; CHECK-NEXT: csrr a0, vlenb
1255 ; CHECK-NEXT: slli a0, a0, 4
1256 ; CHECK-NEXT: add a0, sp, a0
1257 ; CHECK-NEXT: addi a0, a0, 16
1258 ; CHECK-NEXT: vl8r.v v24, (a0) # Unknown-size Folded Reload
1259 ; CHECK-NEXT: addi a0, sp, 16
1260 ; CHECK-NEXT: vl8r.v v8, (a0) # Unknown-size Folded Reload
1261 ; CHECK-NEXT: vsetvli zero, a4, e64, m8, ta, ma
1262 ; CHECK-NEXT: vfmadd.vv v0, v24, v8
1263 ; CHECK-NEXT: vmv.v.v v8, v0
1264 ; CHECK-NEXT: csrr a0, vlenb
1265 ; CHECK-NEXT: li a1, 24
1266 ; CHECK-NEXT: mul a0, a0, a1
1267 ; CHECK-NEXT: add sp, sp, a0
1268 ; CHECK-NEXT: addi sp, sp, 16
1270 %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)
1271 ret <vscale x 16 x double> %v
1274 declare <vscale x 1 x half> @llvm.vp.fneg.nxv1f16(<vscale x 1 x half>, <vscale x 1 x i1>, i32)
1276 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) {
1277 ; CHECK-LABEL: vfmsub_vv_nxv1f16:
1279 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1280 ; CHECK-NEXT: vfmsub.vv v9, v8, v10, v0.t
1281 ; CHECK-NEXT: vmv1r.v v8, v9
1283 %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)
1284 %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)
1285 ret <vscale x 1 x half> %v
1288 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) {
1289 ; CHECK-LABEL: vfmsub_vv_nxv1f16_unmasked:
1291 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1292 ; CHECK-NEXT: vfmsub.vv v8, v9, v10
1294 %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)
1295 %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)
1296 ret <vscale x 1 x half> %v
1299 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) {
1300 ; CHECK-LABEL: vfmsub_vf_nxv1f16:
1302 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1303 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9, v0.t
1305 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1306 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1307 %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)
1308 %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)
1309 ret <vscale x 1 x half> %v
1312 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) {
1313 ; CHECK-LABEL: vfmsub_vf_nxv1f16_commute:
1315 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1316 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9, v0.t
1318 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1319 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1320 %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)
1321 %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)
1322 ret <vscale x 1 x half> %v
1325 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) {
1326 ; CHECK-LABEL: vfmsub_vf_nxv1f16_unmasked:
1328 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1329 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
1335 ret <vscale x 1 x half> %v
1338 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) {
1339 ; CHECK-LABEL: vfmsub_vf_nxv1f16_unmasked_commute:
1341 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1342 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
1348 ret <vscale x 1 x half> %v
1351 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) {
1352 ; CHECK-LABEL: vfnmadd_vv_nxv1f16:
1354 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1355 ; CHECK-NEXT: vfnmadd.vv v9, v8, v10, v0.t
1356 ; CHECK-NEXT: vmv1r.v v8, v9
1358 %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)
1359 %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)
1360 %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)
1361 ret <vscale x 1 x half> %v
1364 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) {
1365 ; CHECK-LABEL: vfnmadd_vv_nxv1f16_commuted:
1367 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1368 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10, v0.t
1370 %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)
1371 %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)
1372 %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)
1373 ret <vscale x 1 x half> %v
1376 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) {
1377 ; CHECK-LABEL: vfnmadd_vv_nxv1f16_unmasked:
1379 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1380 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
1382 %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)
1383 %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)
1384 %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)
1385 ret <vscale x 1 x half> %v
1388 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) {
1389 ; CHECK-LABEL: vfnmadd_vv_nxv1f16_unmasked_commuted:
1391 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1392 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
1394 %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)
1395 %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)
1396 %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)
1397 ret <vscale x 1 x half> %v
1400 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) {
1401 ; CHECK-LABEL: vfnmadd_vf_nxv1f16:
1403 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1404 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
1406 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1407 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1408 %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)
1409 %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)
1410 %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)
1411 ret <vscale x 1 x half> %v
1414 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) {
1415 ; CHECK-LABEL: vfnmadd_vf_nxv1f16_commute:
1417 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1418 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
1420 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1421 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1422 %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)
1423 %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)
1424 %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)
1425 ret <vscale x 1 x half> %v
1428 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) {
1429 ; CHECK-LABEL: vfnmadd_vf_nxv1f16_unmasked:
1431 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1432 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
1434 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1435 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1436 %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)
1437 %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)
1438 %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)
1439 ret <vscale x 1 x half> %v
1442 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) {
1443 ; CHECK-LABEL: vfnmadd_vf_nxv1f16_unmasked_commute:
1445 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1446 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
1448 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1449 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1450 %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)
1451 %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)
1452 %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)
1453 ret <vscale x 1 x half> %v
1456 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) {
1457 ; CHECK-LABEL: vfnmadd_vf_nxv1f16_neg_splat:
1459 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1460 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
1462 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1463 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1464 %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)
1465 %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)
1466 %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)
1467 ret <vscale x 1 x half> %v
1470 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) {
1471 ; CHECK-LABEL: vfnmadd_vf_nxv1f16_neg_splat_commute:
1473 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1474 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
1476 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1477 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1478 %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)
1479 %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)
1480 %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)
1481 ret <vscale x 1 x half> %v
1484 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) {
1485 ; CHECK-LABEL: vfnmadd_vf_nxv1f16_neg_splat_unmasked:
1487 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1488 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
1490 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1491 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1492 %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)
1493 %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)
1494 %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)
1495 ret <vscale x 1 x half> %v
1498 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) {
1499 ; CHECK-LABEL: vfnmadd_vf_nxv1f16_neg_splat_unmasked_commute:
1501 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1502 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
1504 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1505 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1506 %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)
1507 %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)
1508 %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)
1509 ret <vscale x 1 x half> %v
1512 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) {
1513 ; CHECK-LABEL: vfnmsub_vv_nxv1f16:
1515 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1516 ; CHECK-NEXT: vfnmadd.vv v9, v8, v10, v0.t
1517 ; CHECK-NEXT: vmv1r.v v8, v9
1519 %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)
1520 %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)
1521 %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)
1522 ret <vscale x 1 x half> %v
1525 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) {
1526 ; CHECK-LABEL: vfnmsub_vv_nxv1f16_commuted:
1528 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1529 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10, v0.t
1531 %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)
1532 %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)
1533 %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)
1534 ret <vscale x 1 x half> %v
1537 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) {
1538 ; CHECK-LABEL: vfnmsub_vv_nxv1f16_unmasked:
1540 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1541 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
1543 %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)
1544 %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)
1545 %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)
1546 ret <vscale x 1 x half> %v
1549 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) {
1550 ; CHECK-LABEL: vfnmsub_vv_nxv1f16_unmasked_commuted:
1552 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1553 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
1555 %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)
1556 %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)
1557 %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)
1558 ret <vscale x 1 x half> %v
1561 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) {
1562 ; CHECK-LABEL: vfnmsub_vf_nxv1f16:
1564 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1565 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
1567 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1568 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1569 %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)
1570 %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)
1571 ret <vscale x 1 x half> %v
1574 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) {
1575 ; CHECK-LABEL: vfnmsub_vf_nxv1f16_commute:
1577 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1578 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
1580 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1581 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1582 %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)
1583 %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)
1584 ret <vscale x 1 x half> %v
1587 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) {
1588 ; CHECK-LABEL: vfnmsub_vf_nxv1f16_unmasked:
1590 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1591 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
1597 ret <vscale x 1 x half> %v
1600 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) {
1601 ; CHECK-LABEL: vfnmsub_vf_nxv1f16_unmasked_commute:
1603 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1604 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
1610 ret <vscale x 1 x half> %v
1613 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) {
1614 ; CHECK-LABEL: vfnmsub_vf_nxv1f16_neg_splat:
1616 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1617 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
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 %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)
1622 %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)
1623 ret <vscale x 1 x half> %v
1626 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) {
1627 ; CHECK-LABEL: vfnmsub_vf_nxv1f16_neg_splat_commute:
1629 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1630 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
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 %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)
1635 %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)
1636 ret <vscale x 1 x half> %v
1639 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) {
1640 ; CHECK-LABEL: vfnmsub_vf_nxv1f16_neg_splat_unmasked:
1642 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1643 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
1649 ret <vscale x 1 x half> %v
1652 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) {
1653 ; CHECK-LABEL: vfnmsub_vf_nxv1f16_neg_splat_unmasked_commute:
1655 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1656 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
1662 ret <vscale x 1 x half> %v
1665 declare <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half>, <vscale x 2 x i1>, i32)
1667 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) {
1668 ; CHECK-LABEL: vfmsub_vv_nxv2f16:
1670 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1671 ; CHECK-NEXT: vfmsub.vv v9, v8, v10, v0.t
1672 ; CHECK-NEXT: vmv1r.v v8, v9
1674 %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)
1675 %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)
1676 ret <vscale x 2 x half> %v
1679 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) {
1680 ; CHECK-LABEL: vfmsub_vv_nxv2f16_unmasked:
1682 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1683 ; CHECK-NEXT: vfmsub.vv v8, v9, v10
1685 %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)
1686 %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)
1687 ret <vscale x 2 x half> %v
1690 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) {
1691 ; CHECK-LABEL: vfmsub_vf_nxv2f16:
1693 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1694 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9, v0.t
1696 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1697 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1698 %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)
1699 %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)
1700 ret <vscale x 2 x half> %v
1703 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) {
1704 ; CHECK-LABEL: vfmsub_vf_nxv2f16_commute:
1706 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1707 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9, v0.t
1709 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1710 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1711 %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)
1712 %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)
1713 ret <vscale x 2 x half> %v
1716 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) {
1717 ; CHECK-LABEL: vfmsub_vf_nxv2f16_unmasked:
1719 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1720 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
1726 ret <vscale x 2 x half> %v
1729 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) {
1730 ; CHECK-LABEL: vfmsub_vf_nxv2f16_unmasked_commute:
1732 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1733 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
1739 ret <vscale x 2 x half> %v
1742 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) {
1743 ; CHECK-LABEL: vfnmadd_vv_nxv2f16:
1745 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1746 ; CHECK-NEXT: vfnmadd.vv v9, v8, v10, v0.t
1747 ; CHECK-NEXT: vmv1r.v v8, v9
1749 %negb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %b, <vscale x 2 x i1> %m, i32 %evl)
1750 %negc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %c, <vscale x 2 x i1> %m, i32 %evl)
1751 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %negb, <vscale x 2 x half> %negc, <vscale x 2 x i1> %m, i32 %evl)
1752 ret <vscale x 2 x half> %v
1755 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) {
1756 ; CHECK-LABEL: vfnmadd_vv_nxv2f16_commuted:
1758 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1759 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10, v0.t
1761 %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)
1762 %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)
1763 %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)
1764 ret <vscale x 2 x half> %v
1767 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) {
1768 ; CHECK-LABEL: vfnmadd_vv_nxv2f16_unmasked:
1770 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1771 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
1773 %negb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1774 %negc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1775 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %negb, <vscale x 2 x half> %negc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1776 ret <vscale x 2 x half> %v
1779 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) {
1780 ; CHECK-LABEL: vfnmadd_vv_nxv2f16_unmasked_commuted:
1782 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1783 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
1785 %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)
1786 %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)
1787 %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)
1788 ret <vscale x 2 x half> %v
1791 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) {
1792 ; CHECK-LABEL: vfnmadd_vf_nxv2f16:
1794 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1795 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
1797 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1798 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1799 %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)
1800 %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)
1801 %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)
1802 ret <vscale x 2 x half> %v
1805 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) {
1806 ; CHECK-LABEL: vfnmadd_vf_nxv2f16_commute:
1808 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1809 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
1811 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1812 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1813 %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)
1814 %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)
1815 %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)
1816 ret <vscale x 2 x half> %v
1819 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) {
1820 ; CHECK-LABEL: vfnmadd_vf_nxv2f16_unmasked:
1822 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1823 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
1825 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1826 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1827 %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)
1828 %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)
1829 %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)
1830 ret <vscale x 2 x half> %v
1833 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) {
1834 ; CHECK-LABEL: vfnmadd_vf_nxv2f16_unmasked_commute:
1836 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1837 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
1839 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1840 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1841 %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)
1842 %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)
1843 %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)
1844 ret <vscale x 2 x half> %v
1847 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) {
1848 ; CHECK-LABEL: vfnmadd_vf_nxv2f16_neg_splat:
1850 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1851 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
1853 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1854 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1855 %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)
1856 %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)
1857 %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)
1858 ret <vscale x 2 x half> %v
1861 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) {
1862 ; CHECK-LABEL: vfnmadd_vf_nxv2f16_neg_splat_commute:
1864 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1865 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
1867 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1868 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1869 %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)
1870 %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)
1871 %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)
1872 ret <vscale x 2 x half> %v
1875 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) {
1876 ; CHECK-LABEL: vfnmadd_vf_nxv2f16_neg_splat_unmasked:
1878 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1879 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
1881 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1882 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1883 %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)
1884 %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)
1885 %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)
1886 ret <vscale x 2 x half> %v
1889 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) {
1890 ; CHECK-LABEL: vfnmadd_vf_nxv2f16_neg_splat_unmasked_commute:
1892 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1893 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
1895 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1896 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1897 %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)
1898 %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)
1899 %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)
1900 ret <vscale x 2 x half> %v
1903 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) {
1904 ; CHECK-LABEL: vfnmsub_vv_nxv2f16:
1906 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1907 ; CHECK-NEXT: vfnmadd.vv v9, v8, v10, v0.t
1908 ; CHECK-NEXT: vmv1r.v v8, v9
1910 %negb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %b, <vscale x 2 x i1> %m, i32 %evl)
1911 %negc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %c, <vscale x 2 x i1> %m, i32 %evl)
1912 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %negb, <vscale x 2 x half> %negc, <vscale x 2 x i1> %m, i32 %evl)
1913 ret <vscale x 2 x half> %v
1916 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) {
1917 ; CHECK-LABEL: vfnmsub_vv_nxv2f16_commuted:
1919 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1920 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10, v0.t
1922 %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)
1923 %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)
1924 %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)
1925 ret <vscale x 2 x half> %v
1928 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) {
1929 ; CHECK-LABEL: vfnmsub_vv_nxv2f16_unmasked:
1931 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1932 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
1934 %negb = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1935 %negc = call <vscale x 2 x half> @llvm.vp.fneg.nxv2f16(<vscale x 2 x half> %c, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1936 %v = call <vscale x 2 x half> @llvm.vp.fmuladd.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %negb, <vscale x 2 x half> %negc, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1937 ret <vscale x 2 x half> %v
1940 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) {
1941 ; CHECK-LABEL: vfnmsub_vv_nxv2f16_unmasked_commuted:
1943 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1944 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
1946 %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)
1947 %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)
1948 %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)
1949 ret <vscale x 2 x half> %v
1952 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) {
1953 ; CHECK-LABEL: vfnmsub_vf_nxv2f16:
1955 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1956 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
1958 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1959 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1960 %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)
1961 %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)
1962 ret <vscale x 2 x half> %v
1965 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) {
1966 ; CHECK-LABEL: vfnmsub_vf_nxv2f16_commute:
1968 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1969 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
1971 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1972 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1973 %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)
1974 %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)
1975 ret <vscale x 2 x half> %v
1978 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) {
1979 ; CHECK-LABEL: vfnmsub_vf_nxv2f16_unmasked:
1981 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1982 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
1988 ret <vscale x 2 x half> %v
1991 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) {
1992 ; CHECK-LABEL: vfnmsub_vf_nxv2f16_unmasked_commute:
1994 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1995 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
2001 ret <vscale x 2 x half> %v
2004 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) {
2005 ; CHECK-LABEL: vfnmsub_vf_nxv2f16_neg_splat:
2007 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
2008 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
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 %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)
2013 %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)
2014 ret <vscale x 2 x half> %v
2017 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) {
2018 ; CHECK-LABEL: vfnmsub_vf_nxv2f16_neg_splat_commute:
2020 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
2021 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
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 %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)
2026 %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)
2027 ret <vscale x 2 x half> %v
2030 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) {
2031 ; CHECK-LABEL: vfnmsub_vf_nxv2f16_neg_splat_unmasked:
2033 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
2034 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
2040 ret <vscale x 2 x half> %v
2043 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) {
2044 ; CHECK-LABEL: vfnmsub_vf_nxv2f16_neg_splat_unmasked_commute:
2046 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
2047 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
2053 ret <vscale x 2 x half> %v
2056 declare <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half>, <vscale x 4 x i1>, i32)
2058 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) {
2059 ; CHECK-LABEL: vfmsub_vv_nxv4f16:
2061 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2062 ; CHECK-NEXT: vfmsub.vv v9, v8, v10, v0.t
2063 ; CHECK-NEXT: vmv.v.v v8, v9
2065 %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)
2066 %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)
2067 ret <vscale x 4 x half> %v
2070 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) {
2071 ; CHECK-LABEL: vfmsub_vv_nxv4f16_unmasked:
2073 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2074 ; CHECK-NEXT: vfmsub.vv v8, v9, v10
2076 %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)
2077 %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)
2078 ret <vscale x 4 x half> %v
2081 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) {
2082 ; CHECK-LABEL: vfmsub_vf_nxv4f16:
2084 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2085 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9, v0.t
2087 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
2088 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
2089 %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)
2090 %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)
2091 ret <vscale x 4 x half> %v
2094 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) {
2095 ; CHECK-LABEL: vfmsub_vf_nxv4f16_commute:
2097 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2098 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9, v0.t
2100 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
2101 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
2102 %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)
2103 %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)
2104 ret <vscale x 4 x half> %v
2107 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) {
2108 ; CHECK-LABEL: vfmsub_vf_nxv4f16_unmasked:
2110 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2111 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
2117 ret <vscale x 4 x half> %v
2120 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) {
2121 ; CHECK-LABEL: vfmsub_vf_nxv4f16_unmasked_commute:
2123 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2124 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
2130 ret <vscale x 4 x half> %v
2133 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) {
2134 ; CHECK-LABEL: vfnmadd_vv_nxv4f16:
2136 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2137 ; CHECK-NEXT: vfnmadd.vv v9, v8, v10, v0.t
2138 ; CHECK-NEXT: vmv.v.v v8, v9
2140 %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)
2141 %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)
2142 %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)
2143 ret <vscale x 4 x half> %v
2146 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) {
2147 ; CHECK-LABEL: vfnmadd_vv_nxv4f16_commuted:
2149 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2150 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10, v0.t
2152 %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)
2153 %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)
2154 %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)
2155 ret <vscale x 4 x half> %v
2158 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) {
2159 ; CHECK-LABEL: vfnmadd_vv_nxv4f16_unmasked:
2161 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2162 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
2164 %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)
2165 %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)
2166 %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)
2167 ret <vscale x 4 x half> %v
2170 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) {
2171 ; CHECK-LABEL: vfnmadd_vv_nxv4f16_unmasked_commuted:
2173 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2174 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
2176 %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)
2177 %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)
2178 %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)
2179 ret <vscale x 4 x half> %v
2182 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) {
2183 ; CHECK-LABEL: vfnmadd_vf_nxv4f16:
2185 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2186 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
2188 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
2189 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
2190 %negva = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x i1> %m, i32 %evl)
2191 %negvc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 %evl)
2192 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %negva, <vscale x 4 x half> %vb, <vscale x 4 x half> %negvc, <vscale x 4 x i1> %m, i32 %evl)
2193 ret <vscale x 4 x half> %v
2196 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) {
2197 ; CHECK-LABEL: vfnmadd_vf_nxv4f16_commute:
2199 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2200 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
2202 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
2203 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
2204 %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)
2205 %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)
2206 %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)
2207 ret <vscale x 4 x half> %v
2210 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) {
2211 ; CHECK-LABEL: vfnmadd_vf_nxv4f16_unmasked:
2213 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2214 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
2216 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
2217 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
2218 %negva = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2219 %negvc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2220 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %negva, <vscale x 4 x half> %vb, <vscale x 4 x half> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2221 ret <vscale x 4 x half> %v
2224 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) {
2225 ; CHECK-LABEL: vfnmadd_vf_nxv4f16_unmasked_commute:
2227 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2228 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
2230 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
2231 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
2232 %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)
2233 %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)
2234 %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)
2235 ret <vscale x 4 x half> %v
2238 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) {
2239 ; CHECK-LABEL: vfnmadd_vf_nxv4f16_neg_splat:
2241 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2242 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
2244 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
2245 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
2246 %negvb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x i1> %m, i32 %evl)
2247 %negvc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vc, <vscale x 4 x i1> %m, i32 %evl)
2248 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %negvb, <vscale x 4 x half> %negvc, <vscale x 4 x i1> %m, i32 %evl)
2249 ret <vscale x 4 x half> %v
2252 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) {
2253 ; CHECK-LABEL: vfnmadd_vf_nxv4f16_neg_splat_commute:
2255 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2256 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
2258 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
2259 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
2260 %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)
2261 %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)
2262 %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)
2263 ret <vscale x 4 x half> %v
2266 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) {
2267 ; CHECK-LABEL: vfnmadd_vf_nxv4f16_neg_splat_unmasked:
2269 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2270 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
2272 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
2273 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
2274 %negvb = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2275 %negvc = call <vscale x 4 x half> @llvm.vp.fneg.nxv4f16(<vscale x 4 x half> %vc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2276 %v = call <vscale x 4 x half> @llvm.vp.fmuladd.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %negvb, <vscale x 4 x half> %negvc, <vscale x 4 x i1> splat (i1 true), i32 %evl)
2277 ret <vscale x 4 x half> %v
2280 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) {
2281 ; CHECK-LABEL: vfnmadd_vf_nxv4f16_neg_splat_unmasked_commute:
2283 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2284 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
2286 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
2287 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
2288 %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)
2289 %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)
2290 %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)
2291 ret <vscale x 4 x half> %v
2294 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) {
2295 ; CHECK-LABEL: vfnmsub_vv_nxv4f16:
2297 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2298 ; CHECK-NEXT: vfnmadd.vv v9, v8, v10, v0.t
2299 ; CHECK-NEXT: vmv.v.v v8, v9
2301 %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)
2302 %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)
2303 %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)
2304 ret <vscale x 4 x half> %v
2307 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) {
2308 ; CHECK-LABEL: vfnmsub_vv_nxv4f16_commuted:
2310 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2311 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10, v0.t
2313 %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)
2314 %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)
2315 %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)
2316 ret <vscale x 4 x half> %v
2319 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) {
2320 ; CHECK-LABEL: vfnmsub_vv_nxv4f16_unmasked:
2322 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2323 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
2325 %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)
2326 %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)
2327 %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)
2328 ret <vscale x 4 x half> %v
2331 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) {
2332 ; CHECK-LABEL: vfnmsub_vv_nxv4f16_unmasked_commuted:
2334 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2335 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
2337 %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)
2338 %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)
2339 %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)
2340 ret <vscale x 4 x half> %v
2343 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) {
2344 ; CHECK-LABEL: vfnmsub_vf_nxv4f16:
2346 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2347 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
2349 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
2350 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
2351 %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)
2352 %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)
2353 ret <vscale x 4 x half> %v
2356 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) {
2357 ; CHECK-LABEL: vfnmsub_vf_nxv4f16_commute:
2359 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2360 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
2362 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
2363 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
2364 %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)
2365 %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)
2366 ret <vscale x 4 x half> %v
2369 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) {
2370 ; CHECK-LABEL: vfnmsub_vf_nxv4f16_unmasked:
2372 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2373 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
2379 ret <vscale x 4 x half> %v
2382 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) {
2383 ; CHECK-LABEL: vfnmsub_vf_nxv4f16_unmasked_commute:
2385 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2386 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
2392 ret <vscale x 4 x half> %v
2395 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) {
2396 ; CHECK-LABEL: vfnmsub_vf_nxv4f16_neg_splat:
2398 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2399 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
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 %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)
2404 %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)
2405 ret <vscale x 4 x half> %v
2408 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) {
2409 ; CHECK-LABEL: vfnmsub_vf_nxv4f16_neg_splat_commute:
2411 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2412 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
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 %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)
2417 %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)
2418 ret <vscale x 4 x half> %v
2421 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) {
2422 ; CHECK-LABEL: vfnmsub_vf_nxv4f16_neg_splat_unmasked:
2424 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2425 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
2431 ret <vscale x 4 x half> %v
2434 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) {
2435 ; CHECK-LABEL: vfnmsub_vf_nxv4f16_neg_splat_unmasked_commute:
2437 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2438 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
2444 ret <vscale x 4 x half> %v
2447 declare <vscale x 8 x half> @llvm.vp.fneg.nxv8f16(<vscale x 8 x half>, <vscale x 8 x i1>, i32)
2449 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) {
2450 ; CHECK-LABEL: vfmsub_vv_nxv8f16:
2452 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2453 ; CHECK-NEXT: vfmsub.vv v10, v8, v12, v0.t
2454 ; CHECK-NEXT: vmv.v.v v8, v10
2456 %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)
2457 %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)
2458 ret <vscale x 8 x half> %v
2461 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) {
2462 ; CHECK-LABEL: vfmsub_vv_nxv8f16_unmasked:
2464 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2465 ; CHECK-NEXT: vfmsub.vv v8, v10, v12
2467 %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)
2468 %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)
2469 ret <vscale x 8 x half> %v
2472 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) {
2473 ; CHECK-LABEL: vfmsub_vf_nxv8f16:
2475 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2476 ; CHECK-NEXT: vfmsub.vf v8, fa0, v10, v0.t
2478 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2479 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2480 %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)
2481 %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)
2482 ret <vscale x 8 x half> %v
2485 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) {
2486 ; CHECK-LABEL: vfmsub_vf_nxv8f16_commute:
2488 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2489 ; CHECK-NEXT: vfmsub.vf v8, fa0, v10, v0.t
2491 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2492 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2493 %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)
2494 %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)
2495 ret <vscale x 8 x half> %v
2498 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) {
2499 ; CHECK-LABEL: vfmsub_vf_nxv8f16_unmasked:
2501 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2502 ; CHECK-NEXT: vfmsub.vf v8, fa0, v10
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
2508 ret <vscale x 8 x half> %v
2511 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) {
2512 ; CHECK-LABEL: vfmsub_vf_nxv8f16_unmasked_commute:
2514 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2515 ; CHECK-NEXT: vfmsub.vf v8, fa0, v10
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
2521 ret <vscale x 8 x half> %v
2524 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) {
2525 ; CHECK-LABEL: vfnmadd_vv_nxv8f16:
2527 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2528 ; CHECK-NEXT: vfnmadd.vv v10, v8, v12, v0.t
2529 ; CHECK-NEXT: vmv.v.v v8, v10
2531 %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)
2532 %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)
2533 %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)
2534 ret <vscale x 8 x half> %v
2537 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) {
2538 ; CHECK-LABEL: vfnmadd_vv_nxv8f16_commuted:
2540 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2541 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12, v0.t
2543 %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)
2544 %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)
2545 %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)
2546 ret <vscale x 8 x half> %v
2549 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) {
2550 ; CHECK-LABEL: vfnmadd_vv_nxv8f16_unmasked:
2552 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2553 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12
2555 %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)
2556 %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)
2557 %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)
2558 ret <vscale x 8 x half> %v
2561 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) {
2562 ; CHECK-LABEL: vfnmadd_vv_nxv8f16_unmasked_commuted:
2564 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2565 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12
2567 %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)
2568 %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)
2569 %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)
2570 ret <vscale x 8 x half> %v
2573 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) {
2574 ; CHECK-LABEL: vfnmadd_vf_nxv8f16:
2576 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2577 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10, v0.t
2579 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2580 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2581 %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)
2582 %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)
2583 %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)
2584 ret <vscale x 8 x half> %v
2587 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) {
2588 ; CHECK-LABEL: vfnmadd_vf_nxv8f16_commute:
2590 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2591 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10, v0.t
2593 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2594 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2595 %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)
2596 %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)
2597 %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)
2598 ret <vscale x 8 x half> %v
2601 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) {
2602 ; CHECK-LABEL: vfnmadd_vf_nxv8f16_unmasked:
2604 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2605 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10
2607 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2608 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2609 %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)
2610 %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)
2611 %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)
2612 ret <vscale x 8 x half> %v
2615 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) {
2616 ; CHECK-LABEL: vfnmadd_vf_nxv8f16_unmasked_commute:
2618 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2619 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10
2621 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2622 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2623 %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)
2624 %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)
2625 %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)
2626 ret <vscale x 8 x half> %v
2629 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) {
2630 ; CHECK-LABEL: vfnmadd_vf_nxv8f16_neg_splat:
2632 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2633 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10, v0.t
2635 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2636 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2637 %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)
2638 %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)
2639 %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)
2640 ret <vscale x 8 x half> %v
2643 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) {
2644 ; CHECK-LABEL: vfnmadd_vf_nxv8f16_neg_splat_commute:
2646 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2647 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10, v0.t
2649 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2650 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2651 %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)
2652 %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)
2653 %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)
2654 ret <vscale x 8 x half> %v
2657 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) {
2658 ; CHECK-LABEL: vfnmadd_vf_nxv8f16_neg_splat_unmasked:
2660 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2661 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10
2663 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2664 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2665 %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)
2666 %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)
2667 %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)
2668 ret <vscale x 8 x half> %v
2671 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) {
2672 ; CHECK-LABEL: vfnmadd_vf_nxv8f16_neg_splat_unmasked_commute:
2674 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2675 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10
2677 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2678 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2679 %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)
2680 %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)
2681 %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)
2682 ret <vscale x 8 x half> %v
2685 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) {
2686 ; CHECK-LABEL: vfnmsub_vv_nxv8f16:
2688 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2689 ; CHECK-NEXT: vfnmadd.vv v10, v8, v12, v0.t
2690 ; CHECK-NEXT: vmv.v.v v8, v10
2692 %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)
2693 %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)
2694 %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)
2695 ret <vscale x 8 x half> %v
2698 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) {
2699 ; CHECK-LABEL: vfnmsub_vv_nxv8f16_commuted:
2701 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2702 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12, v0.t
2704 %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)
2705 %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)
2706 %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)
2707 ret <vscale x 8 x half> %v
2710 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) {
2711 ; CHECK-LABEL: vfnmsub_vv_nxv8f16_unmasked:
2713 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2714 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12
2716 %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)
2717 %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)
2718 %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)
2719 ret <vscale x 8 x half> %v
2722 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) {
2723 ; CHECK-LABEL: vfnmsub_vv_nxv8f16_unmasked_commuted:
2725 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2726 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12
2728 %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)
2729 %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)
2730 %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)
2731 ret <vscale x 8 x half> %v
2734 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) {
2735 ; CHECK-LABEL: vfnmsub_vf_nxv8f16:
2737 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2738 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10, v0.t
2740 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2741 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2742 %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)
2743 %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)
2744 ret <vscale x 8 x half> %v
2747 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) {
2748 ; CHECK-LABEL: vfnmsub_vf_nxv8f16_commute:
2750 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2751 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10, v0.t
2753 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2754 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2755 %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)
2756 %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)
2757 ret <vscale x 8 x half> %v
2760 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) {
2761 ; CHECK-LABEL: vfnmsub_vf_nxv8f16_unmasked:
2763 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2764 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
2770 ret <vscale x 8 x half> %v
2773 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) {
2774 ; CHECK-LABEL: vfnmsub_vf_nxv8f16_unmasked_commute:
2776 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2777 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
2783 ret <vscale x 8 x half> %v
2786 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) {
2787 ; CHECK-LABEL: vfnmsub_vf_nxv8f16_neg_splat:
2789 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2790 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10, v0.t
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 %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)
2795 %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)
2796 ret <vscale x 8 x half> %v
2799 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) {
2800 ; CHECK-LABEL: vfnmsub_vf_nxv8f16_neg_splat_commute:
2802 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2803 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10, v0.t
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 %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)
2808 %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)
2809 ret <vscale x 8 x half> %v
2812 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) {
2813 ; CHECK-LABEL: vfnmsub_vf_nxv8f16_neg_splat_unmasked:
2815 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2816 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
2822 ret <vscale x 8 x half> %v
2825 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) {
2826 ; CHECK-LABEL: vfnmsub_vf_nxv8f16_neg_splat_unmasked_commute:
2828 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2829 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
2835 ret <vscale x 8 x half> %v
2838 declare <vscale x 16 x half> @llvm.vp.fneg.nxv16f16(<vscale x 16 x half>, <vscale x 16 x i1>, i32)
2840 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) {
2841 ; CHECK-LABEL: vfmsub_vv_nxv16f16:
2843 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2844 ; CHECK-NEXT: vfmsub.vv v12, v8, v16, v0.t
2845 ; CHECK-NEXT: vmv.v.v v8, v12
2847 %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)
2848 %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)
2849 ret <vscale x 16 x half> %v
2852 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) {
2853 ; CHECK-LABEL: vfmsub_vv_nxv16f16_unmasked:
2855 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2856 ; CHECK-NEXT: vfmsub.vv v8, v12, v16
2858 %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)
2859 %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)
2860 ret <vscale x 16 x half> %v
2863 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) {
2864 ; CHECK-LABEL: vfmsub_vf_nxv16f16:
2866 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2867 ; CHECK-NEXT: vfmsub.vf v8, fa0, v12, v0.t
2869 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2870 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2871 %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)
2872 %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)
2873 ret <vscale x 16 x half> %v
2876 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) {
2877 ; CHECK-LABEL: vfmsub_vf_nxv16f16_commute:
2879 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2880 ; CHECK-NEXT: vfmsub.vf v8, fa0, v12, v0.t
2882 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2883 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2884 %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)
2885 %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)
2886 ret <vscale x 16 x half> %v
2889 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) {
2890 ; CHECK-LABEL: vfmsub_vf_nxv16f16_unmasked:
2892 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2893 ; CHECK-NEXT: vfmsub.vf v8, fa0, v12
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
2899 ret <vscale x 16 x half> %v
2902 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) {
2903 ; CHECK-LABEL: vfmsub_vf_nxv16f16_unmasked_commute:
2905 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2906 ; CHECK-NEXT: vfmsub.vf v8, fa0, v12
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
2912 ret <vscale x 16 x half> %v
2915 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) {
2916 ; CHECK-LABEL: vfnmadd_vv_nxv16f16:
2918 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2919 ; CHECK-NEXT: vfnmadd.vv v12, v8, v16, v0.t
2920 ; CHECK-NEXT: vmv.v.v v8, v12
2922 %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)
2923 %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)
2924 %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)
2925 ret <vscale x 16 x half> %v
2928 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) {
2929 ; CHECK-LABEL: vfnmadd_vv_nxv16f16_commuted:
2931 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2932 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16, v0.t
2934 %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)
2935 %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)
2936 %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)
2937 ret <vscale x 16 x half> %v
2940 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) {
2941 ; CHECK-LABEL: vfnmadd_vv_nxv16f16_unmasked:
2943 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2944 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16
2946 %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)
2947 %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)
2948 %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)
2949 ret <vscale x 16 x half> %v
2952 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) {
2953 ; CHECK-LABEL: vfnmadd_vv_nxv16f16_unmasked_commuted:
2955 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2956 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16
2958 %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)
2959 %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)
2960 %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)
2961 ret <vscale x 16 x half> %v
2964 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) {
2965 ; CHECK-LABEL: vfnmadd_vf_nxv16f16:
2967 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2968 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12, v0.t
2970 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2971 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2972 %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)
2973 %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)
2974 %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)
2975 ret <vscale x 16 x half> %v
2978 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) {
2979 ; CHECK-LABEL: vfnmadd_vf_nxv16f16_commute:
2981 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2982 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12, v0.t
2984 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2985 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2986 %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)
2987 %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)
2988 %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)
2989 ret <vscale x 16 x half> %v
2992 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) {
2993 ; CHECK-LABEL: vfnmadd_vf_nxv16f16_unmasked:
2995 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2996 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12
2998 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2999 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3000 %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)
3001 %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)
3002 %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)
3003 ret <vscale x 16 x half> %v
3006 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) {
3007 ; CHECK-LABEL: vfnmadd_vf_nxv16f16_unmasked_commute:
3009 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3010 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12
3012 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3013 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3014 %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)
3015 %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)
3016 %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)
3017 ret <vscale x 16 x half> %v
3020 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) {
3021 ; CHECK-LABEL: vfnmadd_vf_nxv16f16_neg_splat:
3023 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3024 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12, v0.t
3026 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3027 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3028 %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)
3029 %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)
3030 %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)
3031 ret <vscale x 16 x half> %v
3034 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) {
3035 ; CHECK-LABEL: vfnmadd_vf_nxv16f16_neg_splat_commute:
3037 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3038 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12, v0.t
3040 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3041 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3042 %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)
3043 %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)
3044 %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)
3045 ret <vscale x 16 x half> %v
3048 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) {
3049 ; CHECK-LABEL: vfnmadd_vf_nxv16f16_neg_splat_unmasked:
3051 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3052 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12
3054 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3055 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3056 %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)
3057 %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)
3058 %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)
3059 ret <vscale x 16 x half> %v
3062 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) {
3063 ; CHECK-LABEL: vfnmadd_vf_nxv16f16_neg_splat_unmasked_commute:
3065 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3066 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12
3068 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3069 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3070 %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)
3071 %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)
3072 %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)
3073 ret <vscale x 16 x half> %v
3076 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) {
3077 ; CHECK-LABEL: vfnmsub_vv_nxv16f16:
3079 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3080 ; CHECK-NEXT: vfnmadd.vv v12, v8, v16, v0.t
3081 ; CHECK-NEXT: vmv.v.v v8, v12
3083 %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)
3084 %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)
3085 %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)
3086 ret <vscale x 16 x half> %v
3089 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) {
3090 ; CHECK-LABEL: vfnmsub_vv_nxv16f16_commuted:
3092 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3093 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16, v0.t
3095 %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)
3096 %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)
3097 %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)
3098 ret <vscale x 16 x half> %v
3101 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) {
3102 ; CHECK-LABEL: vfnmsub_vv_nxv16f16_unmasked:
3104 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3105 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16
3107 %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)
3108 %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)
3109 %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)
3110 ret <vscale x 16 x half> %v
3113 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) {
3114 ; CHECK-LABEL: vfnmsub_vv_nxv16f16_unmasked_commuted:
3116 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3117 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16
3119 %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)
3120 %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)
3121 %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)
3122 ret <vscale x 16 x half> %v
3125 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) {
3126 ; CHECK-LABEL: vfnmsub_vf_nxv16f16:
3128 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3129 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12, v0.t
3131 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3132 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3133 %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)
3134 %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)
3135 ret <vscale x 16 x half> %v
3138 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) {
3139 ; CHECK-LABEL: vfnmsub_vf_nxv16f16_commute:
3141 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3142 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12, v0.t
3144 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3145 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3146 %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)
3147 %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)
3148 ret <vscale x 16 x half> %v
3151 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) {
3152 ; CHECK-LABEL: vfnmsub_vf_nxv16f16_unmasked:
3154 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3155 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
3161 ret <vscale x 16 x half> %v
3164 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) {
3165 ; CHECK-LABEL: vfnmsub_vf_nxv16f16_unmasked_commute:
3167 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3168 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
3174 ret <vscale x 16 x half> %v
3177 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) {
3178 ; CHECK-LABEL: vfnmsub_vf_nxv16f16_neg_splat:
3180 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3181 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12, v0.t
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 %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)
3186 %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)
3187 ret <vscale x 16 x half> %v
3190 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) {
3191 ; CHECK-LABEL: vfnmsub_vf_nxv16f16_neg_splat_commute:
3193 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3194 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12, v0.t
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 %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)
3199 %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)
3200 ret <vscale x 16 x half> %v
3203 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) {
3204 ; CHECK-LABEL: vfnmsub_vf_nxv16f16_neg_splat_unmasked:
3206 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3207 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
3213 ret <vscale x 16 x half> %v
3216 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) {
3217 ; CHECK-LABEL: vfnmsub_vf_nxv16f16_neg_splat_unmasked_commute:
3219 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
3220 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
3226 ret <vscale x 16 x half> %v
3229 declare <vscale x 32 x half> @llvm.vp.fneg.nxv32f16(<vscale x 32 x half>, <vscale x 32 x i1>, i32)
3231 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) {
3232 ; CHECK-LABEL: vfmsub_vv_nxv32f16:
3234 ; CHECK-NEXT: vl8re16.v v24, (a0)
3235 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
3236 ; CHECK-NEXT: vfmsub.vv v16, v8, v24, v0.t
3237 ; CHECK-NEXT: vmv.v.v v8, v16
3239 %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)
3240 %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)
3241 ret <vscale x 32 x half> %v
3244 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) {
3245 ; CHECK-LABEL: vfmsub_vv_nxv32f16_unmasked:
3247 ; CHECK-NEXT: vl8re16.v v24, (a0)
3248 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
3249 ; CHECK-NEXT: vfmsub.vv v8, v16, v24
3251 %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)
3252 %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)
3253 ret <vscale x 32 x half> %v
3256 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) {
3257 ; CHECK-LABEL: vfmsub_vf_nxv32f16:
3259 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3260 ; CHECK-NEXT: vfmsub.vf v8, fa0, v16, v0.t
3262 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3263 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3264 %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)
3265 %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)
3266 ret <vscale x 32 x half> %v
3269 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) {
3270 ; CHECK-LABEL: vfmsub_vf_nxv32f16_commute:
3272 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3273 ; CHECK-NEXT: vfmsub.vf v8, fa0, v16, v0.t
3275 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3276 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3277 %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)
3278 %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)
3279 ret <vscale x 32 x half> %v
3282 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) {
3283 ; CHECK-LABEL: vfmsub_vf_nxv32f16_unmasked:
3285 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3286 ; CHECK-NEXT: vfmsub.vf v8, fa0, v16
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
3292 ret <vscale x 32 x half> %v
3295 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) {
3296 ; CHECK-LABEL: vfmsub_vf_nxv32f16_unmasked_commute:
3298 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3299 ; CHECK-NEXT: vfmsub.vf v8, fa0, v16
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
3305 ret <vscale x 32 x half> %v
3308 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) {
3309 ; CHECK-LABEL: vfnmadd_vv_nxv32f16:
3311 ; CHECK-NEXT: vl8re16.v v24, (a0)
3312 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
3313 ; CHECK-NEXT: vfnmadd.vv v16, v8, v24, v0.t
3314 ; CHECK-NEXT: vmv.v.v v8, v16
3316 %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)
3317 %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)
3318 %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)
3319 ret <vscale x 32 x half> %v
3322 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) {
3323 ; CHECK-LABEL: vfnmadd_vv_nxv32f16_commuted:
3325 ; CHECK-NEXT: vl8re16.v v24, (a0)
3326 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
3327 ; CHECK-NEXT: vfnmadd.vv v8, v16, v24, v0.t
3329 %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)
3330 %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)
3331 %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)
3332 ret <vscale x 32 x half> %v
3335 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) {
3336 ; CHECK-LABEL: vfnmadd_vv_nxv32f16_unmasked:
3338 ; CHECK-NEXT: vl8re16.v v24, (a0)
3339 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
3340 ; CHECK-NEXT: vfnmadd.vv v8, v16, v24
3342 %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)
3343 %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)
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> splat (i1 true), i32 %evl)
3345 ret <vscale x 32 x half> %v
3348 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) {
3349 ; CHECK-LABEL: vfnmadd_vv_nxv32f16_unmasked_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
3355 %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)
3356 %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)
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> splat (i1 true), i32 %evl)
3358 ret <vscale x 32 x half> %v
3361 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) {
3362 ; CHECK-LABEL: vfnmadd_vf_nxv32f16:
3364 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3365 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16, v0.t
3367 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3368 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3369 %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)
3370 %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)
3371 %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)
3372 ret <vscale x 32 x half> %v
3375 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) {
3376 ; CHECK-LABEL: vfnmadd_vf_nxv32f16_commute:
3378 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3379 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16, v0.t
3381 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3382 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3383 %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)
3384 %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)
3385 %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)
3386 ret <vscale x 32 x half> %v
3389 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) {
3390 ; CHECK-LABEL: vfnmadd_vf_nxv32f16_unmasked:
3392 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3393 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16
3395 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3396 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3397 %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)
3398 %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)
3399 %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)
3400 ret <vscale x 32 x half> %v
3403 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) {
3404 ; CHECK-LABEL: vfnmadd_vf_nxv32f16_unmasked_commute:
3406 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3407 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16
3409 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3410 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3411 %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)
3412 %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)
3413 %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)
3414 ret <vscale x 32 x half> %v
3417 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) {
3418 ; CHECK-LABEL: vfnmadd_vf_nxv32f16_neg_splat:
3420 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3421 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16, v0.t
3423 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3424 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3425 %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)
3426 %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)
3427 %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)
3428 ret <vscale x 32 x half> %v
3431 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) {
3432 ; CHECK-LABEL: vfnmadd_vf_nxv32f16_neg_splat_commute:
3434 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3435 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16, v0.t
3437 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3438 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3439 %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)
3440 %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)
3441 %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)
3442 ret <vscale x 32 x half> %v
3445 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) {
3446 ; CHECK-LABEL: vfnmadd_vf_nxv32f16_neg_splat_unmasked:
3448 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3449 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16
3451 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3452 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3453 %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)
3454 %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)
3455 %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)
3456 ret <vscale x 32 x half> %v
3459 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) {
3460 ; CHECK-LABEL: vfnmadd_vf_nxv32f16_neg_splat_unmasked_commute:
3462 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3463 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16
3465 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3466 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3467 %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)
3468 %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)
3469 %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)
3470 ret <vscale x 32 x half> %v
3473 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) {
3474 ; CHECK-LABEL: vfnmsub_vv_nxv32f16:
3476 ; CHECK-NEXT: vl8re16.v v24, (a0)
3477 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
3478 ; CHECK-NEXT: vfnmadd.vv v16, v8, v24, v0.t
3479 ; CHECK-NEXT: vmv.v.v v8, v16
3481 %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)
3482 %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)
3483 %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)
3484 ret <vscale x 32 x half> %v
3487 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) {
3488 ; CHECK-LABEL: vfnmsub_vv_nxv32f16_commuted:
3490 ; CHECK-NEXT: vl8re16.v v24, (a0)
3491 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
3492 ; CHECK-NEXT: vfnmadd.vv v8, v16, v24, v0.t
3494 %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)
3495 %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)
3496 %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)
3497 ret <vscale x 32 x half> %v
3500 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) {
3501 ; CHECK-LABEL: vfnmsub_vv_nxv32f16_unmasked:
3503 ; CHECK-NEXT: vl8re16.v v24, (a0)
3504 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
3505 ; CHECK-NEXT: vfnmadd.vv v8, v16, v24
3507 %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)
3508 %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)
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> splat (i1 true), i32 %evl)
3510 ret <vscale x 32 x half> %v
3513 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) {
3514 ; CHECK-LABEL: vfnmsub_vv_nxv32f16_unmasked_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
3520 %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)
3521 %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)
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> splat (i1 true), i32 %evl)
3523 ret <vscale x 32 x half> %v
3526 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) {
3527 ; CHECK-LABEL: vfnmsub_vf_nxv32f16:
3529 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3530 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16, v0.t
3532 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3533 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3534 %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)
3535 %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)
3536 ret <vscale x 32 x half> %v
3539 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) {
3540 ; CHECK-LABEL: vfnmsub_vf_nxv32f16_commute:
3542 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3543 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16, v0.t
3545 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3546 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3547 %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)
3548 %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)
3549 ret <vscale x 32 x half> %v
3552 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) {
3553 ; CHECK-LABEL: vfnmsub_vf_nxv32f16_unmasked:
3555 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3556 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
3562 ret <vscale x 32 x half> %v
3565 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) {
3566 ; CHECK-LABEL: vfnmsub_vf_nxv32f16_unmasked_commute:
3568 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3569 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
3575 ret <vscale x 32 x half> %v
3578 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) {
3579 ; CHECK-LABEL: vfnmsub_vf_nxv32f16_neg_splat:
3581 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3582 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16, v0.t
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 %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)
3587 %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)
3588 ret <vscale x 32 x half> %v
3591 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) {
3592 ; CHECK-LABEL: vfnmsub_vf_nxv32f16_neg_splat_commute:
3594 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3595 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16, v0.t
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 %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)
3600 %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)
3601 ret <vscale x 32 x half> %v
3604 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) {
3605 ; CHECK-LABEL: vfnmsub_vf_nxv32f16_neg_splat_unmasked:
3607 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3608 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
3614 ret <vscale x 32 x half> %v
3617 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) {
3618 ; CHECK-LABEL: vfnmsub_vf_nxv32f16_neg_splat_unmasked_commute:
3620 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
3621 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
3627 ret <vscale x 32 x half> %v
3630 declare <vscale x 1 x float> @llvm.vp.fneg.nxv1f32(<vscale x 1 x float>, <vscale x 1 x i1>, i32)
3632 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) {
3633 ; CHECK-LABEL: vfmsub_vv_nxv1f32:
3635 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3636 ; CHECK-NEXT: vfmsub.vv v9, v8, v10, v0.t
3637 ; CHECK-NEXT: vmv1r.v v8, v9
3639 %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)
3640 %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)
3641 ret <vscale x 1 x float> %v
3644 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) {
3645 ; CHECK-LABEL: vfmsub_vv_nxv1f32_unmasked:
3647 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3648 ; CHECK-NEXT: vfmsub.vv v8, v9, v10
3650 %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)
3651 %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)
3652 ret <vscale x 1 x float> %v
3655 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) {
3656 ; CHECK-LABEL: vfmsub_vf_nxv1f32:
3658 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3659 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9, v0.t
3661 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3662 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3663 %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)
3664 %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)
3665 ret <vscale x 1 x float> %v
3668 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) {
3669 ; CHECK-LABEL: vfmsub_vf_nxv1f32_commute:
3671 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3672 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9, v0.t
3674 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3675 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3676 %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)
3677 %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)
3678 ret <vscale x 1 x float> %v
3681 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) {
3682 ; CHECK-LABEL: vfmsub_vf_nxv1f32_unmasked:
3684 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3685 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
3691 ret <vscale x 1 x float> %v
3694 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) {
3695 ; CHECK-LABEL: vfmsub_vf_nxv1f32_unmasked_commute:
3697 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3698 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
3704 ret <vscale x 1 x float> %v
3707 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) {
3708 ; CHECK-LABEL: vfnmadd_vv_nxv1f32:
3710 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3711 ; CHECK-NEXT: vfnmadd.vv v9, v8, v10, v0.t
3712 ; CHECK-NEXT: vmv1r.v v8, v9
3714 %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)
3715 %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)
3716 %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)
3717 ret <vscale x 1 x float> %v
3720 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) {
3721 ; CHECK-LABEL: vfnmadd_vv_nxv1f32_commuted:
3723 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3724 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10, v0.t
3726 %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)
3727 %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)
3728 %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)
3729 ret <vscale x 1 x float> %v
3732 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) {
3733 ; CHECK-LABEL: vfnmadd_vv_nxv1f32_unmasked:
3735 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3736 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
3738 %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)
3739 %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)
3740 %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)
3741 ret <vscale x 1 x float> %v
3744 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) {
3745 ; CHECK-LABEL: vfnmadd_vv_nxv1f32_unmasked_commuted:
3747 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3748 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
3750 %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)
3751 %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)
3752 %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)
3753 ret <vscale x 1 x float> %v
3756 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) {
3757 ; CHECK-LABEL: vfnmadd_vf_nxv1f32:
3759 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3760 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
3762 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3763 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3764 %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)
3765 %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)
3766 %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)
3767 ret <vscale x 1 x float> %v
3770 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) {
3771 ; CHECK-LABEL: vfnmadd_vf_nxv1f32_commute:
3773 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3774 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
3776 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3777 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3778 %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)
3779 %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)
3780 %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)
3781 ret <vscale x 1 x float> %v
3784 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) {
3785 ; CHECK-LABEL: vfnmadd_vf_nxv1f32_unmasked:
3787 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3788 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
3790 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3791 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3792 %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)
3793 %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)
3794 %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)
3795 ret <vscale x 1 x float> %v
3798 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) {
3799 ; CHECK-LABEL: vfnmadd_vf_nxv1f32_unmasked_commute:
3801 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3802 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
3804 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3805 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3806 %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)
3807 %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)
3808 %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)
3809 ret <vscale x 1 x float> %v
3812 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) {
3813 ; CHECK-LABEL: vfnmadd_vf_nxv1f32_neg_splat:
3815 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3816 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
3818 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3819 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3820 %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)
3821 %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)
3822 %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)
3823 ret <vscale x 1 x float> %v
3826 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) {
3827 ; CHECK-LABEL: vfnmadd_vf_nxv1f32_neg_splat_commute:
3829 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3830 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
3832 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3833 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3834 %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)
3835 %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)
3836 %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)
3837 ret <vscale x 1 x float> %v
3840 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) {
3841 ; CHECK-LABEL: vfnmadd_vf_nxv1f32_neg_splat_unmasked:
3843 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3844 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
3846 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3847 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3848 %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)
3849 %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)
3850 %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)
3851 ret <vscale x 1 x float> %v
3854 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) {
3855 ; CHECK-LABEL: vfnmadd_vf_nxv1f32_neg_splat_unmasked_commute:
3857 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3858 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
3860 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3861 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3862 %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)
3863 %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)
3864 %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)
3865 ret <vscale x 1 x float> %v
3868 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) {
3869 ; CHECK-LABEL: vfnmsub_vv_nxv1f32:
3871 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3872 ; CHECK-NEXT: vfnmadd.vv v9, v8, v10, v0.t
3873 ; CHECK-NEXT: vmv1r.v v8, v9
3875 %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)
3876 %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)
3877 %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)
3878 ret <vscale x 1 x float> %v
3881 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) {
3882 ; CHECK-LABEL: vfnmsub_vv_nxv1f32_commuted:
3884 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3885 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10, v0.t
3887 %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)
3888 %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)
3889 %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)
3890 ret <vscale x 1 x float> %v
3893 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) {
3894 ; CHECK-LABEL: vfnmsub_vv_nxv1f32_unmasked:
3896 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3897 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
3899 %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)
3900 %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)
3901 %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)
3902 ret <vscale x 1 x float> %v
3905 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) {
3906 ; CHECK-LABEL: vfnmsub_vv_nxv1f32_unmasked_commuted:
3908 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3909 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
3911 %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)
3912 %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)
3913 %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)
3914 ret <vscale x 1 x float> %v
3917 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) {
3918 ; CHECK-LABEL: vfnmsub_vf_nxv1f32:
3920 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3921 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
3923 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3924 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3925 %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)
3926 %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)
3927 ret <vscale x 1 x float> %v
3930 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) {
3931 ; CHECK-LABEL: vfnmsub_vf_nxv1f32_commute:
3933 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3934 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
3936 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3937 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3938 %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)
3939 %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)
3940 ret <vscale x 1 x float> %v
3943 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) {
3944 ; CHECK-LABEL: vfnmsub_vf_nxv1f32_unmasked:
3946 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3947 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
3953 ret <vscale x 1 x float> %v
3956 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) {
3957 ; CHECK-LABEL: vfnmsub_vf_nxv1f32_unmasked_commute:
3959 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3960 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
3966 ret <vscale x 1 x float> %v
3969 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) {
3970 ; CHECK-LABEL: vfnmsub_vf_nxv1f32_neg_splat:
3972 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3973 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
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 %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)
3978 %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)
3979 ret <vscale x 1 x float> %v
3982 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) {
3983 ; CHECK-LABEL: vfnmsub_vf_nxv1f32_neg_splat_commute:
3985 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3986 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
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 %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)
3991 %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)
3992 ret <vscale x 1 x float> %v
3995 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) {
3996 ; CHECK-LABEL: vfnmsub_vf_nxv1f32_neg_splat_unmasked:
3998 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
3999 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
4005 ret <vscale x 1 x float> %v
4008 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) {
4009 ; CHECK-LABEL: vfnmsub_vf_nxv1f32_neg_splat_unmasked_commute:
4011 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
4012 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
4018 ret <vscale x 1 x float> %v
4021 declare <vscale x 2 x float> @llvm.vp.fneg.nxv2f32(<vscale x 2 x float>, <vscale x 2 x i1>, i32)
4023 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) {
4024 ; CHECK-LABEL: vfmsub_vv_nxv2f32:
4026 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4027 ; CHECK-NEXT: vfmsub.vv v9, v8, v10, v0.t
4028 ; CHECK-NEXT: vmv.v.v v8, v9
4030 %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)
4031 %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)
4032 ret <vscale x 2 x float> %v
4035 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) {
4036 ; CHECK-LABEL: vfmsub_vv_nxv2f32_unmasked:
4038 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4039 ; CHECK-NEXT: vfmsub.vv v8, v9, v10
4041 %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)
4042 %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)
4043 ret <vscale x 2 x float> %v
4046 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) {
4047 ; CHECK-LABEL: vfmsub_vf_nxv2f32:
4049 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4050 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9, v0.t
4052 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4053 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4054 %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)
4055 %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)
4056 ret <vscale x 2 x float> %v
4059 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) {
4060 ; CHECK-LABEL: vfmsub_vf_nxv2f32_commute:
4062 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4063 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9, v0.t
4065 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4066 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4067 %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)
4068 %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)
4069 ret <vscale x 2 x float> %v
4072 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) {
4073 ; CHECK-LABEL: vfmsub_vf_nxv2f32_unmasked:
4075 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4076 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
4082 ret <vscale x 2 x float> %v
4085 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) {
4086 ; CHECK-LABEL: vfmsub_vf_nxv2f32_unmasked_commute:
4088 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4089 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
4095 ret <vscale x 2 x float> %v
4098 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) {
4099 ; CHECK-LABEL: vfnmadd_vv_nxv2f32:
4101 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4102 ; CHECK-NEXT: vfnmadd.vv v9, v8, v10, v0.t
4103 ; CHECK-NEXT: vmv.v.v v8, v9
4105 %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)
4106 %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)
4107 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %negb, <vscale x 2 x float> %negc, <vscale x 2 x i1> %m, i32 %evl)
4108 ret <vscale x 2 x float> %v
4111 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) {
4112 ; CHECK-LABEL: vfnmadd_vv_nxv2f32_commuted:
4114 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4115 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10, v0.t
4117 %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)
4118 %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)
4119 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %negb, <vscale x 2 x float> %va, <vscale x 2 x float> %negc, <vscale x 2 x i1> %m, i32 %evl)
4120 ret <vscale x 2 x float> %v
4123 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) {
4124 ; CHECK-LABEL: vfnmadd_vv_nxv2f32_unmasked:
4126 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4127 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
4129 %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)
4130 %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)
4131 %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)
4132 ret <vscale x 2 x float> %v
4135 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) {
4136 ; CHECK-LABEL: vfnmadd_vv_nxv2f32_unmasked_commuted:
4138 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4139 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
4141 %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)
4142 %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)
4143 %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)
4144 ret <vscale x 2 x float> %v
4147 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) {
4148 ; CHECK-LABEL: vfnmadd_vf_nxv2f32:
4150 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4151 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
4153 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4154 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4155 %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)
4156 %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)
4157 %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)
4158 ret <vscale x 2 x float> %v
4161 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) {
4162 ; CHECK-LABEL: vfnmadd_vf_nxv2f32_commute:
4164 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4165 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
4167 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4168 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4169 %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)
4170 %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)
4171 %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)
4172 ret <vscale x 2 x float> %v
4175 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) {
4176 ; CHECK-LABEL: vfnmadd_vf_nxv2f32_unmasked:
4178 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4179 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
4181 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4182 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4183 %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)
4184 %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)
4185 %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)
4186 ret <vscale x 2 x float> %v
4189 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) {
4190 ; CHECK-LABEL: vfnmadd_vf_nxv2f32_unmasked_commute:
4192 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4193 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
4195 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4196 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4197 %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)
4198 %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)
4199 %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)
4200 ret <vscale x 2 x float> %v
4203 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) {
4204 ; CHECK-LABEL: vfnmadd_vf_nxv2f32_neg_splat:
4206 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4207 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
4209 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4210 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4211 %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)
4212 %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)
4213 %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)
4214 ret <vscale x 2 x float> %v
4217 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) {
4218 ; CHECK-LABEL: vfnmadd_vf_nxv2f32_neg_splat_commute:
4220 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4221 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
4223 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4224 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4225 %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)
4226 %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)
4227 %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)
4228 ret <vscale x 2 x float> %v
4231 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) {
4232 ; CHECK-LABEL: vfnmadd_vf_nxv2f32_neg_splat_unmasked:
4234 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4235 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
4237 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4238 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4239 %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)
4240 %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)
4241 %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)
4242 ret <vscale x 2 x float> %v
4245 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) {
4246 ; CHECK-LABEL: vfnmadd_vf_nxv2f32_neg_splat_unmasked_commute:
4248 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4249 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
4251 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4252 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4253 %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)
4254 %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)
4255 %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)
4256 ret <vscale x 2 x float> %v
4259 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) {
4260 ; CHECK-LABEL: vfnmsub_vv_nxv2f32:
4262 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4263 ; CHECK-NEXT: vfnmadd.vv v9, v8, v10, v0.t
4264 ; CHECK-NEXT: vmv.v.v v8, v9
4266 %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)
4267 %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)
4268 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %negb, <vscale x 2 x float> %negc, <vscale x 2 x i1> %m, i32 %evl)
4269 ret <vscale x 2 x float> %v
4272 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) {
4273 ; CHECK-LABEL: vfnmsub_vv_nxv2f32_commuted:
4275 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4276 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10, v0.t
4278 %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)
4279 %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)
4280 %v = call <vscale x 2 x float> @llvm.vp.fmuladd.nxv2f32(<vscale x 2 x float> %negb, <vscale x 2 x float> %va, <vscale x 2 x float> %negc, <vscale x 2 x i1> %m, i32 %evl)
4281 ret <vscale x 2 x float> %v
4284 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) {
4285 ; CHECK-LABEL: vfnmsub_vv_nxv2f32_unmasked:
4287 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4288 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
4290 %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)
4291 %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)
4292 %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)
4293 ret <vscale x 2 x float> %v
4296 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) {
4297 ; CHECK-LABEL: vfnmsub_vv_nxv2f32_unmasked_commuted:
4299 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4300 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
4302 %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)
4303 %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)
4304 %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)
4305 ret <vscale x 2 x float> %v
4308 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) {
4309 ; CHECK-LABEL: vfnmsub_vf_nxv2f32:
4311 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4312 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
4314 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4315 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4316 %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)
4317 %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)
4318 ret <vscale x 2 x float> %v
4321 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) {
4322 ; CHECK-LABEL: vfnmsub_vf_nxv2f32_commute:
4324 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4325 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
4327 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4328 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4329 %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)
4330 %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)
4331 ret <vscale x 2 x float> %v
4334 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) {
4335 ; CHECK-LABEL: vfnmsub_vf_nxv2f32_unmasked:
4337 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4338 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
4344 ret <vscale x 2 x float> %v
4347 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) {
4348 ; CHECK-LABEL: vfnmsub_vf_nxv2f32_unmasked_commute:
4350 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4351 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
4357 ret <vscale x 2 x float> %v
4360 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) {
4361 ; CHECK-LABEL: vfnmsub_vf_nxv2f32_neg_splat:
4363 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4364 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
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 %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)
4369 %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)
4370 ret <vscale x 2 x float> %v
4373 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) {
4374 ; CHECK-LABEL: vfnmsub_vf_nxv2f32_neg_splat_commute:
4376 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4377 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
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 %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)
4382 %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)
4383 ret <vscale x 2 x float> %v
4386 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) {
4387 ; CHECK-LABEL: vfnmsub_vf_nxv2f32_neg_splat_unmasked:
4389 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4390 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
4396 ret <vscale x 2 x float> %v
4399 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) {
4400 ; CHECK-LABEL: vfnmsub_vf_nxv2f32_neg_splat_unmasked_commute:
4402 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
4403 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
4409 ret <vscale x 2 x float> %v
4412 declare <vscale x 4 x float> @llvm.vp.fneg.nxv4f32(<vscale x 4 x float>, <vscale x 4 x i1>, i32)
4414 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) {
4415 ; CHECK-LABEL: vfmsub_vv_nxv4f32:
4417 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4418 ; CHECK-NEXT: vfmsub.vv v10, v8, v12, v0.t
4419 ; CHECK-NEXT: vmv.v.v v8, v10
4421 %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)
4422 %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)
4423 ret <vscale x 4 x float> %v
4426 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) {
4427 ; CHECK-LABEL: vfmsub_vv_nxv4f32_unmasked:
4429 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4430 ; CHECK-NEXT: vfmsub.vv v8, v10, v12
4432 %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)
4433 %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)
4434 ret <vscale x 4 x float> %v
4437 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) {
4438 ; CHECK-LABEL: vfmsub_vf_nxv4f32:
4440 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4441 ; CHECK-NEXT: vfmsub.vf v8, fa0, v10, v0.t
4443 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4444 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4445 %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)
4446 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, <vscale x 4 x float> %negvc, <vscale x 4 x i1> %m, i32 %evl)
4447 ret <vscale x 4 x float> %v
4450 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) {
4451 ; CHECK-LABEL: vfmsub_vf_nxv4f32_commute:
4453 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4454 ; CHECK-NEXT: vfmsub.vf v8, fa0, v10, v0.t
4456 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4457 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4458 %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)
4459 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x float> %va, <vscale x 4 x float> %negvc, <vscale x 4 x i1> %m, i32 %evl)
4460 ret <vscale x 4 x float> %v
4463 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) {
4464 ; CHECK-LABEL: vfmsub_vf_nxv4f32_unmasked:
4466 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4467 ; CHECK-NEXT: vfmsub.vf v8, fa0, v10
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
4473 ret <vscale x 4 x float> %v
4476 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) {
4477 ; CHECK-LABEL: vfmsub_vf_nxv4f32_unmasked_commute:
4479 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4480 ; CHECK-NEXT: vfmsub.vf v8, fa0, v10
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
4486 ret <vscale x 4 x float> %v
4489 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) {
4490 ; CHECK-LABEL: vfnmadd_vv_nxv4f32:
4492 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4493 ; CHECK-NEXT: vfnmadd.vv v10, v8, v12, v0.t
4494 ; CHECK-NEXT: vmv.v.v v8, v10
4496 %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)
4497 %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)
4498 %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)
4499 ret <vscale x 4 x float> %v
4502 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) {
4503 ; CHECK-LABEL: vfnmadd_vv_nxv4f32_commuted:
4505 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4506 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12, v0.t
4508 %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)
4509 %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)
4510 %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)
4511 ret <vscale x 4 x float> %v
4514 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) {
4515 ; CHECK-LABEL: vfnmadd_vv_nxv4f32_unmasked:
4517 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4518 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12
4520 %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)
4521 %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)
4522 %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)
4523 ret <vscale x 4 x float> %v
4526 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) {
4527 ; CHECK-LABEL: vfnmadd_vv_nxv4f32_unmasked_commuted:
4529 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4530 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12
4532 %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)
4533 %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)
4534 %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)
4535 ret <vscale x 4 x float> %v
4538 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) {
4539 ; CHECK-LABEL: vfnmadd_vf_nxv4f32:
4541 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4542 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10, v0.t
4544 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4545 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4546 %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)
4547 %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)
4548 %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)
4549 ret <vscale x 4 x float> %v
4552 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) {
4553 ; CHECK-LABEL: vfnmadd_vf_nxv4f32_commute:
4555 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4556 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10, v0.t
4558 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4559 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4560 %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)
4561 %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)
4562 %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)
4563 ret <vscale x 4 x float> %v
4566 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) {
4567 ; CHECK-LABEL: vfnmadd_vf_nxv4f32_unmasked:
4569 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4570 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10
4572 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4573 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4574 %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)
4575 %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)
4576 %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)
4577 ret <vscale x 4 x float> %v
4580 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) {
4581 ; CHECK-LABEL: vfnmadd_vf_nxv4f32_unmasked_commute:
4583 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4584 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10
4586 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4587 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4588 %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)
4589 %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)
4590 %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)
4591 ret <vscale x 4 x float> %v
4594 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) {
4595 ; CHECK-LABEL: vfnmadd_vf_nxv4f32_neg_splat:
4597 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4598 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10, v0.t
4600 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4601 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4602 %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)
4603 %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)
4604 %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)
4605 ret <vscale x 4 x float> %v
4608 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) {
4609 ; CHECK-LABEL: vfnmadd_vf_nxv4f32_neg_splat_commute:
4611 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4612 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10, v0.t
4614 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4615 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4616 %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)
4617 %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)
4618 %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)
4619 ret <vscale x 4 x float> %v
4622 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) {
4623 ; CHECK-LABEL: vfnmadd_vf_nxv4f32_neg_splat_unmasked:
4625 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4626 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10
4628 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4629 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4630 %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)
4631 %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)
4632 %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)
4633 ret <vscale x 4 x float> %v
4636 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) {
4637 ; CHECK-LABEL: vfnmadd_vf_nxv4f32_neg_splat_unmasked_commute:
4639 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4640 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10
4642 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4643 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4644 %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)
4645 %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)
4646 %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)
4647 ret <vscale x 4 x float> %v
4650 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) {
4651 ; CHECK-LABEL: vfnmsub_vv_nxv4f32:
4653 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4654 ; CHECK-NEXT: vfnmadd.vv v10, v8, v12, v0.t
4655 ; CHECK-NEXT: vmv.v.v v8, v10
4657 %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)
4658 %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)
4659 %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)
4660 ret <vscale x 4 x float> %v
4663 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) {
4664 ; CHECK-LABEL: vfnmsub_vv_nxv4f32_commuted:
4666 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4667 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12, v0.t
4669 %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)
4670 %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)
4671 %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)
4672 ret <vscale x 4 x float> %v
4675 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) {
4676 ; CHECK-LABEL: vfnmsub_vv_nxv4f32_unmasked:
4678 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4679 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12
4681 %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)
4682 %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)
4683 %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)
4684 ret <vscale x 4 x float> %v
4687 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) {
4688 ; CHECK-LABEL: vfnmsub_vv_nxv4f32_unmasked_commuted:
4690 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4691 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12
4693 %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)
4694 %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)
4695 %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)
4696 ret <vscale x 4 x float> %v
4699 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) {
4700 ; CHECK-LABEL: vfnmsub_vf_nxv4f32:
4702 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4703 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10, v0.t
4705 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4706 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4707 %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)
4708 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %negva, <vscale x 4 x float> %vb, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 %evl)
4709 ret <vscale x 4 x float> %v
4712 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) {
4713 ; CHECK-LABEL: vfnmsub_vf_nxv4f32_commute:
4715 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4716 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10, v0.t
4718 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4719 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4720 %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)
4721 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x float> %negva, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 %evl)
4722 ret <vscale x 4 x float> %v
4725 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) {
4726 ; CHECK-LABEL: vfnmsub_vf_nxv4f32_unmasked:
4728 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4729 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
4735 ret <vscale x 4 x float> %v
4738 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) {
4739 ; CHECK-LABEL: vfnmsub_vf_nxv4f32_unmasked_commute:
4741 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4742 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
4748 ret <vscale x 4 x float> %v
4751 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) {
4752 ; CHECK-LABEL: vfnmsub_vf_nxv4f32_neg_splat:
4754 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4755 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10, v0.t
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 %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)
4760 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %negvb, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 %evl)
4761 ret <vscale x 4 x float> %v
4764 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) {
4765 ; CHECK-LABEL: vfnmsub_vf_nxv4f32_neg_splat_commute:
4767 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4768 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10, v0.t
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 %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)
4773 %v = call <vscale x 4 x float> @llvm.vp.fmuladd.nxv4f32(<vscale x 4 x float> %negvb, <vscale x 4 x float> %va, <vscale x 4 x float> %vc, <vscale x 4 x i1> %m, i32 %evl)
4774 ret <vscale x 4 x float> %v
4777 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) {
4778 ; CHECK-LABEL: vfnmsub_vf_nxv4f32_neg_splat_unmasked:
4780 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4781 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
4787 ret <vscale x 4 x float> %v
4790 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) {
4791 ; CHECK-LABEL: vfnmsub_vf_nxv4f32_neg_splat_unmasked_commute:
4793 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
4794 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
4800 ret <vscale x 4 x float> %v
4803 declare <vscale x 8 x float> @llvm.vp.fneg.nxv8f32(<vscale x 8 x float>, <vscale x 8 x i1>, i32)
4805 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) {
4806 ; CHECK-LABEL: vfmsub_vv_nxv8f32:
4808 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
4809 ; CHECK-NEXT: vfmsub.vv v12, v8, v16, v0.t
4810 ; CHECK-NEXT: vmv.v.v v8, v12
4812 %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)
4813 %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)
4814 ret <vscale x 8 x float> %v
4817 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) {
4818 ; CHECK-LABEL: vfmsub_vv_nxv8f32_unmasked:
4820 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
4821 ; CHECK-NEXT: vfmsub.vv v8, v12, v16
4823 %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)
4824 %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)
4825 ret <vscale x 8 x float> %v
4828 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) {
4829 ; CHECK-LABEL: vfmsub_vf_nxv8f32:
4831 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
4832 ; CHECK-NEXT: vfmsub.vf v8, fa0, v12, v0.t
4834 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
4835 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
4836 %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)
4837 %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)
4838 ret <vscale x 8 x float> %v
4841 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) {
4842 ; CHECK-LABEL: vfmsub_vf_nxv8f32_commute:
4844 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
4845 ; CHECK-NEXT: vfmsub.vf v8, fa0, v12, v0.t
4847 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
4848 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
4849 %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)
4850 %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)
4851 ret <vscale x 8 x float> %v
4854 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) {
4855 ; CHECK-LABEL: vfmsub_vf_nxv8f32_unmasked:
4857 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
4858 ; CHECK-NEXT: vfmsub.vf v8, fa0, v12
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
4864 ret <vscale x 8 x float> %v
4867 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) {
4868 ; CHECK-LABEL: vfmsub_vf_nxv8f32_unmasked_commute:
4870 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
4871 ; CHECK-NEXT: vfmsub.vf v8, fa0, v12
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
4877 ret <vscale x 8 x float> %v
4880 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) {
4881 ; CHECK-LABEL: vfnmadd_vv_nxv8f32:
4883 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
4884 ; CHECK-NEXT: vfnmadd.vv v12, v8, v16, v0.t
4885 ; CHECK-NEXT: vmv.v.v v8, v12
4887 %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)
4888 %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)
4889 %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)
4890 ret <vscale x 8 x float> %v
4893 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) {
4894 ; CHECK-LABEL: vfnmadd_vv_nxv8f32_commuted:
4896 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
4897 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16, v0.t
4899 %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)
4900 %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)
4901 %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)
4902 ret <vscale x 8 x float> %v
4905 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) {
4906 ; CHECK-LABEL: vfnmadd_vv_nxv8f32_unmasked:
4908 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
4909 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16
4911 %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)
4912 %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)
4913 %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)
4914 ret <vscale x 8 x float> %v
4917 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) {
4918 ; CHECK-LABEL: vfnmadd_vv_nxv8f32_unmasked_commuted:
4920 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
4921 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16
4923 %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)
4924 %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)
4925 %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)
4926 ret <vscale x 8 x float> %v
4929 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) {
4930 ; CHECK-LABEL: vfnmadd_vf_nxv8f32:
4932 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
4933 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12, v0.t
4935 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
4936 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
4937 %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)
4938 %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)
4939 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %negva, <vscale x 8 x float> %vb, <vscale x 8 x float> %negvc, <vscale x 8 x i1> %m, i32 %evl)
4940 ret <vscale x 8 x float> %v
4943 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) {
4944 ; CHECK-LABEL: vfnmadd_vf_nxv8f32_commute:
4946 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
4947 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12, v0.t
4949 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
4950 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
4951 %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)
4952 %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)
4953 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x float> %negva, <vscale x 8 x float> %negvc, <vscale x 8 x i1> %m, i32 %evl)
4954 ret <vscale x 8 x float> %v
4957 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) {
4958 ; CHECK-LABEL: vfnmadd_vf_nxv8f32_unmasked:
4960 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
4961 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12
4963 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
4964 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
4965 %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)
4966 %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)
4967 %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)
4968 ret <vscale x 8 x float> %v
4971 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) {
4972 ; CHECK-LABEL: vfnmadd_vf_nxv8f32_unmasked_commute:
4974 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
4975 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12
4977 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
4978 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
4979 %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)
4980 %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)
4981 %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)
4982 ret <vscale x 8 x float> %v
4985 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) {
4986 ; CHECK-LABEL: vfnmadd_vf_nxv8f32_neg_splat:
4988 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
4989 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12, v0.t
4991 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
4992 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
4993 %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)
4994 %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)
4995 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %negvb, <vscale x 8 x float> %negvc, <vscale x 8 x i1> %m, i32 %evl)
4996 ret <vscale x 8 x float> %v
4999 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) {
5000 ; CHECK-LABEL: vfnmadd_vf_nxv8f32_neg_splat_commute:
5002 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
5003 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12, v0.t
5005 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5006 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5007 %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)
5008 %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)
5009 %v = call <vscale x 8 x float> @llvm.vp.fmuladd.nxv8f32(<vscale x 8 x float> %negvb, <vscale x 8 x float> %va, <vscale x 8 x float> %negvc, <vscale x 8 x i1> %m, i32 %evl)
5010 ret <vscale x 8 x float> %v
5013 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) {
5014 ; CHECK-LABEL: vfnmadd_vf_nxv8f32_neg_splat_unmasked:
5016 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
5017 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12
5019 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5020 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5021 %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)
5022 %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)
5023 %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)
5024 ret <vscale x 8 x float> %v
5027 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) {
5028 ; CHECK-LABEL: vfnmadd_vf_nxv8f32_neg_splat_unmasked_commute:
5030 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
5031 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12
5033 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5034 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5035 %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)
5036 %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)
5037 %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)
5038 ret <vscale x 8 x float> %v
5041 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) {
5042 ; CHECK-LABEL: vfnmsub_vv_nxv8f32:
5044 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
5045 ; CHECK-NEXT: vfnmadd.vv v12, v8, v16, v0.t
5046 ; CHECK-NEXT: vmv.v.v v8, v12
5048 %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)
5049 %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)
5050 %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)
5051 ret <vscale x 8 x float> %v
5054 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) {
5055 ; CHECK-LABEL: vfnmsub_vv_nxv8f32_commuted:
5057 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
5058 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16, v0.t
5060 %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)
5061 %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)
5062 %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)
5063 ret <vscale x 8 x float> %v
5066 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) {
5067 ; CHECK-LABEL: vfnmsub_vv_nxv8f32_unmasked:
5069 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
5070 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16
5072 %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)
5073 %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)
5074 %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)
5075 ret <vscale x 8 x float> %v
5078 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) {
5079 ; CHECK-LABEL: vfnmsub_vv_nxv8f32_unmasked_commuted:
5081 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
5082 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16
5084 %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)
5085 %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)
5086 %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)
5087 ret <vscale x 8 x float> %v
5090 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) {
5091 ; CHECK-LABEL: vfnmsub_vf_nxv8f32:
5093 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
5094 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12, v0.t
5096 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5097 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5098 %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)
5099 %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)
5100 ret <vscale x 8 x float> %v
5103 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) {
5104 ; CHECK-LABEL: vfnmsub_vf_nxv8f32_commute:
5106 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
5107 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12, v0.t
5109 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5110 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5111 %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)
5112 %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)
5113 ret <vscale x 8 x float> %v
5116 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) {
5117 ; CHECK-LABEL: vfnmsub_vf_nxv8f32_unmasked:
5119 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
5120 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
5126 ret <vscale x 8 x float> %v
5129 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) {
5130 ; CHECK-LABEL: vfnmsub_vf_nxv8f32_unmasked_commute:
5132 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
5133 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
5139 ret <vscale x 8 x float> %v
5142 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) {
5143 ; CHECK-LABEL: vfnmsub_vf_nxv8f32_neg_splat:
5145 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
5146 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12, v0.t
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 %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)
5151 %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)
5152 ret <vscale x 8 x float> %v
5155 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) {
5156 ; CHECK-LABEL: vfnmsub_vf_nxv8f32_neg_splat_commute:
5158 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
5159 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12, v0.t
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 %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)
5164 %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)
5165 ret <vscale x 8 x float> %v
5168 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) {
5169 ; CHECK-LABEL: vfnmsub_vf_nxv8f32_neg_splat_unmasked:
5171 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
5172 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
5178 ret <vscale x 8 x float> %v
5181 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) {
5182 ; CHECK-LABEL: vfnmsub_vf_nxv8f32_neg_splat_unmasked_commute:
5184 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
5185 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
5191 ret <vscale x 8 x float> %v
5194 declare <vscale x 16 x float> @llvm.vp.fneg.nxv16f32(<vscale x 16 x float>, <vscale x 16 x i1>, i32)
5196 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) {
5197 ; CHECK-LABEL: vfmsub_vv_nxv16f32:
5199 ; CHECK-NEXT: vl8re32.v v24, (a0)
5200 ; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma
5201 ; CHECK-NEXT: vfmsub.vv v16, v8, v24, v0.t
5202 ; CHECK-NEXT: vmv.v.v v8, v16
5204 %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)
5205 %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)
5206 ret <vscale x 16 x float> %v
5209 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) {
5210 ; CHECK-LABEL: vfmsub_vv_nxv16f32_unmasked:
5212 ; CHECK-NEXT: vl8re32.v v24, (a0)
5213 ; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma
5214 ; CHECK-NEXT: vfmsub.vv v8, v16, v24
5216 %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)
5217 %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)
5218 ret <vscale x 16 x float> %v
5221 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) {
5222 ; CHECK-LABEL: vfmsub_vf_nxv16f32:
5224 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5225 ; CHECK-NEXT: vfmsub.vf v8, fa0, v16, v0.t
5227 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5228 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5229 %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)
5230 %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)
5231 ret <vscale x 16 x float> %v
5234 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) {
5235 ; CHECK-LABEL: vfmsub_vf_nxv16f32_commute:
5237 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5238 ; CHECK-NEXT: vfmsub.vf v8, fa0, v16, v0.t
5240 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5241 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5242 %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)
5243 %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)
5244 ret <vscale x 16 x float> %v
5247 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) {
5248 ; CHECK-LABEL: vfmsub_vf_nxv16f32_unmasked:
5250 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5251 ; CHECK-NEXT: vfmsub.vf v8, fa0, v16
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
5257 ret <vscale x 16 x float> %v
5260 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) {
5261 ; CHECK-LABEL: vfmsub_vf_nxv16f32_unmasked_commute:
5263 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5264 ; CHECK-NEXT: vfmsub.vf v8, fa0, v16
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
5270 ret <vscale x 16 x float> %v
5273 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) {
5274 ; CHECK-LABEL: vfnmadd_vv_nxv16f32:
5276 ; CHECK-NEXT: vl8re32.v v24, (a0)
5277 ; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma
5278 ; CHECK-NEXT: vfnmadd.vv v16, v8, v24, v0.t
5279 ; CHECK-NEXT: vmv.v.v v8, v16
5281 %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)
5282 %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)
5283 %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)
5284 ret <vscale x 16 x float> %v
5287 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) {
5288 ; CHECK-LABEL: vfnmadd_vv_nxv16f32_commuted:
5290 ; CHECK-NEXT: vl8re32.v v24, (a0)
5291 ; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma
5292 ; CHECK-NEXT: vfnmadd.vv v8, v16, v24, v0.t
5294 %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)
5295 %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)
5296 %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)
5297 ret <vscale x 16 x float> %v
5300 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) {
5301 ; CHECK-LABEL: vfnmadd_vv_nxv16f32_unmasked:
5303 ; CHECK-NEXT: vl8re32.v v24, (a0)
5304 ; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma
5305 ; CHECK-NEXT: vfnmadd.vv v8, v16, v24
5307 %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)
5308 %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)
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> splat (i1 true), i32 %evl)
5310 ret <vscale x 16 x float> %v
5313 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) {
5314 ; CHECK-LABEL: vfnmadd_vv_nxv16f32_unmasked_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
5320 %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)
5321 %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)
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> splat (i1 true), i32 %evl)
5323 ret <vscale x 16 x float> %v
5326 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) {
5327 ; CHECK-LABEL: vfnmadd_vf_nxv16f32:
5329 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5330 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16, v0.t
5332 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5333 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5334 %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)
5335 %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)
5336 %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)
5337 ret <vscale x 16 x float> %v
5340 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) {
5341 ; CHECK-LABEL: vfnmadd_vf_nxv16f32_commute:
5343 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5344 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16, v0.t
5346 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5347 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5348 %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)
5349 %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)
5350 %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)
5351 ret <vscale x 16 x float> %v
5354 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) {
5355 ; CHECK-LABEL: vfnmadd_vf_nxv16f32_unmasked:
5357 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5358 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16
5360 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5361 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5362 %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)
5363 %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)
5364 %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)
5365 ret <vscale x 16 x float> %v
5368 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) {
5369 ; CHECK-LABEL: vfnmadd_vf_nxv16f32_unmasked_commute:
5371 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5372 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16
5374 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5375 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5376 %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)
5377 %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)
5378 %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)
5379 ret <vscale x 16 x float> %v
5382 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) {
5383 ; CHECK-LABEL: vfnmadd_vf_nxv16f32_neg_splat:
5385 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5386 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16, v0.t
5388 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5389 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5390 %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)
5391 %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)
5392 %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)
5393 ret <vscale x 16 x float> %v
5396 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) {
5397 ; CHECK-LABEL: vfnmadd_vf_nxv16f32_neg_splat_commute:
5399 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5400 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16, v0.t
5402 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5403 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5404 %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)
5405 %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)
5406 %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)
5407 ret <vscale x 16 x float> %v
5410 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) {
5411 ; CHECK-LABEL: vfnmadd_vf_nxv16f32_neg_splat_unmasked:
5413 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5414 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16
5416 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5417 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5418 %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)
5419 %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)
5420 %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)
5421 ret <vscale x 16 x float> %v
5424 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) {
5425 ; CHECK-LABEL: vfnmadd_vf_nxv16f32_neg_splat_unmasked_commute:
5427 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5428 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16
5430 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5431 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5432 %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)
5433 %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)
5434 %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)
5435 ret <vscale x 16 x float> %v
5438 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) {
5439 ; CHECK-LABEL: vfnmsub_vv_nxv16f32:
5441 ; CHECK-NEXT: vl8re32.v v24, (a0)
5442 ; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma
5443 ; CHECK-NEXT: vfnmadd.vv v16, v8, v24, v0.t
5444 ; CHECK-NEXT: vmv.v.v v8, v16
5446 %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)
5447 %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)
5448 %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)
5449 ret <vscale x 16 x float> %v
5452 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) {
5453 ; CHECK-LABEL: vfnmsub_vv_nxv16f32_commuted:
5455 ; CHECK-NEXT: vl8re32.v v24, (a0)
5456 ; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma
5457 ; CHECK-NEXT: vfnmadd.vv v8, v16, v24, v0.t
5459 %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)
5460 %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)
5461 %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)
5462 ret <vscale x 16 x float> %v
5465 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) {
5466 ; CHECK-LABEL: vfnmsub_vv_nxv16f32_unmasked:
5468 ; CHECK-NEXT: vl8re32.v v24, (a0)
5469 ; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma
5470 ; CHECK-NEXT: vfnmadd.vv v8, v16, v24
5472 %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)
5473 %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)
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> splat (i1 true), i32 %evl)
5475 ret <vscale x 16 x float> %v
5478 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) {
5479 ; CHECK-LABEL: vfnmsub_vv_nxv16f32_unmasked_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
5485 %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)
5486 %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)
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> splat (i1 true), i32 %evl)
5488 ret <vscale x 16 x float> %v
5491 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) {
5492 ; CHECK-LABEL: vfnmsub_vf_nxv16f32:
5494 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5495 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16, v0.t
5497 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5498 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5499 %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)
5500 %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)
5501 ret <vscale x 16 x float> %v
5504 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) {
5505 ; CHECK-LABEL: vfnmsub_vf_nxv16f32_commute:
5507 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5508 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16, v0.t
5510 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5511 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5512 %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)
5513 %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)
5514 ret <vscale x 16 x float> %v
5517 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) {
5518 ; CHECK-LABEL: vfnmsub_vf_nxv16f32_unmasked:
5520 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5521 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
5527 ret <vscale x 16 x float> %v
5530 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) {
5531 ; CHECK-LABEL: vfnmsub_vf_nxv16f32_unmasked_commute:
5533 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5534 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
5540 ret <vscale x 16 x float> %v
5543 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) {
5544 ; CHECK-LABEL: vfnmsub_vf_nxv16f32_neg_splat:
5546 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5547 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16, v0.t
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 %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)
5552 %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)
5553 ret <vscale x 16 x float> %v
5556 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) {
5557 ; CHECK-LABEL: vfnmsub_vf_nxv16f32_neg_splat_commute:
5559 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5560 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16, v0.t
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 %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)
5565 %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)
5566 ret <vscale x 16 x float> %v
5569 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) {
5570 ; CHECK-LABEL: vfnmsub_vf_nxv16f32_neg_splat_unmasked:
5572 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5573 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
5579 ret <vscale x 16 x float> %v
5582 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) {
5583 ; CHECK-LABEL: vfnmsub_vf_nxv16f32_neg_splat_unmasked_commute:
5585 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
5586 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
5592 ret <vscale x 16 x float> %v
5595 declare <vscale x 1 x double> @llvm.vp.fneg.nxv1f64(<vscale x 1 x double>, <vscale x 1 x i1>, i32)
5597 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) {
5598 ; CHECK-LABEL: vfmsub_vv_nxv1f64:
5600 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5601 ; CHECK-NEXT: vfmsub.vv v9, v8, v10, v0.t
5602 ; CHECK-NEXT: vmv.v.v v8, v9
5604 %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)
5605 %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)
5606 ret <vscale x 1 x double> %v
5609 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) {
5610 ; CHECK-LABEL: vfmsub_vv_nxv1f64_unmasked:
5612 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5613 ; CHECK-NEXT: vfmsub.vv v8, v9, v10
5615 %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)
5616 %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)
5617 ret <vscale x 1 x double> %v
5620 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) {
5621 ; CHECK-LABEL: vfmsub_vf_nxv1f64:
5623 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5624 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9, v0.t
5626 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5627 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5628 %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)
5629 %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)
5630 ret <vscale x 1 x double> %v
5633 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) {
5634 ; CHECK-LABEL: vfmsub_vf_nxv1f64_commute:
5636 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5637 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9, v0.t
5639 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5640 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5641 %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)
5642 %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)
5643 ret <vscale x 1 x double> %v
5646 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) {
5647 ; CHECK-LABEL: vfmsub_vf_nxv1f64_unmasked:
5649 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5650 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
5656 ret <vscale x 1 x double> %v
5659 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) {
5660 ; CHECK-LABEL: vfmsub_vf_nxv1f64_unmasked_commute:
5662 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5663 ; CHECK-NEXT: vfmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
5669 ret <vscale x 1 x double> %v
5672 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) {
5673 ; CHECK-LABEL: vfnmadd_vv_nxv1f64:
5675 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5676 ; CHECK-NEXT: vfnmadd.vv v9, v8, v10, v0.t
5677 ; CHECK-NEXT: vmv.v.v v8, v9
5679 %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)
5680 %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)
5681 %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)
5682 ret <vscale x 1 x double> %v
5685 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) {
5686 ; CHECK-LABEL: vfnmadd_vv_nxv1f64_commuted:
5688 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5689 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10, v0.t
5691 %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)
5692 %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)
5693 %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)
5694 ret <vscale x 1 x double> %v
5697 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) {
5698 ; CHECK-LABEL: vfnmadd_vv_nxv1f64_unmasked:
5700 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5701 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
5703 %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)
5704 %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)
5705 %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)
5706 ret <vscale x 1 x double> %v
5709 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) {
5710 ; CHECK-LABEL: vfnmadd_vv_nxv1f64_unmasked_commuted:
5712 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5713 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
5715 %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)
5716 %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)
5717 %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)
5718 ret <vscale x 1 x double> %v
5721 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) {
5722 ; CHECK-LABEL: vfnmadd_vf_nxv1f64:
5724 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5725 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
5727 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5728 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5729 %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)
5730 %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)
5731 %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)
5732 ret <vscale x 1 x double> %v
5735 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) {
5736 ; CHECK-LABEL: vfnmadd_vf_nxv1f64_commute:
5738 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5739 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
5741 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5742 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5743 %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)
5744 %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)
5745 %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)
5746 ret <vscale x 1 x double> %v
5749 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) {
5750 ; CHECK-LABEL: vfnmadd_vf_nxv1f64_unmasked:
5752 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5753 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
5755 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5756 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5757 %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)
5758 %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)
5759 %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)
5760 ret <vscale x 1 x double> %v
5763 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) {
5764 ; CHECK-LABEL: vfnmadd_vf_nxv1f64_unmasked_commute:
5766 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5767 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
5769 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5770 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5771 %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)
5772 %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)
5773 %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)
5774 ret <vscale x 1 x double> %v
5777 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) {
5778 ; CHECK-LABEL: vfnmadd_vf_nxv1f64_neg_splat:
5780 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5781 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
5783 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5784 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5785 %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)
5786 %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)
5787 %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)
5788 ret <vscale x 1 x double> %v
5791 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) {
5792 ; CHECK-LABEL: vfnmadd_vf_nxv1f64_neg_splat_commute:
5794 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5795 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9, v0.t
5797 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5798 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5799 %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)
5800 %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)
5801 %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)
5802 ret <vscale x 1 x double> %v
5805 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) {
5806 ; CHECK-LABEL: vfnmadd_vf_nxv1f64_neg_splat_unmasked:
5808 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5809 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
5811 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5812 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5813 %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)
5814 %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)
5815 %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)
5816 ret <vscale x 1 x double> %v
5819 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) {
5820 ; CHECK-LABEL: vfnmadd_vf_nxv1f64_neg_splat_unmasked_commute:
5822 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5823 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v9
5825 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5826 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5827 %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)
5828 %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)
5829 %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)
5830 ret <vscale x 1 x double> %v
5833 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) {
5834 ; CHECK-LABEL: vfnmsub_vv_nxv1f64:
5836 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5837 ; CHECK-NEXT: vfnmadd.vv v9, v8, v10, v0.t
5838 ; CHECK-NEXT: vmv.v.v v8, v9
5840 %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)
5841 %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)
5842 %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)
5843 ret <vscale x 1 x double> %v
5846 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) {
5847 ; CHECK-LABEL: vfnmsub_vv_nxv1f64_commuted:
5849 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5850 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10, v0.t
5852 %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)
5853 %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)
5854 %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)
5855 ret <vscale x 1 x double> %v
5858 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) {
5859 ; CHECK-LABEL: vfnmsub_vv_nxv1f64_unmasked:
5861 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5862 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
5864 %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)
5865 %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)
5866 %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)
5867 ret <vscale x 1 x double> %v
5870 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) {
5871 ; CHECK-LABEL: vfnmsub_vv_nxv1f64_unmasked_commuted:
5873 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5874 ; CHECK-NEXT: vfnmadd.vv v8, v9, v10
5876 %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)
5877 %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)
5878 %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)
5879 ret <vscale x 1 x double> %v
5882 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) {
5883 ; CHECK-LABEL: vfnmsub_vf_nxv1f64:
5885 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5886 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
5888 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5889 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5890 %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)
5891 %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)
5892 ret <vscale x 1 x double> %v
5895 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) {
5896 ; CHECK-LABEL: vfnmsub_vf_nxv1f64_commute:
5898 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5899 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
5901 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5902 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5903 %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)
5904 %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)
5905 ret <vscale x 1 x double> %v
5908 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) {
5909 ; CHECK-LABEL: vfnmsub_vf_nxv1f64_unmasked:
5911 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5912 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
5918 ret <vscale x 1 x double> %v
5921 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) {
5922 ; CHECK-LABEL: vfnmsub_vf_nxv1f64_unmasked_commute:
5924 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5925 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
5931 ret <vscale x 1 x double> %v
5934 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) {
5935 ; CHECK-LABEL: vfnmsub_vf_nxv1f64_neg_splat:
5937 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5938 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
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 %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)
5943 %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)
5944 ret <vscale x 1 x double> %v
5947 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) {
5948 ; CHECK-LABEL: vfnmsub_vf_nxv1f64_neg_splat_commute:
5950 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5951 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9, v0.t
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 %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)
5956 %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)
5957 ret <vscale x 1 x double> %v
5960 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) {
5961 ; CHECK-LABEL: vfnmsub_vf_nxv1f64_neg_splat_unmasked:
5963 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5964 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
5970 ret <vscale x 1 x double> %v
5973 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) {
5974 ; CHECK-LABEL: vfnmsub_vf_nxv1f64_neg_splat_unmasked_commute:
5976 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
5977 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v9
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
5983 ret <vscale x 1 x double> %v
5986 declare <vscale x 2 x double> @llvm.vp.fneg.nxv2f64(<vscale x 2 x double>, <vscale x 2 x i1>, i32)
5988 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) {
5989 ; CHECK-LABEL: vfmsub_vv_nxv2f64:
5991 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
5992 ; CHECK-NEXT: vfmsub.vv v10, v8, v12, v0.t
5993 ; CHECK-NEXT: vmv.v.v v8, v10
5995 %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)
5996 %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)
5997 ret <vscale x 2 x double> %v
6000 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) {
6001 ; CHECK-LABEL: vfmsub_vv_nxv2f64_unmasked:
6003 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6004 ; CHECK-NEXT: vfmsub.vv v8, v10, v12
6006 %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)
6007 %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)
6008 ret <vscale x 2 x double> %v
6011 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) {
6012 ; CHECK-LABEL: vfmsub_vf_nxv2f64:
6014 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6015 ; CHECK-NEXT: vfmsub.vf v8, fa0, v10, v0.t
6017 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6018 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6019 %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)
6020 %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)
6021 ret <vscale x 2 x double> %v
6024 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) {
6025 ; CHECK-LABEL: vfmsub_vf_nxv2f64_commute:
6027 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6028 ; CHECK-NEXT: vfmsub.vf v8, fa0, v10, v0.t
6030 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6031 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6032 %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)
6033 %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)
6034 ret <vscale x 2 x double> %v
6037 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) {
6038 ; CHECK-LABEL: vfmsub_vf_nxv2f64_unmasked:
6040 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6041 ; CHECK-NEXT: vfmsub.vf v8, fa0, v10
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
6047 ret <vscale x 2 x double> %v
6050 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) {
6051 ; CHECK-LABEL: vfmsub_vf_nxv2f64_unmasked_commute:
6053 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6054 ; CHECK-NEXT: vfmsub.vf v8, fa0, v10
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
6060 ret <vscale x 2 x double> %v
6063 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) {
6064 ; CHECK-LABEL: vfnmadd_vv_nxv2f64:
6066 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6067 ; CHECK-NEXT: vfnmadd.vv v10, v8, v12, v0.t
6068 ; CHECK-NEXT: vmv.v.v v8, v10
6070 %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)
6071 %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)
6072 %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)
6073 ret <vscale x 2 x double> %v
6076 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) {
6077 ; CHECK-LABEL: vfnmadd_vv_nxv2f64_commuted:
6079 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6080 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12, v0.t
6082 %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)
6083 %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)
6084 %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)
6085 ret <vscale x 2 x double> %v
6088 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) {
6089 ; CHECK-LABEL: vfnmadd_vv_nxv2f64_unmasked:
6091 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6092 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12
6094 %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)
6095 %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)
6096 %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)
6097 ret <vscale x 2 x double> %v
6100 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) {
6101 ; CHECK-LABEL: vfnmadd_vv_nxv2f64_unmasked_commuted:
6103 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6104 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12
6106 %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)
6107 %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)
6108 %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)
6109 ret <vscale x 2 x double> %v
6112 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) {
6113 ; CHECK-LABEL: vfnmadd_vf_nxv2f64:
6115 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6116 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10, v0.t
6118 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6119 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6120 %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)
6121 %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)
6122 %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)
6123 ret <vscale x 2 x double> %v
6126 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) {
6127 ; CHECK-LABEL: vfnmadd_vf_nxv2f64_commute:
6129 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6130 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10, v0.t
6132 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6133 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6134 %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)
6135 %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)
6136 %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)
6137 ret <vscale x 2 x double> %v
6140 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) {
6141 ; CHECK-LABEL: vfnmadd_vf_nxv2f64_unmasked:
6143 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6144 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10
6146 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6147 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6148 %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)
6149 %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)
6150 %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)
6151 ret <vscale x 2 x double> %v
6154 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) {
6155 ; CHECK-LABEL: vfnmadd_vf_nxv2f64_unmasked_commute:
6157 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6158 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10
6160 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6161 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6162 %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)
6163 %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)
6164 %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)
6165 ret <vscale x 2 x double> %v
6168 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) {
6169 ; CHECK-LABEL: vfnmadd_vf_nxv2f64_neg_splat:
6171 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6172 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10, v0.t
6174 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6175 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6176 %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)
6177 %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)
6178 %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)
6179 ret <vscale x 2 x double> %v
6182 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) {
6183 ; CHECK-LABEL: vfnmadd_vf_nxv2f64_neg_splat_commute:
6185 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6186 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10, v0.t
6188 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6189 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6190 %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)
6191 %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)
6192 %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)
6193 ret <vscale x 2 x double> %v
6196 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) {
6197 ; CHECK-LABEL: vfnmadd_vf_nxv2f64_neg_splat_unmasked:
6199 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6200 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10
6202 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6203 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6204 %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)
6205 %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)
6206 %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)
6207 ret <vscale x 2 x double> %v
6210 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) {
6211 ; CHECK-LABEL: vfnmadd_vf_nxv2f64_neg_splat_unmasked_commute:
6213 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6214 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v10
6216 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6217 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6218 %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)
6219 %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)
6220 %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)
6221 ret <vscale x 2 x double> %v
6224 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) {
6225 ; CHECK-LABEL: vfnmsub_vv_nxv2f64:
6227 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6228 ; CHECK-NEXT: vfnmadd.vv v10, v8, v12, v0.t
6229 ; CHECK-NEXT: vmv.v.v v8, v10
6231 %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)
6232 %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)
6233 %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)
6234 ret <vscale x 2 x double> %v
6237 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) {
6238 ; CHECK-LABEL: vfnmsub_vv_nxv2f64_commuted:
6240 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6241 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12, v0.t
6243 %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)
6244 %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)
6245 %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)
6246 ret <vscale x 2 x double> %v
6249 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) {
6250 ; CHECK-LABEL: vfnmsub_vv_nxv2f64_unmasked:
6252 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6253 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12
6255 %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)
6256 %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)
6257 %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)
6258 ret <vscale x 2 x double> %v
6261 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) {
6262 ; CHECK-LABEL: vfnmsub_vv_nxv2f64_unmasked_commuted:
6264 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6265 ; CHECK-NEXT: vfnmadd.vv v8, v10, v12
6267 %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)
6268 %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)
6269 %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)
6270 ret <vscale x 2 x double> %v
6273 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) {
6274 ; CHECK-LABEL: vfnmsub_vf_nxv2f64:
6276 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6277 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10, v0.t
6279 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6280 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6281 %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)
6282 %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)
6283 ret <vscale x 2 x double> %v
6286 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) {
6287 ; CHECK-LABEL: vfnmsub_vf_nxv2f64_commute:
6289 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6290 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10, v0.t
6292 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6293 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6294 %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)
6295 %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)
6296 ret <vscale x 2 x double> %v
6299 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) {
6300 ; CHECK-LABEL: vfnmsub_vf_nxv2f64_unmasked:
6302 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6303 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
6309 ret <vscale x 2 x double> %v
6312 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) {
6313 ; CHECK-LABEL: vfnmsub_vf_nxv2f64_unmasked_commute:
6315 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6316 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
6322 ret <vscale x 2 x double> %v
6325 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) {
6326 ; CHECK-LABEL: vfnmsub_vf_nxv2f64_neg_splat:
6328 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6329 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10, v0.t
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 %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)
6334 %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)
6335 ret <vscale x 2 x double> %v
6338 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) {
6339 ; CHECK-LABEL: vfnmsub_vf_nxv2f64_neg_splat_commute:
6341 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6342 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10, v0.t
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 %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)
6347 %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)
6348 ret <vscale x 2 x double> %v
6351 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) {
6352 ; CHECK-LABEL: vfnmsub_vf_nxv2f64_neg_splat_unmasked:
6354 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6355 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
6361 ret <vscale x 2 x double> %v
6364 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) {
6365 ; CHECK-LABEL: vfnmsub_vf_nxv2f64_neg_splat_unmasked_commute:
6367 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
6368 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v10
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
6374 ret <vscale x 2 x double> %v
6377 declare <vscale x 4 x double> @llvm.vp.fneg.nxv4f64(<vscale x 4 x double>, <vscale x 4 x i1>, i32)
6379 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) {
6380 ; CHECK-LABEL: vfmsub_vv_nxv4f64:
6382 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6383 ; CHECK-NEXT: vfmsub.vv v12, v8, v16, v0.t
6384 ; CHECK-NEXT: vmv.v.v v8, v12
6386 %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)
6387 %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)
6388 ret <vscale x 4 x double> %v
6391 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) {
6392 ; CHECK-LABEL: vfmsub_vv_nxv4f64_unmasked:
6394 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6395 ; CHECK-NEXT: vfmsub.vv v8, v12, v16
6397 %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)
6398 %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)
6399 ret <vscale x 4 x double> %v
6402 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) {
6403 ; CHECK-LABEL: vfmsub_vf_nxv4f64:
6405 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6406 ; CHECK-NEXT: vfmsub.vf v8, fa0, v12, v0.t
6408 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6409 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6410 %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)
6411 %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)
6412 ret <vscale x 4 x double> %v
6415 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) {
6416 ; CHECK-LABEL: vfmsub_vf_nxv4f64_commute:
6418 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6419 ; CHECK-NEXT: vfmsub.vf v8, fa0, v12, v0.t
6421 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6422 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6423 %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)
6424 %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)
6425 ret <vscale x 4 x double> %v
6428 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) {
6429 ; CHECK-LABEL: vfmsub_vf_nxv4f64_unmasked:
6431 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6432 ; CHECK-NEXT: vfmsub.vf v8, fa0, v12
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
6438 ret <vscale x 4 x double> %v
6441 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) {
6442 ; CHECK-LABEL: vfmsub_vf_nxv4f64_unmasked_commute:
6444 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6445 ; CHECK-NEXT: vfmsub.vf v8, fa0, v12
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
6451 ret <vscale x 4 x double> %v
6454 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) {
6455 ; CHECK-LABEL: vfnmadd_vv_nxv4f64:
6457 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6458 ; CHECK-NEXT: vfnmadd.vv v12, v8, v16, v0.t
6459 ; CHECK-NEXT: vmv.v.v v8, v12
6461 %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)
6462 %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)
6463 %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)
6464 ret <vscale x 4 x double> %v
6467 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) {
6468 ; CHECK-LABEL: vfnmadd_vv_nxv4f64_commuted:
6470 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6471 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16, v0.t
6473 %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)
6474 %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)
6475 %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)
6476 ret <vscale x 4 x double> %v
6479 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) {
6480 ; CHECK-LABEL: vfnmadd_vv_nxv4f64_unmasked:
6482 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6483 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16
6485 %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)
6486 %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)
6487 %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)
6488 ret <vscale x 4 x double> %v
6491 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) {
6492 ; CHECK-LABEL: vfnmadd_vv_nxv4f64_unmasked_commuted:
6494 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6495 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16
6497 %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)
6498 %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)
6499 %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)
6500 ret <vscale x 4 x double> %v
6503 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) {
6504 ; CHECK-LABEL: vfnmadd_vf_nxv4f64:
6506 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6507 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12, v0.t
6509 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6510 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6511 %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)
6512 %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)
6513 %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)
6514 ret <vscale x 4 x double> %v
6517 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) {
6518 ; CHECK-LABEL: vfnmadd_vf_nxv4f64_commute:
6520 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6521 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12, v0.t
6523 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6524 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6525 %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)
6526 %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)
6527 %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)
6528 ret <vscale x 4 x double> %v
6531 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) {
6532 ; CHECK-LABEL: vfnmadd_vf_nxv4f64_unmasked:
6534 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6535 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12
6537 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6538 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6539 %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)
6540 %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)
6541 %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)
6542 ret <vscale x 4 x double> %v
6545 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) {
6546 ; CHECK-LABEL: vfnmadd_vf_nxv4f64_unmasked_commute:
6548 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6549 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12
6551 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6552 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6553 %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)
6554 %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)
6555 %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)
6556 ret <vscale x 4 x double> %v
6559 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) {
6560 ; CHECK-LABEL: vfnmadd_vf_nxv4f64_neg_splat:
6562 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6563 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12, v0.t
6565 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6566 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6567 %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)
6568 %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)
6569 %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)
6570 ret <vscale x 4 x double> %v
6573 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) {
6574 ; CHECK-LABEL: vfnmadd_vf_nxv4f64_neg_splat_commute:
6576 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6577 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12, v0.t
6579 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6580 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6581 %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)
6582 %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)
6583 %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)
6584 ret <vscale x 4 x double> %v
6587 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) {
6588 ; CHECK-LABEL: vfnmadd_vf_nxv4f64_neg_splat_unmasked:
6590 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6591 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12
6593 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6594 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6595 %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)
6596 %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)
6597 %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)
6598 ret <vscale x 4 x double> %v
6601 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) {
6602 ; CHECK-LABEL: vfnmadd_vf_nxv4f64_neg_splat_unmasked_commute:
6604 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6605 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v12
6607 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6608 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6609 %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)
6610 %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)
6611 %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)
6612 ret <vscale x 4 x double> %v
6615 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) {
6616 ; CHECK-LABEL: vfnmsub_vv_nxv4f64:
6618 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6619 ; CHECK-NEXT: vfnmadd.vv v12, v8, v16, v0.t
6620 ; CHECK-NEXT: vmv.v.v v8, v12
6622 %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)
6623 %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)
6624 %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)
6625 ret <vscale x 4 x double> %v
6628 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) {
6629 ; CHECK-LABEL: vfnmsub_vv_nxv4f64_commuted:
6631 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6632 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16, v0.t
6634 %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)
6635 %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)
6636 %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)
6637 ret <vscale x 4 x double> %v
6640 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) {
6641 ; CHECK-LABEL: vfnmsub_vv_nxv4f64_unmasked:
6643 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6644 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16
6646 %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)
6647 %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)
6648 %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)
6649 ret <vscale x 4 x double> %v
6652 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) {
6653 ; CHECK-LABEL: vfnmsub_vv_nxv4f64_unmasked_commuted:
6655 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6656 ; CHECK-NEXT: vfnmadd.vv v8, v12, v16
6658 %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)
6659 %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)
6660 %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)
6661 ret <vscale x 4 x double> %v
6664 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) {
6665 ; CHECK-LABEL: vfnmsub_vf_nxv4f64:
6667 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6668 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12, v0.t
6670 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6671 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6672 %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)
6673 %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)
6674 ret <vscale x 4 x double> %v
6677 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) {
6678 ; CHECK-LABEL: vfnmsub_vf_nxv4f64_commute:
6680 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6681 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12, v0.t
6683 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6684 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6685 %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)
6686 %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)
6687 ret <vscale x 4 x double> %v
6690 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) {
6691 ; CHECK-LABEL: vfnmsub_vf_nxv4f64_unmasked:
6693 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6694 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
6700 ret <vscale x 4 x double> %v
6703 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) {
6704 ; CHECK-LABEL: vfnmsub_vf_nxv4f64_unmasked_commute:
6706 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6707 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
6713 ret <vscale x 4 x double> %v
6716 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) {
6717 ; CHECK-LABEL: vfnmsub_vf_nxv4f64_neg_splat:
6719 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6720 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12, v0.t
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 %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)
6725 %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)
6726 ret <vscale x 4 x double> %v
6729 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) {
6730 ; CHECK-LABEL: vfnmsub_vf_nxv4f64_neg_splat_commute:
6732 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6733 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12, v0.t
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 %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)
6738 %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)
6739 ret <vscale x 4 x double> %v
6742 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) {
6743 ; CHECK-LABEL: vfnmsub_vf_nxv4f64_neg_splat_unmasked:
6745 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6746 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
6752 ret <vscale x 4 x double> %v
6755 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) {
6756 ; CHECK-LABEL: vfnmsub_vf_nxv4f64_neg_splat_unmasked_commute:
6758 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
6759 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v12
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
6765 ret <vscale x 4 x double> %v
6768 declare <vscale x 8 x double> @llvm.vp.fneg.nxv8f64(<vscale x 8 x double>, <vscale x 8 x i1>, i32)
6770 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) {
6771 ; CHECK-LABEL: vfmsub_vv_nxv8f64:
6773 ; CHECK-NEXT: vl8re64.v v24, (a0)
6774 ; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma
6775 ; CHECK-NEXT: vfmsub.vv v16, v8, v24, v0.t
6776 ; CHECK-NEXT: vmv.v.v v8, v16
6778 %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)
6779 %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)
6780 ret <vscale x 8 x double> %v
6783 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) {
6784 ; CHECK-LABEL: vfmsub_vv_nxv8f64_unmasked:
6786 ; CHECK-NEXT: vl8re64.v v24, (a0)
6787 ; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma
6788 ; CHECK-NEXT: vfmsub.vv v8, v16, v24
6790 %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)
6791 %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)
6792 ret <vscale x 8 x double> %v
6795 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) {
6796 ; CHECK-LABEL: vfmsub_vf_nxv8f64:
6798 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
6799 ; CHECK-NEXT: vfmsub.vf v8, fa0, v16, v0.t
6801 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
6802 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
6803 %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)
6804 %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)
6805 ret <vscale x 8 x double> %v
6808 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) {
6809 ; CHECK-LABEL: vfmsub_vf_nxv8f64_commute:
6811 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
6812 ; CHECK-NEXT: vfmsub.vf v8, fa0, v16, v0.t
6814 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
6815 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
6816 %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)
6817 %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)
6818 ret <vscale x 8 x double> %v
6821 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) {
6822 ; CHECK-LABEL: vfmsub_vf_nxv8f64_unmasked:
6824 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
6825 ; CHECK-NEXT: vfmsub.vf v8, fa0, v16
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
6831 ret <vscale x 8 x double> %v
6834 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) {
6835 ; CHECK-LABEL: vfmsub_vf_nxv8f64_unmasked_commute:
6837 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
6838 ; CHECK-NEXT: vfmsub.vf v8, fa0, v16
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
6844 ret <vscale x 8 x double> %v
6847 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) {
6848 ; CHECK-LABEL: vfnmadd_vv_nxv8f64:
6850 ; CHECK-NEXT: vl8re64.v v24, (a0)
6851 ; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma
6852 ; CHECK-NEXT: vfnmadd.vv v16, v8, v24, v0.t
6853 ; CHECK-NEXT: vmv.v.v v8, v16
6855 %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)
6856 %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)
6857 %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)
6858 ret <vscale x 8 x double> %v
6861 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) {
6862 ; CHECK-LABEL: vfnmadd_vv_nxv8f64_commuted:
6864 ; CHECK-NEXT: vl8re64.v v24, (a0)
6865 ; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma
6866 ; CHECK-NEXT: vfnmadd.vv v8, v16, v24, v0.t
6868 %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)
6869 %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)
6870 %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)
6871 ret <vscale x 8 x double> %v
6874 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) {
6875 ; CHECK-LABEL: vfnmadd_vv_nxv8f64_unmasked:
6877 ; CHECK-NEXT: vl8re64.v v24, (a0)
6878 ; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma
6879 ; CHECK-NEXT: vfnmadd.vv v8, v16, v24
6881 %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)
6882 %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)
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> splat (i1 true), i32 %evl)
6884 ret <vscale x 8 x double> %v
6887 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) {
6888 ; CHECK-LABEL: vfnmadd_vv_nxv8f64_unmasked_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
6894 %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)
6895 %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)
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> splat (i1 true), i32 %evl)
6897 ret <vscale x 8 x double> %v
6900 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) {
6901 ; CHECK-LABEL: vfnmadd_vf_nxv8f64:
6903 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
6904 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16, v0.t
6906 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
6907 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
6908 %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)
6909 %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)
6910 %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)
6911 ret <vscale x 8 x double> %v
6914 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) {
6915 ; CHECK-LABEL: vfnmadd_vf_nxv8f64_commute:
6917 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
6918 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16, v0.t
6920 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
6921 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
6922 %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)
6923 %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)
6924 %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)
6925 ret <vscale x 8 x double> %v
6928 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) {
6929 ; CHECK-LABEL: vfnmadd_vf_nxv8f64_unmasked:
6931 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
6932 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16
6934 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
6935 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
6936 %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)
6937 %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)
6938 %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)
6939 ret <vscale x 8 x double> %v
6942 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) {
6943 ; CHECK-LABEL: vfnmadd_vf_nxv8f64_unmasked_commute:
6945 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
6946 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16
6948 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
6949 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
6950 %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)
6951 %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)
6952 %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)
6953 ret <vscale x 8 x double> %v
6956 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) {
6957 ; CHECK-LABEL: vfnmadd_vf_nxv8f64_neg_splat:
6959 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
6960 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16, v0.t
6962 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
6963 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
6964 %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)
6965 %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)
6966 %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)
6967 ret <vscale x 8 x double> %v
6970 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) {
6971 ; CHECK-LABEL: vfnmadd_vf_nxv8f64_neg_splat_commute:
6973 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
6974 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16, v0.t
6976 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
6977 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
6978 %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)
6979 %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)
6980 %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)
6981 ret <vscale x 8 x double> %v
6984 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) {
6985 ; CHECK-LABEL: vfnmadd_vf_nxv8f64_neg_splat_unmasked:
6987 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
6988 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16
6990 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
6991 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
6992 %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)
6993 %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)
6994 %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)
6995 ret <vscale x 8 x double> %v
6998 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) {
6999 ; CHECK-LABEL: vfnmadd_vf_nxv8f64_neg_splat_unmasked_commute:
7001 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
7002 ; CHECK-NEXT: vfnmadd.vf v8, fa0, v16
7004 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7005 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7006 %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)
7007 %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)
7008 %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)
7009 ret <vscale x 8 x double> %v
7012 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) {
7013 ; CHECK-LABEL: vfnmsub_vv_nxv8f64:
7015 ; CHECK-NEXT: vl8re64.v v24, (a0)
7016 ; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma
7017 ; CHECK-NEXT: vfnmadd.vv v16, v8, v24, v0.t
7018 ; CHECK-NEXT: vmv.v.v v8, v16
7020 %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)
7021 %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)
7022 %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)
7023 ret <vscale x 8 x double> %v
7026 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) {
7027 ; CHECK-LABEL: vfnmsub_vv_nxv8f64_commuted:
7029 ; CHECK-NEXT: vl8re64.v v24, (a0)
7030 ; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma
7031 ; CHECK-NEXT: vfnmadd.vv v8, v16, v24, v0.t
7033 %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)
7034 %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)
7035 %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)
7036 ret <vscale x 8 x double> %v
7039 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) {
7040 ; CHECK-LABEL: vfnmsub_vv_nxv8f64_unmasked:
7042 ; CHECK-NEXT: vl8re64.v v24, (a0)
7043 ; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma
7044 ; CHECK-NEXT: vfnmadd.vv v8, v16, v24
7046 %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)
7047 %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)
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> splat (i1 true), i32 %evl)
7049 ret <vscale x 8 x double> %v
7052 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) {
7053 ; CHECK-LABEL: vfnmsub_vv_nxv8f64_unmasked_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
7059 %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)
7060 %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)
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> splat (i1 true), i32 %evl)
7062 ret <vscale x 8 x double> %v
7065 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) {
7066 ; CHECK-LABEL: vfnmsub_vf_nxv8f64:
7068 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
7069 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16, v0.t
7071 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7072 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7073 %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)
7074 %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)
7075 ret <vscale x 8 x double> %v
7078 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) {
7079 ; CHECK-LABEL: vfnmsub_vf_nxv8f64_commute:
7081 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
7082 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16, v0.t
7084 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7085 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7086 %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)
7087 %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)
7088 ret <vscale x 8 x double> %v
7091 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) {
7092 ; CHECK-LABEL: vfnmsub_vf_nxv8f64_unmasked:
7094 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
7095 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
7101 ret <vscale x 8 x double> %v
7104 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) {
7105 ; CHECK-LABEL: vfnmsub_vf_nxv8f64_unmasked_commute:
7107 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
7108 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
7114 ret <vscale x 8 x double> %v
7117 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) {
7118 ; CHECK-LABEL: vfnmsub_vf_nxv8f64_neg_splat:
7120 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
7121 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16, v0.t
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 %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)
7126 %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)
7127 ret <vscale x 8 x double> %v
7130 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) {
7131 ; CHECK-LABEL: vfnmsub_vf_nxv8f64_neg_splat_commute:
7133 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
7134 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16, v0.t
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 %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)
7139 %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)
7140 ret <vscale x 8 x double> %v
7143 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) {
7144 ; CHECK-LABEL: vfnmsub_vf_nxv8f64_neg_splat_unmasked:
7146 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
7147 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
7153 ret <vscale x 8 x double> %v
7156 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) {
7157 ; CHECK-LABEL: vfnmsub_vf_nxv8f64_neg_splat_unmasked_commute:
7159 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
7160 ; CHECK-NEXT: vfnmsub.vf v8, fa0, v16
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> splat (i1 true), 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> splat (i1 true), i32 %evl)
7166 ret <vscale x 8 x double> %v