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 i1> @llvm.riscv.vmadc.carry.in.nxv1i8.nxv1i8(
13 define <vscale x 1 x i1> @intrinsic_vmadc.carry.in_vvm_nxv1i1_nxv1i8_nxv1i8(<vscale x 1 x i8> %0, <vscale x 1 x i8> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
14 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vvm_nxv1i1_nxv1i8_nxv1i8:
15 ; CHECK: # %bb.0: # %entry
16 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
17 ; CHECK-NEXT: vmadc.vvm v10, v8, v9, v0
18 ; CHECK-NEXT: vmv1r.v v0, v10
21 %a = call <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i8.nxv1i8(
27 ret <vscale x 1 x i1> %a
30 declare <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i8.nxv2i8(
36 define <vscale x 2 x i1> @intrinsic_vmadc.carry.in_vvm_nxv2i1_nxv2i8_nxv2i8(<vscale x 2 x i8> %0, <vscale x 2 x i8> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
37 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vvm_nxv2i1_nxv2i8_nxv2i8:
38 ; CHECK: # %bb.0: # %entry
39 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
40 ; CHECK-NEXT: vmadc.vvm v10, v8, v9, v0
41 ; CHECK-NEXT: vmv1r.v v0, v10
44 %a = call <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i8.nxv2i8(
50 ret <vscale x 2 x i1> %a
53 declare <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i8.nxv4i8(
59 define <vscale x 4 x i1> @intrinsic_vmadc.carry.in_vvm_nxv4i1_nxv4i8_nxv4i8(<vscale x 4 x i8> %0, <vscale x 4 x i8> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
60 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vvm_nxv4i1_nxv4i8_nxv4i8:
61 ; CHECK: # %bb.0: # %entry
62 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
63 ; CHECK-NEXT: vmadc.vvm v10, v8, v9, v0
64 ; CHECK-NEXT: vmv1r.v v0, v10
67 %a = call <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i8.nxv4i8(
73 ret <vscale x 4 x i1> %a
76 declare <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i8.nxv8i8(
82 define <vscale x 8 x i1> @intrinsic_vmadc.carry.in_vvm_nxv8i1_nxv8i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 8 x i8> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
83 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vvm_nxv8i1_nxv8i8_nxv8i8:
84 ; CHECK: # %bb.0: # %entry
85 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
86 ; CHECK-NEXT: vmadc.vvm v10, v8, v9, v0
87 ; CHECK-NEXT: vmv.v.v v0, v10
90 %a = call <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i8.nxv8i8(
96 ret <vscale x 8 x i1> %a
99 declare <vscale x 16 x i1> @llvm.riscv.vmadc.carry.in.nxv16i8.nxv16i8(
105 define <vscale x 16 x i1> @intrinsic_vmadc.carry.in_vvm_nxv16i1_nxv16i8_nxv16i8(<vscale x 16 x i8> %0, <vscale x 16 x i8> %1, <vscale x 16 x i1> %2, iXLen %3) nounwind {
106 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vvm_nxv16i1_nxv16i8_nxv16i8:
107 ; CHECK: # %bb.0: # %entry
108 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
109 ; CHECK-NEXT: vmadc.vvm v12, v8, v10, v0
110 ; CHECK-NEXT: vmv1r.v v0, v12
113 %a = call <vscale x 16 x i1> @llvm.riscv.vmadc.carry.in.nxv16i8.nxv16i8(
114 <vscale x 16 x i8> %0,
115 <vscale x 16 x i8> %1,
116 <vscale x 16 x i1> %2,
119 ret <vscale x 16 x i1> %a
122 declare <vscale x 32 x i1> @llvm.riscv.vmadc.carry.in.nxv32i8.nxv32i8(
128 define <vscale x 32 x i1> @intrinsic_vmadc.carry.in_vvm_nxv32i1_nxv32i8_nxv32i8(<vscale x 32 x i8> %0, <vscale x 32 x i8> %1, <vscale x 32 x i1> %2, iXLen %3) nounwind {
129 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vvm_nxv32i1_nxv32i8_nxv32i8:
130 ; CHECK: # %bb.0: # %entry
131 ; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma
132 ; CHECK-NEXT: vmadc.vvm v16, v8, v12, v0
133 ; CHECK-NEXT: vmv1r.v v0, v16
136 %a = call <vscale x 32 x i1> @llvm.riscv.vmadc.carry.in.nxv32i8.nxv32i8(
137 <vscale x 32 x i8> %0,
138 <vscale x 32 x i8> %1,
139 <vscale x 32 x i1> %2,
142 ret <vscale x 32 x i1> %a
145 declare <vscale x 64 x i1> @llvm.riscv.vmadc.carry.in.nxv64i8.nxv64i8(
151 define <vscale x 64 x i1> @intrinsic_vmadc.carry.in_vvm_nxv64i1_nxv64i8_nxv64i8(<vscale x 64 x i8> %0, <vscale x 64 x i8> %1, <vscale x 64 x i1> %2, iXLen %3) nounwind {
152 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vvm_nxv64i1_nxv64i8_nxv64i8:
153 ; CHECK: # %bb.0: # %entry
154 ; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma
155 ; CHECK-NEXT: vmadc.vvm v24, v8, v16, v0
156 ; CHECK-NEXT: vmv1r.v v0, v24
159 %a = call <vscale x 64 x i1> @llvm.riscv.vmadc.carry.in.nxv64i8.nxv64i8(
160 <vscale x 64 x i8> %0,
161 <vscale x 64 x i8> %1,
162 <vscale x 64 x i1> %2,
165 ret <vscale x 64 x i1> %a
168 declare <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i16.nxv1i16(
174 define <vscale x 1 x i1> @intrinsic_vmadc.carry.in_vvm_nxv1i1_nxv1i16_nxv1i16(<vscale x 1 x i16> %0, <vscale x 1 x i16> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
175 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vvm_nxv1i1_nxv1i16_nxv1i16:
176 ; CHECK: # %bb.0: # %entry
177 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
178 ; CHECK-NEXT: vmadc.vvm v10, v8, v9, v0
179 ; CHECK-NEXT: vmv1r.v v0, v10
182 %a = call <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i16.nxv1i16(
183 <vscale x 1 x i16> %0,
184 <vscale x 1 x i16> %1,
185 <vscale x 1 x i1> %2,
188 ret <vscale x 1 x i1> %a
191 declare <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i16.nxv2i16(
197 define <vscale x 2 x i1> @intrinsic_vmadc.carry.in_vvm_nxv2i1_nxv2i16_nxv2i16(<vscale x 2 x i16> %0, <vscale x 2 x i16> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
198 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vvm_nxv2i1_nxv2i16_nxv2i16:
199 ; CHECK: # %bb.0: # %entry
200 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
201 ; CHECK-NEXT: vmadc.vvm v10, v8, v9, v0
202 ; CHECK-NEXT: vmv1r.v v0, v10
205 %a = call <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i16.nxv2i16(
206 <vscale x 2 x i16> %0,
207 <vscale x 2 x i16> %1,
208 <vscale x 2 x i1> %2,
211 ret <vscale x 2 x i1> %a
214 declare <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i16.nxv4i16(
220 define <vscale x 4 x i1> @intrinsic_vmadc.carry.in_vvm_nxv4i1_nxv4i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 4 x i16> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
221 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vvm_nxv4i1_nxv4i16_nxv4i16:
222 ; CHECK: # %bb.0: # %entry
223 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
224 ; CHECK-NEXT: vmadc.vvm v10, v8, v9, v0
225 ; CHECK-NEXT: vmv.v.v v0, v10
228 %a = call <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i16.nxv4i16(
229 <vscale x 4 x i16> %0,
230 <vscale x 4 x i16> %1,
231 <vscale x 4 x i1> %2,
234 ret <vscale x 4 x i1> %a
237 declare <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i16.nxv8i16(
243 define <vscale x 8 x i1> @intrinsic_vmadc.carry.in_vvm_nxv8i1_nxv8i16_nxv8i16(<vscale x 8 x i16> %0, <vscale x 8 x i16> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
244 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vvm_nxv8i1_nxv8i16_nxv8i16:
245 ; CHECK: # %bb.0: # %entry
246 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
247 ; CHECK-NEXT: vmadc.vvm v12, v8, v10, v0
248 ; CHECK-NEXT: vmv1r.v v0, v12
251 %a = call <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i16.nxv8i16(
252 <vscale x 8 x i16> %0,
253 <vscale x 8 x i16> %1,
254 <vscale x 8 x i1> %2,
257 ret <vscale x 8 x i1> %a
260 declare <vscale x 16 x i1> @llvm.riscv.vmadc.carry.in.nxv16i16.nxv16i16(
266 define <vscale x 16 x i1> @intrinsic_vmadc.carry.in_vvm_nxv16i1_nxv16i16_nxv16i16(<vscale x 16 x i16> %0, <vscale x 16 x i16> %1, <vscale x 16 x i1> %2, iXLen %3) nounwind {
267 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vvm_nxv16i1_nxv16i16_nxv16i16:
268 ; CHECK: # %bb.0: # %entry
269 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
270 ; CHECK-NEXT: vmadc.vvm v16, v8, v12, v0
271 ; CHECK-NEXT: vmv1r.v v0, v16
274 %a = call <vscale x 16 x i1> @llvm.riscv.vmadc.carry.in.nxv16i16.nxv16i16(
275 <vscale x 16 x i16> %0,
276 <vscale x 16 x i16> %1,
277 <vscale x 16 x i1> %2,
280 ret <vscale x 16 x i1> %a
283 declare <vscale x 32 x i1> @llvm.riscv.vmadc.carry.in.nxv32i16.nxv32i16(
289 define <vscale x 32 x i1> @intrinsic_vmadc.carry.in_vvm_nxv32i1_nxv32i16_nxv32i16(<vscale x 32 x i16> %0, <vscale x 32 x i16> %1, <vscale x 32 x i1> %2, iXLen %3) nounwind {
290 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vvm_nxv32i1_nxv32i16_nxv32i16:
291 ; CHECK: # %bb.0: # %entry
292 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
293 ; CHECK-NEXT: vmadc.vvm v24, v8, v16, v0
294 ; CHECK-NEXT: vmv1r.v v0, v24
297 %a = call <vscale x 32 x i1> @llvm.riscv.vmadc.carry.in.nxv32i16.nxv32i16(
298 <vscale x 32 x i16> %0,
299 <vscale x 32 x i16> %1,
300 <vscale x 32 x i1> %2,
303 ret <vscale x 32 x i1> %a
306 declare <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i32.nxv1i32(
312 define <vscale x 1 x i1> @intrinsic_vmadc.carry.in_vvm_nxv1i1_nxv1i32_nxv1i32(<vscale x 1 x i32> %0, <vscale x 1 x i32> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
313 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vvm_nxv1i1_nxv1i32_nxv1i32:
314 ; CHECK: # %bb.0: # %entry
315 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
316 ; CHECK-NEXT: vmadc.vvm v10, v8, v9, v0
317 ; CHECK-NEXT: vmv1r.v v0, v10
320 %a = call <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i32.nxv1i32(
321 <vscale x 1 x i32> %0,
322 <vscale x 1 x i32> %1,
323 <vscale x 1 x i1> %2,
326 ret <vscale x 1 x i1> %a
329 declare <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i32.nxv2i32(
335 define <vscale x 2 x i1> @intrinsic_vmadc.carry.in_vvm_nxv2i1_nxv2i32_nxv2i32(<vscale x 2 x i32> %0, <vscale x 2 x i32> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
336 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vvm_nxv2i1_nxv2i32_nxv2i32:
337 ; CHECK: # %bb.0: # %entry
338 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
339 ; CHECK-NEXT: vmadc.vvm v10, v8, v9, v0
340 ; CHECK-NEXT: vmv.v.v v0, v10
343 %a = call <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i32.nxv2i32(
344 <vscale x 2 x i32> %0,
345 <vscale x 2 x i32> %1,
346 <vscale x 2 x i1> %2,
349 ret <vscale x 2 x i1> %a
352 declare <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i32.nxv4i32(
358 define <vscale x 4 x i1> @intrinsic_vmadc.carry.in_vvm_nxv4i1_nxv4i32_nxv4i32(<vscale x 4 x i32> %0, <vscale x 4 x i32> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
359 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vvm_nxv4i1_nxv4i32_nxv4i32:
360 ; CHECK: # %bb.0: # %entry
361 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
362 ; CHECK-NEXT: vmadc.vvm v12, v8, v10, v0
363 ; CHECK-NEXT: vmv1r.v v0, v12
366 %a = call <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i32.nxv4i32(
367 <vscale x 4 x i32> %0,
368 <vscale x 4 x i32> %1,
369 <vscale x 4 x i1> %2,
372 ret <vscale x 4 x i1> %a
375 declare <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i32.nxv8i32(
381 define <vscale x 8 x i1> @intrinsic_vmadc.carry.in_vvm_nxv8i1_nxv8i32_nxv8i32(<vscale x 8 x i32> %0, <vscale x 8 x i32> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
382 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vvm_nxv8i1_nxv8i32_nxv8i32:
383 ; CHECK: # %bb.0: # %entry
384 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
385 ; CHECK-NEXT: vmadc.vvm v16, v8, v12, v0
386 ; CHECK-NEXT: vmv1r.v v0, v16
389 %a = call <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i32.nxv8i32(
390 <vscale x 8 x i32> %0,
391 <vscale x 8 x i32> %1,
392 <vscale x 8 x i1> %2,
395 ret <vscale x 8 x i1> %a
398 declare <vscale x 16 x i1> @llvm.riscv.vmadc.carry.in.nxv16i32.nxv16i32(
404 define <vscale x 16 x i1> @intrinsic_vmadc.carry.in_vvm_nxv16i1_nxv16i32_nxv16i32(<vscale x 16 x i32> %0, <vscale x 16 x i32> %1, <vscale x 16 x i1> %2, iXLen %3) nounwind {
405 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vvm_nxv16i1_nxv16i32_nxv16i32:
406 ; CHECK: # %bb.0: # %entry
407 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
408 ; CHECK-NEXT: vmadc.vvm v24, v8, v16, v0
409 ; CHECK-NEXT: vmv1r.v v0, v24
412 %a = call <vscale x 16 x i1> @llvm.riscv.vmadc.carry.in.nxv16i32.nxv16i32(
413 <vscale x 16 x i32> %0,
414 <vscale x 16 x i32> %1,
415 <vscale x 16 x i1> %2,
418 ret <vscale x 16 x i1> %a
421 declare <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i64.nxv1i64(
427 define <vscale x 1 x i1> @intrinsic_vmadc.carry.in_vvm_nxv1i1_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
428 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vvm_nxv1i1_nxv1i64_nxv1i64:
429 ; CHECK: # %bb.0: # %entry
430 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
431 ; CHECK-NEXT: vmadc.vvm v10, v8, v9, v0
432 ; CHECK-NEXT: vmv.v.v v0, v10
435 %a = call <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i64.nxv1i64(
436 <vscale x 1 x i64> %0,
437 <vscale x 1 x i64> %1,
438 <vscale x 1 x i1> %2,
441 ret <vscale x 1 x i1> %a
444 declare <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i64.nxv2i64(
450 define <vscale x 2 x i1> @intrinsic_vmadc.carry.in_vvm_nxv2i1_nxv2i64_nxv2i64(<vscale x 2 x i64> %0, <vscale x 2 x i64> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
451 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vvm_nxv2i1_nxv2i64_nxv2i64:
452 ; CHECK: # %bb.0: # %entry
453 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
454 ; CHECK-NEXT: vmadc.vvm v12, v8, v10, v0
455 ; CHECK-NEXT: vmv1r.v v0, v12
458 %a = call <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i64.nxv2i64(
459 <vscale x 2 x i64> %0,
460 <vscale x 2 x i64> %1,
461 <vscale x 2 x i1> %2,
464 ret <vscale x 2 x i1> %a
467 declare <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i64.nxv4i64(
473 define <vscale x 4 x i1> @intrinsic_vmadc.carry.in_vvm_nxv4i1_nxv4i64_nxv4i64(<vscale x 4 x i64> %0, <vscale x 4 x i64> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
474 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vvm_nxv4i1_nxv4i64_nxv4i64:
475 ; CHECK: # %bb.0: # %entry
476 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
477 ; CHECK-NEXT: vmadc.vvm v16, v8, v12, v0
478 ; CHECK-NEXT: vmv1r.v v0, v16
481 %a = call <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i64.nxv4i64(
482 <vscale x 4 x i64> %0,
483 <vscale x 4 x i64> %1,
484 <vscale x 4 x i1> %2,
487 ret <vscale x 4 x i1> %a
490 declare <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i64.nxv8i64(
496 define <vscale x 8 x i1> @intrinsic_vmadc.carry.in_vvm_nxv8i1_nxv8i64_nxv8i64(<vscale x 8 x i64> %0, <vscale x 8 x i64> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
497 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vvm_nxv8i1_nxv8i64_nxv8i64:
498 ; CHECK: # %bb.0: # %entry
499 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
500 ; CHECK-NEXT: vmadc.vvm v24, v8, v16, v0
501 ; CHECK-NEXT: vmv1r.v v0, v24
504 %a = call <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i64.nxv8i64(
505 <vscale x 8 x i64> %0,
506 <vscale x 8 x i64> %1,
507 <vscale x 8 x i1> %2,
510 ret <vscale x 8 x i1> %a
513 declare <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i8.i8(
519 define <vscale x 1 x i1> @intrinsic_vmadc.carry.in_vxm_nxv1i1_nxv1i8_i8(<vscale x 1 x i8> %0, i8 %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
520 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vxm_nxv1i1_nxv1i8_i8:
521 ; CHECK: # %bb.0: # %entry
522 ; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
523 ; CHECK-NEXT: vmadc.vxm v9, v8, a0, v0
524 ; CHECK-NEXT: vmv1r.v v0, v9
527 %a = call <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i8.i8(
528 <vscale x 1 x i8> %0,
530 <vscale x 1 x i1> %2,
533 ret <vscale x 1 x i1> %a
536 declare <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i8.i8(
542 define <vscale x 2 x i1> @intrinsic_vmadc.carry.in_vxm_nxv2i1_nxv2i8_i8(<vscale x 2 x i8> %0, i8 %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
543 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vxm_nxv2i1_nxv2i8_i8:
544 ; CHECK: # %bb.0: # %entry
545 ; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma
546 ; CHECK-NEXT: vmadc.vxm v9, v8, a0, v0
547 ; CHECK-NEXT: vmv1r.v v0, v9
550 %a = call <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i8.i8(
551 <vscale x 2 x i8> %0,
553 <vscale x 2 x i1> %2,
556 ret <vscale x 2 x i1> %a
559 declare <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i8.i8(
565 define <vscale x 4 x i1> @intrinsic_vmadc.carry.in_vxm_nxv4i1_nxv4i8_i8(<vscale x 4 x i8> %0, i8 %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
566 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vxm_nxv4i1_nxv4i8_i8:
567 ; CHECK: # %bb.0: # %entry
568 ; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma
569 ; CHECK-NEXT: vmadc.vxm v9, v8, a0, v0
570 ; CHECK-NEXT: vmv1r.v v0, v9
573 %a = call <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i8.i8(
574 <vscale x 4 x i8> %0,
576 <vscale x 4 x i1> %2,
579 ret <vscale x 4 x i1> %a
582 declare <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i8.i8(
588 define <vscale x 8 x i1> @intrinsic_vmadc.carry.in_vxm_nxv8i1_nxv8i8_i8(<vscale x 8 x i8> %0, i8 %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
589 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vxm_nxv8i1_nxv8i8_i8:
590 ; CHECK: # %bb.0: # %entry
591 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
592 ; CHECK-NEXT: vmadc.vxm v9, v8, a0, v0
593 ; CHECK-NEXT: vmv.v.v v0, v9
596 %a = call <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i8.i8(
597 <vscale x 8 x i8> %0,
599 <vscale x 8 x i1> %2,
602 ret <vscale x 8 x i1> %a
605 declare <vscale x 16 x i1> @llvm.riscv.vmadc.carry.in.nxv16i8.i8(
611 define <vscale x 16 x i1> @intrinsic_vmadc.carry.in_vxm_nxv16i1_nxv16i8_i8(<vscale x 16 x i8> %0, i8 %1, <vscale x 16 x i1> %2, iXLen %3) nounwind {
612 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vxm_nxv16i1_nxv16i8_i8:
613 ; CHECK: # %bb.0: # %entry
614 ; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma
615 ; CHECK-NEXT: vmadc.vxm v10, v8, a0, v0
616 ; CHECK-NEXT: vmv1r.v v0, v10
619 %a = call <vscale x 16 x i1> @llvm.riscv.vmadc.carry.in.nxv16i8.i8(
620 <vscale x 16 x i8> %0,
622 <vscale x 16 x i1> %2,
625 ret <vscale x 16 x i1> %a
628 declare <vscale x 32 x i1> @llvm.riscv.vmadc.carry.in.nxv32i8.i8(
634 define <vscale x 32 x i1> @intrinsic_vmadc.carry.in_vxm_nxv32i1_nxv32i8_i8(<vscale x 32 x i8> %0, i8 %1, <vscale x 32 x i1> %2, iXLen %3) nounwind {
635 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vxm_nxv32i1_nxv32i8_i8:
636 ; CHECK: # %bb.0: # %entry
637 ; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma
638 ; CHECK-NEXT: vmadc.vxm v12, v8, a0, v0
639 ; CHECK-NEXT: vmv1r.v v0, v12
642 %a = call <vscale x 32 x i1> @llvm.riscv.vmadc.carry.in.nxv32i8.i8(
643 <vscale x 32 x i8> %0,
645 <vscale x 32 x i1> %2,
648 ret <vscale x 32 x i1> %a
651 declare <vscale x 64 x i1> @llvm.riscv.vmadc.carry.in.nxv64i8.i8(
657 define <vscale x 64 x i1> @intrinsic_vmadc.carry.in_vxm_nxv64i1_nxv64i8_i8(<vscale x 64 x i8> %0, i8 %1, <vscale x 64 x i1> %2, iXLen %3) nounwind {
658 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vxm_nxv64i1_nxv64i8_i8:
659 ; CHECK: # %bb.0: # %entry
660 ; CHECK-NEXT: vsetvli zero, a1, e8, m8, ta, ma
661 ; CHECK-NEXT: vmadc.vxm v16, v8, a0, v0
662 ; CHECK-NEXT: vmv1r.v v0, v16
665 %a = call <vscale x 64 x i1> @llvm.riscv.vmadc.carry.in.nxv64i8.i8(
666 <vscale x 64 x i8> %0,
668 <vscale x 64 x i1> %2,
671 ret <vscale x 64 x i1> %a
674 declare <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i16.i16(
680 define <vscale x 1 x i1> @intrinsic_vmadc.carry.in_vxm_nxv1i1_nxv1i16_i16(<vscale x 1 x i16> %0, i16 %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
681 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vxm_nxv1i1_nxv1i16_i16:
682 ; CHECK: # %bb.0: # %entry
683 ; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
684 ; CHECK-NEXT: vmadc.vxm v9, v8, a0, v0
685 ; CHECK-NEXT: vmv1r.v v0, v9
688 %a = call <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i16.i16(
689 <vscale x 1 x i16> %0,
691 <vscale x 1 x i1> %2,
694 ret <vscale x 1 x i1> %a
697 declare <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i16.i16(
703 define <vscale x 2 x i1> @intrinsic_vmadc.carry.in_vxm_nxv2i1_nxv2i16_i16(<vscale x 2 x i16> %0, i16 %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
704 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vxm_nxv2i1_nxv2i16_i16:
705 ; CHECK: # %bb.0: # %entry
706 ; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma
707 ; CHECK-NEXT: vmadc.vxm v9, v8, a0, v0
708 ; CHECK-NEXT: vmv1r.v v0, v9
711 %a = call <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i16.i16(
712 <vscale x 2 x i16> %0,
714 <vscale x 2 x i1> %2,
717 ret <vscale x 2 x i1> %a
720 declare <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i16.i16(
726 define <vscale x 4 x i1> @intrinsic_vmadc.carry.in_vxm_nxv4i1_nxv4i16_i16(<vscale x 4 x i16> %0, i16 %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
727 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vxm_nxv4i1_nxv4i16_i16:
728 ; CHECK: # %bb.0: # %entry
729 ; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma
730 ; CHECK-NEXT: vmadc.vxm v9, v8, a0, v0
731 ; CHECK-NEXT: vmv.v.v v0, v9
734 %a = call <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i16.i16(
735 <vscale x 4 x i16> %0,
737 <vscale x 4 x i1> %2,
740 ret <vscale x 4 x i1> %a
743 declare <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i16.i16(
749 define <vscale x 8 x i1> @intrinsic_vmadc.carry.in_vxm_nxv8i1_nxv8i16_i16(<vscale x 8 x i16> %0, i16 %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
750 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vxm_nxv8i1_nxv8i16_i16:
751 ; CHECK: # %bb.0: # %entry
752 ; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma
753 ; CHECK-NEXT: vmadc.vxm v10, v8, a0, v0
754 ; CHECK-NEXT: vmv1r.v v0, v10
757 %a = call <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i16.i16(
758 <vscale x 8 x i16> %0,
760 <vscale x 8 x i1> %2,
763 ret <vscale x 8 x i1> %a
766 declare <vscale x 16 x i1> @llvm.riscv.vmadc.carry.in.nxv16i16.i16(
772 define <vscale x 16 x i1> @intrinsic_vmadc.carry.in_vxm_nxv16i1_nxv16i16_i16(<vscale x 16 x i16> %0, i16 %1, <vscale x 16 x i1> %2, iXLen %3) nounwind {
773 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vxm_nxv16i1_nxv16i16_i16:
774 ; CHECK: # %bb.0: # %entry
775 ; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma
776 ; CHECK-NEXT: vmadc.vxm v12, v8, a0, v0
777 ; CHECK-NEXT: vmv1r.v v0, v12
780 %a = call <vscale x 16 x i1> @llvm.riscv.vmadc.carry.in.nxv16i16.i16(
781 <vscale x 16 x i16> %0,
783 <vscale x 16 x i1> %2,
786 ret <vscale x 16 x i1> %a
789 declare <vscale x 32 x i1> @llvm.riscv.vmadc.carry.in.nxv32i16.i16(
795 define <vscale x 32 x i1> @intrinsic_vmadc.carry.in_vxm_nxv32i1_nxv32i16_i16(<vscale x 32 x i16> %0, i16 %1, <vscale x 32 x i1> %2, iXLen %3) nounwind {
796 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vxm_nxv32i1_nxv32i16_i16:
797 ; CHECK: # %bb.0: # %entry
798 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
799 ; CHECK-NEXT: vmadc.vxm v16, v8, a0, v0
800 ; CHECK-NEXT: vmv1r.v v0, v16
803 %a = call <vscale x 32 x i1> @llvm.riscv.vmadc.carry.in.nxv32i16.i16(
804 <vscale x 32 x i16> %0,
806 <vscale x 32 x i1> %2,
809 ret <vscale x 32 x i1> %a
812 declare <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i32.i32(
818 define <vscale x 1 x i1> @intrinsic_vmadc.carry.in_vxm_nxv1i1_nxv1i32_i32(<vscale x 1 x i32> %0, i32 %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
819 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vxm_nxv1i1_nxv1i32_i32:
820 ; CHECK: # %bb.0: # %entry
821 ; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
822 ; CHECK-NEXT: vmadc.vxm v9, v8, a0, v0
823 ; CHECK-NEXT: vmv1r.v v0, v9
826 %a = call <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i32.i32(
827 <vscale x 1 x i32> %0,
829 <vscale x 1 x i1> %2,
832 ret <vscale x 1 x i1> %a
835 declare <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i32.i32(
841 define <vscale x 2 x i1> @intrinsic_vmadc.carry.in_vxm_nxv2i1_nxv2i32_i32(<vscale x 2 x i32> %0, i32 %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
842 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vxm_nxv2i1_nxv2i32_i32:
843 ; CHECK: # %bb.0: # %entry
844 ; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma
845 ; CHECK-NEXT: vmadc.vxm v9, v8, a0, v0
846 ; CHECK-NEXT: vmv.v.v v0, v9
849 %a = call <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i32.i32(
850 <vscale x 2 x i32> %0,
852 <vscale x 2 x i1> %2,
855 ret <vscale x 2 x i1> %a
858 declare <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i32.i32(
864 define <vscale x 4 x i1> @intrinsic_vmadc.carry.in_vxm_nxv4i1_nxv4i32_i32(<vscale x 4 x i32> %0, i32 %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
865 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vxm_nxv4i1_nxv4i32_i32:
866 ; CHECK: # %bb.0: # %entry
867 ; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
868 ; CHECK-NEXT: vmadc.vxm v10, v8, a0, v0
869 ; CHECK-NEXT: vmv1r.v v0, v10
872 %a = call <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i32.i32(
873 <vscale x 4 x i32> %0,
875 <vscale x 4 x i1> %2,
878 ret <vscale x 4 x i1> %a
881 declare <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i32.i32(
887 define <vscale x 8 x i1> @intrinsic_vmadc.carry.in_vxm_nxv8i1_nxv8i32_i32(<vscale x 8 x i32> %0, i32 %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
888 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vxm_nxv8i1_nxv8i32_i32:
889 ; CHECK: # %bb.0: # %entry
890 ; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma
891 ; CHECK-NEXT: vmadc.vxm v12, v8, a0, v0
892 ; CHECK-NEXT: vmv1r.v v0, v12
895 %a = call <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i32.i32(
896 <vscale x 8 x i32> %0,
898 <vscale x 8 x i1> %2,
901 ret <vscale x 8 x i1> %a
904 declare <vscale x 16 x i1> @llvm.riscv.vmadc.carry.in.nxv16i32.i32(
910 define <vscale x 16 x i1> @intrinsic_vmadc.carry.in_vxm_nxv16i1_nxv16i32_i32(<vscale x 16 x i32> %0, i32 %1, <vscale x 16 x i1> %2, iXLen %3) nounwind {
911 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vxm_nxv16i1_nxv16i32_i32:
912 ; CHECK: # %bb.0: # %entry
913 ; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma
914 ; CHECK-NEXT: vmadc.vxm v16, v8, a0, v0
915 ; CHECK-NEXT: vmv1r.v v0, v16
918 %a = call <vscale x 16 x i1> @llvm.riscv.vmadc.carry.in.nxv16i32.i32(
919 <vscale x 16 x i32> %0,
921 <vscale x 16 x i1> %2,
924 ret <vscale x 16 x i1> %a
927 declare <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i64.i64(
933 define <vscale x 1 x i1> @intrinsic_vmadc.carry.in_vxm_nxv1i1_nxv1i64_i64(<vscale x 1 x i64> %0, i64 %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
934 ; RV32-LABEL: intrinsic_vmadc.carry.in_vxm_nxv1i1_nxv1i64_i64:
935 ; RV32: # %bb.0: # %entry
936 ; RV32-NEXT: addi sp, sp, -16
937 ; RV32-NEXT: sw a1, 12(sp)
938 ; RV32-NEXT: sw a0, 8(sp)
939 ; RV32-NEXT: addi a0, sp, 8
940 ; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma
941 ; RV32-NEXT: vlse64.v v10, (a0), zero
942 ; RV32-NEXT: vmadc.vvm v9, v8, v10, v0
943 ; RV32-NEXT: vmv.v.v v0, v9
944 ; RV32-NEXT: addi sp, sp, 16
947 ; RV64-LABEL: intrinsic_vmadc.carry.in_vxm_nxv1i1_nxv1i64_i64:
948 ; RV64: # %bb.0: # %entry
949 ; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma
950 ; RV64-NEXT: vmadc.vxm v9, v8, a0, v0
951 ; RV64-NEXT: vmv.v.v v0, v9
954 %a = call <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i64.i64(
955 <vscale x 1 x i64> %0,
957 <vscale x 1 x i1> %2,
960 ret <vscale x 1 x i1> %a
963 declare <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i64.i64(
969 define <vscale x 2 x i1> @intrinsic_vmadc.carry.in_vxm_nxv2i1_nxv2i64_i64(<vscale x 2 x i64> %0, i64 %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
970 ; RV32-LABEL: intrinsic_vmadc.carry.in_vxm_nxv2i1_nxv2i64_i64:
971 ; RV32: # %bb.0: # %entry
972 ; RV32-NEXT: addi sp, sp, -16
973 ; RV32-NEXT: sw a1, 12(sp)
974 ; RV32-NEXT: sw a0, 8(sp)
975 ; RV32-NEXT: addi a0, sp, 8
976 ; RV32-NEXT: vsetvli zero, a2, e64, m2, ta, ma
977 ; RV32-NEXT: vlse64.v v12, (a0), zero
978 ; RV32-NEXT: vmadc.vvm v10, v8, v12, v0
979 ; RV32-NEXT: vmv1r.v v0, v10
980 ; RV32-NEXT: addi sp, sp, 16
983 ; RV64-LABEL: intrinsic_vmadc.carry.in_vxm_nxv2i1_nxv2i64_i64:
984 ; RV64: # %bb.0: # %entry
985 ; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma
986 ; RV64-NEXT: vmadc.vxm v10, v8, a0, v0
987 ; RV64-NEXT: vmv1r.v v0, v10
990 %a = call <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i64.i64(
991 <vscale x 2 x i64> %0,
993 <vscale x 2 x i1> %2,
996 ret <vscale x 2 x i1> %a
999 declare <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i64.i64(
1005 define <vscale x 4 x i1> @intrinsic_vmadc.carry.in_vxm_nxv4i1_nxv4i64_i64(<vscale x 4 x i64> %0, i64 %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
1006 ; RV32-LABEL: intrinsic_vmadc.carry.in_vxm_nxv4i1_nxv4i64_i64:
1007 ; RV32: # %bb.0: # %entry
1008 ; RV32-NEXT: addi sp, sp, -16
1009 ; RV32-NEXT: sw a1, 12(sp)
1010 ; RV32-NEXT: sw a0, 8(sp)
1011 ; RV32-NEXT: addi a0, sp, 8
1012 ; RV32-NEXT: vsetvli zero, a2, e64, m4, ta, ma
1013 ; RV32-NEXT: vlse64.v v16, (a0), zero
1014 ; RV32-NEXT: vmadc.vvm v12, v8, v16, v0
1015 ; RV32-NEXT: vmv1r.v v0, v12
1016 ; RV32-NEXT: addi sp, sp, 16
1019 ; RV64-LABEL: intrinsic_vmadc.carry.in_vxm_nxv4i1_nxv4i64_i64:
1020 ; RV64: # %bb.0: # %entry
1021 ; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma
1022 ; RV64-NEXT: vmadc.vxm v12, v8, a0, v0
1023 ; RV64-NEXT: vmv1r.v v0, v12
1026 %a = call <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i64.i64(
1027 <vscale x 4 x i64> %0,
1029 <vscale x 4 x i1> %2,
1032 ret <vscale x 4 x i1> %a
1035 declare <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i64.i64(
1041 define <vscale x 8 x i1> @intrinsic_vmadc.carry.in_vxm_nxv8i1_nxv8i64_i64(<vscale x 8 x i64> %0, i64 %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
1042 ; RV32-LABEL: intrinsic_vmadc.carry.in_vxm_nxv8i1_nxv8i64_i64:
1043 ; RV32: # %bb.0: # %entry
1044 ; RV32-NEXT: addi sp, sp, -16
1045 ; RV32-NEXT: sw a1, 12(sp)
1046 ; RV32-NEXT: sw a0, 8(sp)
1047 ; RV32-NEXT: addi a0, sp, 8
1048 ; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma
1049 ; RV32-NEXT: vlse64.v v24, (a0), zero
1050 ; RV32-NEXT: vmadc.vvm v16, v8, v24, v0
1051 ; RV32-NEXT: vmv1r.v v0, v16
1052 ; RV32-NEXT: addi sp, sp, 16
1055 ; RV64-LABEL: intrinsic_vmadc.carry.in_vxm_nxv8i1_nxv8i64_i64:
1056 ; RV64: # %bb.0: # %entry
1057 ; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma
1058 ; RV64-NEXT: vmadc.vxm v16, v8, a0, v0
1059 ; RV64-NEXT: vmv1r.v v0, v16
1062 %a = call <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i64.i64(
1063 <vscale x 8 x i64> %0,
1065 <vscale x 8 x i1> %2,
1068 ret <vscale x 8 x i1> %a
1071 define <vscale x 1 x i1> @intrinsic_vmadc.carry.in_vim_nxv1i1_nxv1i8_i8(<vscale x 1 x i8> %0, <vscale x 1 x i1> %1, iXLen %2) nounwind {
1072 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vim_nxv1i1_nxv1i8_i8:
1073 ; CHECK: # %bb.0: # %entry
1074 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
1075 ; CHECK-NEXT: vmadc.vim v9, v8, 9, v0
1076 ; CHECK-NEXT: vmv1r.v v0, v9
1079 %a = call <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i8.i8(
1080 <vscale x 1 x i8> %0,
1082 <vscale x 1 x i1> %1,
1085 ret <vscale x 1 x i1> %a
1088 define <vscale x 2 x i1> @intrinsic_vmadc.carry.in_vim_nxv2i1_nxv2i8_i8(<vscale x 2 x i8> %0, <vscale x 2 x i1> %1, iXLen %2) nounwind {
1089 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vim_nxv2i1_nxv2i8_i8:
1090 ; CHECK: # %bb.0: # %entry
1091 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
1092 ; CHECK-NEXT: vmadc.vim v9, v8, 9, v0
1093 ; CHECK-NEXT: vmv1r.v v0, v9
1096 %a = call <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i8.i8(
1097 <vscale x 2 x i8> %0,
1099 <vscale x 2 x i1> %1,
1102 ret <vscale x 2 x i1> %a
1105 define <vscale x 4 x i1> @intrinsic_vmadc.carry.in_vim_nxv4i1_nxv4i8_i8(<vscale x 4 x i8> %0, <vscale x 4 x i1> %1, iXLen %2) nounwind {
1106 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vim_nxv4i1_nxv4i8_i8:
1107 ; CHECK: # %bb.0: # %entry
1108 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
1109 ; CHECK-NEXT: vmadc.vim v9, v8, 9, v0
1110 ; CHECK-NEXT: vmv1r.v v0, v9
1113 %a = call <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i8.i8(
1114 <vscale x 4 x i8> %0,
1116 <vscale x 4 x i1> %1,
1119 ret <vscale x 4 x i1> %a
1122 define <vscale x 8 x i1> @intrinsic_vmadc.carry.in_vim_nxv8i1_nxv8i8_i8(<vscale x 8 x i8> %0, <vscale x 8 x i1> %1, iXLen %2) nounwind {
1123 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vim_nxv8i1_nxv8i8_i8:
1124 ; CHECK: # %bb.0: # %entry
1125 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
1126 ; CHECK-NEXT: vmadc.vim v9, v8, 9, v0
1127 ; CHECK-NEXT: vmv.v.v v0, v9
1130 %a = call <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i8.i8(
1131 <vscale x 8 x i8> %0,
1133 <vscale x 8 x i1> %1,
1136 ret <vscale x 8 x i1> %a
1139 define <vscale x 16 x i1> @intrinsic_vmadc.carry.in_vim_nxv16i1_nxv16i8_i8(<vscale x 16 x i8> %0, <vscale x 16 x i1> %1, iXLen %2) nounwind {
1140 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vim_nxv16i1_nxv16i8_i8:
1141 ; CHECK: # %bb.0: # %entry
1142 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
1143 ; CHECK-NEXT: vmadc.vim v10, v8, 9, v0
1144 ; CHECK-NEXT: vmv1r.v v0, v10
1147 %a = call <vscale x 16 x i1> @llvm.riscv.vmadc.carry.in.nxv16i8.i8(
1148 <vscale x 16 x i8> %0,
1150 <vscale x 16 x i1> %1,
1153 ret <vscale x 16 x i1> %a
1156 define <vscale x 32 x i1> @intrinsic_vmadc.carry.in_vim_nxv32i1_nxv32i8_i8(<vscale x 32 x i8> %0, <vscale x 32 x i1> %1, iXLen %2) nounwind {
1157 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vim_nxv32i1_nxv32i8_i8:
1158 ; CHECK: # %bb.0: # %entry
1159 ; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma
1160 ; CHECK-NEXT: vmadc.vim v12, v8, 9, v0
1161 ; CHECK-NEXT: vmv1r.v v0, v12
1164 %a = call <vscale x 32 x i1> @llvm.riscv.vmadc.carry.in.nxv32i8.i8(
1165 <vscale x 32 x i8> %0,
1167 <vscale x 32 x i1> %1,
1170 ret <vscale x 32 x i1> %a
1173 define <vscale x 64 x i1> @intrinsic_vmadc.carry.in_vim_nxv64i1_nxv64i8_i8(<vscale x 64 x i8> %0, <vscale x 64 x i1> %1, iXLen %2) nounwind {
1174 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vim_nxv64i1_nxv64i8_i8:
1175 ; CHECK: # %bb.0: # %entry
1176 ; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma
1177 ; CHECK-NEXT: vmadc.vim v16, v8, 9, v0
1178 ; CHECK-NEXT: vmv1r.v v0, v16
1181 %a = call <vscale x 64 x i1> @llvm.riscv.vmadc.carry.in.nxv64i8.i8(
1182 <vscale x 64 x i8> %0,
1184 <vscale x 64 x i1> %1,
1187 ret <vscale x 64 x i1> %a
1190 define <vscale x 1 x i1> @intrinsic_vmadc.carry.in_vim_nxv1i1_nxv1i16_i16(<vscale x 1 x i16> %0, <vscale x 1 x i1> %1, iXLen %2) nounwind {
1191 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vim_nxv1i1_nxv1i16_i16:
1192 ; CHECK: # %bb.0: # %entry
1193 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1194 ; CHECK-NEXT: vmadc.vim v9, v8, 9, v0
1195 ; CHECK-NEXT: vmv1r.v v0, v9
1198 %a = call <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i16.i16(
1199 <vscale x 1 x i16> %0,
1201 <vscale x 1 x i1> %1,
1204 ret <vscale x 1 x i1> %a
1207 define <vscale x 2 x i1> @intrinsic_vmadc.carry.in_vim_nxv2i1_nxv2i16_i16(<vscale x 2 x i16> %0, <vscale x 2 x i1> %1, iXLen %2) nounwind {
1208 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vim_nxv2i1_nxv2i16_i16:
1209 ; CHECK: # %bb.0: # %entry
1210 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1211 ; CHECK-NEXT: vmadc.vim v9, v8, 9, v0
1212 ; CHECK-NEXT: vmv1r.v v0, v9
1215 %a = call <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i16.i16(
1216 <vscale x 2 x i16> %0,
1218 <vscale x 2 x i1> %1,
1221 ret <vscale x 2 x i1> %a
1224 define <vscale x 4 x i1> @intrinsic_vmadc.carry.in_vim_nxv4i1_nxv4i16_i16(<vscale x 4 x i16> %0, <vscale x 4 x i1> %1, iXLen %2) nounwind {
1225 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vim_nxv4i1_nxv4i16_i16:
1226 ; CHECK: # %bb.0: # %entry
1227 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
1228 ; CHECK-NEXT: vmadc.vim v9, v8, 9, v0
1229 ; CHECK-NEXT: vmv.v.v v0, v9
1232 %a = call <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i16.i16(
1233 <vscale x 4 x i16> %0,
1235 <vscale x 4 x i1> %1,
1238 ret <vscale x 4 x i1> %a
1241 define <vscale x 8 x i1> @intrinsic_vmadc.carry.in_vim_nxv8i1_nxv8i16_i16(<vscale x 8 x i16> %0, <vscale x 8 x i1> %1, iXLen %2) nounwind {
1242 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vim_nxv8i1_nxv8i16_i16:
1243 ; CHECK: # %bb.0: # %entry
1244 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
1245 ; CHECK-NEXT: vmadc.vim v10, v8, 9, v0
1246 ; CHECK-NEXT: vmv1r.v v0, v10
1249 %a = call <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i16.i16(
1250 <vscale x 8 x i16> %0,
1252 <vscale x 8 x i1> %1,
1255 ret <vscale x 8 x i1> %a
1258 define <vscale x 16 x i1> @intrinsic_vmadc.carry.in_vim_nxv16i1_nxv16i16_i16(<vscale x 16 x i16> %0, <vscale x 16 x i1> %1, iXLen %2) nounwind {
1259 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vim_nxv16i1_nxv16i16_i16:
1260 ; CHECK: # %bb.0: # %entry
1261 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
1262 ; CHECK-NEXT: vmadc.vim v12, v8, 9, v0
1263 ; CHECK-NEXT: vmv1r.v v0, v12
1266 %a = call <vscale x 16 x i1> @llvm.riscv.vmadc.carry.in.nxv16i16.i16(
1267 <vscale x 16 x i16> %0,
1269 <vscale x 16 x i1> %1,
1272 ret <vscale x 16 x i1> %a
1275 define <vscale x 32 x i1> @intrinsic_vmadc.carry.in_vim_nxv32i1_nxv32i16_i16(<vscale x 32 x i16> %0, <vscale x 32 x i1> %1, iXLen %2) nounwind {
1276 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vim_nxv32i1_nxv32i16_i16:
1277 ; CHECK: # %bb.0: # %entry
1278 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
1279 ; CHECK-NEXT: vmadc.vim v16, v8, 9, v0
1280 ; CHECK-NEXT: vmv1r.v v0, v16
1283 %a = call <vscale x 32 x i1> @llvm.riscv.vmadc.carry.in.nxv32i16.i16(
1284 <vscale x 32 x i16> %0,
1286 <vscale x 32 x i1> %1,
1289 ret <vscale x 32 x i1> %a
1292 define <vscale x 1 x i1> @intrinsic_vmadc.carry.in_vim_nxv1i1_nxv1i32_i32(<vscale x 1 x i32> %0, <vscale x 1 x i1> %1, iXLen %2) nounwind {
1293 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vim_nxv1i1_nxv1i32_i32:
1294 ; CHECK: # %bb.0: # %entry
1295 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1296 ; CHECK-NEXT: vmadc.vim v9, v8, 9, v0
1297 ; CHECK-NEXT: vmv1r.v v0, v9
1300 %a = call <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i32.i32(
1301 <vscale x 1 x i32> %0,
1303 <vscale x 1 x i1> %1,
1306 ret <vscale x 1 x i1> %a
1309 define <vscale x 2 x i1> @intrinsic_vmadc.carry.in_vim_nxv2i1_nxv2i32_i32(<vscale x 2 x i32> %0, <vscale x 2 x i1> %1, iXLen %2) nounwind {
1310 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vim_nxv2i1_nxv2i32_i32:
1311 ; CHECK: # %bb.0: # %entry
1312 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1313 ; CHECK-NEXT: vmadc.vim v9, v8, 9, v0
1314 ; CHECK-NEXT: vmv.v.v v0, v9
1317 %a = call <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i32.i32(
1318 <vscale x 2 x i32> %0,
1320 <vscale x 2 x i1> %1,
1323 ret <vscale x 2 x i1> %a
1326 define <vscale x 4 x i1> @intrinsic_vmadc.carry.in_vim_nxv4i1_nxv4i32_i32(<vscale x 4 x i32> %0, <vscale x 4 x i1> %1, iXLen %2) nounwind {
1327 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vim_nxv4i1_nxv4i32_i32:
1328 ; CHECK: # %bb.0: # %entry
1329 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1330 ; CHECK-NEXT: vmadc.vim v10, v8, 9, v0
1331 ; CHECK-NEXT: vmv1r.v v0, v10
1334 %a = call <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i32.i32(
1335 <vscale x 4 x i32> %0,
1337 <vscale x 4 x i1> %1,
1340 ret <vscale x 4 x i1> %a
1343 define <vscale x 8 x i1> @intrinsic_vmadc.carry.in_vim_nxv8i1_nxv8i32_i32(<vscale x 8 x i32> %0, <vscale x 8 x i1> %1, iXLen %2) nounwind {
1344 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vim_nxv8i1_nxv8i32_i32:
1345 ; CHECK: # %bb.0: # %entry
1346 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1347 ; CHECK-NEXT: vmadc.vim v12, v8, 9, v0
1348 ; CHECK-NEXT: vmv1r.v v0, v12
1351 %a = call <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i32.i32(
1352 <vscale x 8 x i32> %0,
1354 <vscale x 8 x i1> %1,
1357 ret <vscale x 8 x i1> %a
1360 define <vscale x 16 x i1> @intrinsic_vmadc.carry.in_vim_nxv16i1_nxv16i32_i32(<vscale x 16 x i32> %0, <vscale x 16 x i1> %1, iXLen %2) nounwind {
1361 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vim_nxv16i1_nxv16i32_i32:
1362 ; CHECK: # %bb.0: # %entry
1363 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
1364 ; CHECK-NEXT: vmadc.vim v16, v8, 9, v0
1365 ; CHECK-NEXT: vmv1r.v v0, v16
1368 %a = call <vscale x 16 x i1> @llvm.riscv.vmadc.carry.in.nxv16i32.i32(
1369 <vscale x 16 x i32> %0,
1371 <vscale x 16 x i1> %1,
1374 ret <vscale x 16 x i1> %a
1377 define <vscale x 1 x i1> @intrinsic_vmadc.carry.in_vim_nxv1i1_nxv1i64_i64(<vscale x 1 x i64> %0, <vscale x 1 x i1> %1, iXLen %2) nounwind {
1378 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vim_nxv1i1_nxv1i64_i64:
1379 ; CHECK: # %bb.0: # %entry
1380 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
1381 ; CHECK-NEXT: vmadc.vim v9, v8, 9, v0
1382 ; CHECK-NEXT: vmv.v.v v0, v9
1385 %a = call <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i64.i64(
1386 <vscale x 1 x i64> %0,
1388 <vscale x 1 x i1> %1,
1391 ret <vscale x 1 x i1> %a
1394 define <vscale x 2 x i1> @intrinsic_vmadc.carry.in_vim_nxv2i1_nxv2i64_i64(<vscale x 2 x i64> %0, <vscale x 2 x i1> %1, iXLen %2) nounwind {
1395 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vim_nxv2i1_nxv2i64_i64:
1396 ; CHECK: # %bb.0: # %entry
1397 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1398 ; CHECK-NEXT: vmadc.vim v10, v8, 9, v0
1399 ; CHECK-NEXT: vmv1r.v v0, v10
1402 %a = call <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i64.i64(
1403 <vscale x 2 x i64> %0,
1405 <vscale x 2 x i1> %1,
1408 ret <vscale x 2 x i1> %a
1411 define <vscale x 4 x i1> @intrinsic_vmadc.carry.in_vim_nxv4i1_nxv4i64_i64(<vscale x 4 x i64> %0, <vscale x 4 x i1> %1, iXLen %2) nounwind {
1412 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vim_nxv4i1_nxv4i64_i64:
1413 ; CHECK: # %bb.0: # %entry
1414 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1415 ; CHECK-NEXT: vmadc.vim v12, v8, 9, v0
1416 ; CHECK-NEXT: vmv1r.v v0, v12
1419 %a = call <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i64.i64(
1420 <vscale x 4 x i64> %0,
1422 <vscale x 4 x i1> %1,
1425 ret <vscale x 4 x i1> %a
1428 define <vscale x 8 x i1> @intrinsic_vmadc.carry.in_vim_nxv8i1_nxv8i64_i64(<vscale x 8 x i64> %0, <vscale x 8 x i1> %1, iXLen %2) nounwind {
1429 ; CHECK-LABEL: intrinsic_vmadc.carry.in_vim_nxv8i1_nxv8i64_i64:
1430 ; CHECK: # %bb.0: # %entry
1431 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1432 ; CHECK-NEXT: vmadc.vim v16, v8, 9, v0
1433 ; CHECK-NEXT: vmv1r.v v0, v16
1436 %a = call <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i64.i64(
1437 <vscale x 8 x i64> %0,
1439 <vscale x 8 x i1> %1,
1442 ret <vscale x 8 x i1> %a