Revert "[InstCombine] Support gep nuw in icmp folds" (#118698)
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vmadd.ll
blob829d082ab7a4fd43ffb40af2bbe462fbb0aadd47
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+v \
3 ; RUN:   -verify-machineinstrs | FileCheck %s --check-prefixes=CHECK,RV32
4 ; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v \
5 ; RUN:   -verify-machineinstrs | FileCheck %s --check-prefixes=CHECK,RV64
7 declare <vscale x 1 x i8> @llvm.riscv.vmadd.nxv1i8.nxv1i8(
8   <vscale x 1 x i8>,
9   <vscale x 1 x i8>,
10   <vscale x 1 x i8>,
11   iXLen,
12   iXLen);
14 define <vscale x 1 x i8>  @intrinsic_vmadd_vv_nxv1i8_nxv1i8_nxv1i8(<vscale x 1 x i8> %0, <vscale x 1 x i8> %1, <vscale x 1 x i8> %2, iXLen %3) nounwind {
15 ; CHECK-LABEL: intrinsic_vmadd_vv_nxv1i8_nxv1i8_nxv1i8:
16 ; CHECK:       # %bb.0: # %entry
17 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, tu, ma
18 ; CHECK-NEXT:    vmadd.vv v8, v9, v10
19 ; CHECK-NEXT:    ret
20 entry:
21   %a = call <vscale x 1 x i8> @llvm.riscv.vmadd.nxv1i8.nxv1i8(
22     <vscale x 1 x i8> %0,
23     <vscale x 1 x i8> %1,
24     <vscale x 1 x i8> %2,
25     iXLen %3, iXLen 0)
27   ret <vscale x 1 x i8> %a
30 declare <vscale x 1 x i8> @llvm.riscv.vmadd.mask.nxv1i8.nxv1i8(
31   <vscale x 1 x i8>,
32   <vscale x 1 x i8>,
33   <vscale x 1 x i8>,
34   <vscale x 1 x i1>,
35   iXLen, iXLen);
37 define <vscale x 1 x i8>  @intrinsic_vmadd_mask_vv_nxv1i8_nxv1i8_nxv1i8(<vscale x 1 x i8> %0, <vscale x 1 x i8> %1, <vscale x 1 x i8> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
38 ; CHECK-LABEL: intrinsic_vmadd_mask_vv_nxv1i8_nxv1i8_nxv1i8:
39 ; CHECK:       # %bb.0: # %entry
40 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, tu, mu
41 ; CHECK-NEXT:    vmadd.vv v8, v9, v10, v0.t
42 ; CHECK-NEXT:    ret
43 entry:
44   %a = call <vscale x 1 x i8> @llvm.riscv.vmadd.mask.nxv1i8.nxv1i8(
45     <vscale x 1 x i8> %0,
46     <vscale x 1 x i8> %1,
47     <vscale x 1 x i8> %2,
48     <vscale x 1 x i1> %3,
49     iXLen %4, iXLen 0)
51   ret <vscale x 1 x i8> %a
54 declare <vscale x 2 x i8> @llvm.riscv.vmadd.nxv2i8.nxv2i8(
55   <vscale x 2 x i8>,
56   <vscale x 2 x i8>,
57   <vscale x 2 x i8>,
58   iXLen,
59   iXLen);
61 define <vscale x 2 x i8>  @intrinsic_vmadd_vv_nxv2i8_nxv2i8_nxv2i8(<vscale x 2 x i8> %0, <vscale x 2 x i8> %1, <vscale x 2 x i8> %2, iXLen %3) nounwind {
62 ; CHECK-LABEL: intrinsic_vmadd_vv_nxv2i8_nxv2i8_nxv2i8:
63 ; CHECK:       # %bb.0: # %entry
64 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, tu, ma
65 ; CHECK-NEXT:    vmadd.vv v8, v9, v10
66 ; CHECK-NEXT:    ret
67 entry:
68   %a = call <vscale x 2 x i8> @llvm.riscv.vmadd.nxv2i8.nxv2i8(
69     <vscale x 2 x i8> %0,
70     <vscale x 2 x i8> %1,
71     <vscale x 2 x i8> %2,
72     iXLen %3, iXLen 0)
74   ret <vscale x 2 x i8> %a
77 declare <vscale x 2 x i8> @llvm.riscv.vmadd.mask.nxv2i8.nxv2i8(
78   <vscale x 2 x i8>,
79   <vscale x 2 x i8>,
80   <vscale x 2 x i8>,
81   <vscale x 2 x i1>,
82   iXLen, iXLen);
84 define <vscale x 2 x i8>  @intrinsic_vmadd_mask_vv_nxv2i8_nxv2i8_nxv2i8(<vscale x 2 x i8> %0, <vscale x 2 x i8> %1, <vscale x 2 x i8> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
85 ; CHECK-LABEL: intrinsic_vmadd_mask_vv_nxv2i8_nxv2i8_nxv2i8:
86 ; CHECK:       # %bb.0: # %entry
87 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, tu, mu
88 ; CHECK-NEXT:    vmadd.vv v8, v9, v10, v0.t
89 ; CHECK-NEXT:    ret
90 entry:
91   %a = call <vscale x 2 x i8> @llvm.riscv.vmadd.mask.nxv2i8.nxv2i8(
92     <vscale x 2 x i8> %0,
93     <vscale x 2 x i8> %1,
94     <vscale x 2 x i8> %2,
95     <vscale x 2 x i1> %3,
96     iXLen %4, iXLen 0)
98   ret <vscale x 2 x i8> %a
101 declare <vscale x 4 x i8> @llvm.riscv.vmadd.nxv4i8.nxv4i8(
102   <vscale x 4 x i8>,
103   <vscale x 4 x i8>,
104   <vscale x 4 x i8>,
105   iXLen,
106   iXLen);
108 define <vscale x 4 x i8>  @intrinsic_vmadd_vv_nxv4i8_nxv4i8_nxv4i8(<vscale x 4 x i8> %0, <vscale x 4 x i8> %1, <vscale x 4 x i8> %2, iXLen %3) nounwind {
109 ; CHECK-LABEL: intrinsic_vmadd_vv_nxv4i8_nxv4i8_nxv4i8:
110 ; CHECK:       # %bb.0: # %entry
111 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, tu, ma
112 ; CHECK-NEXT:    vmadd.vv v8, v9, v10
113 ; CHECK-NEXT:    ret
114 entry:
115   %a = call <vscale x 4 x i8> @llvm.riscv.vmadd.nxv4i8.nxv4i8(
116     <vscale x 4 x i8> %0,
117     <vscale x 4 x i8> %1,
118     <vscale x 4 x i8> %2,
119     iXLen %3, iXLen 0)
121   ret <vscale x 4 x i8> %a
124 declare <vscale x 4 x i8> @llvm.riscv.vmadd.mask.nxv4i8.nxv4i8(
125   <vscale x 4 x i8>,
126   <vscale x 4 x i8>,
127   <vscale x 4 x i8>,
128   <vscale x 4 x i1>,
129   iXLen, iXLen);
131 define <vscale x 4 x i8>  @intrinsic_vmadd_mask_vv_nxv4i8_nxv4i8_nxv4i8(<vscale x 4 x i8> %0, <vscale x 4 x i8> %1, <vscale x 4 x i8> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
132 ; CHECK-LABEL: intrinsic_vmadd_mask_vv_nxv4i8_nxv4i8_nxv4i8:
133 ; CHECK:       # %bb.0: # %entry
134 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, tu, mu
135 ; CHECK-NEXT:    vmadd.vv v8, v9, v10, v0.t
136 ; CHECK-NEXT:    ret
137 entry:
138   %a = call <vscale x 4 x i8> @llvm.riscv.vmadd.mask.nxv4i8.nxv4i8(
139     <vscale x 4 x i8> %0,
140     <vscale x 4 x i8> %1,
141     <vscale x 4 x i8> %2,
142     <vscale x 4 x i1> %3,
143     iXLen %4, iXLen 0)
145   ret <vscale x 4 x i8> %a
148 declare <vscale x 8 x i8> @llvm.riscv.vmadd.nxv8i8.nxv8i8(
149   <vscale x 8 x i8>,
150   <vscale x 8 x i8>,
151   <vscale x 8 x i8>,
152   iXLen,
153   iXLen);
155 define <vscale x 8 x i8>  @intrinsic_vmadd_vv_nxv8i8_nxv8i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 8 x i8> %1, <vscale x 8 x i8> %2, iXLen %3) nounwind {
156 ; CHECK-LABEL: intrinsic_vmadd_vv_nxv8i8_nxv8i8_nxv8i8:
157 ; CHECK:       # %bb.0: # %entry
158 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, tu, ma
159 ; CHECK-NEXT:    vmadd.vv v8, v9, v10
160 ; CHECK-NEXT:    ret
161 entry:
162   %a = call <vscale x 8 x i8> @llvm.riscv.vmadd.nxv8i8.nxv8i8(
163     <vscale x 8 x i8> %0,
164     <vscale x 8 x i8> %1,
165     <vscale x 8 x i8> %2,
166     iXLen %3, iXLen 0)
168   ret <vscale x 8 x i8> %a
171 declare <vscale x 8 x i8> @llvm.riscv.vmadd.mask.nxv8i8.nxv8i8(
172   <vscale x 8 x i8>,
173   <vscale x 8 x i8>,
174   <vscale x 8 x i8>,
175   <vscale x 8 x i1>,
176   iXLen, iXLen);
178 define <vscale x 8 x i8>  @intrinsic_vmadd_mask_vv_nxv8i8_nxv8i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 8 x i8> %1, <vscale x 8 x i8> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
179 ; CHECK-LABEL: intrinsic_vmadd_mask_vv_nxv8i8_nxv8i8_nxv8i8:
180 ; CHECK:       # %bb.0: # %entry
181 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, tu, mu
182 ; CHECK-NEXT:    vmadd.vv v8, v9, v10, v0.t
183 ; CHECK-NEXT:    ret
184 entry:
185   %a = call <vscale x 8 x i8> @llvm.riscv.vmadd.mask.nxv8i8.nxv8i8(
186     <vscale x 8 x i8> %0,
187     <vscale x 8 x i8> %1,
188     <vscale x 8 x i8> %2,
189     <vscale x 8 x i1> %3,
190     iXLen %4, iXLen 0)
192   ret <vscale x 8 x i8> %a
195 declare <vscale x 16 x i8> @llvm.riscv.vmadd.nxv16i8.nxv16i8(
196   <vscale x 16 x i8>,
197   <vscale x 16 x i8>,
198   <vscale x 16 x i8>,
199   iXLen,
200   iXLen);
202 define <vscale x 16 x i8>  @intrinsic_vmadd_vv_nxv16i8_nxv16i8_nxv16i8(<vscale x 16 x i8> %0, <vscale x 16 x i8> %1, <vscale x 16 x i8> %2, iXLen %3) nounwind {
203 ; CHECK-LABEL: intrinsic_vmadd_vv_nxv16i8_nxv16i8_nxv16i8:
204 ; CHECK:       # %bb.0: # %entry
205 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, tu, ma
206 ; CHECK-NEXT:    vmadd.vv v8, v10, v12
207 ; CHECK-NEXT:    ret
208 entry:
209   %a = call <vscale x 16 x i8> @llvm.riscv.vmadd.nxv16i8.nxv16i8(
210     <vscale x 16 x i8> %0,
211     <vscale x 16 x i8> %1,
212     <vscale x 16 x i8> %2,
213     iXLen %3, iXLen 0)
215   ret <vscale x 16 x i8> %a
218 declare <vscale x 16 x i8> @llvm.riscv.vmadd.mask.nxv16i8.nxv16i8(
219   <vscale x 16 x i8>,
220   <vscale x 16 x i8>,
221   <vscale x 16 x i8>,
222   <vscale x 16 x i1>,
223   iXLen, iXLen);
225 define <vscale x 16 x i8>  @intrinsic_vmadd_mask_vv_nxv16i8_nxv16i8_nxv16i8(<vscale x 16 x i8> %0, <vscale x 16 x i8> %1, <vscale x 16 x i8> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
226 ; CHECK-LABEL: intrinsic_vmadd_mask_vv_nxv16i8_nxv16i8_nxv16i8:
227 ; CHECK:       # %bb.0: # %entry
228 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, tu, mu
229 ; CHECK-NEXT:    vmadd.vv v8, v10, v12, v0.t
230 ; CHECK-NEXT:    ret
231 entry:
232   %a = call <vscale x 16 x i8> @llvm.riscv.vmadd.mask.nxv16i8.nxv16i8(
233     <vscale x 16 x i8> %0,
234     <vscale x 16 x i8> %1,
235     <vscale x 16 x i8> %2,
236     <vscale x 16 x i1> %3,
237     iXLen %4, iXLen 0)
239   ret <vscale x 16 x i8> %a
242 declare <vscale x 32 x i8> @llvm.riscv.vmadd.nxv32i8.nxv32i8(
243   <vscale x 32 x i8>,
244   <vscale x 32 x i8>,
245   <vscale x 32 x i8>,
246   iXLen,
247   iXLen);
249 define <vscale x 32 x i8>  @intrinsic_vmadd_vv_nxv32i8_nxv32i8_nxv32i8(<vscale x 32 x i8> %0, <vscale x 32 x i8> %1, <vscale x 32 x i8> %2, iXLen %3) nounwind {
250 ; CHECK-LABEL: intrinsic_vmadd_vv_nxv32i8_nxv32i8_nxv32i8:
251 ; CHECK:       # %bb.0: # %entry
252 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, tu, ma
253 ; CHECK-NEXT:    vmadd.vv v8, v12, v16
254 ; CHECK-NEXT:    ret
255 entry:
256   %a = call <vscale x 32 x i8> @llvm.riscv.vmadd.nxv32i8.nxv32i8(
257     <vscale x 32 x i8> %0,
258     <vscale x 32 x i8> %1,
259     <vscale x 32 x i8> %2,
260     iXLen %3, iXLen 0)
262   ret <vscale x 32 x i8> %a
265 declare <vscale x 32 x i8> @llvm.riscv.vmadd.mask.nxv32i8.nxv32i8(
266   <vscale x 32 x i8>,
267   <vscale x 32 x i8>,
268   <vscale x 32 x i8>,
269   <vscale x 32 x i1>,
270   iXLen, iXLen);
272 define <vscale x 32 x i8>  @intrinsic_vmadd_mask_vv_nxv32i8_nxv32i8_nxv32i8(<vscale x 32 x i8> %0, <vscale x 32 x i8> %1, <vscale x 32 x i8> %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
273 ; CHECK-LABEL: intrinsic_vmadd_mask_vv_nxv32i8_nxv32i8_nxv32i8:
274 ; CHECK:       # %bb.0: # %entry
275 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, tu, mu
276 ; CHECK-NEXT:    vmadd.vv v8, v12, v16, v0.t
277 ; CHECK-NEXT:    ret
278 entry:
279   %a = call <vscale x 32 x i8> @llvm.riscv.vmadd.mask.nxv32i8.nxv32i8(
280     <vscale x 32 x i8> %0,
281     <vscale x 32 x i8> %1,
282     <vscale x 32 x i8> %2,
283     <vscale x 32 x i1> %3,
284     iXLen %4, iXLen 0)
286   ret <vscale x 32 x i8> %a
289 declare <vscale x 1 x i16> @llvm.riscv.vmadd.nxv1i16.nxv1i16(
290   <vscale x 1 x i16>,
291   <vscale x 1 x i16>,
292   <vscale x 1 x i16>,
293   iXLen,
294   iXLen);
296 define <vscale x 1 x i16>  @intrinsic_vmadd_vv_nxv1i16_nxv1i16_nxv1i16(<vscale x 1 x i16> %0, <vscale x 1 x i16> %1, <vscale x 1 x i16> %2, iXLen %3) nounwind {
297 ; CHECK-LABEL: intrinsic_vmadd_vv_nxv1i16_nxv1i16_nxv1i16:
298 ; CHECK:       # %bb.0: # %entry
299 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, tu, ma
300 ; CHECK-NEXT:    vmadd.vv v8, v9, v10
301 ; CHECK-NEXT:    ret
302 entry:
303   %a = call <vscale x 1 x i16> @llvm.riscv.vmadd.nxv1i16.nxv1i16(
304     <vscale x 1 x i16> %0,
305     <vscale x 1 x i16> %1,
306     <vscale x 1 x i16> %2,
307     iXLen %3, iXLen 0)
309   ret <vscale x 1 x i16> %a
312 declare <vscale x 1 x i16> @llvm.riscv.vmadd.mask.nxv1i16.nxv1i16(
313   <vscale x 1 x i16>,
314   <vscale x 1 x i16>,
315   <vscale x 1 x i16>,
316   <vscale x 1 x i1>,
317   iXLen, iXLen);
319 define <vscale x 1 x i16>  @intrinsic_vmadd_mask_vv_nxv1i16_nxv1i16_nxv1i16(<vscale x 1 x i16> %0, <vscale x 1 x i16> %1, <vscale x 1 x i16> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
320 ; CHECK-LABEL: intrinsic_vmadd_mask_vv_nxv1i16_nxv1i16_nxv1i16:
321 ; CHECK:       # %bb.0: # %entry
322 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, tu, mu
323 ; CHECK-NEXT:    vmadd.vv v8, v9, v10, v0.t
324 ; CHECK-NEXT:    ret
325 entry:
326   %a = call <vscale x 1 x i16> @llvm.riscv.vmadd.mask.nxv1i16.nxv1i16(
327     <vscale x 1 x i16> %0,
328     <vscale x 1 x i16> %1,
329     <vscale x 1 x i16> %2,
330     <vscale x 1 x i1> %3,
331     iXLen %4, iXLen 0)
333   ret <vscale x 1 x i16> %a
336 declare <vscale x 2 x i16> @llvm.riscv.vmadd.nxv2i16.nxv2i16(
337   <vscale x 2 x i16>,
338   <vscale x 2 x i16>,
339   <vscale x 2 x i16>,
340   iXLen,
341   iXLen);
343 define <vscale x 2 x i16>  @intrinsic_vmadd_vv_nxv2i16_nxv2i16_nxv2i16(<vscale x 2 x i16> %0, <vscale x 2 x i16> %1, <vscale x 2 x i16> %2, iXLen %3) nounwind {
344 ; CHECK-LABEL: intrinsic_vmadd_vv_nxv2i16_nxv2i16_nxv2i16:
345 ; CHECK:       # %bb.0: # %entry
346 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, tu, ma
347 ; CHECK-NEXT:    vmadd.vv v8, v9, v10
348 ; CHECK-NEXT:    ret
349 entry:
350   %a = call <vscale x 2 x i16> @llvm.riscv.vmadd.nxv2i16.nxv2i16(
351     <vscale x 2 x i16> %0,
352     <vscale x 2 x i16> %1,
353     <vscale x 2 x i16> %2,
354     iXLen %3, iXLen 0)
356   ret <vscale x 2 x i16> %a
359 declare <vscale x 2 x i16> @llvm.riscv.vmadd.mask.nxv2i16.nxv2i16(
360   <vscale x 2 x i16>,
361   <vscale x 2 x i16>,
362   <vscale x 2 x i16>,
363   <vscale x 2 x i1>,
364   iXLen, iXLen);
366 define <vscale x 2 x i16>  @intrinsic_vmadd_mask_vv_nxv2i16_nxv2i16_nxv2i16(<vscale x 2 x i16> %0, <vscale x 2 x i16> %1, <vscale x 2 x i16> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
367 ; CHECK-LABEL: intrinsic_vmadd_mask_vv_nxv2i16_nxv2i16_nxv2i16:
368 ; CHECK:       # %bb.0: # %entry
369 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, tu, mu
370 ; CHECK-NEXT:    vmadd.vv v8, v9, v10, v0.t
371 ; CHECK-NEXT:    ret
372 entry:
373   %a = call <vscale x 2 x i16> @llvm.riscv.vmadd.mask.nxv2i16.nxv2i16(
374     <vscale x 2 x i16> %0,
375     <vscale x 2 x i16> %1,
376     <vscale x 2 x i16> %2,
377     <vscale x 2 x i1> %3,
378     iXLen %4, iXLen 0)
380   ret <vscale x 2 x i16> %a
383 declare <vscale x 4 x i16> @llvm.riscv.vmadd.nxv4i16.nxv4i16(
384   <vscale x 4 x i16>,
385   <vscale x 4 x i16>,
386   <vscale x 4 x i16>,
387   iXLen,
388   iXLen);
390 define <vscale x 4 x i16>  @intrinsic_vmadd_vv_nxv4i16_nxv4i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 4 x i16> %1, <vscale x 4 x i16> %2, iXLen %3) nounwind {
391 ; CHECK-LABEL: intrinsic_vmadd_vv_nxv4i16_nxv4i16_nxv4i16:
392 ; CHECK:       # %bb.0: # %entry
393 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, tu, ma
394 ; CHECK-NEXT:    vmadd.vv v8, v9, v10
395 ; CHECK-NEXT:    ret
396 entry:
397   %a = call <vscale x 4 x i16> @llvm.riscv.vmadd.nxv4i16.nxv4i16(
398     <vscale x 4 x i16> %0,
399     <vscale x 4 x i16> %1,
400     <vscale x 4 x i16> %2,
401     iXLen %3, iXLen 0)
403   ret <vscale x 4 x i16> %a
406 declare <vscale x 4 x i16> @llvm.riscv.vmadd.mask.nxv4i16.nxv4i16(
407   <vscale x 4 x i16>,
408   <vscale x 4 x i16>,
409   <vscale x 4 x i16>,
410   <vscale x 4 x i1>,
411   iXLen, iXLen);
413 define <vscale x 4 x i16>  @intrinsic_vmadd_mask_vv_nxv4i16_nxv4i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 4 x i16> %1, <vscale x 4 x i16> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
414 ; CHECK-LABEL: intrinsic_vmadd_mask_vv_nxv4i16_nxv4i16_nxv4i16:
415 ; CHECK:       # %bb.0: # %entry
416 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, tu, mu
417 ; CHECK-NEXT:    vmadd.vv v8, v9, v10, v0.t
418 ; CHECK-NEXT:    ret
419 entry:
420   %a = call <vscale x 4 x i16> @llvm.riscv.vmadd.mask.nxv4i16.nxv4i16(
421     <vscale x 4 x i16> %0,
422     <vscale x 4 x i16> %1,
423     <vscale x 4 x i16> %2,
424     <vscale x 4 x i1> %3,
425     iXLen %4, iXLen 0)
427   ret <vscale x 4 x i16> %a
430 declare <vscale x 8 x i16> @llvm.riscv.vmadd.nxv8i16.nxv8i16(
431   <vscale x 8 x i16>,
432   <vscale x 8 x i16>,
433   <vscale x 8 x i16>,
434   iXLen,
435   iXLen);
437 define <vscale x 8 x i16>  @intrinsic_vmadd_vv_nxv8i16_nxv8i16_nxv8i16(<vscale x 8 x i16> %0, <vscale x 8 x i16> %1, <vscale x 8 x i16> %2, iXLen %3) nounwind {
438 ; CHECK-LABEL: intrinsic_vmadd_vv_nxv8i16_nxv8i16_nxv8i16:
439 ; CHECK:       # %bb.0: # %entry
440 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, tu, ma
441 ; CHECK-NEXT:    vmadd.vv v8, v10, v12
442 ; CHECK-NEXT:    ret
443 entry:
444   %a = call <vscale x 8 x i16> @llvm.riscv.vmadd.nxv8i16.nxv8i16(
445     <vscale x 8 x i16> %0,
446     <vscale x 8 x i16> %1,
447     <vscale x 8 x i16> %2,
448     iXLen %3, iXLen 0)
450   ret <vscale x 8 x i16> %a
453 declare <vscale x 8 x i16> @llvm.riscv.vmadd.mask.nxv8i16.nxv8i16(
454   <vscale x 8 x i16>,
455   <vscale x 8 x i16>,
456   <vscale x 8 x i16>,
457   <vscale x 8 x i1>,
458   iXLen, iXLen);
460 define <vscale x 8 x i16>  @intrinsic_vmadd_mask_vv_nxv8i16_nxv8i16_nxv8i16(<vscale x 8 x i16> %0, <vscale x 8 x i16> %1, <vscale x 8 x i16> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
461 ; CHECK-LABEL: intrinsic_vmadd_mask_vv_nxv8i16_nxv8i16_nxv8i16:
462 ; CHECK:       # %bb.0: # %entry
463 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, tu, mu
464 ; CHECK-NEXT:    vmadd.vv v8, v10, v12, v0.t
465 ; CHECK-NEXT:    ret
466 entry:
467   %a = call <vscale x 8 x i16> @llvm.riscv.vmadd.mask.nxv8i16.nxv8i16(
468     <vscale x 8 x i16> %0,
469     <vscale x 8 x i16> %1,
470     <vscale x 8 x i16> %2,
471     <vscale x 8 x i1> %3,
472     iXLen %4, iXLen 0)
474   ret <vscale x 8 x i16> %a
477 declare <vscale x 16 x i16> @llvm.riscv.vmadd.nxv16i16.nxv16i16(
478   <vscale x 16 x i16>,
479   <vscale x 16 x i16>,
480   <vscale x 16 x i16>,
481   iXLen,
482   iXLen);
484 define <vscale x 16 x i16>  @intrinsic_vmadd_vv_nxv16i16_nxv16i16_nxv16i16(<vscale x 16 x i16> %0, <vscale x 16 x i16> %1, <vscale x 16 x i16> %2, iXLen %3) nounwind {
485 ; CHECK-LABEL: intrinsic_vmadd_vv_nxv16i16_nxv16i16_nxv16i16:
486 ; CHECK:       # %bb.0: # %entry
487 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, tu, ma
488 ; CHECK-NEXT:    vmadd.vv v8, v12, v16
489 ; CHECK-NEXT:    ret
490 entry:
491   %a = call <vscale x 16 x i16> @llvm.riscv.vmadd.nxv16i16.nxv16i16(
492     <vscale x 16 x i16> %0,
493     <vscale x 16 x i16> %1,
494     <vscale x 16 x i16> %2,
495     iXLen %3, iXLen 0)
497   ret <vscale x 16 x i16> %a
500 declare <vscale x 16 x i16> @llvm.riscv.vmadd.mask.nxv16i16.nxv16i16(
501   <vscale x 16 x i16>,
502   <vscale x 16 x i16>,
503   <vscale x 16 x i16>,
504   <vscale x 16 x i1>,
505   iXLen, iXLen);
507 define <vscale x 16 x i16>  @intrinsic_vmadd_mask_vv_nxv16i16_nxv16i16_nxv16i16(<vscale x 16 x i16> %0, <vscale x 16 x i16> %1, <vscale x 16 x i16> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
508 ; CHECK-LABEL: intrinsic_vmadd_mask_vv_nxv16i16_nxv16i16_nxv16i16:
509 ; CHECK:       # %bb.0: # %entry
510 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, tu, mu
511 ; CHECK-NEXT:    vmadd.vv v8, v12, v16, v0.t
512 ; CHECK-NEXT:    ret
513 entry:
514   %a = call <vscale x 16 x i16> @llvm.riscv.vmadd.mask.nxv16i16.nxv16i16(
515     <vscale x 16 x i16> %0,
516     <vscale x 16 x i16> %1,
517     <vscale x 16 x i16> %2,
518     <vscale x 16 x i1> %3,
519     iXLen %4, iXLen 0)
521   ret <vscale x 16 x i16> %a
524 declare <vscale x 1 x i32> @llvm.riscv.vmadd.nxv1i32.nxv1i32(
525   <vscale x 1 x i32>,
526   <vscale x 1 x i32>,
527   <vscale x 1 x i32>,
528   iXLen,
529   iXLen);
531 define <vscale x 1 x i32>  @intrinsic_vmadd_vv_nxv1i32_nxv1i32_nxv1i32(<vscale x 1 x i32> %0, <vscale x 1 x i32> %1, <vscale x 1 x i32> %2, iXLen %3) nounwind {
532 ; CHECK-LABEL: intrinsic_vmadd_vv_nxv1i32_nxv1i32_nxv1i32:
533 ; CHECK:       # %bb.0: # %entry
534 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, tu, ma
535 ; CHECK-NEXT:    vmadd.vv v8, v9, v10
536 ; CHECK-NEXT:    ret
537 entry:
538   %a = call <vscale x 1 x i32> @llvm.riscv.vmadd.nxv1i32.nxv1i32(
539     <vscale x 1 x i32> %0,
540     <vscale x 1 x i32> %1,
541     <vscale x 1 x i32> %2,
542     iXLen %3, iXLen 0)
544   ret <vscale x 1 x i32> %a
547 declare <vscale x 1 x i32> @llvm.riscv.vmadd.mask.nxv1i32.nxv1i32(
548   <vscale x 1 x i32>,
549   <vscale x 1 x i32>,
550   <vscale x 1 x i32>,
551   <vscale x 1 x i1>,
552   iXLen, iXLen);
554 define <vscale x 1 x i32>  @intrinsic_vmadd_mask_vv_nxv1i32_nxv1i32_nxv1i32(<vscale x 1 x i32> %0, <vscale x 1 x i32> %1, <vscale x 1 x i32> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
555 ; CHECK-LABEL: intrinsic_vmadd_mask_vv_nxv1i32_nxv1i32_nxv1i32:
556 ; CHECK:       # %bb.0: # %entry
557 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, tu, mu
558 ; CHECK-NEXT:    vmadd.vv v8, v9, v10, v0.t
559 ; CHECK-NEXT:    ret
560 entry:
561   %a = call <vscale x 1 x i32> @llvm.riscv.vmadd.mask.nxv1i32.nxv1i32(
562     <vscale x 1 x i32> %0,
563     <vscale x 1 x i32> %1,
564     <vscale x 1 x i32> %2,
565     <vscale x 1 x i1> %3,
566     iXLen %4, iXLen 0)
568   ret <vscale x 1 x i32> %a
571 declare <vscale x 2 x i32> @llvm.riscv.vmadd.nxv2i32.nxv2i32(
572   <vscale x 2 x i32>,
573   <vscale x 2 x i32>,
574   <vscale x 2 x i32>,
575   iXLen,
576   iXLen);
578 define <vscale x 2 x i32>  @intrinsic_vmadd_vv_nxv2i32_nxv2i32_nxv2i32(<vscale x 2 x i32> %0, <vscale x 2 x i32> %1, <vscale x 2 x i32> %2, iXLen %3) nounwind {
579 ; CHECK-LABEL: intrinsic_vmadd_vv_nxv2i32_nxv2i32_nxv2i32:
580 ; CHECK:       # %bb.0: # %entry
581 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, tu, ma
582 ; CHECK-NEXT:    vmadd.vv v8, v9, v10
583 ; CHECK-NEXT:    ret
584 entry:
585   %a = call <vscale x 2 x i32> @llvm.riscv.vmadd.nxv2i32.nxv2i32(
586     <vscale x 2 x i32> %0,
587     <vscale x 2 x i32> %1,
588     <vscale x 2 x i32> %2,
589     iXLen %3, iXLen 0)
591   ret <vscale x 2 x i32> %a
594 declare <vscale x 2 x i32> @llvm.riscv.vmadd.mask.nxv2i32.nxv2i32(
595   <vscale x 2 x i32>,
596   <vscale x 2 x i32>,
597   <vscale x 2 x i32>,
598   <vscale x 2 x i1>,
599   iXLen, iXLen);
601 define <vscale x 2 x i32>  @intrinsic_vmadd_mask_vv_nxv2i32_nxv2i32_nxv2i32(<vscale x 2 x i32> %0, <vscale x 2 x i32> %1, <vscale x 2 x i32> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
602 ; CHECK-LABEL: intrinsic_vmadd_mask_vv_nxv2i32_nxv2i32_nxv2i32:
603 ; CHECK:       # %bb.0: # %entry
604 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, tu, mu
605 ; CHECK-NEXT:    vmadd.vv v8, v9, v10, v0.t
606 ; CHECK-NEXT:    ret
607 entry:
608   %a = call <vscale x 2 x i32> @llvm.riscv.vmadd.mask.nxv2i32.nxv2i32(
609     <vscale x 2 x i32> %0,
610     <vscale x 2 x i32> %1,
611     <vscale x 2 x i32> %2,
612     <vscale x 2 x i1> %3,
613     iXLen %4, iXLen 0)
615   ret <vscale x 2 x i32> %a
618 declare <vscale x 4 x i32> @llvm.riscv.vmadd.nxv4i32.nxv4i32(
619   <vscale x 4 x i32>,
620   <vscale x 4 x i32>,
621   <vscale x 4 x i32>,
622   iXLen,
623   iXLen);
625 define <vscale x 4 x i32>  @intrinsic_vmadd_vv_nxv4i32_nxv4i32_nxv4i32(<vscale x 4 x i32> %0, <vscale x 4 x i32> %1, <vscale x 4 x i32> %2, iXLen %3) nounwind {
626 ; CHECK-LABEL: intrinsic_vmadd_vv_nxv4i32_nxv4i32_nxv4i32:
627 ; CHECK:       # %bb.0: # %entry
628 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, tu, ma
629 ; CHECK-NEXT:    vmadd.vv v8, v10, v12
630 ; CHECK-NEXT:    ret
631 entry:
632   %a = call <vscale x 4 x i32> @llvm.riscv.vmadd.nxv4i32.nxv4i32(
633     <vscale x 4 x i32> %0,
634     <vscale x 4 x i32> %1,
635     <vscale x 4 x i32> %2,
636     iXLen %3, iXLen 0)
638   ret <vscale x 4 x i32> %a
641 declare <vscale x 4 x i32> @llvm.riscv.vmadd.mask.nxv4i32.nxv4i32(
642   <vscale x 4 x i32>,
643   <vscale x 4 x i32>,
644   <vscale x 4 x i32>,
645   <vscale x 4 x i1>,
646   iXLen, iXLen);
648 define <vscale x 4 x i32>  @intrinsic_vmadd_mask_vv_nxv4i32_nxv4i32_nxv4i32(<vscale x 4 x i32> %0, <vscale x 4 x i32> %1, <vscale x 4 x i32> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
649 ; CHECK-LABEL: intrinsic_vmadd_mask_vv_nxv4i32_nxv4i32_nxv4i32:
650 ; CHECK:       # %bb.0: # %entry
651 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, tu, mu
652 ; CHECK-NEXT:    vmadd.vv v8, v10, v12, v0.t
653 ; CHECK-NEXT:    ret
654 entry:
655   %a = call <vscale x 4 x i32> @llvm.riscv.vmadd.mask.nxv4i32.nxv4i32(
656     <vscale x 4 x i32> %0,
657     <vscale x 4 x i32> %1,
658     <vscale x 4 x i32> %2,
659     <vscale x 4 x i1> %3,
660     iXLen %4, iXLen 0)
662   ret <vscale x 4 x i32> %a
665 declare <vscale x 8 x i32> @llvm.riscv.vmadd.nxv8i32.nxv8i32(
666   <vscale x 8 x i32>,
667   <vscale x 8 x i32>,
668   <vscale x 8 x i32>,
669   iXLen,
670   iXLen);
672 define <vscale x 8 x i32>  @intrinsic_vmadd_vv_nxv8i32_nxv8i32_nxv8i32(<vscale x 8 x i32> %0, <vscale x 8 x i32> %1, <vscale x 8 x i32> %2, iXLen %3) nounwind {
673 ; CHECK-LABEL: intrinsic_vmadd_vv_nxv8i32_nxv8i32_nxv8i32:
674 ; CHECK:       # %bb.0: # %entry
675 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, tu, ma
676 ; CHECK-NEXT:    vmadd.vv v8, v12, v16
677 ; CHECK-NEXT:    ret
678 entry:
679   %a = call <vscale x 8 x i32> @llvm.riscv.vmadd.nxv8i32.nxv8i32(
680     <vscale x 8 x i32> %0,
681     <vscale x 8 x i32> %1,
682     <vscale x 8 x i32> %2,
683     iXLen %3, iXLen 0)
685   ret <vscale x 8 x i32> %a
688 declare <vscale x 8 x i32> @llvm.riscv.vmadd.mask.nxv8i32.nxv8i32(
689   <vscale x 8 x i32>,
690   <vscale x 8 x i32>,
691   <vscale x 8 x i32>,
692   <vscale x 8 x i1>,
693   iXLen, iXLen);
695 define <vscale x 8 x i32>  @intrinsic_vmadd_mask_vv_nxv8i32_nxv8i32_nxv8i32(<vscale x 8 x i32> %0, <vscale x 8 x i32> %1, <vscale x 8 x i32> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
696 ; CHECK-LABEL: intrinsic_vmadd_mask_vv_nxv8i32_nxv8i32_nxv8i32:
697 ; CHECK:       # %bb.0: # %entry
698 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, tu, mu
699 ; CHECK-NEXT:    vmadd.vv v8, v12, v16, v0.t
700 ; CHECK-NEXT:    ret
701 entry:
702   %a = call <vscale x 8 x i32> @llvm.riscv.vmadd.mask.nxv8i32.nxv8i32(
703     <vscale x 8 x i32> %0,
704     <vscale x 8 x i32> %1,
705     <vscale x 8 x i32> %2,
706     <vscale x 8 x i1> %3,
707     iXLen %4, iXLen 0)
709   ret <vscale x 8 x i32> %a
712 declare <vscale x 1 x i64> @llvm.riscv.vmadd.nxv1i64.nxv1i64(
713   <vscale x 1 x i64>,
714   <vscale x 1 x i64>,
715   <vscale x 1 x i64>,
716   iXLen,
717   iXLen);
719 define <vscale x 1 x i64>  @intrinsic_vmadd_vv_nxv1i64_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, <vscale x 1 x i64> %2, iXLen %3) nounwind {
720 ; CHECK-LABEL: intrinsic_vmadd_vv_nxv1i64_nxv1i64_nxv1i64:
721 ; CHECK:       # %bb.0: # %entry
722 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, tu, ma
723 ; CHECK-NEXT:    vmadd.vv v8, v9, v10
724 ; CHECK-NEXT:    ret
725 entry:
726   %a = call <vscale x 1 x i64> @llvm.riscv.vmadd.nxv1i64.nxv1i64(
727     <vscale x 1 x i64> %0,
728     <vscale x 1 x i64> %1,
729     <vscale x 1 x i64> %2,
730     iXLen %3, iXLen 0)
732   ret <vscale x 1 x i64> %a
735 declare <vscale x 1 x i64> @llvm.riscv.vmadd.mask.nxv1i64.nxv1i64(
736   <vscale x 1 x i64>,
737   <vscale x 1 x i64>,
738   <vscale x 1 x i64>,
739   <vscale x 1 x i1>,
740   iXLen, iXLen);
742 define <vscale x 1 x i64>  @intrinsic_vmadd_mask_vv_nxv1i64_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, <vscale x 1 x i64> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
743 ; CHECK-LABEL: intrinsic_vmadd_mask_vv_nxv1i64_nxv1i64_nxv1i64:
744 ; CHECK:       # %bb.0: # %entry
745 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, tu, mu
746 ; CHECK-NEXT:    vmadd.vv v8, v9, v10, v0.t
747 ; CHECK-NEXT:    ret
748 entry:
749   %a = call <vscale x 1 x i64> @llvm.riscv.vmadd.mask.nxv1i64.nxv1i64(
750     <vscale x 1 x i64> %0,
751     <vscale x 1 x i64> %1,
752     <vscale x 1 x i64> %2,
753     <vscale x 1 x i1> %3,
754     iXLen %4, iXLen 0)
756   ret <vscale x 1 x i64> %a
759 declare <vscale x 2 x i64> @llvm.riscv.vmadd.nxv2i64.nxv2i64(
760   <vscale x 2 x i64>,
761   <vscale x 2 x i64>,
762   <vscale x 2 x i64>,
763   iXLen,
764   iXLen);
766 define <vscale x 2 x i64>  @intrinsic_vmadd_vv_nxv2i64_nxv2i64_nxv2i64(<vscale x 2 x i64> %0, <vscale x 2 x i64> %1, <vscale x 2 x i64> %2, iXLen %3) nounwind {
767 ; CHECK-LABEL: intrinsic_vmadd_vv_nxv2i64_nxv2i64_nxv2i64:
768 ; CHECK:       # %bb.0: # %entry
769 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, tu, ma
770 ; CHECK-NEXT:    vmadd.vv v8, v10, v12
771 ; CHECK-NEXT:    ret
772 entry:
773   %a = call <vscale x 2 x i64> @llvm.riscv.vmadd.nxv2i64.nxv2i64(
774     <vscale x 2 x i64> %0,
775     <vscale x 2 x i64> %1,
776     <vscale x 2 x i64> %2,
777     iXLen %3, iXLen 0)
779   ret <vscale x 2 x i64> %a
782 declare <vscale x 2 x i64> @llvm.riscv.vmadd.mask.nxv2i64.nxv2i64(
783   <vscale x 2 x i64>,
784   <vscale x 2 x i64>,
785   <vscale x 2 x i64>,
786   <vscale x 2 x i1>,
787   iXLen, iXLen);
789 define <vscale x 2 x i64>  @intrinsic_vmadd_mask_vv_nxv2i64_nxv2i64_nxv2i64(<vscale x 2 x i64> %0, <vscale x 2 x i64> %1, <vscale x 2 x i64> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
790 ; CHECK-LABEL: intrinsic_vmadd_mask_vv_nxv2i64_nxv2i64_nxv2i64:
791 ; CHECK:       # %bb.0: # %entry
792 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, tu, mu
793 ; CHECK-NEXT:    vmadd.vv v8, v10, v12, v0.t
794 ; CHECK-NEXT:    ret
795 entry:
796   %a = call <vscale x 2 x i64> @llvm.riscv.vmadd.mask.nxv2i64.nxv2i64(
797     <vscale x 2 x i64> %0,
798     <vscale x 2 x i64> %1,
799     <vscale x 2 x i64> %2,
800     <vscale x 2 x i1> %3,
801     iXLen %4, iXLen 0)
803   ret <vscale x 2 x i64> %a
806 declare <vscale x 4 x i64> @llvm.riscv.vmadd.nxv4i64.nxv4i64(
807   <vscale x 4 x i64>,
808   <vscale x 4 x i64>,
809   <vscale x 4 x i64>,
810   iXLen,
811   iXLen);
813 define <vscale x 4 x i64>  @intrinsic_vmadd_vv_nxv4i64_nxv4i64_nxv4i64(<vscale x 4 x i64> %0, <vscale x 4 x i64> %1, <vscale x 4 x i64> %2, iXLen %3) nounwind {
814 ; CHECK-LABEL: intrinsic_vmadd_vv_nxv4i64_nxv4i64_nxv4i64:
815 ; CHECK:       # %bb.0: # %entry
816 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, tu, ma
817 ; CHECK-NEXT:    vmadd.vv v8, v12, v16
818 ; CHECK-NEXT:    ret
819 entry:
820   %a = call <vscale x 4 x i64> @llvm.riscv.vmadd.nxv4i64.nxv4i64(
821     <vscale x 4 x i64> %0,
822     <vscale x 4 x i64> %1,
823     <vscale x 4 x i64> %2,
824     iXLen %3, iXLen 0)
826   ret <vscale x 4 x i64> %a
829 declare <vscale x 4 x i64> @llvm.riscv.vmadd.mask.nxv4i64.nxv4i64(
830   <vscale x 4 x i64>,
831   <vscale x 4 x i64>,
832   <vscale x 4 x i64>,
833   <vscale x 4 x i1>,
834   iXLen, iXLen);
836 define <vscale x 4 x i64>  @intrinsic_vmadd_mask_vv_nxv4i64_nxv4i64_nxv4i64(<vscale x 4 x i64> %0, <vscale x 4 x i64> %1, <vscale x 4 x i64> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
837 ; CHECK-LABEL: intrinsic_vmadd_mask_vv_nxv4i64_nxv4i64_nxv4i64:
838 ; CHECK:       # %bb.0: # %entry
839 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, tu, mu
840 ; CHECK-NEXT:    vmadd.vv v8, v12, v16, v0.t
841 ; CHECK-NEXT:    ret
842 entry:
843   %a = call <vscale x 4 x i64> @llvm.riscv.vmadd.mask.nxv4i64.nxv4i64(
844     <vscale x 4 x i64> %0,
845     <vscale x 4 x i64> %1,
846     <vscale x 4 x i64> %2,
847     <vscale x 4 x i1> %3,
848     iXLen %4, iXLen 0)
850   ret <vscale x 4 x i64> %a
853 declare <vscale x 1 x i8> @llvm.riscv.vmadd.nxv1i8.i8(
854   <vscale x 1 x i8>,
855   i8,
856   <vscale x 1 x i8>,
857   iXLen,
858   iXLen);
860 define <vscale x 1 x i8>  @intrinsic_vmadd_vx_nxv1i8_i8_nxv1i8(<vscale x 1 x i8> %0, i8 %1, <vscale x 1 x i8> %2, iXLen %3) nounwind {
861 ; CHECK-LABEL: intrinsic_vmadd_vx_nxv1i8_i8_nxv1i8:
862 ; CHECK:       # %bb.0: # %entry
863 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, tu, ma
864 ; CHECK-NEXT:    vmadd.vx v8, a0, v9
865 ; CHECK-NEXT:    ret
866 entry:
867   %a = call <vscale x 1 x i8> @llvm.riscv.vmadd.nxv1i8.i8(
868     <vscale x 1 x i8> %0,
869     i8 %1,
870     <vscale x 1 x i8> %2,
871     iXLen %3, iXLen 0)
873   ret <vscale x 1 x i8> %a
876 declare <vscale x 1 x i8> @llvm.riscv.vmadd.mask.nxv1i8.i8(
877   <vscale x 1 x i8>,
878   i8,
879   <vscale x 1 x i8>,
880   <vscale x 1 x i1>,
881   iXLen, iXLen);
883 define <vscale x 1 x i8> @intrinsic_vmadd_mask_vx_nxv1i8_i8_nxv1i8(<vscale x 1 x i8> %0, i8 %1, <vscale x 1 x i8> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
884 ; CHECK-LABEL: intrinsic_vmadd_mask_vx_nxv1i8_i8_nxv1i8:
885 ; CHECK:       # %bb.0: # %entry
886 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, tu, mu
887 ; CHECK-NEXT:    vmadd.vx v8, a0, v9, v0.t
888 ; CHECK-NEXT:    ret
889 entry:
890   %a = call <vscale x 1 x i8> @llvm.riscv.vmadd.mask.nxv1i8.i8(
891     <vscale x 1 x i8> %0,
892     i8 %1,
893     <vscale x 1 x i8> %2,
894     <vscale x 1 x i1> %3,
895     iXLen %4, iXLen 0)
897   ret <vscale x 1 x i8> %a
900 declare <vscale x 2 x i8> @llvm.riscv.vmadd.nxv2i8.i8(
901   <vscale x 2 x i8>,
902   i8,
903   <vscale x 2 x i8>,
904   iXLen,
905   iXLen);
907 define <vscale x 2 x i8>  @intrinsic_vmadd_vx_nxv2i8_i8_nxv2i8(<vscale x 2 x i8> %0, i8 %1, <vscale x 2 x i8> %2, iXLen %3) nounwind {
908 ; CHECK-LABEL: intrinsic_vmadd_vx_nxv2i8_i8_nxv2i8:
909 ; CHECK:       # %bb.0: # %entry
910 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, tu, ma
911 ; CHECK-NEXT:    vmadd.vx v8, a0, v9
912 ; CHECK-NEXT:    ret
913 entry:
914   %a = call <vscale x 2 x i8> @llvm.riscv.vmadd.nxv2i8.i8(
915     <vscale x 2 x i8> %0,
916     i8 %1,
917     <vscale x 2 x i8> %2,
918     iXLen %3, iXLen 0)
920   ret <vscale x 2 x i8> %a
923 declare <vscale x 2 x i8> @llvm.riscv.vmadd.mask.nxv2i8.i8(
924   <vscale x 2 x i8>,
925   i8,
926   <vscale x 2 x i8>,
927   <vscale x 2 x i1>,
928   iXLen, iXLen);
930 define <vscale x 2 x i8> @intrinsic_vmadd_mask_vx_nxv2i8_i8_nxv2i8(<vscale x 2 x i8> %0, i8 %1, <vscale x 2 x i8> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
931 ; CHECK-LABEL: intrinsic_vmadd_mask_vx_nxv2i8_i8_nxv2i8:
932 ; CHECK:       # %bb.0: # %entry
933 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, tu, mu
934 ; CHECK-NEXT:    vmadd.vx v8, a0, v9, v0.t
935 ; CHECK-NEXT:    ret
936 entry:
937   %a = call <vscale x 2 x i8> @llvm.riscv.vmadd.mask.nxv2i8.i8(
938     <vscale x 2 x i8> %0,
939     i8 %1,
940     <vscale x 2 x i8> %2,
941     <vscale x 2 x i1> %3,
942     iXLen %4, iXLen 0)
944   ret <vscale x 2 x i8> %a
947 declare <vscale x 4 x i8> @llvm.riscv.vmadd.nxv4i8.i8(
948   <vscale x 4 x i8>,
949   i8,
950   <vscale x 4 x i8>,
951   iXLen,
952   iXLen);
954 define <vscale x 4 x i8>  @intrinsic_vmadd_vx_nxv4i8_i8_nxv4i8(<vscale x 4 x i8> %0, i8 %1, <vscale x 4 x i8> %2, iXLen %3) nounwind {
955 ; CHECK-LABEL: intrinsic_vmadd_vx_nxv4i8_i8_nxv4i8:
956 ; CHECK:       # %bb.0: # %entry
957 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, tu, ma
958 ; CHECK-NEXT:    vmadd.vx v8, a0, v9
959 ; CHECK-NEXT:    ret
960 entry:
961   %a = call <vscale x 4 x i8> @llvm.riscv.vmadd.nxv4i8.i8(
962     <vscale x 4 x i8> %0,
963     i8 %1,
964     <vscale x 4 x i8> %2,
965     iXLen %3, iXLen 0)
967   ret <vscale x 4 x i8> %a
970 declare <vscale x 4 x i8> @llvm.riscv.vmadd.mask.nxv4i8.i8(
971   <vscale x 4 x i8>,
972   i8,
973   <vscale x 4 x i8>,
974   <vscale x 4 x i1>,
975   iXLen, iXLen);
977 define <vscale x 4 x i8> @intrinsic_vmadd_mask_vx_nxv4i8_i8_nxv4i8(<vscale x 4 x i8> %0, i8 %1, <vscale x 4 x i8> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
978 ; CHECK-LABEL: intrinsic_vmadd_mask_vx_nxv4i8_i8_nxv4i8:
979 ; CHECK:       # %bb.0: # %entry
980 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, tu, mu
981 ; CHECK-NEXT:    vmadd.vx v8, a0, v9, v0.t
982 ; CHECK-NEXT:    ret
983 entry:
984   %a = call <vscale x 4 x i8> @llvm.riscv.vmadd.mask.nxv4i8.i8(
985     <vscale x 4 x i8> %0,
986     i8 %1,
987     <vscale x 4 x i8> %2,
988     <vscale x 4 x i1> %3,
989     iXLen %4, iXLen 0)
991   ret <vscale x 4 x i8> %a
994 declare <vscale x 8 x i8> @llvm.riscv.vmadd.nxv8i8.i8(
995   <vscale x 8 x i8>,
996   i8,
997   <vscale x 8 x i8>,
998   iXLen,
999   iXLen);
1001 define <vscale x 8 x i8>  @intrinsic_vmadd_vx_nxv8i8_i8_nxv8i8(<vscale x 8 x i8> %0, i8 %1, <vscale x 8 x i8> %2, iXLen %3) nounwind {
1002 ; CHECK-LABEL: intrinsic_vmadd_vx_nxv8i8_i8_nxv8i8:
1003 ; CHECK:       # %bb.0: # %entry
1004 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, tu, ma
1005 ; CHECK-NEXT:    vmadd.vx v8, a0, v9
1006 ; CHECK-NEXT:    ret
1007 entry:
1008   %a = call <vscale x 8 x i8> @llvm.riscv.vmadd.nxv8i8.i8(
1009     <vscale x 8 x i8> %0,
1010     i8 %1,
1011     <vscale x 8 x i8> %2,
1012     iXLen %3, iXLen 0)
1014   ret <vscale x 8 x i8> %a
1017 declare <vscale x 8 x i8> @llvm.riscv.vmadd.mask.nxv8i8.i8(
1018   <vscale x 8 x i8>,
1019   i8,
1020   <vscale x 8 x i8>,
1021   <vscale x 8 x i1>,
1022   iXLen, iXLen);
1024 define <vscale x 8 x i8> @intrinsic_vmadd_mask_vx_nxv8i8_i8_nxv8i8(<vscale x 8 x i8> %0, i8 %1, <vscale x 8 x i8> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1025 ; CHECK-LABEL: intrinsic_vmadd_mask_vx_nxv8i8_i8_nxv8i8:
1026 ; CHECK:       # %bb.0: # %entry
1027 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, tu, mu
1028 ; CHECK-NEXT:    vmadd.vx v8, a0, v9, v0.t
1029 ; CHECK-NEXT:    ret
1030 entry:
1031   %a = call <vscale x 8 x i8> @llvm.riscv.vmadd.mask.nxv8i8.i8(
1032     <vscale x 8 x i8> %0,
1033     i8 %1,
1034     <vscale x 8 x i8> %2,
1035     <vscale x 8 x i1> %3,
1036     iXLen %4, iXLen 0)
1038   ret <vscale x 8 x i8> %a
1041 declare <vscale x 16 x i8> @llvm.riscv.vmadd.nxv16i8.i8(
1042   <vscale x 16 x i8>,
1043   i8,
1044   <vscale x 16 x i8>,
1045   iXLen,
1046   iXLen);
1048 define <vscale x 16 x i8>  @intrinsic_vmadd_vx_nxv16i8_i8_nxv16i8(<vscale x 16 x i8> %0, i8 %1, <vscale x 16 x i8> %2, iXLen %3) nounwind {
1049 ; CHECK-LABEL: intrinsic_vmadd_vx_nxv16i8_i8_nxv16i8:
1050 ; CHECK:       # %bb.0: # %entry
1051 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, tu, ma
1052 ; CHECK-NEXT:    vmadd.vx v8, a0, v10
1053 ; CHECK-NEXT:    ret
1054 entry:
1055   %a = call <vscale x 16 x i8> @llvm.riscv.vmadd.nxv16i8.i8(
1056     <vscale x 16 x i8> %0,
1057     i8 %1,
1058     <vscale x 16 x i8> %2,
1059     iXLen %3, iXLen 0)
1061   ret <vscale x 16 x i8> %a
1064 declare <vscale x 16 x i8> @llvm.riscv.vmadd.mask.nxv16i8.i8(
1065   <vscale x 16 x i8>,
1066   i8,
1067   <vscale x 16 x i8>,
1068   <vscale x 16 x i1>,
1069   iXLen, iXLen);
1071 define <vscale x 16 x i8> @intrinsic_vmadd_mask_vx_nxv16i8_i8_nxv16i8(<vscale x 16 x i8> %0, i8 %1, <vscale x 16 x i8> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
1072 ; CHECK-LABEL: intrinsic_vmadd_mask_vx_nxv16i8_i8_nxv16i8:
1073 ; CHECK:       # %bb.0: # %entry
1074 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, tu, mu
1075 ; CHECK-NEXT:    vmadd.vx v8, a0, v10, v0.t
1076 ; CHECK-NEXT:    ret
1077 entry:
1078   %a = call <vscale x 16 x i8> @llvm.riscv.vmadd.mask.nxv16i8.i8(
1079     <vscale x 16 x i8> %0,
1080     i8 %1,
1081     <vscale x 16 x i8> %2,
1082     <vscale x 16 x i1> %3,
1083     iXLen %4, iXLen 0)
1085   ret <vscale x 16 x i8> %a
1088 declare <vscale x 32 x i8> @llvm.riscv.vmadd.nxv32i8.i8(
1089   <vscale x 32 x i8>,
1090   i8,
1091   <vscale x 32 x i8>,
1092   iXLen,
1093   iXLen);
1095 define <vscale x 32 x i8>  @intrinsic_vmadd_vx_nxv32i8_i8_nxv32i8(<vscale x 32 x i8> %0, i8 %1, <vscale x 32 x i8> %2, iXLen %3) nounwind {
1096 ; CHECK-LABEL: intrinsic_vmadd_vx_nxv32i8_i8_nxv32i8:
1097 ; CHECK:       # %bb.0: # %entry
1098 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, tu, ma
1099 ; CHECK-NEXT:    vmadd.vx v8, a0, v12
1100 ; CHECK-NEXT:    ret
1101 entry:
1102   %a = call <vscale x 32 x i8> @llvm.riscv.vmadd.nxv32i8.i8(
1103     <vscale x 32 x i8> %0,
1104     i8 %1,
1105     <vscale x 32 x i8> %2,
1106     iXLen %3, iXLen 0)
1108   ret <vscale x 32 x i8> %a
1111 declare <vscale x 32 x i8> @llvm.riscv.vmadd.mask.nxv32i8.i8(
1112   <vscale x 32 x i8>,
1113   i8,
1114   <vscale x 32 x i8>,
1115   <vscale x 32 x i1>,
1116   iXLen, iXLen);
1118 define <vscale x 32 x i8> @intrinsic_vmadd_mask_vx_nxv32i8_i8_nxv32i8(<vscale x 32 x i8> %0, i8 %1, <vscale x 32 x i8> %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
1119 ; CHECK-LABEL: intrinsic_vmadd_mask_vx_nxv32i8_i8_nxv32i8:
1120 ; CHECK:       # %bb.0: # %entry
1121 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, tu, mu
1122 ; CHECK-NEXT:    vmadd.vx v8, a0, v12, v0.t
1123 ; CHECK-NEXT:    ret
1124 entry:
1125   %a = call <vscale x 32 x i8> @llvm.riscv.vmadd.mask.nxv32i8.i8(
1126     <vscale x 32 x i8> %0,
1127     i8 %1,
1128     <vscale x 32 x i8> %2,
1129     <vscale x 32 x i1> %3,
1130     iXLen %4, iXLen 0)
1132   ret <vscale x 32 x i8> %a
1135 declare <vscale x 1 x i16> @llvm.riscv.vmadd.nxv1i16.i16(
1136   <vscale x 1 x i16>,
1137   i16,
1138   <vscale x 1 x i16>,
1139   iXLen,
1140   iXLen);
1142 define <vscale x 1 x i16>  @intrinsic_vmadd_vx_nxv1i16_i16_nxv1i16(<vscale x 1 x i16> %0, i16 %1, <vscale x 1 x i16> %2, iXLen %3) nounwind {
1143 ; CHECK-LABEL: intrinsic_vmadd_vx_nxv1i16_i16_nxv1i16:
1144 ; CHECK:       # %bb.0: # %entry
1145 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, tu, ma
1146 ; CHECK-NEXT:    vmadd.vx v8, a0, v9
1147 ; CHECK-NEXT:    ret
1148 entry:
1149   %a = call <vscale x 1 x i16> @llvm.riscv.vmadd.nxv1i16.i16(
1150     <vscale x 1 x i16> %0,
1151     i16 %1,
1152     <vscale x 1 x i16> %2,
1153     iXLen %3, iXLen 0)
1155   ret <vscale x 1 x i16> %a
1158 declare <vscale x 1 x i16> @llvm.riscv.vmadd.mask.nxv1i16.i16(
1159   <vscale x 1 x i16>,
1160   i16,
1161   <vscale x 1 x i16>,
1162   <vscale x 1 x i1>,
1163   iXLen, iXLen);
1165 define <vscale x 1 x i16> @intrinsic_vmadd_mask_vx_nxv1i16_i16_nxv1i16(<vscale x 1 x i16> %0, i16 %1, <vscale x 1 x i16> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
1166 ; CHECK-LABEL: intrinsic_vmadd_mask_vx_nxv1i16_i16_nxv1i16:
1167 ; CHECK:       # %bb.0: # %entry
1168 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, tu, mu
1169 ; CHECK-NEXT:    vmadd.vx v8, a0, v9, v0.t
1170 ; CHECK-NEXT:    ret
1171 entry:
1172   %a = call <vscale x 1 x i16> @llvm.riscv.vmadd.mask.nxv1i16.i16(
1173     <vscale x 1 x i16> %0,
1174     i16 %1,
1175     <vscale x 1 x i16> %2,
1176     <vscale x 1 x i1> %3,
1177     iXLen %4, iXLen 0)
1179   ret <vscale x 1 x i16> %a
1182 declare <vscale x 2 x i16> @llvm.riscv.vmadd.nxv2i16.i16(
1183   <vscale x 2 x i16>,
1184   i16,
1185   <vscale x 2 x i16>,
1186   iXLen,
1187   iXLen);
1189 define <vscale x 2 x i16>  @intrinsic_vmadd_vx_nxv2i16_i16_nxv2i16(<vscale x 2 x i16> %0, i16 %1, <vscale x 2 x i16> %2, iXLen %3) nounwind {
1190 ; CHECK-LABEL: intrinsic_vmadd_vx_nxv2i16_i16_nxv2i16:
1191 ; CHECK:       # %bb.0: # %entry
1192 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, tu, ma
1193 ; CHECK-NEXT:    vmadd.vx v8, a0, v9
1194 ; CHECK-NEXT:    ret
1195 entry:
1196   %a = call <vscale x 2 x i16> @llvm.riscv.vmadd.nxv2i16.i16(
1197     <vscale x 2 x i16> %0,
1198     i16 %1,
1199     <vscale x 2 x i16> %2,
1200     iXLen %3, iXLen 0)
1202   ret <vscale x 2 x i16> %a
1205 declare <vscale x 2 x i16> @llvm.riscv.vmadd.mask.nxv2i16.i16(
1206   <vscale x 2 x i16>,
1207   i16,
1208   <vscale x 2 x i16>,
1209   <vscale x 2 x i1>,
1210   iXLen, iXLen);
1212 define <vscale x 2 x i16> @intrinsic_vmadd_mask_vx_nxv2i16_i16_nxv2i16(<vscale x 2 x i16> %0, i16 %1, <vscale x 2 x i16> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
1213 ; CHECK-LABEL: intrinsic_vmadd_mask_vx_nxv2i16_i16_nxv2i16:
1214 ; CHECK:       # %bb.0: # %entry
1215 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, tu, mu
1216 ; CHECK-NEXT:    vmadd.vx v8, a0, v9, v0.t
1217 ; CHECK-NEXT:    ret
1218 entry:
1219   %a = call <vscale x 2 x i16> @llvm.riscv.vmadd.mask.nxv2i16.i16(
1220     <vscale x 2 x i16> %0,
1221     i16 %1,
1222     <vscale x 2 x i16> %2,
1223     <vscale x 2 x i1> %3,
1224     iXLen %4, iXLen 0)
1226   ret <vscale x 2 x i16> %a
1229 declare <vscale x 4 x i16> @llvm.riscv.vmadd.nxv4i16.i16(
1230   <vscale x 4 x i16>,
1231   i16,
1232   <vscale x 4 x i16>,
1233   iXLen,
1234   iXLen);
1236 define <vscale x 4 x i16>  @intrinsic_vmadd_vx_nxv4i16_i16_nxv4i16(<vscale x 4 x i16> %0, i16 %1, <vscale x 4 x i16> %2, iXLen %3) nounwind {
1237 ; CHECK-LABEL: intrinsic_vmadd_vx_nxv4i16_i16_nxv4i16:
1238 ; CHECK:       # %bb.0: # %entry
1239 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, tu, ma
1240 ; CHECK-NEXT:    vmadd.vx v8, a0, v9
1241 ; CHECK-NEXT:    ret
1242 entry:
1243   %a = call <vscale x 4 x i16> @llvm.riscv.vmadd.nxv4i16.i16(
1244     <vscale x 4 x i16> %0,
1245     i16 %1,
1246     <vscale x 4 x i16> %2,
1247     iXLen %3, iXLen 0)
1249   ret <vscale x 4 x i16> %a
1252 declare <vscale x 4 x i16> @llvm.riscv.vmadd.mask.nxv4i16.i16(
1253   <vscale x 4 x i16>,
1254   i16,
1255   <vscale x 4 x i16>,
1256   <vscale x 4 x i1>,
1257   iXLen, iXLen);
1259 define <vscale x 4 x i16> @intrinsic_vmadd_mask_vx_nxv4i16_i16_nxv4i16(<vscale x 4 x i16> %0, i16 %1, <vscale x 4 x i16> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
1260 ; CHECK-LABEL: intrinsic_vmadd_mask_vx_nxv4i16_i16_nxv4i16:
1261 ; CHECK:       # %bb.0: # %entry
1262 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, tu, mu
1263 ; CHECK-NEXT:    vmadd.vx v8, a0, v9, v0.t
1264 ; CHECK-NEXT:    ret
1265 entry:
1266   %a = call <vscale x 4 x i16> @llvm.riscv.vmadd.mask.nxv4i16.i16(
1267     <vscale x 4 x i16> %0,
1268     i16 %1,
1269     <vscale x 4 x i16> %2,
1270     <vscale x 4 x i1> %3,
1271     iXLen %4, iXLen 0)
1273   ret <vscale x 4 x i16> %a
1276 declare <vscale x 8 x i16> @llvm.riscv.vmadd.nxv8i16.i16(
1277   <vscale x 8 x i16>,
1278   i16,
1279   <vscale x 8 x i16>,
1280   iXLen,
1281   iXLen);
1283 define <vscale x 8 x i16>  @intrinsic_vmadd_vx_nxv8i16_i16_nxv8i16(<vscale x 8 x i16> %0, i16 %1, <vscale x 8 x i16> %2, iXLen %3) nounwind {
1284 ; CHECK-LABEL: intrinsic_vmadd_vx_nxv8i16_i16_nxv8i16:
1285 ; CHECK:       # %bb.0: # %entry
1286 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, tu, ma
1287 ; CHECK-NEXT:    vmadd.vx v8, a0, v10
1288 ; CHECK-NEXT:    ret
1289 entry:
1290   %a = call <vscale x 8 x i16> @llvm.riscv.vmadd.nxv8i16.i16(
1291     <vscale x 8 x i16> %0,
1292     i16 %1,
1293     <vscale x 8 x i16> %2,
1294     iXLen %3, iXLen 0)
1296   ret <vscale x 8 x i16> %a
1299 declare <vscale x 8 x i16> @llvm.riscv.vmadd.mask.nxv8i16.i16(
1300   <vscale x 8 x i16>,
1301   i16,
1302   <vscale x 8 x i16>,
1303   <vscale x 8 x i1>,
1304   iXLen, iXLen);
1306 define <vscale x 8 x i16> @intrinsic_vmadd_mask_vx_nxv8i16_i16_nxv8i16(<vscale x 8 x i16> %0, i16 %1, <vscale x 8 x i16> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1307 ; CHECK-LABEL: intrinsic_vmadd_mask_vx_nxv8i16_i16_nxv8i16:
1308 ; CHECK:       # %bb.0: # %entry
1309 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, tu, mu
1310 ; CHECK-NEXT:    vmadd.vx v8, a0, v10, v0.t
1311 ; CHECK-NEXT:    ret
1312 entry:
1313   %a = call <vscale x 8 x i16> @llvm.riscv.vmadd.mask.nxv8i16.i16(
1314     <vscale x 8 x i16> %0,
1315     i16 %1,
1316     <vscale x 8 x i16> %2,
1317     <vscale x 8 x i1> %3,
1318     iXLen %4, iXLen 0)
1320   ret <vscale x 8 x i16> %a
1323 declare <vscale x 16 x i16> @llvm.riscv.vmadd.nxv16i16.i16(
1324   <vscale x 16 x i16>,
1325   i16,
1326   <vscale x 16 x i16>,
1327   iXLen,
1328   iXLen);
1330 define <vscale x 16 x i16>  @intrinsic_vmadd_vx_nxv16i16_i16_nxv16i16(<vscale x 16 x i16> %0, i16 %1, <vscale x 16 x i16> %2, iXLen %3) nounwind {
1331 ; CHECK-LABEL: intrinsic_vmadd_vx_nxv16i16_i16_nxv16i16:
1332 ; CHECK:       # %bb.0: # %entry
1333 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, tu, ma
1334 ; CHECK-NEXT:    vmadd.vx v8, a0, v12
1335 ; CHECK-NEXT:    ret
1336 entry:
1337   %a = call <vscale x 16 x i16> @llvm.riscv.vmadd.nxv16i16.i16(
1338     <vscale x 16 x i16> %0,
1339     i16 %1,
1340     <vscale x 16 x i16> %2,
1341     iXLen %3, iXLen 0)
1343   ret <vscale x 16 x i16> %a
1346 declare <vscale x 16 x i16> @llvm.riscv.vmadd.mask.nxv16i16.i16(
1347   <vscale x 16 x i16>,
1348   i16,
1349   <vscale x 16 x i16>,
1350   <vscale x 16 x i1>,
1351   iXLen, iXLen);
1353 define <vscale x 16 x i16> @intrinsic_vmadd_mask_vx_nxv16i16_i16_nxv16i16(<vscale x 16 x i16> %0, i16 %1, <vscale x 16 x i16> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
1354 ; CHECK-LABEL: intrinsic_vmadd_mask_vx_nxv16i16_i16_nxv16i16:
1355 ; CHECK:       # %bb.0: # %entry
1356 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, tu, mu
1357 ; CHECK-NEXT:    vmadd.vx v8, a0, v12, v0.t
1358 ; CHECK-NEXT:    ret
1359 entry:
1360   %a = call <vscale x 16 x i16> @llvm.riscv.vmadd.mask.nxv16i16.i16(
1361     <vscale x 16 x i16> %0,
1362     i16 %1,
1363     <vscale x 16 x i16> %2,
1364     <vscale x 16 x i1> %3,
1365     iXLen %4, iXLen 0)
1367   ret <vscale x 16 x i16> %a
1370 declare <vscale x 1 x i32> @llvm.riscv.vmadd.nxv1i32.i32(
1371   <vscale x 1 x i32>,
1372   i32,
1373   <vscale x 1 x i32>,
1374   iXLen,
1375   iXLen);
1377 define <vscale x 1 x i32>  @intrinsic_vmadd_vx_nxv1i32_i32_nxv1i32(<vscale x 1 x i32> %0, i32 %1, <vscale x 1 x i32> %2, iXLen %3) nounwind {
1378 ; CHECK-LABEL: intrinsic_vmadd_vx_nxv1i32_i32_nxv1i32:
1379 ; CHECK:       # %bb.0: # %entry
1380 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, tu, ma
1381 ; CHECK-NEXT:    vmadd.vx v8, a0, v9
1382 ; CHECK-NEXT:    ret
1383 entry:
1384   %a = call <vscale x 1 x i32> @llvm.riscv.vmadd.nxv1i32.i32(
1385     <vscale x 1 x i32> %0,
1386     i32 %1,
1387     <vscale x 1 x i32> %2,
1388     iXLen %3, iXLen 0)
1390   ret <vscale x 1 x i32> %a
1393 declare <vscale x 1 x i32> @llvm.riscv.vmadd.mask.nxv1i32.i32(
1394   <vscale x 1 x i32>,
1395   i32,
1396   <vscale x 1 x i32>,
1397   <vscale x 1 x i1>,
1398   iXLen, iXLen);
1400 define <vscale x 1 x i32> @intrinsic_vmadd_mask_vx_nxv1i32_i32_nxv1i32(<vscale x 1 x i32> %0, i32 %1, <vscale x 1 x i32> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
1401 ; CHECK-LABEL: intrinsic_vmadd_mask_vx_nxv1i32_i32_nxv1i32:
1402 ; CHECK:       # %bb.0: # %entry
1403 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, tu, mu
1404 ; CHECK-NEXT:    vmadd.vx v8, a0, v9, v0.t
1405 ; CHECK-NEXT:    ret
1406 entry:
1407   %a = call <vscale x 1 x i32> @llvm.riscv.vmadd.mask.nxv1i32.i32(
1408     <vscale x 1 x i32> %0,
1409     i32 %1,
1410     <vscale x 1 x i32> %2,
1411     <vscale x 1 x i1> %3,
1412     iXLen %4, iXLen 0)
1414   ret <vscale x 1 x i32> %a
1417 declare <vscale x 2 x i32> @llvm.riscv.vmadd.nxv2i32.i32(
1418   <vscale x 2 x i32>,
1419   i32,
1420   <vscale x 2 x i32>,
1421   iXLen,
1422   iXLen);
1424 define <vscale x 2 x i32>  @intrinsic_vmadd_vx_nxv2i32_i32_nxv2i32(<vscale x 2 x i32> %0, i32 %1, <vscale x 2 x i32> %2, iXLen %3) nounwind {
1425 ; CHECK-LABEL: intrinsic_vmadd_vx_nxv2i32_i32_nxv2i32:
1426 ; CHECK:       # %bb.0: # %entry
1427 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, tu, ma
1428 ; CHECK-NEXT:    vmadd.vx v8, a0, v9
1429 ; CHECK-NEXT:    ret
1430 entry:
1431   %a = call <vscale x 2 x i32> @llvm.riscv.vmadd.nxv2i32.i32(
1432     <vscale x 2 x i32> %0,
1433     i32 %1,
1434     <vscale x 2 x i32> %2,
1435     iXLen %3, iXLen 0)
1437   ret <vscale x 2 x i32> %a
1440 declare <vscale x 2 x i32> @llvm.riscv.vmadd.mask.nxv2i32.i32(
1441   <vscale x 2 x i32>,
1442   i32,
1443   <vscale x 2 x i32>,
1444   <vscale x 2 x i1>,
1445   iXLen, iXLen);
1447 define <vscale x 2 x i32> @intrinsic_vmadd_mask_vx_nxv2i32_i32_nxv2i32(<vscale x 2 x i32> %0, i32 %1, <vscale x 2 x i32> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
1448 ; CHECK-LABEL: intrinsic_vmadd_mask_vx_nxv2i32_i32_nxv2i32:
1449 ; CHECK:       # %bb.0: # %entry
1450 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, tu, mu
1451 ; CHECK-NEXT:    vmadd.vx v8, a0, v9, v0.t
1452 ; CHECK-NEXT:    ret
1453 entry:
1454   %a = call <vscale x 2 x i32> @llvm.riscv.vmadd.mask.nxv2i32.i32(
1455     <vscale x 2 x i32> %0,
1456     i32 %1,
1457     <vscale x 2 x i32> %2,
1458     <vscale x 2 x i1> %3,
1459     iXLen %4, iXLen 0)
1461   ret <vscale x 2 x i32> %a
1464 declare <vscale x 4 x i32> @llvm.riscv.vmadd.nxv4i32.i32(
1465   <vscale x 4 x i32>,
1466   i32,
1467   <vscale x 4 x i32>,
1468   iXLen,
1469   iXLen);
1471 define <vscale x 4 x i32>  @intrinsic_vmadd_vx_nxv4i32_i32_nxv4i32(<vscale x 4 x i32> %0, i32 %1, <vscale x 4 x i32> %2, iXLen %3) nounwind {
1472 ; CHECK-LABEL: intrinsic_vmadd_vx_nxv4i32_i32_nxv4i32:
1473 ; CHECK:       # %bb.0: # %entry
1474 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, tu, ma
1475 ; CHECK-NEXT:    vmadd.vx v8, a0, v10
1476 ; CHECK-NEXT:    ret
1477 entry:
1478   %a = call <vscale x 4 x i32> @llvm.riscv.vmadd.nxv4i32.i32(
1479     <vscale x 4 x i32> %0,
1480     i32 %1,
1481     <vscale x 4 x i32> %2,
1482     iXLen %3, iXLen 0)
1484   ret <vscale x 4 x i32> %a
1487 declare <vscale x 4 x i32> @llvm.riscv.vmadd.mask.nxv4i32.i32(
1488   <vscale x 4 x i32>,
1489   i32,
1490   <vscale x 4 x i32>,
1491   <vscale x 4 x i1>,
1492   iXLen, iXLen);
1494 define <vscale x 4 x i32> @intrinsic_vmadd_mask_vx_nxv4i32_i32_nxv4i32(<vscale x 4 x i32> %0, i32 %1, <vscale x 4 x i32> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
1495 ; CHECK-LABEL: intrinsic_vmadd_mask_vx_nxv4i32_i32_nxv4i32:
1496 ; CHECK:       # %bb.0: # %entry
1497 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, tu, mu
1498 ; CHECK-NEXT:    vmadd.vx v8, a0, v10, v0.t
1499 ; CHECK-NEXT:    ret
1500 entry:
1501   %a = call <vscale x 4 x i32> @llvm.riscv.vmadd.mask.nxv4i32.i32(
1502     <vscale x 4 x i32> %0,
1503     i32 %1,
1504     <vscale x 4 x i32> %2,
1505     <vscale x 4 x i1> %3,
1506     iXLen %4, iXLen 0)
1508   ret <vscale x 4 x i32> %a
1511 declare <vscale x 8 x i32> @llvm.riscv.vmadd.nxv8i32.i32(
1512   <vscale x 8 x i32>,
1513   i32,
1514   <vscale x 8 x i32>,
1515   iXLen,
1516   iXLen);
1518 define <vscale x 8 x i32>  @intrinsic_vmadd_vx_nxv8i32_i32_nxv8i32(<vscale x 8 x i32> %0, i32 %1, <vscale x 8 x i32> %2, iXLen %3) nounwind {
1519 ; CHECK-LABEL: intrinsic_vmadd_vx_nxv8i32_i32_nxv8i32:
1520 ; CHECK:       # %bb.0: # %entry
1521 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, tu, ma
1522 ; CHECK-NEXT:    vmadd.vx v8, a0, v12
1523 ; CHECK-NEXT:    ret
1524 entry:
1525   %a = call <vscale x 8 x i32> @llvm.riscv.vmadd.nxv8i32.i32(
1526     <vscale x 8 x i32> %0,
1527     i32 %1,
1528     <vscale x 8 x i32> %2,
1529     iXLen %3, iXLen 0)
1531   ret <vscale x 8 x i32> %a
1534 declare <vscale x 8 x i32> @llvm.riscv.vmadd.mask.nxv8i32.i32(
1535   <vscale x 8 x i32>,
1536   i32,
1537   <vscale x 8 x i32>,
1538   <vscale x 8 x i1>,
1539   iXLen, iXLen);
1541 define <vscale x 8 x i32> @intrinsic_vmadd_mask_vx_nxv8i32_i32_nxv8i32(<vscale x 8 x i32> %0, i32 %1, <vscale x 8 x i32> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1542 ; CHECK-LABEL: intrinsic_vmadd_mask_vx_nxv8i32_i32_nxv8i32:
1543 ; CHECK:       # %bb.0: # %entry
1544 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, tu, mu
1545 ; CHECK-NEXT:    vmadd.vx v8, a0, v12, v0.t
1546 ; CHECK-NEXT:    ret
1547 entry:
1548   %a = call <vscale x 8 x i32> @llvm.riscv.vmadd.mask.nxv8i32.i32(
1549     <vscale x 8 x i32> %0,
1550     i32 %1,
1551     <vscale x 8 x i32> %2,
1552     <vscale x 8 x i1> %3,
1553     iXLen %4, iXLen 0)
1555   ret <vscale x 8 x i32> %a
1558 declare <vscale x 1 x i64> @llvm.riscv.vmadd.nxv1i64.i64(
1559   <vscale x 1 x i64>,
1560   i64,
1561   <vscale x 1 x i64>,
1562   iXLen,
1563   iXLen);
1565 define <vscale x 1 x i64>  @intrinsic_vmadd_vx_nxv1i64_i64_nxv1i64(<vscale x 1 x i64> %0, i64 %1, <vscale x 1 x i64> %2, iXLen %3) nounwind {
1566 ; RV32-LABEL: intrinsic_vmadd_vx_nxv1i64_i64_nxv1i64:
1567 ; RV32:       # %bb.0: # %entry
1568 ; RV32-NEXT:    addi sp, sp, -16
1569 ; RV32-NEXT:    sw a0, 8(sp)
1570 ; RV32-NEXT:    sw a1, 12(sp)
1571 ; RV32-NEXT:    addi a0, sp, 8
1572 ; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
1573 ; RV32-NEXT:    vlse64.v v10, (a0), zero
1574 ; RV32-NEXT:    vsetvli zero, zero, e64, m1, tu, ma
1575 ; RV32-NEXT:    vmadd.vv v8, v10, v9
1576 ; RV32-NEXT:    addi sp, sp, 16
1577 ; RV32-NEXT:    ret
1579 ; RV64-LABEL: intrinsic_vmadd_vx_nxv1i64_i64_nxv1i64:
1580 ; RV64:       # %bb.0: # %entry
1581 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, tu, ma
1582 ; RV64-NEXT:    vmadd.vx v8, a0, v9
1583 ; RV64-NEXT:    ret
1584 entry:
1585   %a = call <vscale x 1 x i64> @llvm.riscv.vmadd.nxv1i64.i64(
1586     <vscale x 1 x i64> %0,
1587     i64 %1,
1588     <vscale x 1 x i64> %2,
1589     iXLen %3, iXLen 0)
1591   ret <vscale x 1 x i64> %a
1594 declare <vscale x 1 x i64> @llvm.riscv.vmadd.mask.nxv1i64.i64(
1595   <vscale x 1 x i64>,
1596   i64,
1597   <vscale x 1 x i64>,
1598   <vscale x 1 x i1>,
1599   iXLen, iXLen);
1601 define <vscale x 1 x i64> @intrinsic_vmadd_mask_vx_nxv1i64_i64_nxv1i64(<vscale x 1 x i64> %0, i64 %1, <vscale x 1 x i64> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
1602 ; RV32-LABEL: intrinsic_vmadd_mask_vx_nxv1i64_i64_nxv1i64:
1603 ; RV32:       # %bb.0: # %entry
1604 ; RV32-NEXT:    addi sp, sp, -16
1605 ; RV32-NEXT:    sw a0, 8(sp)
1606 ; RV32-NEXT:    sw a1, 12(sp)
1607 ; RV32-NEXT:    addi a0, sp, 8
1608 ; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
1609 ; RV32-NEXT:    vlse64.v v10, (a0), zero
1610 ; RV32-NEXT:    vsetvli zero, zero, e64, m1, tu, mu
1611 ; RV32-NEXT:    vmadd.vv v8, v10, v9, v0.t
1612 ; RV32-NEXT:    addi sp, sp, 16
1613 ; RV32-NEXT:    ret
1615 ; RV64-LABEL: intrinsic_vmadd_mask_vx_nxv1i64_i64_nxv1i64:
1616 ; RV64:       # %bb.0: # %entry
1617 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, tu, mu
1618 ; RV64-NEXT:    vmadd.vx v8, a0, v9, v0.t
1619 ; RV64-NEXT:    ret
1620 entry:
1621   %a = call <vscale x 1 x i64> @llvm.riscv.vmadd.mask.nxv1i64.i64(
1622     <vscale x 1 x i64> %0,
1623     i64 %1,
1624     <vscale x 1 x i64> %2,
1625     <vscale x 1 x i1> %3,
1626     iXLen %4, iXLen 0)
1628   ret <vscale x 1 x i64> %a
1631 declare <vscale x 2 x i64> @llvm.riscv.vmadd.nxv2i64.i64(
1632   <vscale x 2 x i64>,
1633   i64,
1634   <vscale x 2 x i64>,
1635   iXLen,
1636   iXLen);
1638 define <vscale x 2 x i64>  @intrinsic_vmadd_vx_nxv2i64_i64_nxv2i64(<vscale x 2 x i64> %0, i64 %1, <vscale x 2 x i64> %2, iXLen %3) nounwind {
1639 ; RV32-LABEL: intrinsic_vmadd_vx_nxv2i64_i64_nxv2i64:
1640 ; RV32:       # %bb.0: # %entry
1641 ; RV32-NEXT:    addi sp, sp, -16
1642 ; RV32-NEXT:    sw a0, 8(sp)
1643 ; RV32-NEXT:    sw a1, 12(sp)
1644 ; RV32-NEXT:    addi a0, sp, 8
1645 ; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
1646 ; RV32-NEXT:    vlse64.v v12, (a0), zero
1647 ; RV32-NEXT:    vsetvli zero, zero, e64, m2, tu, ma
1648 ; RV32-NEXT:    vmadd.vv v8, v12, v10
1649 ; RV32-NEXT:    addi sp, sp, 16
1650 ; RV32-NEXT:    ret
1652 ; RV64-LABEL: intrinsic_vmadd_vx_nxv2i64_i64_nxv2i64:
1653 ; RV64:       # %bb.0: # %entry
1654 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, tu, ma
1655 ; RV64-NEXT:    vmadd.vx v8, a0, v10
1656 ; RV64-NEXT:    ret
1657 entry:
1658   %a = call <vscale x 2 x i64> @llvm.riscv.vmadd.nxv2i64.i64(
1659     <vscale x 2 x i64> %0,
1660     i64 %1,
1661     <vscale x 2 x i64> %2,
1662     iXLen %3, iXLen 0)
1664   ret <vscale x 2 x i64> %a
1667 declare <vscale x 2 x i64> @llvm.riscv.vmadd.mask.nxv2i64.i64(
1668   <vscale x 2 x i64>,
1669   i64,
1670   <vscale x 2 x i64>,
1671   <vscale x 2 x i1>,
1672   iXLen, iXLen);
1674 define <vscale x 2 x i64> @intrinsic_vmadd_mask_vx_nxv2i64_i64_nxv2i64(<vscale x 2 x i64> %0, i64 %1, <vscale x 2 x i64> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
1675 ; RV32-LABEL: intrinsic_vmadd_mask_vx_nxv2i64_i64_nxv2i64:
1676 ; RV32:       # %bb.0: # %entry
1677 ; RV32-NEXT:    addi sp, sp, -16
1678 ; RV32-NEXT:    sw a0, 8(sp)
1679 ; RV32-NEXT:    sw a1, 12(sp)
1680 ; RV32-NEXT:    addi a0, sp, 8
1681 ; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
1682 ; RV32-NEXT:    vlse64.v v12, (a0), zero
1683 ; RV32-NEXT:    vsetvli zero, zero, e64, m2, tu, mu
1684 ; RV32-NEXT:    vmadd.vv v8, v12, v10, v0.t
1685 ; RV32-NEXT:    addi sp, sp, 16
1686 ; RV32-NEXT:    ret
1688 ; RV64-LABEL: intrinsic_vmadd_mask_vx_nxv2i64_i64_nxv2i64:
1689 ; RV64:       # %bb.0: # %entry
1690 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, tu, mu
1691 ; RV64-NEXT:    vmadd.vx v8, a0, v10, v0.t
1692 ; RV64-NEXT:    ret
1693 entry:
1694   %a = call <vscale x 2 x i64> @llvm.riscv.vmadd.mask.nxv2i64.i64(
1695     <vscale x 2 x i64> %0,
1696     i64 %1,
1697     <vscale x 2 x i64> %2,
1698     <vscale x 2 x i1> %3,
1699     iXLen %4, iXLen 0)
1701   ret <vscale x 2 x i64> %a
1704 declare <vscale x 4 x i64> @llvm.riscv.vmadd.nxv4i64.i64(
1705   <vscale x 4 x i64>,
1706   i64,
1707   <vscale x 4 x i64>,
1708   iXLen,
1709   iXLen);
1711 define <vscale x 4 x i64>  @intrinsic_vmadd_vx_nxv4i64_i64_nxv4i64(<vscale x 4 x i64> %0, i64 %1, <vscale x 4 x i64> %2, iXLen %3) nounwind {
1712 ; RV32-LABEL: intrinsic_vmadd_vx_nxv4i64_i64_nxv4i64:
1713 ; RV32:       # %bb.0: # %entry
1714 ; RV32-NEXT:    addi sp, sp, -16
1715 ; RV32-NEXT:    sw a0, 8(sp)
1716 ; RV32-NEXT:    sw a1, 12(sp)
1717 ; RV32-NEXT:    addi a0, sp, 8
1718 ; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
1719 ; RV32-NEXT:    vlse64.v v16, (a0), zero
1720 ; RV32-NEXT:    vsetvli zero, zero, e64, m4, tu, ma
1721 ; RV32-NEXT:    vmadd.vv v8, v16, v12
1722 ; RV32-NEXT:    addi sp, sp, 16
1723 ; RV32-NEXT:    ret
1725 ; RV64-LABEL: intrinsic_vmadd_vx_nxv4i64_i64_nxv4i64:
1726 ; RV64:       # %bb.0: # %entry
1727 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, tu, ma
1728 ; RV64-NEXT:    vmadd.vx v8, a0, v12
1729 ; RV64-NEXT:    ret
1730 entry:
1731   %a = call <vscale x 4 x i64> @llvm.riscv.vmadd.nxv4i64.i64(
1732     <vscale x 4 x i64> %0,
1733     i64 %1,
1734     <vscale x 4 x i64> %2,
1735     iXLen %3, iXLen 0)
1737   ret <vscale x 4 x i64> %a
1740 declare <vscale x 4 x i64> @llvm.riscv.vmadd.mask.nxv4i64.i64(
1741   <vscale x 4 x i64>,
1742   i64,
1743   <vscale x 4 x i64>,
1744   <vscale x 4 x i1>,
1745   iXLen, iXLen);
1747 define <vscale x 4 x i64> @intrinsic_vmadd_mask_vx_nxv4i64_i64_nxv4i64(<vscale x 4 x i64> %0, i64 %1, <vscale x 4 x i64> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
1748 ; RV32-LABEL: intrinsic_vmadd_mask_vx_nxv4i64_i64_nxv4i64:
1749 ; RV32:       # %bb.0: # %entry
1750 ; RV32-NEXT:    addi sp, sp, -16
1751 ; RV32-NEXT:    sw a0, 8(sp)
1752 ; RV32-NEXT:    sw a1, 12(sp)
1753 ; RV32-NEXT:    addi a0, sp, 8
1754 ; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
1755 ; RV32-NEXT:    vlse64.v v16, (a0), zero
1756 ; RV32-NEXT:    vsetvli zero, zero, e64, m4, tu, mu
1757 ; RV32-NEXT:    vmadd.vv v8, v16, v12, v0.t
1758 ; RV32-NEXT:    addi sp, sp, 16
1759 ; RV32-NEXT:    ret
1761 ; RV64-LABEL: intrinsic_vmadd_mask_vx_nxv4i64_i64_nxv4i64:
1762 ; RV64:       # %bb.0: # %entry
1763 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, tu, mu
1764 ; RV64-NEXT:    vmadd.vx v8, a0, v12, v0.t
1765 ; RV64-NEXT:    ret
1766 entry:
1767   %a = call <vscale x 4 x i64> @llvm.riscv.vmadd.mask.nxv4i64.i64(
1768     <vscale x 4 x i64> %0,
1769     i64 %1,
1770     <vscale x 4 x i64> %2,
1771     <vscale x 4 x i1> %3,
1772     iXLen %4, iXLen 0)
1774   ret <vscale x 4 x i64> %a