Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vmadc.carry.in.ll
blobeb09de906fac532b9d3ba8c0c1046f5c16b4f85d
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(
8   <vscale x 1 x i8>,
9   <vscale x 1 x i8>,
10   <vscale x 1 x i1>,
11   iXLen);
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
19 ; CHECK-NEXT:    ret
20 entry:
21   %a = call <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i8.nxv1i8(
22     <vscale x 1 x i8> %0,
23     <vscale x 1 x i8> %1,
24     <vscale x 1 x i1> %2,
25     iXLen %3)
27   ret <vscale x 1 x i1> %a
30 declare <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i8.nxv2i8(
31   <vscale x 2 x i8>,
32   <vscale x 2 x i8>,
33   <vscale x 2 x i1>,
34   iXLen);
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
42 ; CHECK-NEXT:    ret
43 entry:
44   %a = call <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i8.nxv2i8(
45     <vscale x 2 x i8> %0,
46     <vscale x 2 x i8> %1,
47     <vscale x 2 x i1> %2,
48     iXLen %3)
50   ret <vscale x 2 x i1> %a
53 declare <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i8.nxv4i8(
54   <vscale x 4 x i8>,
55   <vscale x 4 x i8>,
56   <vscale x 4 x i1>,
57   iXLen);
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
65 ; CHECK-NEXT:    ret
66 entry:
67   %a = call <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i8.nxv4i8(
68     <vscale x 4 x i8> %0,
69     <vscale x 4 x i8> %1,
70     <vscale x 4 x i1> %2,
71     iXLen %3)
73   ret <vscale x 4 x i1> %a
76 declare <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i8.nxv8i8(
77   <vscale x 8 x i8>,
78   <vscale x 8 x i8>,
79   <vscale x 8 x i1>,
80   iXLen);
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
88 ; CHECK-NEXT:    ret
89 entry:
90   %a = call <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i8.nxv8i8(
91     <vscale x 8 x i8> %0,
92     <vscale x 8 x i8> %1,
93     <vscale x 8 x i1> %2,
94     iXLen %3)
96   ret <vscale x 8 x i1> %a
99 declare <vscale x 16 x i1> @llvm.riscv.vmadc.carry.in.nxv16i8.nxv16i8(
100   <vscale x 16 x i8>,
101   <vscale x 16 x i8>,
102   <vscale x 16 x i1>,
103   iXLen);
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
111 ; CHECK-NEXT:    ret
112 entry:
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,
117     iXLen %3)
119   ret <vscale x 16 x i1> %a
122 declare <vscale x 32 x i1> @llvm.riscv.vmadc.carry.in.nxv32i8.nxv32i8(
123   <vscale x 32 x i8>,
124   <vscale x 32 x i8>,
125   <vscale x 32 x i1>,
126   iXLen);
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
134 ; CHECK-NEXT:    ret
135 entry:
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,
140     iXLen %3)
142   ret <vscale x 32 x i1> %a
145 declare <vscale x 64 x i1> @llvm.riscv.vmadc.carry.in.nxv64i8.nxv64i8(
146   <vscale x 64 x i8>,
147   <vscale x 64 x i8>,
148   <vscale x 64 x i1>,
149   iXLen);
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
157 ; CHECK-NEXT:    ret
158 entry:
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,
163     iXLen %3)
165   ret <vscale x 64 x i1> %a
168 declare <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i16.nxv1i16(
169   <vscale x 1 x i16>,
170   <vscale x 1 x i16>,
171   <vscale x 1 x i1>,
172   iXLen);
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
180 ; CHECK-NEXT:    ret
181 entry:
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,
186     iXLen %3)
188   ret <vscale x 1 x i1> %a
191 declare <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i16.nxv2i16(
192   <vscale x 2 x i16>,
193   <vscale x 2 x i16>,
194   <vscale x 2 x i1>,
195   iXLen);
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
203 ; CHECK-NEXT:    ret
204 entry:
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,
209     iXLen %3)
211   ret <vscale x 2 x i1> %a
214 declare <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i16.nxv4i16(
215   <vscale x 4 x i16>,
216   <vscale x 4 x i16>,
217   <vscale x 4 x i1>,
218   iXLen);
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
226 ; CHECK-NEXT:    ret
227 entry:
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,
232     iXLen %3)
234   ret <vscale x 4 x i1> %a
237 declare <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i16.nxv8i16(
238   <vscale x 8 x i16>,
239   <vscale x 8 x i16>,
240   <vscale x 8 x i1>,
241   iXLen);
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
249 ; CHECK-NEXT:    ret
250 entry:
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,
255     iXLen %3)
257   ret <vscale x 8 x i1> %a
260 declare <vscale x 16 x i1> @llvm.riscv.vmadc.carry.in.nxv16i16.nxv16i16(
261   <vscale x 16 x i16>,
262   <vscale x 16 x i16>,
263   <vscale x 16 x i1>,
264   iXLen);
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
272 ; CHECK-NEXT:    ret
273 entry:
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,
278     iXLen %3)
280   ret <vscale x 16 x i1> %a
283 declare <vscale x 32 x i1> @llvm.riscv.vmadc.carry.in.nxv32i16.nxv32i16(
284   <vscale x 32 x i16>,
285   <vscale x 32 x i16>,
286   <vscale x 32 x i1>,
287   iXLen);
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
295 ; CHECK-NEXT:    ret
296 entry:
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,
301     iXLen %3)
303   ret <vscale x 32 x i1> %a
306 declare <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i32.nxv1i32(
307   <vscale x 1 x i32>,
308   <vscale x 1 x i32>,
309   <vscale x 1 x i1>,
310   iXLen);
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
318 ; CHECK-NEXT:    ret
319 entry:
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,
324     iXLen %3)
326   ret <vscale x 1 x i1> %a
329 declare <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i32.nxv2i32(
330   <vscale x 2 x i32>,
331   <vscale x 2 x i32>,
332   <vscale x 2 x i1>,
333   iXLen);
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
341 ; CHECK-NEXT:    ret
342 entry:
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,
347     iXLen %3)
349   ret <vscale x 2 x i1> %a
352 declare <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i32.nxv4i32(
353   <vscale x 4 x i32>,
354   <vscale x 4 x i32>,
355   <vscale x 4 x i1>,
356   iXLen);
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
364 ; CHECK-NEXT:    ret
365 entry:
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,
370     iXLen %3)
372   ret <vscale x 4 x i1> %a
375 declare <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i32.nxv8i32(
376   <vscale x 8 x i32>,
377   <vscale x 8 x i32>,
378   <vscale x 8 x i1>,
379   iXLen);
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
387 ; CHECK-NEXT:    ret
388 entry:
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,
393     iXLen %3)
395   ret <vscale x 8 x i1> %a
398 declare <vscale x 16 x i1> @llvm.riscv.vmadc.carry.in.nxv16i32.nxv16i32(
399   <vscale x 16 x i32>,
400   <vscale x 16 x i32>,
401   <vscale x 16 x i1>,
402   iXLen);
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
410 ; CHECK-NEXT:    ret
411 entry:
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,
416     iXLen %3)
418   ret <vscale x 16 x i1> %a
421 declare <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i64.nxv1i64(
422   <vscale x 1 x i64>,
423   <vscale x 1 x i64>,
424   <vscale x 1 x i1>,
425   iXLen);
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
433 ; CHECK-NEXT:    ret
434 entry:
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,
439     iXLen %3)
441   ret <vscale x 1 x i1> %a
444 declare <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i64.nxv2i64(
445   <vscale x 2 x i64>,
446   <vscale x 2 x i64>,
447   <vscale x 2 x i1>,
448   iXLen);
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
456 ; CHECK-NEXT:    ret
457 entry:
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,
462     iXLen %3)
464   ret <vscale x 2 x i1> %a
467 declare <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i64.nxv4i64(
468   <vscale x 4 x i64>,
469   <vscale x 4 x i64>,
470   <vscale x 4 x i1>,
471   iXLen);
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
479 ; CHECK-NEXT:    ret
480 entry:
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,
485     iXLen %3)
487   ret <vscale x 4 x i1> %a
490 declare <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i64.nxv8i64(
491   <vscale x 8 x i64>,
492   <vscale x 8 x i64>,
493   <vscale x 8 x i1>,
494   iXLen);
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
502 ; CHECK-NEXT:    ret
503 entry:
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,
508     iXLen %3)
510   ret <vscale x 8 x i1> %a
513 declare <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i8.i8(
514   <vscale x 1 x i8>,
515   i8,
516   <vscale x 1 x i1>,
517   iXLen);
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
525 ; CHECK-NEXT:    ret
526 entry:
527   %a = call <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i8.i8(
528     <vscale x 1 x i8> %0,
529     i8 %1,
530     <vscale x 1 x i1> %2,
531     iXLen %3)
533   ret <vscale x 1 x i1> %a
536 declare <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i8.i8(
537   <vscale x 2 x i8>,
538   i8,
539   <vscale x 2 x i1>,
540   iXLen);
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
548 ; CHECK-NEXT:    ret
549 entry:
550   %a = call <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i8.i8(
551     <vscale x 2 x i8> %0,
552     i8 %1,
553     <vscale x 2 x i1> %2,
554     iXLen %3)
556   ret <vscale x 2 x i1> %a
559 declare <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i8.i8(
560   <vscale x 4 x i8>,
561   i8,
562   <vscale x 4 x i1>,
563   iXLen);
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
571 ; CHECK-NEXT:    ret
572 entry:
573   %a = call <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i8.i8(
574     <vscale x 4 x i8> %0,
575     i8 %1,
576     <vscale x 4 x i1> %2,
577     iXLen %3)
579   ret <vscale x 4 x i1> %a
582 declare <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i8.i8(
583   <vscale x 8 x i8>,
584   i8,
585   <vscale x 8 x i1>,
586   iXLen);
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
594 ; CHECK-NEXT:    ret
595 entry:
596   %a = call <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i8.i8(
597     <vscale x 8 x i8> %0,
598     i8 %1,
599     <vscale x 8 x i1> %2,
600     iXLen %3)
602   ret <vscale x 8 x i1> %a
605 declare <vscale x 16 x i1> @llvm.riscv.vmadc.carry.in.nxv16i8.i8(
606   <vscale x 16 x i8>,
607   i8,
608   <vscale x 16 x i1>,
609   iXLen);
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
617 ; CHECK-NEXT:    ret
618 entry:
619   %a = call <vscale x 16 x i1> @llvm.riscv.vmadc.carry.in.nxv16i8.i8(
620     <vscale x 16 x i8> %0,
621     i8 %1,
622     <vscale x 16 x i1> %2,
623     iXLen %3)
625   ret <vscale x 16 x i1> %a
628 declare <vscale x 32 x i1> @llvm.riscv.vmadc.carry.in.nxv32i8.i8(
629   <vscale x 32 x i8>,
630   i8,
631   <vscale x 32 x i1>,
632   iXLen);
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
640 ; CHECK-NEXT:    ret
641 entry:
642   %a = call <vscale x 32 x i1> @llvm.riscv.vmadc.carry.in.nxv32i8.i8(
643     <vscale x 32 x i8> %0,
644     i8 %1,
645     <vscale x 32 x i1> %2,
646     iXLen %3)
648   ret <vscale x 32 x i1> %a
651 declare <vscale x 64 x i1> @llvm.riscv.vmadc.carry.in.nxv64i8.i8(
652   <vscale x 64 x i8>,
653   i8,
654   <vscale x 64 x i1>,
655   iXLen);
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
663 ; CHECK-NEXT:    ret
664 entry:
665   %a = call <vscale x 64 x i1> @llvm.riscv.vmadc.carry.in.nxv64i8.i8(
666     <vscale x 64 x i8> %0,
667     i8 %1,
668     <vscale x 64 x i1> %2,
669     iXLen %3)
671   ret <vscale x 64 x i1> %a
674 declare <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i16.i16(
675   <vscale x 1 x i16>,
676   i16,
677   <vscale x 1 x i1>,
678   iXLen);
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
686 ; CHECK-NEXT:    ret
687 entry:
688   %a = call <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i16.i16(
689     <vscale x 1 x i16> %0,
690     i16 %1,
691     <vscale x 1 x i1> %2,
692     iXLen %3)
694   ret <vscale x 1 x i1> %a
697 declare <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i16.i16(
698   <vscale x 2 x i16>,
699   i16,
700   <vscale x 2 x i1>,
701   iXLen);
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
709 ; CHECK-NEXT:    ret
710 entry:
711   %a = call <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i16.i16(
712     <vscale x 2 x i16> %0,
713     i16 %1,
714     <vscale x 2 x i1> %2,
715     iXLen %3)
717   ret <vscale x 2 x i1> %a
720 declare <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i16.i16(
721   <vscale x 4 x i16>,
722   i16,
723   <vscale x 4 x i1>,
724   iXLen);
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
732 ; CHECK-NEXT:    ret
733 entry:
734   %a = call <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i16.i16(
735     <vscale x 4 x i16> %0,
736     i16 %1,
737     <vscale x 4 x i1> %2,
738     iXLen %3)
740   ret <vscale x 4 x i1> %a
743 declare <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i16.i16(
744   <vscale x 8 x i16>,
745   i16,
746   <vscale x 8 x i1>,
747   iXLen);
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
755 ; CHECK-NEXT:    ret
756 entry:
757   %a = call <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i16.i16(
758     <vscale x 8 x i16> %0,
759     i16 %1,
760     <vscale x 8 x i1> %2,
761     iXLen %3)
763   ret <vscale x 8 x i1> %a
766 declare <vscale x 16 x i1> @llvm.riscv.vmadc.carry.in.nxv16i16.i16(
767   <vscale x 16 x i16>,
768   i16,
769   <vscale x 16 x i1>,
770   iXLen);
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
778 ; CHECK-NEXT:    ret
779 entry:
780   %a = call <vscale x 16 x i1> @llvm.riscv.vmadc.carry.in.nxv16i16.i16(
781     <vscale x 16 x i16> %0,
782     i16 %1,
783     <vscale x 16 x i1> %2,
784     iXLen %3)
786   ret <vscale x 16 x i1> %a
789 declare <vscale x 32 x i1> @llvm.riscv.vmadc.carry.in.nxv32i16.i16(
790   <vscale x 32 x i16>,
791   i16,
792   <vscale x 32 x i1>,
793   iXLen);
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
801 ; CHECK-NEXT:    ret
802 entry:
803   %a = call <vscale x 32 x i1> @llvm.riscv.vmadc.carry.in.nxv32i16.i16(
804     <vscale x 32 x i16> %0,
805     i16 %1,
806     <vscale x 32 x i1> %2,
807     iXLen %3)
809   ret <vscale x 32 x i1> %a
812 declare <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i32.i32(
813   <vscale x 1 x i32>,
814   i32,
815   <vscale x 1 x i1>,
816   iXLen);
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
824 ; CHECK-NEXT:    ret
825 entry:
826   %a = call <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i32.i32(
827     <vscale x 1 x i32> %0,
828     i32 %1,
829     <vscale x 1 x i1> %2,
830     iXLen %3)
832   ret <vscale x 1 x i1> %a
835 declare <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i32.i32(
836   <vscale x 2 x i32>,
837   i32,
838   <vscale x 2 x i1>,
839   iXLen);
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
847 ; CHECK-NEXT:    ret
848 entry:
849   %a = call <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i32.i32(
850     <vscale x 2 x i32> %0,
851     i32 %1,
852     <vscale x 2 x i1> %2,
853     iXLen %3)
855   ret <vscale x 2 x i1> %a
858 declare <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i32.i32(
859   <vscale x 4 x i32>,
860   i32,
861   <vscale x 4 x i1>,
862   iXLen);
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
870 ; CHECK-NEXT:    ret
871 entry:
872   %a = call <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i32.i32(
873     <vscale x 4 x i32> %0,
874     i32 %1,
875     <vscale x 4 x i1> %2,
876     iXLen %3)
878   ret <vscale x 4 x i1> %a
881 declare <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i32.i32(
882   <vscale x 8 x i32>,
883   i32,
884   <vscale x 8 x i1>,
885   iXLen);
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
893 ; CHECK-NEXT:    ret
894 entry:
895   %a = call <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i32.i32(
896     <vscale x 8 x i32> %0,
897     i32 %1,
898     <vscale x 8 x i1> %2,
899     iXLen %3)
901   ret <vscale x 8 x i1> %a
904 declare <vscale x 16 x i1> @llvm.riscv.vmadc.carry.in.nxv16i32.i32(
905   <vscale x 16 x i32>,
906   i32,
907   <vscale x 16 x i1>,
908   iXLen);
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
916 ; CHECK-NEXT:    ret
917 entry:
918   %a = call <vscale x 16 x i1> @llvm.riscv.vmadc.carry.in.nxv16i32.i32(
919     <vscale x 16 x i32> %0,
920     i32 %1,
921     <vscale x 16 x i1> %2,
922     iXLen %3)
924   ret <vscale x 16 x i1> %a
927 declare <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i64.i64(
928   <vscale x 1 x i64>,
929   i64,
930   <vscale x 1 x i1>,
931   iXLen);
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
945 ; RV32-NEXT:    ret
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
952 ; RV64-NEXT:    ret
953 entry:
954   %a = call <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i64.i64(
955     <vscale x 1 x i64> %0,
956     i64 %1,
957     <vscale x 1 x i1> %2,
958     iXLen %3)
960   ret <vscale x 1 x i1> %a
963 declare <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i64.i64(
964   <vscale x 2 x i64>,
965   i64,
966   <vscale x 2 x i1>,
967   iXLen);
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
981 ; RV32-NEXT:    ret
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
988 ; RV64-NEXT:    ret
989 entry:
990   %a = call <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i64.i64(
991     <vscale x 2 x i64> %0,
992     i64 %1,
993     <vscale x 2 x i1> %2,
994     iXLen %3)
996   ret <vscale x 2 x i1> %a
999 declare <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i64.i64(
1000   <vscale x 4 x i64>,
1001   i64,
1002   <vscale x 4 x i1>,
1003   iXLen);
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
1017 ; RV32-NEXT:    ret
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
1024 ; RV64-NEXT:    ret
1025 entry:
1026   %a = call <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i64.i64(
1027     <vscale x 4 x i64> %0,
1028     i64 %1,
1029     <vscale x 4 x i1> %2,
1030     iXLen %3)
1032   ret <vscale x 4 x i1> %a
1035 declare <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i64.i64(
1036   <vscale x 8 x i64>,
1037   i64,
1038   <vscale x 8 x i1>,
1039   iXLen);
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
1053 ; RV32-NEXT:    ret
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
1060 ; RV64-NEXT:    ret
1061 entry:
1062   %a = call <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i64.i64(
1063     <vscale x 8 x i64> %0,
1064     i64 %1,
1065     <vscale x 8 x i1> %2,
1066     iXLen %3)
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
1077 ; CHECK-NEXT:    ret
1078 entry:
1079   %a = call <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i8.i8(
1080     <vscale x 1 x i8> %0,
1081     i8 9,
1082     <vscale x 1 x i1> %1,
1083     iXLen %2)
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
1094 ; CHECK-NEXT:    ret
1095 entry:
1096   %a = call <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i8.i8(
1097     <vscale x 2 x i8> %0,
1098     i8 9,
1099     <vscale x 2 x i1> %1,
1100     iXLen %2)
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
1111 ; CHECK-NEXT:    ret
1112 entry:
1113   %a = call <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i8.i8(
1114     <vscale x 4 x i8> %0,
1115     i8 9,
1116     <vscale x 4 x i1> %1,
1117     iXLen %2)
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
1128 ; CHECK-NEXT:    ret
1129 entry:
1130   %a = call <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i8.i8(
1131     <vscale x 8 x i8> %0,
1132     i8 9,
1133     <vscale x 8 x i1> %1,
1134     iXLen %2)
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
1145 ; CHECK-NEXT:    ret
1146 entry:
1147   %a = call <vscale x 16 x i1> @llvm.riscv.vmadc.carry.in.nxv16i8.i8(
1148     <vscale x 16 x i8> %0,
1149     i8 9,
1150     <vscale x 16 x i1> %1,
1151     iXLen %2)
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
1162 ; CHECK-NEXT:    ret
1163 entry:
1164   %a = call <vscale x 32 x i1> @llvm.riscv.vmadc.carry.in.nxv32i8.i8(
1165     <vscale x 32 x i8> %0,
1166     i8 9,
1167     <vscale x 32 x i1> %1,
1168     iXLen %2)
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
1179 ; CHECK-NEXT:    ret
1180 entry:
1181   %a = call <vscale x 64 x i1> @llvm.riscv.vmadc.carry.in.nxv64i8.i8(
1182     <vscale x 64 x i8> %0,
1183     i8 9,
1184     <vscale x 64 x i1> %1,
1185     iXLen %2)
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
1196 ; CHECK-NEXT:    ret
1197 entry:
1198   %a = call <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i16.i16(
1199     <vscale x 1 x i16> %0,
1200     i16 9,
1201     <vscale x 1 x i1> %1,
1202     iXLen %2)
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
1213 ; CHECK-NEXT:    ret
1214 entry:
1215   %a = call <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i16.i16(
1216     <vscale x 2 x i16> %0,
1217     i16 9,
1218     <vscale x 2 x i1> %1,
1219     iXLen %2)
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
1230 ; CHECK-NEXT:    ret
1231 entry:
1232   %a = call <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i16.i16(
1233     <vscale x 4 x i16> %0,
1234     i16 9,
1235     <vscale x 4 x i1> %1,
1236     iXLen %2)
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
1247 ; CHECK-NEXT:    ret
1248 entry:
1249   %a = call <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i16.i16(
1250     <vscale x 8 x i16> %0,
1251     i16 9,
1252     <vscale x 8 x i1> %1,
1253     iXLen %2)
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
1264 ; CHECK-NEXT:    ret
1265 entry:
1266   %a = call <vscale x 16 x i1> @llvm.riscv.vmadc.carry.in.nxv16i16.i16(
1267     <vscale x 16 x i16> %0,
1268     i16 9,
1269     <vscale x 16 x i1> %1,
1270     iXLen %2)
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
1281 ; CHECK-NEXT:    ret
1282 entry:
1283   %a = call <vscale x 32 x i1> @llvm.riscv.vmadc.carry.in.nxv32i16.i16(
1284     <vscale x 32 x i16> %0,
1285     i16 9,
1286     <vscale x 32 x i1> %1,
1287     iXLen %2)
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
1298 ; CHECK-NEXT:    ret
1299 entry:
1300   %a = call <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i32.i32(
1301     <vscale x 1 x i32> %0,
1302     i32 9,
1303     <vscale x 1 x i1> %1,
1304     iXLen %2)
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
1315 ; CHECK-NEXT:    ret
1316 entry:
1317   %a = call <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i32.i32(
1318     <vscale x 2 x i32> %0,
1319     i32 9,
1320     <vscale x 2 x i1> %1,
1321     iXLen %2)
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
1332 ; CHECK-NEXT:    ret
1333 entry:
1334   %a = call <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i32.i32(
1335     <vscale x 4 x i32> %0,
1336     i32 9,
1337     <vscale x 4 x i1> %1,
1338     iXLen %2)
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
1349 ; CHECK-NEXT:    ret
1350 entry:
1351   %a = call <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i32.i32(
1352     <vscale x 8 x i32> %0,
1353     i32 9,
1354     <vscale x 8 x i1> %1,
1355     iXLen %2)
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
1366 ; CHECK-NEXT:    ret
1367 entry:
1368   %a = call <vscale x 16 x i1> @llvm.riscv.vmadc.carry.in.nxv16i32.i32(
1369     <vscale x 16 x i32> %0,
1370     i32 9,
1371     <vscale x 16 x i1> %1,
1372     iXLen %2)
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
1383 ; CHECK-NEXT:    ret
1384 entry:
1385   %a = call <vscale x 1 x i1> @llvm.riscv.vmadc.carry.in.nxv1i64.i64(
1386     <vscale x 1 x i64> %0,
1387     i64 9,
1388     <vscale x 1 x i1> %1,
1389     iXLen %2)
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
1400 ; CHECK-NEXT:    ret
1401 entry:
1402   %a = call <vscale x 2 x i1> @llvm.riscv.vmadc.carry.in.nxv2i64.i64(
1403     <vscale x 2 x i64> %0,
1404     i64 9,
1405     <vscale x 2 x i1> %1,
1406     iXLen %2)
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
1417 ; CHECK-NEXT:    ret
1418 entry:
1419   %a = call <vscale x 4 x i1> @llvm.riscv.vmadc.carry.in.nxv4i64.i64(
1420     <vscale x 4 x i64> %0,
1421     i64 9,
1422     <vscale x 4 x i1> %1,
1423     iXLen %2)
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
1434 ; CHECK-NEXT:    ret
1435 entry:
1436   %a = call <vscale x 8 x i1> @llvm.riscv.vmadc.carry.in.nxv8i64.i64(
1437     <vscale x 8 x i64> %0,
1438     i64 9,
1439     <vscale x 8 x i1> %1,
1440     iXLen %2)
1442   ret <vscale x 8 x i1> %a