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(
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
21 %a = call <vscale x 1 x i8> @llvm.riscv.vmadd.nxv1i8.nxv1i8(
27 ret <vscale x 1 x i8> %a
30 declare <vscale x 1 x i8> @llvm.riscv.vmadd.mask.nxv1i8.nxv1i8(
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
44 %a = call <vscale x 1 x i8> @llvm.riscv.vmadd.mask.nxv1i8.nxv1i8(
51 ret <vscale x 1 x i8> %a
54 declare <vscale x 2 x i8> @llvm.riscv.vmadd.nxv2i8.nxv2i8(
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
68 %a = call <vscale x 2 x i8> @llvm.riscv.vmadd.nxv2i8.nxv2i8(
74 ret <vscale x 2 x i8> %a
77 declare <vscale x 2 x i8> @llvm.riscv.vmadd.mask.nxv2i8.nxv2i8(
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
91 %a = call <vscale x 2 x i8> @llvm.riscv.vmadd.mask.nxv2i8.nxv2i8(
98 ret <vscale x 2 x i8> %a
101 declare <vscale x 4 x i8> @llvm.riscv.vmadd.nxv4i8.nxv4i8(
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
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,
121 ret <vscale x 4 x i8> %a
124 declare <vscale x 4 x i8> @llvm.riscv.vmadd.mask.nxv4i8.nxv4i8(
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
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,
145 ret <vscale x 4 x i8> %a
148 declare <vscale x 8 x i8> @llvm.riscv.vmadd.nxv8i8.nxv8i8(
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
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,
168 ret <vscale x 8 x i8> %a
171 declare <vscale x 8 x i8> @llvm.riscv.vmadd.mask.nxv8i8.nxv8i8(
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
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,
192 ret <vscale x 8 x i8> %a
195 declare <vscale x 16 x i8> @llvm.riscv.vmadd.nxv16i8.nxv16i8(
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
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,
215 ret <vscale x 16 x i8> %a
218 declare <vscale x 16 x i8> @llvm.riscv.vmadd.mask.nxv16i8.nxv16i8(
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
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,
239 ret <vscale x 16 x i8> %a
242 declare <vscale x 32 x i8> @llvm.riscv.vmadd.nxv32i8.nxv32i8(
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
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,
262 ret <vscale x 32 x i8> %a
265 declare <vscale x 32 x i8> @llvm.riscv.vmadd.mask.nxv32i8.nxv32i8(
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
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,
286 ret <vscale x 32 x i8> %a
289 declare <vscale x 1 x i16> @llvm.riscv.vmadd.nxv1i16.nxv1i16(
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
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,
309 ret <vscale x 1 x i16> %a
312 declare <vscale x 1 x i16> @llvm.riscv.vmadd.mask.nxv1i16.nxv1i16(
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
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,
333 ret <vscale x 1 x i16> %a
336 declare <vscale x 2 x i16> @llvm.riscv.vmadd.nxv2i16.nxv2i16(
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
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,
356 ret <vscale x 2 x i16> %a
359 declare <vscale x 2 x i16> @llvm.riscv.vmadd.mask.nxv2i16.nxv2i16(
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
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,
380 ret <vscale x 2 x i16> %a
383 declare <vscale x 4 x i16> @llvm.riscv.vmadd.nxv4i16.nxv4i16(
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
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,
403 ret <vscale x 4 x i16> %a
406 declare <vscale x 4 x i16> @llvm.riscv.vmadd.mask.nxv4i16.nxv4i16(
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
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,
427 ret <vscale x 4 x i16> %a
430 declare <vscale x 8 x i16> @llvm.riscv.vmadd.nxv8i16.nxv8i16(
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
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,
450 ret <vscale x 8 x i16> %a
453 declare <vscale x 8 x i16> @llvm.riscv.vmadd.mask.nxv8i16.nxv8i16(
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
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,
474 ret <vscale x 8 x i16> %a
477 declare <vscale x 16 x i16> @llvm.riscv.vmadd.nxv16i16.nxv16i16(
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
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,
497 ret <vscale x 16 x i16> %a
500 declare <vscale x 16 x i16> @llvm.riscv.vmadd.mask.nxv16i16.nxv16i16(
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
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,
521 ret <vscale x 16 x i16> %a
524 declare <vscale x 1 x i32> @llvm.riscv.vmadd.nxv1i32.nxv1i32(
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
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,
544 ret <vscale x 1 x i32> %a
547 declare <vscale x 1 x i32> @llvm.riscv.vmadd.mask.nxv1i32.nxv1i32(
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
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,
568 ret <vscale x 1 x i32> %a
571 declare <vscale x 2 x i32> @llvm.riscv.vmadd.nxv2i32.nxv2i32(
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
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,
591 ret <vscale x 2 x i32> %a
594 declare <vscale x 2 x i32> @llvm.riscv.vmadd.mask.nxv2i32.nxv2i32(
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
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,
615 ret <vscale x 2 x i32> %a
618 declare <vscale x 4 x i32> @llvm.riscv.vmadd.nxv4i32.nxv4i32(
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
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,
638 ret <vscale x 4 x i32> %a
641 declare <vscale x 4 x i32> @llvm.riscv.vmadd.mask.nxv4i32.nxv4i32(
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
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,
662 ret <vscale x 4 x i32> %a
665 declare <vscale x 8 x i32> @llvm.riscv.vmadd.nxv8i32.nxv8i32(
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
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,
685 ret <vscale x 8 x i32> %a
688 declare <vscale x 8 x i32> @llvm.riscv.vmadd.mask.nxv8i32.nxv8i32(
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
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,
709 ret <vscale x 8 x i32> %a
712 declare <vscale x 1 x i64> @llvm.riscv.vmadd.nxv1i64.nxv1i64(
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
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,
732 ret <vscale x 1 x i64> %a
735 declare <vscale x 1 x i64> @llvm.riscv.vmadd.mask.nxv1i64.nxv1i64(
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
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,
756 ret <vscale x 1 x i64> %a
759 declare <vscale x 2 x i64> @llvm.riscv.vmadd.nxv2i64.nxv2i64(
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
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,
779 ret <vscale x 2 x i64> %a
782 declare <vscale x 2 x i64> @llvm.riscv.vmadd.mask.nxv2i64.nxv2i64(
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
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,
803 ret <vscale x 2 x i64> %a
806 declare <vscale x 4 x i64> @llvm.riscv.vmadd.nxv4i64.nxv4i64(
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
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,
826 ret <vscale x 4 x i64> %a
829 declare <vscale x 4 x i64> @llvm.riscv.vmadd.mask.nxv4i64.nxv4i64(
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
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,
850 ret <vscale x 4 x i64> %a
853 declare <vscale x 1 x i8> @llvm.riscv.vmadd.nxv1i8.i8(
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
867 %a = call <vscale x 1 x i8> @llvm.riscv.vmadd.nxv1i8.i8(
868 <vscale x 1 x i8> %0,
870 <vscale x 1 x i8> %2,
873 ret <vscale x 1 x i8> %a
876 declare <vscale x 1 x i8> @llvm.riscv.vmadd.mask.nxv1i8.i8(
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
890 %a = call <vscale x 1 x i8> @llvm.riscv.vmadd.mask.nxv1i8.i8(
891 <vscale x 1 x i8> %0,
893 <vscale x 1 x i8> %2,
894 <vscale x 1 x i1> %3,
897 ret <vscale x 1 x i8> %a
900 declare <vscale x 2 x i8> @llvm.riscv.vmadd.nxv2i8.i8(
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
914 %a = call <vscale x 2 x i8> @llvm.riscv.vmadd.nxv2i8.i8(
915 <vscale x 2 x i8> %0,
917 <vscale x 2 x i8> %2,
920 ret <vscale x 2 x i8> %a
923 declare <vscale x 2 x i8> @llvm.riscv.vmadd.mask.nxv2i8.i8(
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
937 %a = call <vscale x 2 x i8> @llvm.riscv.vmadd.mask.nxv2i8.i8(
938 <vscale x 2 x i8> %0,
940 <vscale x 2 x i8> %2,
941 <vscale x 2 x i1> %3,
944 ret <vscale x 2 x i8> %a
947 declare <vscale x 4 x i8> @llvm.riscv.vmadd.nxv4i8.i8(
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
961 %a = call <vscale x 4 x i8> @llvm.riscv.vmadd.nxv4i8.i8(
962 <vscale x 4 x i8> %0,
964 <vscale x 4 x i8> %2,
967 ret <vscale x 4 x i8> %a
970 declare <vscale x 4 x i8> @llvm.riscv.vmadd.mask.nxv4i8.i8(
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
984 %a = call <vscale x 4 x i8> @llvm.riscv.vmadd.mask.nxv4i8.i8(
985 <vscale x 4 x i8> %0,
987 <vscale x 4 x i8> %2,
988 <vscale x 4 x i1> %3,
991 ret <vscale x 4 x i8> %a
994 declare <vscale x 8 x i8> @llvm.riscv.vmadd.nxv8i8.i8(
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
1008 %a = call <vscale x 8 x i8> @llvm.riscv.vmadd.nxv8i8.i8(
1009 <vscale x 8 x i8> %0,
1011 <vscale x 8 x i8> %2,
1014 ret <vscale x 8 x i8> %a
1017 declare <vscale x 8 x i8> @llvm.riscv.vmadd.mask.nxv8i8.i8(
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
1031 %a = call <vscale x 8 x i8> @llvm.riscv.vmadd.mask.nxv8i8.i8(
1032 <vscale x 8 x i8> %0,
1034 <vscale x 8 x i8> %2,
1035 <vscale x 8 x i1> %3,
1038 ret <vscale x 8 x i8> %a
1041 declare <vscale x 16 x i8> @llvm.riscv.vmadd.nxv16i8.i8(
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
1055 %a = call <vscale x 16 x i8> @llvm.riscv.vmadd.nxv16i8.i8(
1056 <vscale x 16 x i8> %0,
1058 <vscale x 16 x i8> %2,
1061 ret <vscale x 16 x i8> %a
1064 declare <vscale x 16 x i8> @llvm.riscv.vmadd.mask.nxv16i8.i8(
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
1078 %a = call <vscale x 16 x i8> @llvm.riscv.vmadd.mask.nxv16i8.i8(
1079 <vscale x 16 x i8> %0,
1081 <vscale x 16 x i8> %2,
1082 <vscale x 16 x i1> %3,
1085 ret <vscale x 16 x i8> %a
1088 declare <vscale x 32 x i8> @llvm.riscv.vmadd.nxv32i8.i8(
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
1102 %a = call <vscale x 32 x i8> @llvm.riscv.vmadd.nxv32i8.i8(
1103 <vscale x 32 x i8> %0,
1105 <vscale x 32 x i8> %2,
1108 ret <vscale x 32 x i8> %a
1111 declare <vscale x 32 x i8> @llvm.riscv.vmadd.mask.nxv32i8.i8(
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
1125 %a = call <vscale x 32 x i8> @llvm.riscv.vmadd.mask.nxv32i8.i8(
1126 <vscale x 32 x i8> %0,
1128 <vscale x 32 x i8> %2,
1129 <vscale x 32 x i1> %3,
1132 ret <vscale x 32 x i8> %a
1135 declare <vscale x 1 x i16> @llvm.riscv.vmadd.nxv1i16.i16(
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
1149 %a = call <vscale x 1 x i16> @llvm.riscv.vmadd.nxv1i16.i16(
1150 <vscale x 1 x i16> %0,
1152 <vscale x 1 x i16> %2,
1155 ret <vscale x 1 x i16> %a
1158 declare <vscale x 1 x i16> @llvm.riscv.vmadd.mask.nxv1i16.i16(
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
1172 %a = call <vscale x 1 x i16> @llvm.riscv.vmadd.mask.nxv1i16.i16(
1173 <vscale x 1 x i16> %0,
1175 <vscale x 1 x i16> %2,
1176 <vscale x 1 x i1> %3,
1179 ret <vscale x 1 x i16> %a
1182 declare <vscale x 2 x i16> @llvm.riscv.vmadd.nxv2i16.i16(
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
1196 %a = call <vscale x 2 x i16> @llvm.riscv.vmadd.nxv2i16.i16(
1197 <vscale x 2 x i16> %0,
1199 <vscale x 2 x i16> %2,
1202 ret <vscale x 2 x i16> %a
1205 declare <vscale x 2 x i16> @llvm.riscv.vmadd.mask.nxv2i16.i16(
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
1219 %a = call <vscale x 2 x i16> @llvm.riscv.vmadd.mask.nxv2i16.i16(
1220 <vscale x 2 x i16> %0,
1222 <vscale x 2 x i16> %2,
1223 <vscale x 2 x i1> %3,
1226 ret <vscale x 2 x i16> %a
1229 declare <vscale x 4 x i16> @llvm.riscv.vmadd.nxv4i16.i16(
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
1243 %a = call <vscale x 4 x i16> @llvm.riscv.vmadd.nxv4i16.i16(
1244 <vscale x 4 x i16> %0,
1246 <vscale x 4 x i16> %2,
1249 ret <vscale x 4 x i16> %a
1252 declare <vscale x 4 x i16> @llvm.riscv.vmadd.mask.nxv4i16.i16(
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
1266 %a = call <vscale x 4 x i16> @llvm.riscv.vmadd.mask.nxv4i16.i16(
1267 <vscale x 4 x i16> %0,
1269 <vscale x 4 x i16> %2,
1270 <vscale x 4 x i1> %3,
1273 ret <vscale x 4 x i16> %a
1276 declare <vscale x 8 x i16> @llvm.riscv.vmadd.nxv8i16.i16(
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
1290 %a = call <vscale x 8 x i16> @llvm.riscv.vmadd.nxv8i16.i16(
1291 <vscale x 8 x i16> %0,
1293 <vscale x 8 x i16> %2,
1296 ret <vscale x 8 x i16> %a
1299 declare <vscale x 8 x i16> @llvm.riscv.vmadd.mask.nxv8i16.i16(
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
1313 %a = call <vscale x 8 x i16> @llvm.riscv.vmadd.mask.nxv8i16.i16(
1314 <vscale x 8 x i16> %0,
1316 <vscale x 8 x i16> %2,
1317 <vscale x 8 x i1> %3,
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>,
1326 <vscale x 16 x i16>,
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
1337 %a = call <vscale x 16 x i16> @llvm.riscv.vmadd.nxv16i16.i16(
1338 <vscale x 16 x i16> %0,
1340 <vscale x 16 x i16> %2,
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>,
1349 <vscale x 16 x i16>,
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
1360 %a = call <vscale x 16 x i16> @llvm.riscv.vmadd.mask.nxv16i16.i16(
1361 <vscale x 16 x i16> %0,
1363 <vscale x 16 x i16> %2,
1364 <vscale x 16 x i1> %3,
1367 ret <vscale x 16 x i16> %a
1370 declare <vscale x 1 x i32> @llvm.riscv.vmadd.nxv1i32.i32(
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
1384 %a = call <vscale x 1 x i32> @llvm.riscv.vmadd.nxv1i32.i32(
1385 <vscale x 1 x i32> %0,
1387 <vscale x 1 x i32> %2,
1390 ret <vscale x 1 x i32> %a
1393 declare <vscale x 1 x i32> @llvm.riscv.vmadd.mask.nxv1i32.i32(
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
1407 %a = call <vscale x 1 x i32> @llvm.riscv.vmadd.mask.nxv1i32.i32(
1408 <vscale x 1 x i32> %0,
1410 <vscale x 1 x i32> %2,
1411 <vscale x 1 x i1> %3,
1414 ret <vscale x 1 x i32> %a
1417 declare <vscale x 2 x i32> @llvm.riscv.vmadd.nxv2i32.i32(
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
1431 %a = call <vscale x 2 x i32> @llvm.riscv.vmadd.nxv2i32.i32(
1432 <vscale x 2 x i32> %0,
1434 <vscale x 2 x i32> %2,
1437 ret <vscale x 2 x i32> %a
1440 declare <vscale x 2 x i32> @llvm.riscv.vmadd.mask.nxv2i32.i32(
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
1454 %a = call <vscale x 2 x i32> @llvm.riscv.vmadd.mask.nxv2i32.i32(
1455 <vscale x 2 x i32> %0,
1457 <vscale x 2 x i32> %2,
1458 <vscale x 2 x i1> %3,
1461 ret <vscale x 2 x i32> %a
1464 declare <vscale x 4 x i32> @llvm.riscv.vmadd.nxv4i32.i32(
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
1478 %a = call <vscale x 4 x i32> @llvm.riscv.vmadd.nxv4i32.i32(
1479 <vscale x 4 x i32> %0,
1481 <vscale x 4 x i32> %2,
1484 ret <vscale x 4 x i32> %a
1487 declare <vscale x 4 x i32> @llvm.riscv.vmadd.mask.nxv4i32.i32(
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
1501 %a = call <vscale x 4 x i32> @llvm.riscv.vmadd.mask.nxv4i32.i32(
1502 <vscale x 4 x i32> %0,
1504 <vscale x 4 x i32> %2,
1505 <vscale x 4 x i1> %3,
1508 ret <vscale x 4 x i32> %a
1511 declare <vscale x 8 x i32> @llvm.riscv.vmadd.nxv8i32.i32(
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
1525 %a = call <vscale x 8 x i32> @llvm.riscv.vmadd.nxv8i32.i32(
1526 <vscale x 8 x i32> %0,
1528 <vscale x 8 x i32> %2,
1531 ret <vscale x 8 x i32> %a
1534 declare <vscale x 8 x i32> @llvm.riscv.vmadd.mask.nxv8i32.i32(
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
1548 %a = call <vscale x 8 x i32> @llvm.riscv.vmadd.mask.nxv8i32.i32(
1549 <vscale x 8 x i32> %0,
1551 <vscale x 8 x i32> %2,
1552 <vscale x 8 x i1> %3,
1555 ret <vscale x 8 x i32> %a
1558 declare <vscale x 1 x i64> @llvm.riscv.vmadd.nxv1i64.i64(
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 a1, 12(sp)
1570 ; RV32-NEXT: sw a0, 8(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
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
1585 %a = call <vscale x 1 x i64> @llvm.riscv.vmadd.nxv1i64.i64(
1586 <vscale x 1 x i64> %0,
1588 <vscale x 1 x i64> %2,
1591 ret <vscale x 1 x i64> %a
1594 declare <vscale x 1 x i64> @llvm.riscv.vmadd.mask.nxv1i64.i64(
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 a1, 12(sp)
1606 ; RV32-NEXT: sw a0, 8(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
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
1621 %a = call <vscale x 1 x i64> @llvm.riscv.vmadd.mask.nxv1i64.i64(
1622 <vscale x 1 x i64> %0,
1624 <vscale x 1 x i64> %2,
1625 <vscale x 1 x i1> %3,
1628 ret <vscale x 1 x i64> %a
1631 declare <vscale x 2 x i64> @llvm.riscv.vmadd.nxv2i64.i64(
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 a1, 12(sp)
1643 ; RV32-NEXT: sw a0, 8(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
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
1658 %a = call <vscale x 2 x i64> @llvm.riscv.vmadd.nxv2i64.i64(
1659 <vscale x 2 x i64> %0,
1661 <vscale x 2 x i64> %2,
1664 ret <vscale x 2 x i64> %a
1667 declare <vscale x 2 x i64> @llvm.riscv.vmadd.mask.nxv2i64.i64(
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 a1, 12(sp)
1679 ; RV32-NEXT: sw a0, 8(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
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
1694 %a = call <vscale x 2 x i64> @llvm.riscv.vmadd.mask.nxv2i64.i64(
1695 <vscale x 2 x i64> %0,
1697 <vscale x 2 x i64> %2,
1698 <vscale x 2 x i1> %3,
1701 ret <vscale x 2 x i64> %a
1704 declare <vscale x 4 x i64> @llvm.riscv.vmadd.nxv4i64.i64(
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 a1, 12(sp)
1716 ; RV32-NEXT: sw a0, 8(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
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
1731 %a = call <vscale x 4 x i64> @llvm.riscv.vmadd.nxv4i64.i64(
1732 <vscale x 4 x i64> %0,
1734 <vscale x 4 x i64> %2,
1737 ret <vscale x 4 x i64> %a
1740 declare <vscale x 4 x i64> @llvm.riscv.vmadd.mask.nxv4i64.i64(
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 a1, 12(sp)
1752 ; RV32-NEXT: sw a0, 8(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
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
1767 %a = call <vscale x 4 x i64> @llvm.riscv.vmadd.mask.nxv4i64.i64(
1768 <vscale x 4 x i64> %0,
1770 <vscale x 4 x i64> %2,
1771 <vscale x 4 x i1> %3,
1774 ret <vscale x 4 x i64> %a