Re-land [openmp] Fix warnings when building on Windows with latest MSVC or Clang...
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vadd.ll
blob2654e7daafb0c24ee9fd5882c3f1b2a22c2ef409
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+v \
3 ; RUN:   -verify-machineinstrs | FileCheck %s --check-prefixes=CHECK,RV32
4 ; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v \
5 ; RUN:   -verify-machineinstrs | FileCheck %s --check-prefixes=CHECK,RV64
7 declare <vscale x 1 x i8> @llvm.riscv.vadd.nxv1i8.nxv1i8(
8   <vscale x 1 x i8>,
9   <vscale x 1 x i8>,
10   <vscale x 1 x i8>,
11   iXLen);
13 define <vscale x 1 x i8> @intrinsic_vadd_vv_nxv1i8_nxv1i8_nxv1i8(<vscale x 1 x i8> %0, <vscale x 1 x i8> %1, iXLen %2) nounwind {
14 ; CHECK-LABEL: intrinsic_vadd_vv_nxv1i8_nxv1i8_nxv1i8:
15 ; CHECK:       # %bb.0: # %entry
16 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
17 ; CHECK-NEXT:    vadd.vv v8, v8, v9
18 ; CHECK-NEXT:    ret
19 entry:
20   %a = call <vscale x 1 x i8> @llvm.riscv.vadd.nxv1i8.nxv1i8(
21     <vscale x 1 x i8> undef,
22     <vscale x 1 x i8> %0,
23     <vscale x 1 x i8> %1,
24     iXLen %2)
26   ret <vscale x 1 x i8> %a
29 declare <vscale x 1 x i8> @llvm.riscv.vadd.mask.nxv1i8.nxv1i8(
30   <vscale x 1 x i8>,
31   <vscale x 1 x i8>,
32   <vscale x 1 x i8>,
33   <vscale x 1 x i1>,
34   iXLen, iXLen);
36 define <vscale x 1 x i8> @intrinsic_vadd_mask_vv_nxv1i8_nxv1i8_nxv1i8(<vscale x 1 x i8> %0, <vscale x 1 x i8> %1, <vscale x 1 x i8> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
37 ; CHECK-LABEL: intrinsic_vadd_mask_vv_nxv1i8_nxv1i8_nxv1i8:
38 ; CHECK:       # %bb.0: # %entry
39 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, mu
40 ; CHECK-NEXT:    vadd.vv v8, v9, v10, v0.t
41 ; CHECK-NEXT:    ret
42 entry:
43   %a = call <vscale x 1 x i8> @llvm.riscv.vadd.mask.nxv1i8.nxv1i8(
44     <vscale x 1 x i8> %0,
45     <vscale x 1 x i8> %1,
46     <vscale x 1 x i8> %2,
47     <vscale x 1 x i1> %3,
48     iXLen %4, iXLen 1)
50   ret <vscale x 1 x i8> %a
53 declare <vscale x 2 x i8> @llvm.riscv.vadd.nxv2i8.nxv2i8(
54   <vscale x 2 x i8>,
55   <vscale x 2 x i8>,
56   <vscale x 2 x i8>,
57   iXLen);
59 define <vscale x 2 x i8> @intrinsic_vadd_vv_nxv2i8_nxv2i8_nxv2i8(<vscale x 2 x i8> %0, <vscale x 2 x i8> %1, iXLen %2) nounwind {
60 ; CHECK-LABEL: intrinsic_vadd_vv_nxv2i8_nxv2i8_nxv2i8:
61 ; CHECK:       # %bb.0: # %entry
62 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
63 ; CHECK-NEXT:    vadd.vv v8, v8, v9
64 ; CHECK-NEXT:    ret
65 entry:
66   %a = call <vscale x 2 x i8> @llvm.riscv.vadd.nxv2i8.nxv2i8(
67     <vscale x 2 x i8> undef,
68     <vscale x 2 x i8> %0,
69     <vscale x 2 x i8> %1,
70     iXLen %2)
72   ret <vscale x 2 x i8> %a
75 declare <vscale x 2 x i8> @llvm.riscv.vadd.mask.nxv2i8.nxv2i8(
76   <vscale x 2 x i8>,
77   <vscale x 2 x i8>,
78   <vscale x 2 x i8>,
79   <vscale x 2 x i1>,
80   iXLen, iXLen);
82 define <vscale x 2 x i8> @intrinsic_vadd_mask_vv_nxv2i8_nxv2i8_nxv2i8(<vscale x 2 x i8> %0, <vscale x 2 x i8> %1, <vscale x 2 x i8> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
83 ; CHECK-LABEL: intrinsic_vadd_mask_vv_nxv2i8_nxv2i8_nxv2i8:
84 ; CHECK:       # %bb.0: # %entry
85 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, mu
86 ; CHECK-NEXT:    vadd.vv v8, v9, v10, v0.t
87 ; CHECK-NEXT:    ret
88 entry:
89   %a = call <vscale x 2 x i8> @llvm.riscv.vadd.mask.nxv2i8.nxv2i8(
90     <vscale x 2 x i8> %0,
91     <vscale x 2 x i8> %1,
92     <vscale x 2 x i8> %2,
93     <vscale x 2 x i1> %3,
94     iXLen %4, iXLen 1)
96   ret <vscale x 2 x i8> %a
99 declare <vscale x 4 x i8> @llvm.riscv.vadd.nxv4i8.nxv4i8(
100   <vscale x 4 x i8>,
101   <vscale x 4 x i8>,
102   <vscale x 4 x i8>,
103   iXLen);
105 define <vscale x 4 x i8> @intrinsic_vadd_vv_nxv4i8_nxv4i8_nxv4i8(<vscale x 4 x i8> %0, <vscale x 4 x i8> %1, iXLen %2) nounwind {
106 ; CHECK-LABEL: intrinsic_vadd_vv_nxv4i8_nxv4i8_nxv4i8:
107 ; CHECK:       # %bb.0: # %entry
108 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
109 ; CHECK-NEXT:    vadd.vv v8, v8, v9
110 ; CHECK-NEXT:    ret
111 entry:
112   %a = call <vscale x 4 x i8> @llvm.riscv.vadd.nxv4i8.nxv4i8(
113     <vscale x 4 x i8> undef,
114     <vscale x 4 x i8> %0,
115     <vscale x 4 x i8> %1,
116     iXLen %2)
118   ret <vscale x 4 x i8> %a
121 declare <vscale x 4 x i8> @llvm.riscv.vadd.mask.nxv4i8.nxv4i8(
122   <vscale x 4 x i8>,
123   <vscale x 4 x i8>,
124   <vscale x 4 x i8>,
125   <vscale x 4 x i1>,
126   iXLen, iXLen);
128 define <vscale x 4 x i8> @intrinsic_vadd_mask_vv_nxv4i8_nxv4i8_nxv4i8(<vscale x 4 x i8> %0, <vscale x 4 x i8> %1, <vscale x 4 x i8> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
129 ; CHECK-LABEL: intrinsic_vadd_mask_vv_nxv4i8_nxv4i8_nxv4i8:
130 ; CHECK:       # %bb.0: # %entry
131 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, mu
132 ; CHECK-NEXT:    vadd.vv v8, v9, v10, v0.t
133 ; CHECK-NEXT:    ret
134 entry:
135   %a = call <vscale x 4 x i8> @llvm.riscv.vadd.mask.nxv4i8.nxv4i8(
136     <vscale x 4 x i8> %0,
137     <vscale x 4 x i8> %1,
138     <vscale x 4 x i8> %2,
139     <vscale x 4 x i1> %3,
140     iXLen %4, iXLen 1)
142   ret <vscale x 4 x i8> %a
145 declare <vscale x 8 x i8> @llvm.riscv.vadd.nxv8i8.nxv8i8(
146   <vscale x 8 x i8>,
147   <vscale x 8 x i8>,
148   <vscale x 8 x i8>,
149   iXLen);
151 define <vscale x 8 x i8> @intrinsic_vadd_vv_nxv8i8_nxv8i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 8 x i8> %1, iXLen %2) nounwind {
152 ; CHECK-LABEL: intrinsic_vadd_vv_nxv8i8_nxv8i8_nxv8i8:
153 ; CHECK:       # %bb.0: # %entry
154 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
155 ; CHECK-NEXT:    vadd.vv v8, v8, v9
156 ; CHECK-NEXT:    ret
157 entry:
158   %a = call <vscale x 8 x i8> @llvm.riscv.vadd.nxv8i8.nxv8i8(
159     <vscale x 8 x i8> undef,
160     <vscale x 8 x i8> %0,
161     <vscale x 8 x i8> %1,
162     iXLen %2)
164   ret <vscale x 8 x i8> %a
167 declare <vscale x 8 x i8> @llvm.riscv.vadd.mask.nxv8i8.nxv8i8(
168   <vscale x 8 x i8>,
169   <vscale x 8 x i8>,
170   <vscale x 8 x i8>,
171   <vscale x 8 x i1>,
172   iXLen, iXLen);
174 define <vscale x 8 x i8> @intrinsic_vadd_mask_vv_nxv8i8_nxv8i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 8 x i8> %1, <vscale x 8 x i8> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
175 ; CHECK-LABEL: intrinsic_vadd_mask_vv_nxv8i8_nxv8i8_nxv8i8:
176 ; CHECK:       # %bb.0: # %entry
177 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, mu
178 ; CHECK-NEXT:    vadd.vv v8, v9, v10, v0.t
179 ; CHECK-NEXT:    ret
180 entry:
181   %a = call <vscale x 8 x i8> @llvm.riscv.vadd.mask.nxv8i8.nxv8i8(
182     <vscale x 8 x i8> %0,
183     <vscale x 8 x i8> %1,
184     <vscale x 8 x i8> %2,
185     <vscale x 8 x i1> %3,
186     iXLen %4, iXLen 1)
188   ret <vscale x 8 x i8> %a
191 declare <vscale x 16 x i8> @llvm.riscv.vadd.nxv16i8.nxv16i8(
192   <vscale x 16 x i8>,
193   <vscale x 16 x i8>,
194   <vscale x 16 x i8>,
195   iXLen);
197 define <vscale x 16 x i8> @intrinsic_vadd_vv_nxv16i8_nxv16i8_nxv16i8(<vscale x 16 x i8> %0, <vscale x 16 x i8> %1, iXLen %2) nounwind {
198 ; CHECK-LABEL: intrinsic_vadd_vv_nxv16i8_nxv16i8_nxv16i8:
199 ; CHECK:       # %bb.0: # %entry
200 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
201 ; CHECK-NEXT:    vadd.vv v8, v8, v10
202 ; CHECK-NEXT:    ret
203 entry:
204   %a = call <vscale x 16 x i8> @llvm.riscv.vadd.nxv16i8.nxv16i8(
205     <vscale x 16 x i8> undef,
206     <vscale x 16 x i8> %0,
207     <vscale x 16 x i8> %1,
208     iXLen %2)
210   ret <vscale x 16 x i8> %a
213 declare <vscale x 16 x i8> @llvm.riscv.vadd.mask.nxv16i8.nxv16i8(
214   <vscale x 16 x i8>,
215   <vscale x 16 x i8>,
216   <vscale x 16 x i8>,
217   <vscale x 16 x i1>,
218   iXLen, iXLen);
220 define <vscale x 16 x i8> @intrinsic_vadd_mask_vv_nxv16i8_nxv16i8_nxv16i8(<vscale x 16 x i8> %0, <vscale x 16 x i8> %1, <vscale x 16 x i8> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
221 ; CHECK-LABEL: intrinsic_vadd_mask_vv_nxv16i8_nxv16i8_nxv16i8:
222 ; CHECK:       # %bb.0: # %entry
223 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, mu
224 ; CHECK-NEXT:    vadd.vv v8, v10, v12, v0.t
225 ; CHECK-NEXT:    ret
226 entry:
227   %a = call <vscale x 16 x i8> @llvm.riscv.vadd.mask.nxv16i8.nxv16i8(
228     <vscale x 16 x i8> %0,
229     <vscale x 16 x i8> %1,
230     <vscale x 16 x i8> %2,
231     <vscale x 16 x i1> %3,
232     iXLen %4, iXLen 1)
234   ret <vscale x 16 x i8> %a
237 declare <vscale x 32 x i8> @llvm.riscv.vadd.nxv32i8.nxv32i8(
238   <vscale x 32 x i8>,
239   <vscale x 32 x i8>,
240   <vscale x 32 x i8>,
241   iXLen);
243 define <vscale x 32 x i8> @intrinsic_vadd_vv_nxv32i8_nxv32i8_nxv32i8(<vscale x 32 x i8> %0, <vscale x 32 x i8> %1, iXLen %2) nounwind {
244 ; CHECK-LABEL: intrinsic_vadd_vv_nxv32i8_nxv32i8_nxv32i8:
245 ; CHECK:       # %bb.0: # %entry
246 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
247 ; CHECK-NEXT:    vadd.vv v8, v8, v12
248 ; CHECK-NEXT:    ret
249 entry:
250   %a = call <vscale x 32 x i8> @llvm.riscv.vadd.nxv32i8.nxv32i8(
251     <vscale x 32 x i8> undef,
252     <vscale x 32 x i8> %0,
253     <vscale x 32 x i8> %1,
254     iXLen %2)
256   ret <vscale x 32 x i8> %a
259 declare <vscale x 32 x i8> @llvm.riscv.vadd.mask.nxv32i8.nxv32i8(
260   <vscale x 32 x i8>,
261   <vscale x 32 x i8>,
262   <vscale x 32 x i8>,
263   <vscale x 32 x i1>,
264   iXLen, iXLen);
266 define <vscale x 32 x i8> @intrinsic_vadd_mask_vv_nxv32i8_nxv32i8_nxv32i8(<vscale x 32 x i8> %0, <vscale x 32 x i8> %1, <vscale x 32 x i8> %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
267 ; CHECK-LABEL: intrinsic_vadd_mask_vv_nxv32i8_nxv32i8_nxv32i8:
268 ; CHECK:       # %bb.0: # %entry
269 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, mu
270 ; CHECK-NEXT:    vadd.vv v8, v12, v16, v0.t
271 ; CHECK-NEXT:    ret
272 entry:
273   %a = call <vscale x 32 x i8> @llvm.riscv.vadd.mask.nxv32i8.nxv32i8(
274     <vscale x 32 x i8> %0,
275     <vscale x 32 x i8> %1,
276     <vscale x 32 x i8> %2,
277     <vscale x 32 x i1> %3,
278     iXLen %4, iXLen 1)
280   ret <vscale x 32 x i8> %a
283 declare <vscale x 64 x i8> @llvm.riscv.vadd.nxv64i8.nxv64i8(
284   <vscale x 64 x i8>,
285   <vscale x 64 x i8>,
286   <vscale x 64 x i8>,
287   iXLen);
289 define <vscale x 64 x i8> @intrinsic_vadd_vv_nxv64i8_nxv64i8_nxv64i8(<vscale x 64 x i8> %0, <vscale x 64 x i8> %1, iXLen %2) nounwind {
290 ; CHECK-LABEL: intrinsic_vadd_vv_nxv64i8_nxv64i8_nxv64i8:
291 ; CHECK:       # %bb.0: # %entry
292 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
293 ; CHECK-NEXT:    vadd.vv v8, v8, v16
294 ; CHECK-NEXT:    ret
295 entry:
296   %a = call <vscale x 64 x i8> @llvm.riscv.vadd.nxv64i8.nxv64i8(
297     <vscale x 64 x i8> undef,
298     <vscale x 64 x i8> %0,
299     <vscale x 64 x i8> %1,
300     iXLen %2)
302   ret <vscale x 64 x i8> %a
305 declare <vscale x 64 x i8> @llvm.riscv.vadd.mask.nxv64i8.nxv64i8(
306   <vscale x 64 x i8>,
307   <vscale x 64 x i8>,
308   <vscale x 64 x i8>,
309   <vscale x 64 x i1>,
310   iXLen, iXLen);
312 define <vscale x 64 x i8> @intrinsic_vadd_mask_vv_nxv64i8_nxv64i8_nxv64i8(<vscale x 64 x i8> %0, <vscale x 64 x i8> %1, <vscale x 64 x i8> %2, <vscale x 64 x i1> %3, iXLen %4) nounwind {
313 ; CHECK-LABEL: intrinsic_vadd_mask_vv_nxv64i8_nxv64i8_nxv64i8:
314 ; CHECK:       # %bb.0: # %entry
315 ; CHECK-NEXT:    vl8r.v v24, (a0)
316 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, mu
317 ; CHECK-NEXT:    vadd.vv v8, v16, v24, v0.t
318 ; CHECK-NEXT:    ret
319 entry:
320   %a = call <vscale x 64 x i8> @llvm.riscv.vadd.mask.nxv64i8.nxv64i8(
321     <vscale x 64 x i8> %0,
322     <vscale x 64 x i8> %1,
323     <vscale x 64 x i8> %2,
324     <vscale x 64 x i1> %3,
325     iXLen %4, iXLen 1)
327   ret <vscale x 64 x i8> %a
330 declare <vscale x 1 x i16> @llvm.riscv.vadd.nxv1i16.nxv1i16(
331   <vscale x 1 x i16>,
332   <vscale x 1 x i16>,
333   <vscale x 1 x i16>,
334   iXLen);
336 define <vscale x 1 x i16> @intrinsic_vadd_vv_nxv1i16_nxv1i16_nxv1i16(<vscale x 1 x i16> %0, <vscale x 1 x i16> %1, iXLen %2) nounwind {
337 ; CHECK-LABEL: intrinsic_vadd_vv_nxv1i16_nxv1i16_nxv1i16:
338 ; CHECK:       # %bb.0: # %entry
339 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
340 ; CHECK-NEXT:    vadd.vv v8, v8, v9
341 ; CHECK-NEXT:    ret
342 entry:
343   %a = call <vscale x 1 x i16> @llvm.riscv.vadd.nxv1i16.nxv1i16(
344     <vscale x 1 x i16> undef,
345     <vscale x 1 x i16> %0,
346     <vscale x 1 x i16> %1,
347     iXLen %2)
349   ret <vscale x 1 x i16> %a
352 declare <vscale x 1 x i16> @llvm.riscv.vadd.mask.nxv1i16.nxv1i16(
353   <vscale x 1 x i16>,
354   <vscale x 1 x i16>,
355   <vscale x 1 x i16>,
356   <vscale x 1 x i1>,
357   iXLen, iXLen);
359 define <vscale x 1 x i16> @intrinsic_vadd_mask_vv_nxv1i16_nxv1i16_nxv1i16(<vscale x 1 x i16> %0, <vscale x 1 x i16> %1, <vscale x 1 x i16> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
360 ; CHECK-LABEL: intrinsic_vadd_mask_vv_nxv1i16_nxv1i16_nxv1i16:
361 ; CHECK:       # %bb.0: # %entry
362 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, mu
363 ; CHECK-NEXT:    vadd.vv v8, v9, v10, v0.t
364 ; CHECK-NEXT:    ret
365 entry:
366   %a = call <vscale x 1 x i16> @llvm.riscv.vadd.mask.nxv1i16.nxv1i16(
367     <vscale x 1 x i16> %0,
368     <vscale x 1 x i16> %1,
369     <vscale x 1 x i16> %2,
370     <vscale x 1 x i1> %3,
371     iXLen %4, iXLen 1)
373   ret <vscale x 1 x i16> %a
376 declare <vscale x 2 x i16> @llvm.riscv.vadd.nxv2i16.nxv2i16(
377   <vscale x 2 x i16>,
378   <vscale x 2 x i16>,
379   <vscale x 2 x i16>,
380   iXLen);
382 define <vscale x 2 x i16> @intrinsic_vadd_vv_nxv2i16_nxv2i16_nxv2i16(<vscale x 2 x i16> %0, <vscale x 2 x i16> %1, iXLen %2) nounwind {
383 ; CHECK-LABEL: intrinsic_vadd_vv_nxv2i16_nxv2i16_nxv2i16:
384 ; CHECK:       # %bb.0: # %entry
385 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
386 ; CHECK-NEXT:    vadd.vv v8, v8, v9
387 ; CHECK-NEXT:    ret
388 entry:
389   %a = call <vscale x 2 x i16> @llvm.riscv.vadd.nxv2i16.nxv2i16(
390     <vscale x 2 x i16> undef,
391     <vscale x 2 x i16> %0,
392     <vscale x 2 x i16> %1,
393     iXLen %2)
395   ret <vscale x 2 x i16> %a
398 declare <vscale x 2 x i16> @llvm.riscv.vadd.mask.nxv2i16.nxv2i16(
399   <vscale x 2 x i16>,
400   <vscale x 2 x i16>,
401   <vscale x 2 x i16>,
402   <vscale x 2 x i1>,
403   iXLen, iXLen);
405 define <vscale x 2 x i16> @intrinsic_vadd_mask_vv_nxv2i16_nxv2i16_nxv2i16(<vscale x 2 x i16> %0, <vscale x 2 x i16> %1, <vscale x 2 x i16> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
406 ; CHECK-LABEL: intrinsic_vadd_mask_vv_nxv2i16_nxv2i16_nxv2i16:
407 ; CHECK:       # %bb.0: # %entry
408 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, mu
409 ; CHECK-NEXT:    vadd.vv v8, v9, v10, v0.t
410 ; CHECK-NEXT:    ret
411 entry:
412   %a = call <vscale x 2 x i16> @llvm.riscv.vadd.mask.nxv2i16.nxv2i16(
413     <vscale x 2 x i16> %0,
414     <vscale x 2 x i16> %1,
415     <vscale x 2 x i16> %2,
416     <vscale x 2 x i1> %3,
417     iXLen %4, iXLen 1)
419   ret <vscale x 2 x i16> %a
422 declare <vscale x 4 x i16> @llvm.riscv.vadd.nxv4i16.nxv4i16(
423   <vscale x 4 x i16>,
424   <vscale x 4 x i16>,
425   <vscale x 4 x i16>,
426   iXLen);
428 define <vscale x 4 x i16> @intrinsic_vadd_vv_nxv4i16_nxv4i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 4 x i16> %1, iXLen %2) nounwind {
429 ; CHECK-LABEL: intrinsic_vadd_vv_nxv4i16_nxv4i16_nxv4i16:
430 ; CHECK:       # %bb.0: # %entry
431 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
432 ; CHECK-NEXT:    vadd.vv v8, v8, v9
433 ; CHECK-NEXT:    ret
434 entry:
435   %a = call <vscale x 4 x i16> @llvm.riscv.vadd.nxv4i16.nxv4i16(
436     <vscale x 4 x i16> undef,
437     <vscale x 4 x i16> %0,
438     <vscale x 4 x i16> %1,
439     iXLen %2)
441   ret <vscale x 4 x i16> %a
444 declare <vscale x 4 x i16> @llvm.riscv.vadd.mask.nxv4i16.nxv4i16(
445   <vscale x 4 x i16>,
446   <vscale x 4 x i16>,
447   <vscale x 4 x i16>,
448   <vscale x 4 x i1>,
449   iXLen, iXLen);
451 define <vscale x 4 x i16> @intrinsic_vadd_mask_vv_nxv4i16_nxv4i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 4 x i16> %1, <vscale x 4 x i16> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
452 ; CHECK-LABEL: intrinsic_vadd_mask_vv_nxv4i16_nxv4i16_nxv4i16:
453 ; CHECK:       # %bb.0: # %entry
454 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, mu
455 ; CHECK-NEXT:    vadd.vv v8, v9, v10, v0.t
456 ; CHECK-NEXT:    ret
457 entry:
458   %a = call <vscale x 4 x i16> @llvm.riscv.vadd.mask.nxv4i16.nxv4i16(
459     <vscale x 4 x i16> %0,
460     <vscale x 4 x i16> %1,
461     <vscale x 4 x i16> %2,
462     <vscale x 4 x i1> %3,
463     iXLen %4, iXLen 1)
465   ret <vscale x 4 x i16> %a
468 declare <vscale x 8 x i16> @llvm.riscv.vadd.nxv8i16.nxv8i16(
469   <vscale x 8 x i16>,
470   <vscale x 8 x i16>,
471   <vscale x 8 x i16>,
472   iXLen);
474 define <vscale x 8 x i16> @intrinsic_vadd_vv_nxv8i16_nxv8i16_nxv8i16(<vscale x 8 x i16> %0, <vscale x 8 x i16> %1, iXLen %2) nounwind {
475 ; CHECK-LABEL: intrinsic_vadd_vv_nxv8i16_nxv8i16_nxv8i16:
476 ; CHECK:       # %bb.0: # %entry
477 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
478 ; CHECK-NEXT:    vadd.vv v8, v8, v10
479 ; CHECK-NEXT:    ret
480 entry:
481   %a = call <vscale x 8 x i16> @llvm.riscv.vadd.nxv8i16.nxv8i16(
482     <vscale x 8 x i16> undef,
483     <vscale x 8 x i16> %0,
484     <vscale x 8 x i16> %1,
485     iXLen %2)
487   ret <vscale x 8 x i16> %a
490 declare <vscale x 8 x i16> @llvm.riscv.vadd.mask.nxv8i16.nxv8i16(
491   <vscale x 8 x i16>,
492   <vscale x 8 x i16>,
493   <vscale x 8 x i16>,
494   <vscale x 8 x i1>,
495   iXLen, iXLen);
497 define <vscale x 8 x i16> @intrinsic_vadd_mask_vv_nxv8i16_nxv8i16_nxv8i16(<vscale x 8 x i16> %0, <vscale x 8 x i16> %1, <vscale x 8 x i16> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
498 ; CHECK-LABEL: intrinsic_vadd_mask_vv_nxv8i16_nxv8i16_nxv8i16:
499 ; CHECK:       # %bb.0: # %entry
500 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, mu
501 ; CHECK-NEXT:    vadd.vv v8, v10, v12, v0.t
502 ; CHECK-NEXT:    ret
503 entry:
504   %a = call <vscale x 8 x i16> @llvm.riscv.vadd.mask.nxv8i16.nxv8i16(
505     <vscale x 8 x i16> %0,
506     <vscale x 8 x i16> %1,
507     <vscale x 8 x i16> %2,
508     <vscale x 8 x i1> %3,
509     iXLen %4, iXLen 1)
511   ret <vscale x 8 x i16> %a
514 declare <vscale x 16 x i16> @llvm.riscv.vadd.nxv16i16.nxv16i16(
515   <vscale x 16 x i16>,
516   <vscale x 16 x i16>,
517   <vscale x 16 x i16>,
518   iXLen);
520 define <vscale x 16 x i16> @intrinsic_vadd_vv_nxv16i16_nxv16i16_nxv16i16(<vscale x 16 x i16> %0, <vscale x 16 x i16> %1, iXLen %2) nounwind {
521 ; CHECK-LABEL: intrinsic_vadd_vv_nxv16i16_nxv16i16_nxv16i16:
522 ; CHECK:       # %bb.0: # %entry
523 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
524 ; CHECK-NEXT:    vadd.vv v8, v8, v12
525 ; CHECK-NEXT:    ret
526 entry:
527   %a = call <vscale x 16 x i16> @llvm.riscv.vadd.nxv16i16.nxv16i16(
528     <vscale x 16 x i16> undef,
529     <vscale x 16 x i16> %0,
530     <vscale x 16 x i16> %1,
531     iXLen %2)
533   ret <vscale x 16 x i16> %a
536 declare <vscale x 16 x i16> @llvm.riscv.vadd.mask.nxv16i16.nxv16i16(
537   <vscale x 16 x i16>,
538   <vscale x 16 x i16>,
539   <vscale x 16 x i16>,
540   <vscale x 16 x i1>,
541   iXLen, iXLen);
543 define <vscale x 16 x i16> @intrinsic_vadd_mask_vv_nxv16i16_nxv16i16_nxv16i16(<vscale x 16 x i16> %0, <vscale x 16 x i16> %1, <vscale x 16 x i16> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
544 ; CHECK-LABEL: intrinsic_vadd_mask_vv_nxv16i16_nxv16i16_nxv16i16:
545 ; CHECK:       # %bb.0: # %entry
546 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, mu
547 ; CHECK-NEXT:    vadd.vv v8, v12, v16, v0.t
548 ; CHECK-NEXT:    ret
549 entry:
550   %a = call <vscale x 16 x i16> @llvm.riscv.vadd.mask.nxv16i16.nxv16i16(
551     <vscale x 16 x i16> %0,
552     <vscale x 16 x i16> %1,
553     <vscale x 16 x i16> %2,
554     <vscale x 16 x i1> %3,
555     iXLen %4, iXLen 1)
557   ret <vscale x 16 x i16> %a
560 declare <vscale x 32 x i16> @llvm.riscv.vadd.nxv32i16.nxv32i16(
561   <vscale x 32 x i16>,
562   <vscale x 32 x i16>,
563   <vscale x 32 x i16>,
564   iXLen);
566 define <vscale x 32 x i16> @intrinsic_vadd_vv_nxv32i16_nxv32i16_nxv32i16(<vscale x 32 x i16> %0, <vscale x 32 x i16> %1, iXLen %2) nounwind {
567 ; CHECK-LABEL: intrinsic_vadd_vv_nxv32i16_nxv32i16_nxv32i16:
568 ; CHECK:       # %bb.0: # %entry
569 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
570 ; CHECK-NEXT:    vadd.vv v8, v8, v16
571 ; CHECK-NEXT:    ret
572 entry:
573   %a = call <vscale x 32 x i16> @llvm.riscv.vadd.nxv32i16.nxv32i16(
574     <vscale x 32 x i16> undef,
575     <vscale x 32 x i16> %0,
576     <vscale x 32 x i16> %1,
577     iXLen %2)
579   ret <vscale x 32 x i16> %a
582 declare <vscale x 32 x i16> @llvm.riscv.vadd.mask.nxv32i16.nxv32i16(
583   <vscale x 32 x i16>,
584   <vscale x 32 x i16>,
585   <vscale x 32 x i16>,
586   <vscale x 32 x i1>,
587   iXLen, iXLen);
589 define <vscale x 32 x i16> @intrinsic_vadd_mask_vv_nxv32i16_nxv32i16_nxv32i16(<vscale x 32 x i16> %0, <vscale x 32 x i16> %1, <vscale x 32 x i16> %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
590 ; CHECK-LABEL: intrinsic_vadd_mask_vv_nxv32i16_nxv32i16_nxv32i16:
591 ; CHECK:       # %bb.0: # %entry
592 ; CHECK-NEXT:    vl8re16.v v24, (a0)
593 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, mu
594 ; CHECK-NEXT:    vadd.vv v8, v16, v24, v0.t
595 ; CHECK-NEXT:    ret
596 entry:
597   %a = call <vscale x 32 x i16> @llvm.riscv.vadd.mask.nxv32i16.nxv32i16(
598     <vscale x 32 x i16> %0,
599     <vscale x 32 x i16> %1,
600     <vscale x 32 x i16> %2,
601     <vscale x 32 x i1> %3,
602     iXLen %4, iXLen 1)
604   ret <vscale x 32 x i16> %a
607 declare <vscale x 1 x i32> @llvm.riscv.vadd.nxv1i32.nxv1i32(
608   <vscale x 1 x i32>,
609   <vscale x 1 x i32>,
610   <vscale x 1 x i32>,
611   iXLen);
613 define <vscale x 1 x i32> @intrinsic_vadd_vv_nxv1i32_nxv1i32_nxv1i32(<vscale x 1 x i32> %0, <vscale x 1 x i32> %1, iXLen %2) nounwind {
614 ; CHECK-LABEL: intrinsic_vadd_vv_nxv1i32_nxv1i32_nxv1i32:
615 ; CHECK:       # %bb.0: # %entry
616 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
617 ; CHECK-NEXT:    vadd.vv v8, v8, v9
618 ; CHECK-NEXT:    ret
619 entry:
620   %a = call <vscale x 1 x i32> @llvm.riscv.vadd.nxv1i32.nxv1i32(
621     <vscale x 1 x i32> undef,
622     <vscale x 1 x i32> %0,
623     <vscale x 1 x i32> %1,
624     iXLen %2)
626   ret <vscale x 1 x i32> %a
629 declare <vscale x 1 x i32> @llvm.riscv.vadd.mask.nxv1i32.nxv1i32(
630   <vscale x 1 x i32>,
631   <vscale x 1 x i32>,
632   <vscale x 1 x i32>,
633   <vscale x 1 x i1>,
634   iXLen, iXLen);
636 define <vscale x 1 x i32> @intrinsic_vadd_mask_vv_nxv1i32_nxv1i32_nxv1i32(<vscale x 1 x i32> %0, <vscale x 1 x i32> %1, <vscale x 1 x i32> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
637 ; CHECK-LABEL: intrinsic_vadd_mask_vv_nxv1i32_nxv1i32_nxv1i32:
638 ; CHECK:       # %bb.0: # %entry
639 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, mu
640 ; CHECK-NEXT:    vadd.vv v8, v9, v10, v0.t
641 ; CHECK-NEXT:    ret
642 entry:
643   %a = call <vscale x 1 x i32> @llvm.riscv.vadd.mask.nxv1i32.nxv1i32(
644     <vscale x 1 x i32> %0,
645     <vscale x 1 x i32> %1,
646     <vscale x 1 x i32> %2,
647     <vscale x 1 x i1> %3,
648     iXLen %4, iXLen 1)
650   ret <vscale x 1 x i32> %a
653 declare <vscale x 2 x i32> @llvm.riscv.vadd.nxv2i32.nxv2i32(
654   <vscale x 2 x i32>,
655   <vscale x 2 x i32>,
656   <vscale x 2 x i32>,
657   iXLen);
659 define <vscale x 2 x i32> @intrinsic_vadd_vv_nxv2i32_nxv2i32_nxv2i32(<vscale x 2 x i32> %0, <vscale x 2 x i32> %1, iXLen %2) nounwind {
660 ; CHECK-LABEL: intrinsic_vadd_vv_nxv2i32_nxv2i32_nxv2i32:
661 ; CHECK:       # %bb.0: # %entry
662 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
663 ; CHECK-NEXT:    vadd.vv v8, v8, v9
664 ; CHECK-NEXT:    ret
665 entry:
666   %a = call <vscale x 2 x i32> @llvm.riscv.vadd.nxv2i32.nxv2i32(
667     <vscale x 2 x i32> undef,
668     <vscale x 2 x i32> %0,
669     <vscale x 2 x i32> %1,
670     iXLen %2)
672   ret <vscale x 2 x i32> %a
675 declare <vscale x 2 x i32> @llvm.riscv.vadd.mask.nxv2i32.nxv2i32(
676   <vscale x 2 x i32>,
677   <vscale x 2 x i32>,
678   <vscale x 2 x i32>,
679   <vscale x 2 x i1>,
680   iXLen, iXLen);
682 define <vscale x 2 x i32> @intrinsic_vadd_mask_vv_nxv2i32_nxv2i32_nxv2i32(<vscale x 2 x i32> %0, <vscale x 2 x i32> %1, <vscale x 2 x i32> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
683 ; CHECK-LABEL: intrinsic_vadd_mask_vv_nxv2i32_nxv2i32_nxv2i32:
684 ; CHECK:       # %bb.0: # %entry
685 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, mu
686 ; CHECK-NEXT:    vadd.vv v8, v9, v10, v0.t
687 ; CHECK-NEXT:    ret
688 entry:
689   %a = call <vscale x 2 x i32> @llvm.riscv.vadd.mask.nxv2i32.nxv2i32(
690     <vscale x 2 x i32> %0,
691     <vscale x 2 x i32> %1,
692     <vscale x 2 x i32> %2,
693     <vscale x 2 x i1> %3,
694     iXLen %4, iXLen 1)
696   ret <vscale x 2 x i32> %a
699 declare <vscale x 4 x i32> @llvm.riscv.vadd.nxv4i32.nxv4i32(
700   <vscale x 4 x i32>,
701   <vscale x 4 x i32>,
702   <vscale x 4 x i32>,
703   iXLen);
705 define <vscale x 4 x i32> @intrinsic_vadd_vv_nxv4i32_nxv4i32_nxv4i32(<vscale x 4 x i32> %0, <vscale x 4 x i32> %1, iXLen %2) nounwind {
706 ; CHECK-LABEL: intrinsic_vadd_vv_nxv4i32_nxv4i32_nxv4i32:
707 ; CHECK:       # %bb.0: # %entry
708 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
709 ; CHECK-NEXT:    vadd.vv v8, v8, v10
710 ; CHECK-NEXT:    ret
711 entry:
712   %a = call <vscale x 4 x i32> @llvm.riscv.vadd.nxv4i32.nxv4i32(
713     <vscale x 4 x i32> undef,
714     <vscale x 4 x i32> %0,
715     <vscale x 4 x i32> %1,
716     iXLen %2)
718   ret <vscale x 4 x i32> %a
721 declare <vscale x 4 x i32> @llvm.riscv.vadd.mask.nxv4i32.nxv4i32(
722   <vscale x 4 x i32>,
723   <vscale x 4 x i32>,
724   <vscale x 4 x i32>,
725   <vscale x 4 x i1>,
726   iXLen, iXLen);
728 define <vscale x 4 x i32> @intrinsic_vadd_mask_vv_nxv4i32_nxv4i32_nxv4i32(<vscale x 4 x i32> %0, <vscale x 4 x i32> %1, <vscale x 4 x i32> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
729 ; CHECK-LABEL: intrinsic_vadd_mask_vv_nxv4i32_nxv4i32_nxv4i32:
730 ; CHECK:       # %bb.0: # %entry
731 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, mu
732 ; CHECK-NEXT:    vadd.vv v8, v10, v12, v0.t
733 ; CHECK-NEXT:    ret
734 entry:
735   %a = call <vscale x 4 x i32> @llvm.riscv.vadd.mask.nxv4i32.nxv4i32(
736     <vscale x 4 x i32> %0,
737     <vscale x 4 x i32> %1,
738     <vscale x 4 x i32> %2,
739     <vscale x 4 x i1> %3,
740     iXLen %4, iXLen 1)
742   ret <vscale x 4 x i32> %a
745 declare <vscale x 8 x i32> @llvm.riscv.vadd.nxv8i32.nxv8i32(
746   <vscale x 8 x i32>,
747   <vscale x 8 x i32>,
748   <vscale x 8 x i32>,
749   iXLen);
751 define <vscale x 8 x i32> @intrinsic_vadd_vv_nxv8i32_nxv8i32_nxv8i32(<vscale x 8 x i32> %0, <vscale x 8 x i32> %1, iXLen %2) nounwind {
752 ; CHECK-LABEL: intrinsic_vadd_vv_nxv8i32_nxv8i32_nxv8i32:
753 ; CHECK:       # %bb.0: # %entry
754 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
755 ; CHECK-NEXT:    vadd.vv v8, v8, v12
756 ; CHECK-NEXT:    ret
757 entry:
758   %a = call <vscale x 8 x i32> @llvm.riscv.vadd.nxv8i32.nxv8i32(
759     <vscale x 8 x i32> undef,
760     <vscale x 8 x i32> %0,
761     <vscale x 8 x i32> %1,
762     iXLen %2)
764   ret <vscale x 8 x i32> %a
767 declare <vscale x 8 x i32> @llvm.riscv.vadd.mask.nxv8i32.nxv8i32(
768   <vscale x 8 x i32>,
769   <vscale x 8 x i32>,
770   <vscale x 8 x i32>,
771   <vscale x 8 x i1>,
772   iXLen, iXLen);
774 define <vscale x 8 x i32> @intrinsic_vadd_mask_vv_nxv8i32_nxv8i32_nxv8i32(<vscale x 8 x i32> %0, <vscale x 8 x i32> %1, <vscale x 8 x i32> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
775 ; CHECK-LABEL: intrinsic_vadd_mask_vv_nxv8i32_nxv8i32_nxv8i32:
776 ; CHECK:       # %bb.0: # %entry
777 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, mu
778 ; CHECK-NEXT:    vadd.vv v8, v12, v16, v0.t
779 ; CHECK-NEXT:    ret
780 entry:
781   %a = call <vscale x 8 x i32> @llvm.riscv.vadd.mask.nxv8i32.nxv8i32(
782     <vscale x 8 x i32> %0,
783     <vscale x 8 x i32> %1,
784     <vscale x 8 x i32> %2,
785     <vscale x 8 x i1> %3,
786     iXLen %4, iXLen 1)
788   ret <vscale x 8 x i32> %a
791 declare <vscale x 16 x i32> @llvm.riscv.vadd.nxv16i32.nxv16i32(
792   <vscale x 16 x i32>,
793   <vscale x 16 x i32>,
794   <vscale x 16 x i32>,
795   iXLen);
797 define <vscale x 16 x i32> @intrinsic_vadd_vv_nxv16i32_nxv16i32_nxv16i32(<vscale x 16 x i32> %0, <vscale x 16 x i32> %1, iXLen %2) nounwind {
798 ; CHECK-LABEL: intrinsic_vadd_vv_nxv16i32_nxv16i32_nxv16i32:
799 ; CHECK:       # %bb.0: # %entry
800 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
801 ; CHECK-NEXT:    vadd.vv v8, v8, v16
802 ; CHECK-NEXT:    ret
803 entry:
804   %a = call <vscale x 16 x i32> @llvm.riscv.vadd.nxv16i32.nxv16i32(
805     <vscale x 16 x i32> undef,
806     <vscale x 16 x i32> %0,
807     <vscale x 16 x i32> %1,
808     iXLen %2)
810   ret <vscale x 16 x i32> %a
813 declare <vscale x 16 x i32> @llvm.riscv.vadd.mask.nxv16i32.nxv16i32(
814   <vscale x 16 x i32>,
815   <vscale x 16 x i32>,
816   <vscale x 16 x i32>,
817   <vscale x 16 x i1>,
818   iXLen, iXLen);
820 define <vscale x 16 x i32> @intrinsic_vadd_mask_vv_nxv16i32_nxv16i32_nxv16i32(<vscale x 16 x i32> %0, <vscale x 16 x i32> %1, <vscale x 16 x i32> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
821 ; CHECK-LABEL: intrinsic_vadd_mask_vv_nxv16i32_nxv16i32_nxv16i32:
822 ; CHECK:       # %bb.0: # %entry
823 ; CHECK-NEXT:    vl8re32.v v24, (a0)
824 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, mu
825 ; CHECK-NEXT:    vadd.vv v8, v16, v24, v0.t
826 ; CHECK-NEXT:    ret
827 entry:
828   %a = call <vscale x 16 x i32> @llvm.riscv.vadd.mask.nxv16i32.nxv16i32(
829     <vscale x 16 x i32> %0,
830     <vscale x 16 x i32> %1,
831     <vscale x 16 x i32> %2,
832     <vscale x 16 x i1> %3,
833     iXLen %4, iXLen 1)
835   ret <vscale x 16 x i32> %a
838 declare <vscale x 1 x i64> @llvm.riscv.vadd.nxv1i64.nxv1i64(
839   <vscale x 1 x i64>,
840   <vscale x 1 x i64>,
841   <vscale x 1 x i64>,
842   iXLen);
844 define <vscale x 1 x i64> @intrinsic_vadd_vv_nxv1i64_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, iXLen %2) nounwind {
845 ; CHECK-LABEL: intrinsic_vadd_vv_nxv1i64_nxv1i64_nxv1i64:
846 ; CHECK:       # %bb.0: # %entry
847 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
848 ; CHECK-NEXT:    vadd.vv v8, v8, v9
849 ; CHECK-NEXT:    ret
850 entry:
851   %a = call <vscale x 1 x i64> @llvm.riscv.vadd.nxv1i64.nxv1i64(
852     <vscale x 1 x i64> undef,
853     <vscale x 1 x i64> %0,
854     <vscale x 1 x i64> %1,
855     iXLen %2)
857   ret <vscale x 1 x i64> %a
860 declare <vscale x 1 x i64> @llvm.riscv.vadd.mask.nxv1i64.nxv1i64(
861   <vscale x 1 x i64>,
862   <vscale x 1 x i64>,
863   <vscale x 1 x i64>,
864   <vscale x 1 x i1>,
865   iXLen, iXLen);
867 define <vscale x 1 x i64> @intrinsic_vadd_mask_vv_nxv1i64_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, <vscale x 1 x i64> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
868 ; CHECK-LABEL: intrinsic_vadd_mask_vv_nxv1i64_nxv1i64_nxv1i64:
869 ; CHECK:       # %bb.0: # %entry
870 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, mu
871 ; CHECK-NEXT:    vadd.vv v8, v9, v10, v0.t
872 ; CHECK-NEXT:    ret
873 entry:
874   %a = call <vscale x 1 x i64> @llvm.riscv.vadd.mask.nxv1i64.nxv1i64(
875     <vscale x 1 x i64> %0,
876     <vscale x 1 x i64> %1,
877     <vscale x 1 x i64> %2,
878     <vscale x 1 x i1> %3,
879     iXLen %4, iXLen 1)
881   ret <vscale x 1 x i64> %a
884 declare <vscale x 2 x i64> @llvm.riscv.vadd.nxv2i64.nxv2i64(
885   <vscale x 2 x i64>,
886   <vscale x 2 x i64>,
887   <vscale x 2 x i64>,
888   iXLen);
890 define <vscale x 2 x i64> @intrinsic_vadd_vv_nxv2i64_nxv2i64_nxv2i64(<vscale x 2 x i64> %0, <vscale x 2 x i64> %1, iXLen %2) nounwind {
891 ; CHECK-LABEL: intrinsic_vadd_vv_nxv2i64_nxv2i64_nxv2i64:
892 ; CHECK:       # %bb.0: # %entry
893 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
894 ; CHECK-NEXT:    vadd.vv v8, v8, v10
895 ; CHECK-NEXT:    ret
896 entry:
897   %a = call <vscale x 2 x i64> @llvm.riscv.vadd.nxv2i64.nxv2i64(
898     <vscale x 2 x i64> undef,
899     <vscale x 2 x i64> %0,
900     <vscale x 2 x i64> %1,
901     iXLen %2)
903   ret <vscale x 2 x i64> %a
906 declare <vscale x 2 x i64> @llvm.riscv.vadd.mask.nxv2i64.nxv2i64(
907   <vscale x 2 x i64>,
908   <vscale x 2 x i64>,
909   <vscale x 2 x i64>,
910   <vscale x 2 x i1>,
911   iXLen, iXLen);
913 define <vscale x 2 x i64> @intrinsic_vadd_mask_vv_nxv2i64_nxv2i64_nxv2i64(<vscale x 2 x i64> %0, <vscale x 2 x i64> %1, <vscale x 2 x i64> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
914 ; CHECK-LABEL: intrinsic_vadd_mask_vv_nxv2i64_nxv2i64_nxv2i64:
915 ; CHECK:       # %bb.0: # %entry
916 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, mu
917 ; CHECK-NEXT:    vadd.vv v8, v10, v12, v0.t
918 ; CHECK-NEXT:    ret
919 entry:
920   %a = call <vscale x 2 x i64> @llvm.riscv.vadd.mask.nxv2i64.nxv2i64(
921     <vscale x 2 x i64> %0,
922     <vscale x 2 x i64> %1,
923     <vscale x 2 x i64> %2,
924     <vscale x 2 x i1> %3,
925     iXLen %4, iXLen 1)
927   ret <vscale x 2 x i64> %a
930 declare <vscale x 4 x i64> @llvm.riscv.vadd.nxv4i64.nxv4i64(
931   <vscale x 4 x i64>,
932   <vscale x 4 x i64>,
933   <vscale x 4 x i64>,
934   iXLen);
936 define <vscale x 4 x i64> @intrinsic_vadd_vv_nxv4i64_nxv4i64_nxv4i64(<vscale x 4 x i64> %0, <vscale x 4 x i64> %1, iXLen %2) nounwind {
937 ; CHECK-LABEL: intrinsic_vadd_vv_nxv4i64_nxv4i64_nxv4i64:
938 ; CHECK:       # %bb.0: # %entry
939 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
940 ; CHECK-NEXT:    vadd.vv v8, v8, v12
941 ; CHECK-NEXT:    ret
942 entry:
943   %a = call <vscale x 4 x i64> @llvm.riscv.vadd.nxv4i64.nxv4i64(
944     <vscale x 4 x i64> undef,
945     <vscale x 4 x i64> %0,
946     <vscale x 4 x i64> %1,
947     iXLen %2)
949   ret <vscale x 4 x i64> %a
952 declare <vscale x 4 x i64> @llvm.riscv.vadd.mask.nxv4i64.nxv4i64(
953   <vscale x 4 x i64>,
954   <vscale x 4 x i64>,
955   <vscale x 4 x i64>,
956   <vscale x 4 x i1>,
957   iXLen, iXLen);
959 define <vscale x 4 x i64> @intrinsic_vadd_mask_vv_nxv4i64_nxv4i64_nxv4i64(<vscale x 4 x i64> %0, <vscale x 4 x i64> %1, <vscale x 4 x i64> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
960 ; CHECK-LABEL: intrinsic_vadd_mask_vv_nxv4i64_nxv4i64_nxv4i64:
961 ; CHECK:       # %bb.0: # %entry
962 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, mu
963 ; CHECK-NEXT:    vadd.vv v8, v12, v16, v0.t
964 ; CHECK-NEXT:    ret
965 entry:
966   %a = call <vscale x 4 x i64> @llvm.riscv.vadd.mask.nxv4i64.nxv4i64(
967     <vscale x 4 x i64> %0,
968     <vscale x 4 x i64> %1,
969     <vscale x 4 x i64> %2,
970     <vscale x 4 x i1> %3,
971     iXLen %4, iXLen 1)
973   ret <vscale x 4 x i64> %a
976 declare <vscale x 8 x i64> @llvm.riscv.vadd.nxv8i64.nxv8i64(
977   <vscale x 8 x i64>,
978   <vscale x 8 x i64>,
979   <vscale x 8 x i64>,
980   iXLen);
982 define <vscale x 8 x i64> @intrinsic_vadd_vv_nxv8i64_nxv8i64_nxv8i64(<vscale x 8 x i64> %0, <vscale x 8 x i64> %1, iXLen %2) nounwind {
983 ; CHECK-LABEL: intrinsic_vadd_vv_nxv8i64_nxv8i64_nxv8i64:
984 ; CHECK:       # %bb.0: # %entry
985 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
986 ; CHECK-NEXT:    vadd.vv v8, v8, v16
987 ; CHECK-NEXT:    ret
988 entry:
989   %a = call <vscale x 8 x i64> @llvm.riscv.vadd.nxv8i64.nxv8i64(
990     <vscale x 8 x i64> undef,
991     <vscale x 8 x i64> %0,
992     <vscale x 8 x i64> %1,
993     iXLen %2)
995   ret <vscale x 8 x i64> %a
998 declare <vscale x 8 x i64> @llvm.riscv.vadd.mask.nxv8i64.nxv8i64(
999   <vscale x 8 x i64>,
1000   <vscale x 8 x i64>,
1001   <vscale x 8 x i64>,
1002   <vscale x 8 x i1>,
1003   iXLen, iXLen);
1005 define <vscale x 8 x i64> @intrinsic_vadd_mask_vv_nxv8i64_nxv8i64_nxv8i64(<vscale x 8 x i64> %0, <vscale x 8 x i64> %1, <vscale x 8 x i64> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1006 ; CHECK-LABEL: intrinsic_vadd_mask_vv_nxv8i64_nxv8i64_nxv8i64:
1007 ; CHECK:       # %bb.0: # %entry
1008 ; CHECK-NEXT:    vl8re64.v v24, (a0)
1009 ; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, mu
1010 ; CHECK-NEXT:    vadd.vv v8, v16, v24, v0.t
1011 ; CHECK-NEXT:    ret
1012 entry:
1013   %a = call <vscale x 8 x i64> @llvm.riscv.vadd.mask.nxv8i64.nxv8i64(
1014     <vscale x 8 x i64> %0,
1015     <vscale x 8 x i64> %1,
1016     <vscale x 8 x i64> %2,
1017     <vscale x 8 x i1> %3,
1018     iXLen %4, iXLen 1)
1020   ret <vscale x 8 x i64> %a
1023 declare <vscale x 1 x i8> @llvm.riscv.vadd.nxv1i8.i8(
1024   <vscale x 1 x i8>,
1025   <vscale x 1 x i8>,
1026   i8,
1027   iXLen);
1029 define <vscale x 1 x i8> @intrinsic_vadd_vx_nxv1i8_nxv1i8_i8(<vscale x 1 x i8> %0, i8 %1, iXLen %2) nounwind {
1030 ; CHECK-LABEL: intrinsic_vadd_vx_nxv1i8_nxv1i8_i8:
1031 ; CHECK:       # %bb.0: # %entry
1032 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
1033 ; CHECK-NEXT:    vadd.vx v8, v8, a0
1034 ; CHECK-NEXT:    ret
1035 entry:
1036   %a = call <vscale x 1 x i8> @llvm.riscv.vadd.nxv1i8.i8(
1037     <vscale x 1 x i8> undef,
1038     <vscale x 1 x i8> %0,
1039     i8 %1,
1040     iXLen %2)
1042   ret <vscale x 1 x i8> %a
1045 declare <vscale x 1 x i8> @llvm.riscv.vadd.mask.nxv1i8.i8(
1046   <vscale x 1 x i8>,
1047   <vscale x 1 x i8>,
1048   i8,
1049   <vscale x 1 x i1>,
1050   iXLen, iXLen);
1052 define <vscale x 1 x i8> @intrinsic_vadd_mask_vx_nxv1i8_nxv1i8_i8(<vscale x 1 x i8> %0, <vscale x 1 x i8> %1, i8 %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
1053 ; CHECK-LABEL: intrinsic_vadd_mask_vx_nxv1i8_nxv1i8_i8:
1054 ; CHECK:       # %bb.0: # %entry
1055 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, mu
1056 ; CHECK-NEXT:    vadd.vx v8, v9, a0, v0.t
1057 ; CHECK-NEXT:    ret
1058 entry:
1059   %a = call <vscale x 1 x i8> @llvm.riscv.vadd.mask.nxv1i8.i8(
1060     <vscale x 1 x i8> %0,
1061     <vscale x 1 x i8> %1,
1062     i8 %2,
1063     <vscale x 1 x i1> %3,
1064     iXLen %4, iXLen 1)
1066   ret <vscale x 1 x i8> %a
1069 declare <vscale x 2 x i8> @llvm.riscv.vadd.nxv2i8.i8(
1070   <vscale x 2 x i8>,
1071   <vscale x 2 x i8>,
1072   i8,
1073   iXLen);
1075 define <vscale x 2 x i8> @intrinsic_vadd_vx_nxv2i8_nxv2i8_i8(<vscale x 2 x i8> %0, i8 %1, iXLen %2) nounwind {
1076 ; CHECK-LABEL: intrinsic_vadd_vx_nxv2i8_nxv2i8_i8:
1077 ; CHECK:       # %bb.0: # %entry
1078 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
1079 ; CHECK-NEXT:    vadd.vx v8, v8, a0
1080 ; CHECK-NEXT:    ret
1081 entry:
1082   %a = call <vscale x 2 x i8> @llvm.riscv.vadd.nxv2i8.i8(
1083     <vscale x 2 x i8> undef,
1084     <vscale x 2 x i8> %0,
1085     i8 %1,
1086     iXLen %2)
1088   ret <vscale x 2 x i8> %a
1091 declare <vscale x 2 x i8> @llvm.riscv.vadd.mask.nxv2i8.i8(
1092   <vscale x 2 x i8>,
1093   <vscale x 2 x i8>,
1094   i8,
1095   <vscale x 2 x i1>,
1096   iXLen, iXLen);
1098 define <vscale x 2 x i8> @intrinsic_vadd_mask_vx_nxv2i8_nxv2i8_i8(<vscale x 2 x i8> %0, <vscale x 2 x i8> %1, i8 %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
1099 ; CHECK-LABEL: intrinsic_vadd_mask_vx_nxv2i8_nxv2i8_i8:
1100 ; CHECK:       # %bb.0: # %entry
1101 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, mu
1102 ; CHECK-NEXT:    vadd.vx v8, v9, a0, v0.t
1103 ; CHECK-NEXT:    ret
1104 entry:
1105   %a = call <vscale x 2 x i8> @llvm.riscv.vadd.mask.nxv2i8.i8(
1106     <vscale x 2 x i8> %0,
1107     <vscale x 2 x i8> %1,
1108     i8 %2,
1109     <vscale x 2 x i1> %3,
1110     iXLen %4, iXLen 1)
1112   ret <vscale x 2 x i8> %a
1115 declare <vscale x 4 x i8> @llvm.riscv.vadd.nxv4i8.i8(
1116   <vscale x 4 x i8>,
1117   <vscale x 4 x i8>,
1118   i8,
1119   iXLen);
1121 define <vscale x 4 x i8> @intrinsic_vadd_vx_nxv4i8_nxv4i8_i8(<vscale x 4 x i8> %0, i8 %1, iXLen %2) nounwind {
1122 ; CHECK-LABEL: intrinsic_vadd_vx_nxv4i8_nxv4i8_i8:
1123 ; CHECK:       # %bb.0: # %entry
1124 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
1125 ; CHECK-NEXT:    vadd.vx v8, v8, a0
1126 ; CHECK-NEXT:    ret
1127 entry:
1128   %a = call <vscale x 4 x i8> @llvm.riscv.vadd.nxv4i8.i8(
1129     <vscale x 4 x i8> undef,
1130     <vscale x 4 x i8> %0,
1131     i8 %1,
1132     iXLen %2)
1134   ret <vscale x 4 x i8> %a
1137 declare <vscale x 4 x i8> @llvm.riscv.vadd.mask.nxv4i8.i8(
1138   <vscale x 4 x i8>,
1139   <vscale x 4 x i8>,
1140   i8,
1141   <vscale x 4 x i1>,
1142   iXLen, iXLen);
1144 define <vscale x 4 x i8> @intrinsic_vadd_mask_vx_nxv4i8_nxv4i8_i8(<vscale x 4 x i8> %0, <vscale x 4 x i8> %1, i8 %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
1145 ; CHECK-LABEL: intrinsic_vadd_mask_vx_nxv4i8_nxv4i8_i8:
1146 ; CHECK:       # %bb.0: # %entry
1147 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, mu
1148 ; CHECK-NEXT:    vadd.vx v8, v9, a0, v0.t
1149 ; CHECK-NEXT:    ret
1150 entry:
1151   %a = call <vscale x 4 x i8> @llvm.riscv.vadd.mask.nxv4i8.i8(
1152     <vscale x 4 x i8> %0,
1153     <vscale x 4 x i8> %1,
1154     i8 %2,
1155     <vscale x 4 x i1> %3,
1156     iXLen %4, iXLen 1)
1158   ret <vscale x 4 x i8> %a
1161 declare <vscale x 8 x i8> @llvm.riscv.vadd.nxv8i8.i8(
1162   <vscale x 8 x i8>,
1163   <vscale x 8 x i8>,
1164   i8,
1165   iXLen);
1167 define <vscale x 8 x i8> @intrinsic_vadd_vx_nxv8i8_nxv8i8_i8(<vscale x 8 x i8> %0, i8 %1, iXLen %2) nounwind {
1168 ; CHECK-LABEL: intrinsic_vadd_vx_nxv8i8_nxv8i8_i8:
1169 ; CHECK:       # %bb.0: # %entry
1170 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
1171 ; CHECK-NEXT:    vadd.vx v8, v8, a0
1172 ; CHECK-NEXT:    ret
1173 entry:
1174   %a = call <vscale x 8 x i8> @llvm.riscv.vadd.nxv8i8.i8(
1175     <vscale x 8 x i8> undef,
1176     <vscale x 8 x i8> %0,
1177     i8 %1,
1178     iXLen %2)
1180   ret <vscale x 8 x i8> %a
1183 declare <vscale x 8 x i8> @llvm.riscv.vadd.mask.nxv8i8.i8(
1184   <vscale x 8 x i8>,
1185   <vscale x 8 x i8>,
1186   i8,
1187   <vscale x 8 x i1>,
1188   iXLen, iXLen);
1190 define <vscale x 8 x i8> @intrinsic_vadd_mask_vx_nxv8i8_nxv8i8_i8(<vscale x 8 x i8> %0, <vscale x 8 x i8> %1, i8 %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1191 ; CHECK-LABEL: intrinsic_vadd_mask_vx_nxv8i8_nxv8i8_i8:
1192 ; CHECK:       # %bb.0: # %entry
1193 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, mu
1194 ; CHECK-NEXT:    vadd.vx v8, v9, a0, v0.t
1195 ; CHECK-NEXT:    ret
1196 entry:
1197   %a = call <vscale x 8 x i8> @llvm.riscv.vadd.mask.nxv8i8.i8(
1198     <vscale x 8 x i8> %0,
1199     <vscale x 8 x i8> %1,
1200     i8 %2,
1201     <vscale x 8 x i1> %3,
1202     iXLen %4, iXLen 1)
1204   ret <vscale x 8 x i8> %a
1207 declare <vscale x 16 x i8> @llvm.riscv.vadd.nxv16i8.i8(
1208   <vscale x 16 x i8>,
1209   <vscale x 16 x i8>,
1210   i8,
1211   iXLen);
1213 define <vscale x 16 x i8> @intrinsic_vadd_vx_nxv16i8_nxv16i8_i8(<vscale x 16 x i8> %0, i8 %1, iXLen %2) nounwind {
1214 ; CHECK-LABEL: intrinsic_vadd_vx_nxv16i8_nxv16i8_i8:
1215 ; CHECK:       # %bb.0: # %entry
1216 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
1217 ; CHECK-NEXT:    vadd.vx v8, v8, a0
1218 ; CHECK-NEXT:    ret
1219 entry:
1220   %a = call <vscale x 16 x i8> @llvm.riscv.vadd.nxv16i8.i8(
1221     <vscale x 16 x i8> undef,
1222     <vscale x 16 x i8> %0,
1223     i8 %1,
1224     iXLen %2)
1226   ret <vscale x 16 x i8> %a
1229 declare <vscale x 16 x i8> @llvm.riscv.vadd.mask.nxv16i8.i8(
1230   <vscale x 16 x i8>,
1231   <vscale x 16 x i8>,
1232   i8,
1233   <vscale x 16 x i1>,
1234   iXLen, iXLen);
1236 define <vscale x 16 x i8> @intrinsic_vadd_mask_vx_nxv16i8_nxv16i8_i8(<vscale x 16 x i8> %0, <vscale x 16 x i8> %1, i8 %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
1237 ; CHECK-LABEL: intrinsic_vadd_mask_vx_nxv16i8_nxv16i8_i8:
1238 ; CHECK:       # %bb.0: # %entry
1239 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, mu
1240 ; CHECK-NEXT:    vadd.vx v8, v10, a0, v0.t
1241 ; CHECK-NEXT:    ret
1242 entry:
1243   %a = call <vscale x 16 x i8> @llvm.riscv.vadd.mask.nxv16i8.i8(
1244     <vscale x 16 x i8> %0,
1245     <vscale x 16 x i8> %1,
1246     i8 %2,
1247     <vscale x 16 x i1> %3,
1248     iXLen %4, iXLen 1)
1250   ret <vscale x 16 x i8> %a
1253 declare <vscale x 32 x i8> @llvm.riscv.vadd.nxv32i8.i8(
1254   <vscale x 32 x i8>,
1255   <vscale x 32 x i8>,
1256   i8,
1257   iXLen);
1259 define <vscale x 32 x i8> @intrinsic_vadd_vx_nxv32i8_nxv32i8_i8(<vscale x 32 x i8> %0, i8 %1, iXLen %2) nounwind {
1260 ; CHECK-LABEL: intrinsic_vadd_vx_nxv32i8_nxv32i8_i8:
1261 ; CHECK:       # %bb.0: # %entry
1262 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
1263 ; CHECK-NEXT:    vadd.vx v8, v8, a0
1264 ; CHECK-NEXT:    ret
1265 entry:
1266   %a = call <vscale x 32 x i8> @llvm.riscv.vadd.nxv32i8.i8(
1267     <vscale x 32 x i8> undef,
1268     <vscale x 32 x i8> %0,
1269     i8 %1,
1270     iXLen %2)
1272   ret <vscale x 32 x i8> %a
1275 declare <vscale x 32 x i8> @llvm.riscv.vadd.mask.nxv32i8.i8(
1276   <vscale x 32 x i8>,
1277   <vscale x 32 x i8>,
1278   i8,
1279   <vscale x 32 x i1>,
1280   iXLen, iXLen);
1282 define <vscale x 32 x i8> @intrinsic_vadd_mask_vx_nxv32i8_nxv32i8_i8(<vscale x 32 x i8> %0, <vscale x 32 x i8> %1, i8 %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
1283 ; CHECK-LABEL: intrinsic_vadd_mask_vx_nxv32i8_nxv32i8_i8:
1284 ; CHECK:       # %bb.0: # %entry
1285 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, mu
1286 ; CHECK-NEXT:    vadd.vx v8, v12, a0, v0.t
1287 ; CHECK-NEXT:    ret
1288 entry:
1289   %a = call <vscale x 32 x i8> @llvm.riscv.vadd.mask.nxv32i8.i8(
1290     <vscale x 32 x i8> %0,
1291     <vscale x 32 x i8> %1,
1292     i8 %2,
1293     <vscale x 32 x i1> %3,
1294     iXLen %4, iXLen 1)
1296   ret <vscale x 32 x i8> %a
1299 declare <vscale x 64 x i8> @llvm.riscv.vadd.nxv64i8.i8(
1300   <vscale x 64 x i8>,
1301   <vscale x 64 x i8>,
1302   i8,
1303   iXLen);
1305 define <vscale x 64 x i8> @intrinsic_vadd_vx_nxv64i8_nxv64i8_i8(<vscale x 64 x i8> %0, i8 %1, iXLen %2) nounwind {
1306 ; CHECK-LABEL: intrinsic_vadd_vx_nxv64i8_nxv64i8_i8:
1307 ; CHECK:       # %bb.0: # %entry
1308 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, ma
1309 ; CHECK-NEXT:    vadd.vx v8, v8, a0
1310 ; CHECK-NEXT:    ret
1311 entry:
1312   %a = call <vscale x 64 x i8> @llvm.riscv.vadd.nxv64i8.i8(
1313     <vscale x 64 x i8> undef,
1314     <vscale x 64 x i8> %0,
1315     i8 %1,
1316     iXLen %2)
1318   ret <vscale x 64 x i8> %a
1321 declare <vscale x 64 x i8> @llvm.riscv.vadd.mask.nxv64i8.i8(
1322   <vscale x 64 x i8>,
1323   <vscale x 64 x i8>,
1324   i8,
1325   <vscale x 64 x i1>,
1326   iXLen, iXLen);
1328 define <vscale x 64 x i8> @intrinsic_vadd_mask_vx_nxv64i8_nxv64i8_i8(<vscale x 64 x i8> %0, <vscale x 64 x i8> %1, i8 %2, <vscale x 64 x i1> %3, iXLen %4) nounwind {
1329 ; CHECK-LABEL: intrinsic_vadd_mask_vx_nxv64i8_nxv64i8_i8:
1330 ; CHECK:       # %bb.0: # %entry
1331 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, mu
1332 ; CHECK-NEXT:    vadd.vx v8, v16, a0, v0.t
1333 ; CHECK-NEXT:    ret
1334 entry:
1335   %a = call <vscale x 64 x i8> @llvm.riscv.vadd.mask.nxv64i8.i8(
1336     <vscale x 64 x i8> %0,
1337     <vscale x 64 x i8> %1,
1338     i8 %2,
1339     <vscale x 64 x i1> %3,
1340     iXLen %4, iXLen 1)
1342   ret <vscale x 64 x i8> %a
1345 declare <vscale x 1 x i16> @llvm.riscv.vadd.nxv1i16.i16(
1346   <vscale x 1 x i16>,
1347   <vscale x 1 x i16>,
1348   i16,
1349   iXLen);
1351 define <vscale x 1 x i16> @intrinsic_vadd_vx_nxv1i16_nxv1i16_i16(<vscale x 1 x i16> %0, i16 %1, iXLen %2) nounwind {
1352 ; CHECK-LABEL: intrinsic_vadd_vx_nxv1i16_nxv1i16_i16:
1353 ; CHECK:       # %bb.0: # %entry
1354 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
1355 ; CHECK-NEXT:    vadd.vx v8, v8, a0
1356 ; CHECK-NEXT:    ret
1357 entry:
1358   %a = call <vscale x 1 x i16> @llvm.riscv.vadd.nxv1i16.i16(
1359     <vscale x 1 x i16> undef,
1360     <vscale x 1 x i16> %0,
1361     i16 %1,
1362     iXLen %2)
1364   ret <vscale x 1 x i16> %a
1367 declare <vscale x 1 x i16> @llvm.riscv.vadd.mask.nxv1i16.i16(
1368   <vscale x 1 x i16>,
1369   <vscale x 1 x i16>,
1370   i16,
1371   <vscale x 1 x i1>,
1372   iXLen, iXLen);
1374 define <vscale x 1 x i16> @intrinsic_vadd_mask_vx_nxv1i16_nxv1i16_i16(<vscale x 1 x i16> %0, <vscale x 1 x i16> %1, i16 %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
1375 ; CHECK-LABEL: intrinsic_vadd_mask_vx_nxv1i16_nxv1i16_i16:
1376 ; CHECK:       # %bb.0: # %entry
1377 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu
1378 ; CHECK-NEXT:    vadd.vx v8, v9, a0, v0.t
1379 ; CHECK-NEXT:    ret
1380 entry:
1381   %a = call <vscale x 1 x i16> @llvm.riscv.vadd.mask.nxv1i16.i16(
1382     <vscale x 1 x i16> %0,
1383     <vscale x 1 x i16> %1,
1384     i16 %2,
1385     <vscale x 1 x i1> %3,
1386     iXLen %4, iXLen 1)
1388   ret <vscale x 1 x i16> %a
1391 declare <vscale x 2 x i16> @llvm.riscv.vadd.nxv2i16.i16(
1392   <vscale x 2 x i16>,
1393   <vscale x 2 x i16>,
1394   i16,
1395   iXLen);
1397 define <vscale x 2 x i16> @intrinsic_vadd_vx_nxv2i16_nxv2i16_i16(<vscale x 2 x i16> %0, i16 %1, iXLen %2) nounwind {
1398 ; CHECK-LABEL: intrinsic_vadd_vx_nxv2i16_nxv2i16_i16:
1399 ; CHECK:       # %bb.0: # %entry
1400 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
1401 ; CHECK-NEXT:    vadd.vx v8, v8, a0
1402 ; CHECK-NEXT:    ret
1403 entry:
1404   %a = call <vscale x 2 x i16> @llvm.riscv.vadd.nxv2i16.i16(
1405     <vscale x 2 x i16> undef,
1406     <vscale x 2 x i16> %0,
1407     i16 %1,
1408     iXLen %2)
1410   ret <vscale x 2 x i16> %a
1413 declare <vscale x 2 x i16> @llvm.riscv.vadd.mask.nxv2i16.i16(
1414   <vscale x 2 x i16>,
1415   <vscale x 2 x i16>,
1416   i16,
1417   <vscale x 2 x i1>,
1418   iXLen, iXLen);
1420 define <vscale x 2 x i16> @intrinsic_vadd_mask_vx_nxv2i16_nxv2i16_i16(<vscale x 2 x i16> %0, <vscale x 2 x i16> %1, i16 %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
1421 ; CHECK-LABEL: intrinsic_vadd_mask_vx_nxv2i16_nxv2i16_i16:
1422 ; CHECK:       # %bb.0: # %entry
1423 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu
1424 ; CHECK-NEXT:    vadd.vx v8, v9, a0, v0.t
1425 ; CHECK-NEXT:    ret
1426 entry:
1427   %a = call <vscale x 2 x i16> @llvm.riscv.vadd.mask.nxv2i16.i16(
1428     <vscale x 2 x i16> %0,
1429     <vscale x 2 x i16> %1,
1430     i16 %2,
1431     <vscale x 2 x i1> %3,
1432     iXLen %4, iXLen 1)
1434   ret <vscale x 2 x i16> %a
1437 declare <vscale x 4 x i16> @llvm.riscv.vadd.nxv4i16.i16(
1438   <vscale x 4 x i16>,
1439   <vscale x 4 x i16>,
1440   i16,
1441   iXLen);
1443 define <vscale x 4 x i16> @intrinsic_vadd_vx_nxv4i16_nxv4i16_i16(<vscale x 4 x i16> %0, i16 %1, iXLen %2) nounwind {
1444 ; CHECK-LABEL: intrinsic_vadd_vx_nxv4i16_nxv4i16_i16:
1445 ; CHECK:       # %bb.0: # %entry
1446 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
1447 ; CHECK-NEXT:    vadd.vx v8, v8, a0
1448 ; CHECK-NEXT:    ret
1449 entry:
1450   %a = call <vscale x 4 x i16> @llvm.riscv.vadd.nxv4i16.i16(
1451     <vscale x 4 x i16> undef,
1452     <vscale x 4 x i16> %0,
1453     i16 %1,
1454     iXLen %2)
1456   ret <vscale x 4 x i16> %a
1459 declare <vscale x 4 x i16> @llvm.riscv.vadd.mask.nxv4i16.i16(
1460   <vscale x 4 x i16>,
1461   <vscale x 4 x i16>,
1462   i16,
1463   <vscale x 4 x i1>,
1464   iXLen, iXLen);
1466 define <vscale x 4 x i16> @intrinsic_vadd_mask_vx_nxv4i16_nxv4i16_i16(<vscale x 4 x i16> %0, <vscale x 4 x i16> %1, i16 %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
1467 ; CHECK-LABEL: intrinsic_vadd_mask_vx_nxv4i16_nxv4i16_i16:
1468 ; CHECK:       # %bb.0: # %entry
1469 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu
1470 ; CHECK-NEXT:    vadd.vx v8, v9, a0, v0.t
1471 ; CHECK-NEXT:    ret
1472 entry:
1473   %a = call <vscale x 4 x i16> @llvm.riscv.vadd.mask.nxv4i16.i16(
1474     <vscale x 4 x i16> %0,
1475     <vscale x 4 x i16> %1,
1476     i16 %2,
1477     <vscale x 4 x i1> %3,
1478     iXLen %4, iXLen 1)
1480   ret <vscale x 4 x i16> %a
1483 declare <vscale x 8 x i16> @llvm.riscv.vadd.nxv8i16.i16(
1484   <vscale x 8 x i16>,
1485   <vscale x 8 x i16>,
1486   i16,
1487   iXLen);
1489 define <vscale x 8 x i16> @intrinsic_vadd_vx_nxv8i16_nxv8i16_i16(<vscale x 8 x i16> %0, i16 %1, iXLen %2) nounwind {
1490 ; CHECK-LABEL: intrinsic_vadd_vx_nxv8i16_nxv8i16_i16:
1491 ; CHECK:       # %bb.0: # %entry
1492 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
1493 ; CHECK-NEXT:    vadd.vx v8, v8, a0
1494 ; CHECK-NEXT:    ret
1495 entry:
1496   %a = call <vscale x 8 x i16> @llvm.riscv.vadd.nxv8i16.i16(
1497     <vscale x 8 x i16> undef,
1498     <vscale x 8 x i16> %0,
1499     i16 %1,
1500     iXLen %2)
1502   ret <vscale x 8 x i16> %a
1505 declare <vscale x 8 x i16> @llvm.riscv.vadd.mask.nxv8i16.i16(
1506   <vscale x 8 x i16>,
1507   <vscale x 8 x i16>,
1508   i16,
1509   <vscale x 8 x i1>,
1510   iXLen, iXLen);
1512 define <vscale x 8 x i16> @intrinsic_vadd_mask_vx_nxv8i16_nxv8i16_i16(<vscale x 8 x i16> %0, <vscale x 8 x i16> %1, i16 %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1513 ; CHECK-LABEL: intrinsic_vadd_mask_vx_nxv8i16_nxv8i16_i16:
1514 ; CHECK:       # %bb.0: # %entry
1515 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, mu
1516 ; CHECK-NEXT:    vadd.vx v8, v10, a0, v0.t
1517 ; CHECK-NEXT:    ret
1518 entry:
1519   %a = call <vscale x 8 x i16> @llvm.riscv.vadd.mask.nxv8i16.i16(
1520     <vscale x 8 x i16> %0,
1521     <vscale x 8 x i16> %1,
1522     i16 %2,
1523     <vscale x 8 x i1> %3,
1524     iXLen %4, iXLen 1)
1526   ret <vscale x 8 x i16> %a
1529 declare <vscale x 16 x i16> @llvm.riscv.vadd.nxv16i16.i16(
1530   <vscale x 16 x i16>,
1531   <vscale x 16 x i16>,
1532   i16,
1533   iXLen);
1535 define <vscale x 16 x i16> @intrinsic_vadd_vx_nxv16i16_nxv16i16_i16(<vscale x 16 x i16> %0, i16 %1, iXLen %2) nounwind {
1536 ; CHECK-LABEL: intrinsic_vadd_vx_nxv16i16_nxv16i16_i16:
1537 ; CHECK:       # %bb.0: # %entry
1538 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
1539 ; CHECK-NEXT:    vadd.vx v8, v8, a0
1540 ; CHECK-NEXT:    ret
1541 entry:
1542   %a = call <vscale x 16 x i16> @llvm.riscv.vadd.nxv16i16.i16(
1543     <vscale x 16 x i16> undef,
1544     <vscale x 16 x i16> %0,
1545     i16 %1,
1546     iXLen %2)
1548   ret <vscale x 16 x i16> %a
1551 declare <vscale x 16 x i16> @llvm.riscv.vadd.mask.nxv16i16.i16(
1552   <vscale x 16 x i16>,
1553   <vscale x 16 x i16>,
1554   i16,
1555   <vscale x 16 x i1>,
1556   iXLen, iXLen);
1558 define <vscale x 16 x i16> @intrinsic_vadd_mask_vx_nxv16i16_nxv16i16_i16(<vscale x 16 x i16> %0, <vscale x 16 x i16> %1, i16 %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
1559 ; CHECK-LABEL: intrinsic_vadd_mask_vx_nxv16i16_nxv16i16_i16:
1560 ; CHECK:       # %bb.0: # %entry
1561 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, mu
1562 ; CHECK-NEXT:    vadd.vx v8, v12, a0, v0.t
1563 ; CHECK-NEXT:    ret
1564 entry:
1565   %a = call <vscale x 16 x i16> @llvm.riscv.vadd.mask.nxv16i16.i16(
1566     <vscale x 16 x i16> %0,
1567     <vscale x 16 x i16> %1,
1568     i16 %2,
1569     <vscale x 16 x i1> %3,
1570     iXLen %4, iXLen 1)
1572   ret <vscale x 16 x i16> %a
1575 declare <vscale x 32 x i16> @llvm.riscv.vadd.nxv32i16.i16(
1576   <vscale x 32 x i16>,
1577   <vscale x 32 x i16>,
1578   i16,
1579   iXLen);
1581 define <vscale x 32 x i16> @intrinsic_vadd_vx_nxv32i16_nxv32i16_i16(<vscale x 32 x i16> %0, i16 %1, iXLen %2) nounwind {
1582 ; CHECK-LABEL: intrinsic_vadd_vx_nxv32i16_nxv32i16_i16:
1583 ; CHECK:       # %bb.0: # %entry
1584 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma
1585 ; CHECK-NEXT:    vadd.vx v8, v8, a0
1586 ; CHECK-NEXT:    ret
1587 entry:
1588   %a = call <vscale x 32 x i16> @llvm.riscv.vadd.nxv32i16.i16(
1589     <vscale x 32 x i16> undef,
1590     <vscale x 32 x i16> %0,
1591     i16 %1,
1592     iXLen %2)
1594   ret <vscale x 32 x i16> %a
1597 declare <vscale x 32 x i16> @llvm.riscv.vadd.mask.nxv32i16.i16(
1598   <vscale x 32 x i16>,
1599   <vscale x 32 x i16>,
1600   i16,
1601   <vscale x 32 x i1>,
1602   iXLen, iXLen);
1604 define <vscale x 32 x i16> @intrinsic_vadd_mask_vx_nxv32i16_nxv32i16_i16(<vscale x 32 x i16> %0, <vscale x 32 x i16> %1, i16 %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
1605 ; CHECK-LABEL: intrinsic_vadd_mask_vx_nxv32i16_nxv32i16_i16:
1606 ; CHECK:       # %bb.0: # %entry
1607 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, mu
1608 ; CHECK-NEXT:    vadd.vx v8, v16, a0, v0.t
1609 ; CHECK-NEXT:    ret
1610 entry:
1611   %a = call <vscale x 32 x i16> @llvm.riscv.vadd.mask.nxv32i16.i16(
1612     <vscale x 32 x i16> %0,
1613     <vscale x 32 x i16> %1,
1614     i16 %2,
1615     <vscale x 32 x i1> %3,
1616     iXLen %4, iXLen 1)
1618   ret <vscale x 32 x i16> %a
1621 declare <vscale x 1 x i32> @llvm.riscv.vadd.nxv1i32.i32(
1622   <vscale x 1 x i32>,
1623   <vscale x 1 x i32>,
1624   i32,
1625   iXLen);
1627 define <vscale x 1 x i32> @intrinsic_vadd_vx_nxv1i32_nxv1i32_i32(<vscale x 1 x i32> %0, i32 %1, iXLen %2) nounwind {
1628 ; CHECK-LABEL: intrinsic_vadd_vx_nxv1i32_nxv1i32_i32:
1629 ; CHECK:       # %bb.0: # %entry
1630 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1631 ; CHECK-NEXT:    vadd.vx v8, v8, a0
1632 ; CHECK-NEXT:    ret
1633 entry:
1634   %a = call <vscale x 1 x i32> @llvm.riscv.vadd.nxv1i32.i32(
1635     <vscale x 1 x i32> undef,
1636     <vscale x 1 x i32> %0,
1637     i32 %1,
1638     iXLen %2)
1640   ret <vscale x 1 x i32> %a
1643 declare <vscale x 1 x i32> @llvm.riscv.vadd.mask.nxv1i32.i32(
1644   <vscale x 1 x i32>,
1645   <vscale x 1 x i32>,
1646   i32,
1647   <vscale x 1 x i1>,
1648   iXLen, iXLen);
1650 define <vscale x 1 x i32> @intrinsic_vadd_mask_vx_nxv1i32_nxv1i32_i32(<vscale x 1 x i32> %0, <vscale x 1 x i32> %1, i32 %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
1651 ; CHECK-LABEL: intrinsic_vadd_mask_vx_nxv1i32_nxv1i32_i32:
1652 ; CHECK:       # %bb.0: # %entry
1653 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, mu
1654 ; CHECK-NEXT:    vadd.vx v8, v9, a0, v0.t
1655 ; CHECK-NEXT:    ret
1656 entry:
1657   %a = call <vscale x 1 x i32> @llvm.riscv.vadd.mask.nxv1i32.i32(
1658     <vscale x 1 x i32> %0,
1659     <vscale x 1 x i32> %1,
1660     i32 %2,
1661     <vscale x 1 x i1> %3,
1662     iXLen %4, iXLen 1)
1664   ret <vscale x 1 x i32> %a
1667 declare <vscale x 2 x i32> @llvm.riscv.vadd.nxv2i32.i32(
1668   <vscale x 2 x i32>,
1669   <vscale x 2 x i32>,
1670   i32,
1671   iXLen);
1673 define <vscale x 2 x i32> @intrinsic_vadd_vx_nxv2i32_nxv2i32_i32(<vscale x 2 x i32> %0, i32 %1, iXLen %2) nounwind {
1674 ; CHECK-LABEL: intrinsic_vadd_vx_nxv2i32_nxv2i32_i32:
1675 ; CHECK:       # %bb.0: # %entry
1676 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1677 ; CHECK-NEXT:    vadd.vx v8, v8, a0
1678 ; CHECK-NEXT:    ret
1679 entry:
1680   %a = call <vscale x 2 x i32> @llvm.riscv.vadd.nxv2i32.i32(
1681     <vscale x 2 x i32> undef,
1682     <vscale x 2 x i32> %0,
1683     i32 %1,
1684     iXLen %2)
1686   ret <vscale x 2 x i32> %a
1689 declare <vscale x 2 x i32> @llvm.riscv.vadd.mask.nxv2i32.i32(
1690   <vscale x 2 x i32>,
1691   <vscale x 2 x i32>,
1692   i32,
1693   <vscale x 2 x i1>,
1694   iXLen, iXLen);
1696 define <vscale x 2 x i32> @intrinsic_vadd_mask_vx_nxv2i32_nxv2i32_i32(<vscale x 2 x i32> %0, <vscale x 2 x i32> %1, i32 %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
1697 ; CHECK-LABEL: intrinsic_vadd_mask_vx_nxv2i32_nxv2i32_i32:
1698 ; CHECK:       # %bb.0: # %entry
1699 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, mu
1700 ; CHECK-NEXT:    vadd.vx v8, v9, a0, v0.t
1701 ; CHECK-NEXT:    ret
1702 entry:
1703   %a = call <vscale x 2 x i32> @llvm.riscv.vadd.mask.nxv2i32.i32(
1704     <vscale x 2 x i32> %0,
1705     <vscale x 2 x i32> %1,
1706     i32 %2,
1707     <vscale x 2 x i1> %3,
1708     iXLen %4, iXLen 1)
1710   ret <vscale x 2 x i32> %a
1713 declare <vscale x 4 x i32> @llvm.riscv.vadd.nxv4i32.i32(
1714   <vscale x 4 x i32>,
1715   <vscale x 4 x i32>,
1716   i32,
1717   iXLen);
1719 define <vscale x 4 x i32> @intrinsic_vadd_vx_nxv4i32_nxv4i32_i32(<vscale x 4 x i32> %0, i32 %1, iXLen %2) nounwind {
1720 ; CHECK-LABEL: intrinsic_vadd_vx_nxv4i32_nxv4i32_i32:
1721 ; CHECK:       # %bb.0: # %entry
1722 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
1723 ; CHECK-NEXT:    vadd.vx v8, v8, a0
1724 ; CHECK-NEXT:    ret
1725 entry:
1726   %a = call <vscale x 4 x i32> @llvm.riscv.vadd.nxv4i32.i32(
1727     <vscale x 4 x i32> undef,
1728     <vscale x 4 x i32> %0,
1729     i32 %1,
1730     iXLen %2)
1732   ret <vscale x 4 x i32> %a
1735 declare <vscale x 4 x i32> @llvm.riscv.vadd.mask.nxv4i32.i32(
1736   <vscale x 4 x i32>,
1737   <vscale x 4 x i32>,
1738   i32,
1739   <vscale x 4 x i1>,
1740   iXLen, iXLen);
1742 define <vscale x 4 x i32> @intrinsic_vadd_mask_vx_nxv4i32_nxv4i32_i32(<vscale x 4 x i32> %0, <vscale x 4 x i32> %1, i32 %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
1743 ; CHECK-LABEL: intrinsic_vadd_mask_vx_nxv4i32_nxv4i32_i32:
1744 ; CHECK:       # %bb.0: # %entry
1745 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, mu
1746 ; CHECK-NEXT:    vadd.vx v8, v10, a0, v0.t
1747 ; CHECK-NEXT:    ret
1748 entry:
1749   %a = call <vscale x 4 x i32> @llvm.riscv.vadd.mask.nxv4i32.i32(
1750     <vscale x 4 x i32> %0,
1751     <vscale x 4 x i32> %1,
1752     i32 %2,
1753     <vscale x 4 x i1> %3,
1754     iXLen %4, iXLen 1)
1756   ret <vscale x 4 x i32> %a
1759 declare <vscale x 8 x i32> @llvm.riscv.vadd.nxv8i32.i32(
1760   <vscale x 8 x i32>,
1761   <vscale x 8 x i32>,
1762   i32,
1763   iXLen);
1765 define <vscale x 8 x i32> @intrinsic_vadd_vx_nxv8i32_nxv8i32_i32(<vscale x 8 x i32> %0, i32 %1, iXLen %2) nounwind {
1766 ; CHECK-LABEL: intrinsic_vadd_vx_nxv8i32_nxv8i32_i32:
1767 ; CHECK:       # %bb.0: # %entry
1768 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1769 ; CHECK-NEXT:    vadd.vx v8, v8, a0
1770 ; CHECK-NEXT:    ret
1771 entry:
1772   %a = call <vscale x 8 x i32> @llvm.riscv.vadd.nxv8i32.i32(
1773     <vscale x 8 x i32> undef,
1774     <vscale x 8 x i32> %0,
1775     i32 %1,
1776     iXLen %2)
1778   ret <vscale x 8 x i32> %a
1781 declare <vscale x 8 x i32> @llvm.riscv.vadd.mask.nxv8i32.i32(
1782   <vscale x 8 x i32>,
1783   <vscale x 8 x i32>,
1784   i32,
1785   <vscale x 8 x i1>,
1786   iXLen, iXLen);
1788 define <vscale x 8 x i32> @intrinsic_vadd_mask_vx_nxv8i32_nxv8i32_i32(<vscale x 8 x i32> %0, <vscale x 8 x i32> %1, i32 %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1789 ; CHECK-LABEL: intrinsic_vadd_mask_vx_nxv8i32_nxv8i32_i32:
1790 ; CHECK:       # %bb.0: # %entry
1791 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, mu
1792 ; CHECK-NEXT:    vadd.vx v8, v12, a0, v0.t
1793 ; CHECK-NEXT:    ret
1794 entry:
1795   %a = call <vscale x 8 x i32> @llvm.riscv.vadd.mask.nxv8i32.i32(
1796     <vscale x 8 x i32> %0,
1797     <vscale x 8 x i32> %1,
1798     i32 %2,
1799     <vscale x 8 x i1> %3,
1800     iXLen %4, iXLen 1)
1802   ret <vscale x 8 x i32> %a
1805 declare <vscale x 16 x i32> @llvm.riscv.vadd.nxv16i32.i32(
1806   <vscale x 16 x i32>,
1807   <vscale x 16 x i32>,
1808   i32,
1809   iXLen);
1811 define <vscale x 16 x i32> @intrinsic_vadd_vx_nxv16i32_nxv16i32_i32(<vscale x 16 x i32> %0, i32 %1, iXLen %2) nounwind {
1812 ; CHECK-LABEL: intrinsic_vadd_vx_nxv16i32_nxv16i32_i32:
1813 ; CHECK:       # %bb.0: # %entry
1814 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma
1815 ; CHECK-NEXT:    vadd.vx v8, v8, a0
1816 ; CHECK-NEXT:    ret
1817 entry:
1818   %a = call <vscale x 16 x i32> @llvm.riscv.vadd.nxv16i32.i32(
1819     <vscale x 16 x i32> undef,
1820     <vscale x 16 x i32> %0,
1821     i32 %1,
1822     iXLen %2)
1824   ret <vscale x 16 x i32> %a
1827 declare <vscale x 16 x i32> @llvm.riscv.vadd.mask.nxv16i32.i32(
1828   <vscale x 16 x i32>,
1829   <vscale x 16 x i32>,
1830   i32,
1831   <vscale x 16 x i1>,
1832   iXLen, iXLen);
1834 define <vscale x 16 x i32> @intrinsic_vadd_mask_vx_nxv16i32_nxv16i32_i32(<vscale x 16 x i32> %0, <vscale x 16 x i32> %1, i32 %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
1835 ; CHECK-LABEL: intrinsic_vadd_mask_vx_nxv16i32_nxv16i32_i32:
1836 ; CHECK:       # %bb.0: # %entry
1837 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, mu
1838 ; CHECK-NEXT:    vadd.vx v8, v16, a0, v0.t
1839 ; CHECK-NEXT:    ret
1840 entry:
1841   %a = call <vscale x 16 x i32> @llvm.riscv.vadd.mask.nxv16i32.i32(
1842     <vscale x 16 x i32> %0,
1843     <vscale x 16 x i32> %1,
1844     i32 %2,
1845     <vscale x 16 x i1> %3,
1846     iXLen %4, iXLen 1)
1848   ret <vscale x 16 x i32> %a
1851 declare <vscale x 1 x i64> @llvm.riscv.vadd.nxv1i64.i64(
1852   <vscale x 1 x i64>,
1853   <vscale x 1 x i64>,
1854   i64,
1855   iXLen);
1857 define <vscale x 1 x i64> @intrinsic_vadd_vx_nxv1i64_nxv1i64_i64(<vscale x 1 x i64> %0, i64 %1, iXLen %2) nounwind {
1858 ; RV32-LABEL: intrinsic_vadd_vx_nxv1i64_nxv1i64_i64:
1859 ; RV32:       # %bb.0: # %entry
1860 ; RV32-NEXT:    addi sp, sp, -16
1861 ; RV32-NEXT:    sw a1, 12(sp)
1862 ; RV32-NEXT:    sw a0, 8(sp)
1863 ; RV32-NEXT:    addi a0, sp, 8
1864 ; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
1865 ; RV32-NEXT:    vlse64.v v9, (a0), zero
1866 ; RV32-NEXT:    vadd.vv v8, v8, v9
1867 ; RV32-NEXT:    addi sp, sp, 16
1868 ; RV32-NEXT:    ret
1870 ; RV64-LABEL: intrinsic_vadd_vx_nxv1i64_nxv1i64_i64:
1871 ; RV64:       # %bb.0: # %entry
1872 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
1873 ; RV64-NEXT:    vadd.vx v8, v8, a0
1874 ; RV64-NEXT:    ret
1875 entry:
1876   %a = call <vscale x 1 x i64> @llvm.riscv.vadd.nxv1i64.i64(
1877     <vscale x 1 x i64> undef,
1878     <vscale x 1 x i64> %0,
1879     i64 %1,
1880     iXLen %2)
1882   ret <vscale x 1 x i64> %a
1885 define <vscale x 1 x i64> @intrinsic_vadd_vx_sext_nxv1i64_nxv1i64_i64(<vscale x 1 x i64> %0, i32 %1, iXLen %2) nounwind {
1886 ; RV32-LABEL: intrinsic_vadd_vx_sext_nxv1i64_nxv1i64_i64:
1887 ; RV32:       # %bb.0: # %entry
1888 ; RV32-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
1889 ; RV32-NEXT:    vadd.vx v8, v8, a0
1890 ; RV32-NEXT:    ret
1892 ; RV64-LABEL: intrinsic_vadd_vx_sext_nxv1i64_nxv1i64_i64:
1893 ; RV64:       # %bb.0: # %entry
1894 ; RV64-NEXT:    sext.w a0, a0
1895 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
1896 ; RV64-NEXT:    vadd.vx v8, v8, a0
1897 ; RV64-NEXT:    ret
1898 entry:
1899   %ext = sext i32 %1 to i64
1900   %a = call <vscale x 1 x i64> @llvm.riscv.vadd.nxv1i64.i64(
1901     <vscale x 1 x i64> undef,
1902     <vscale x 1 x i64> %0,
1903     i64 %ext,
1904     iXLen %2)
1906   ret <vscale x 1 x i64> %a
1909 define <vscale x 1 x i64> @intrinsic_vadd_vx_sextload_nxv1i64_nxv1i64_i64(<vscale x 1 x i64> %0, ptr %1, iXLen %2) nounwind {
1910 ; CHECK-LABEL: intrinsic_vadd_vx_sextload_nxv1i64_nxv1i64_i64:
1911 ; CHECK:       # %bb.0: # %entry
1912 ; CHECK-NEXT:    lw a0, 0(a0)
1913 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
1914 ; CHECK-NEXT:    vadd.vx v8, v8, a0
1915 ; CHECK-NEXT:    ret
1916 entry:
1917   %load = load i32, ptr %1
1918   %ext = sext i32 %load to i64
1919   %a = call <vscale x 1 x i64> @llvm.riscv.vadd.nxv1i64.i64(
1920     <vscale x 1 x i64> undef,
1921     <vscale x 1 x i64> %0,
1922     i64 %ext,
1923     iXLen %2)
1925   ret <vscale x 1 x i64> %a
1928 declare <vscale x 1 x i64> @llvm.riscv.vadd.mask.nxv1i64.i64(
1929   <vscale x 1 x i64>,
1930   <vscale x 1 x i64>,
1931   i64,
1932   <vscale x 1 x i1>,
1933   iXLen, iXLen);
1935 define <vscale x 1 x i64> @intrinsic_vadd_mask_vx_nxv1i64_nxv1i64_i64(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, i64 %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
1936 ; RV32-LABEL: intrinsic_vadd_mask_vx_nxv1i64_nxv1i64_i64:
1937 ; RV32:       # %bb.0: # %entry
1938 ; RV32-NEXT:    addi sp, sp, -16
1939 ; RV32-NEXT:    sw a1, 12(sp)
1940 ; RV32-NEXT:    sw a0, 8(sp)
1941 ; RV32-NEXT:    addi a0, sp, 8
1942 ; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, mu
1943 ; RV32-NEXT:    vlse64.v v10, (a0), zero
1944 ; RV32-NEXT:    vadd.vv v8, v9, v10, v0.t
1945 ; RV32-NEXT:    addi sp, sp, 16
1946 ; RV32-NEXT:    ret
1948 ; RV64-LABEL: intrinsic_vadd_mask_vx_nxv1i64_nxv1i64_i64:
1949 ; RV64:       # %bb.0: # %entry
1950 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, mu
1951 ; RV64-NEXT:    vadd.vx v8, v9, a0, v0.t
1952 ; RV64-NEXT:    ret
1953 entry:
1954   %a = call <vscale x 1 x i64> @llvm.riscv.vadd.mask.nxv1i64.i64(
1955     <vscale x 1 x i64> %0,
1956     <vscale x 1 x i64> %1,
1957     i64 %2,
1958     <vscale x 1 x i1> %3,
1959     iXLen %4, iXLen 1)
1961   ret <vscale x 1 x i64> %a
1964 declare <vscale x 2 x i64> @llvm.riscv.vadd.nxv2i64.i64(
1965   <vscale x 2 x i64>,
1966   <vscale x 2 x i64>,
1967   i64,
1968   iXLen);
1970 define <vscale x 2 x i64> @intrinsic_vadd_vx_nxv2i64_nxv2i64_i64(<vscale x 2 x i64> %0, i64 %1, iXLen %2) nounwind {
1971 ; RV32-LABEL: intrinsic_vadd_vx_nxv2i64_nxv2i64_i64:
1972 ; RV32:       # %bb.0: # %entry
1973 ; RV32-NEXT:    addi sp, sp, -16
1974 ; RV32-NEXT:    sw a1, 12(sp)
1975 ; RV32-NEXT:    sw a0, 8(sp)
1976 ; RV32-NEXT:    addi a0, sp, 8
1977 ; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
1978 ; RV32-NEXT:    vlse64.v v10, (a0), zero
1979 ; RV32-NEXT:    vadd.vv v8, v8, v10
1980 ; RV32-NEXT:    addi sp, sp, 16
1981 ; RV32-NEXT:    ret
1983 ; RV64-LABEL: intrinsic_vadd_vx_nxv2i64_nxv2i64_i64:
1984 ; RV64:       # %bb.0: # %entry
1985 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
1986 ; RV64-NEXT:    vadd.vx v8, v8, a0
1987 ; RV64-NEXT:    ret
1988 entry:
1989   %a = call <vscale x 2 x i64> @llvm.riscv.vadd.nxv2i64.i64(
1990     <vscale x 2 x i64> undef,
1991     <vscale x 2 x i64> %0,
1992     i64 %1,
1993     iXLen %2)
1995   ret <vscale x 2 x i64> %a
1998 declare <vscale x 2 x i64> @llvm.riscv.vadd.mask.nxv2i64.i64(
1999   <vscale x 2 x i64>,
2000   <vscale x 2 x i64>,
2001   i64,
2002   <vscale x 2 x i1>,
2003   iXLen, iXLen);
2005 define <vscale x 2 x i64> @intrinsic_vadd_mask_vx_nxv2i64_nxv2i64_i64(<vscale x 2 x i64> %0, <vscale x 2 x i64> %1, i64 %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
2006 ; RV32-LABEL: intrinsic_vadd_mask_vx_nxv2i64_nxv2i64_i64:
2007 ; RV32:       # %bb.0: # %entry
2008 ; RV32-NEXT:    addi sp, sp, -16
2009 ; RV32-NEXT:    sw a1, 12(sp)
2010 ; RV32-NEXT:    sw a0, 8(sp)
2011 ; RV32-NEXT:    addi a0, sp, 8
2012 ; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, mu
2013 ; RV32-NEXT:    vlse64.v v12, (a0), zero
2014 ; RV32-NEXT:    vadd.vv v8, v10, v12, v0.t
2015 ; RV32-NEXT:    addi sp, sp, 16
2016 ; RV32-NEXT:    ret
2018 ; RV64-LABEL: intrinsic_vadd_mask_vx_nxv2i64_nxv2i64_i64:
2019 ; RV64:       # %bb.0: # %entry
2020 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, mu
2021 ; RV64-NEXT:    vadd.vx v8, v10, a0, v0.t
2022 ; RV64-NEXT:    ret
2023 entry:
2024   %a = call <vscale x 2 x i64> @llvm.riscv.vadd.mask.nxv2i64.i64(
2025     <vscale x 2 x i64> %0,
2026     <vscale x 2 x i64> %1,
2027     i64 %2,
2028     <vscale x 2 x i1> %3,
2029     iXLen %4, iXLen 1)
2031   ret <vscale x 2 x i64> %a
2034 declare <vscale x 4 x i64> @llvm.riscv.vadd.nxv4i64.i64(
2035   <vscale x 4 x i64>,
2036   <vscale x 4 x i64>,
2037   i64,
2038   iXLen);
2040 define <vscale x 4 x i64> @intrinsic_vadd_vx_nxv4i64_nxv4i64_i64(<vscale x 4 x i64> %0, i64 %1, iXLen %2) nounwind {
2041 ; RV32-LABEL: intrinsic_vadd_vx_nxv4i64_nxv4i64_i64:
2042 ; RV32:       # %bb.0: # %entry
2043 ; RV32-NEXT:    addi sp, sp, -16
2044 ; RV32-NEXT:    sw a1, 12(sp)
2045 ; RV32-NEXT:    sw a0, 8(sp)
2046 ; RV32-NEXT:    addi a0, sp, 8
2047 ; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
2048 ; RV32-NEXT:    vlse64.v v12, (a0), zero
2049 ; RV32-NEXT:    vadd.vv v8, v8, v12
2050 ; RV32-NEXT:    addi sp, sp, 16
2051 ; RV32-NEXT:    ret
2053 ; RV64-LABEL: intrinsic_vadd_vx_nxv4i64_nxv4i64_i64:
2054 ; RV64:       # %bb.0: # %entry
2055 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
2056 ; RV64-NEXT:    vadd.vx v8, v8, a0
2057 ; RV64-NEXT:    ret
2058 entry:
2059   %a = call <vscale x 4 x i64> @llvm.riscv.vadd.nxv4i64.i64(
2060     <vscale x 4 x i64> undef,
2061     <vscale x 4 x i64> %0,
2062     i64 %1,
2063     iXLen %2)
2065   ret <vscale x 4 x i64> %a
2068 declare <vscale x 4 x i64> @llvm.riscv.vadd.mask.nxv4i64.i64(
2069   <vscale x 4 x i64>,
2070   <vscale x 4 x i64>,
2071   i64,
2072   <vscale x 4 x i1>,
2073   iXLen, iXLen);
2075 define <vscale x 4 x i64> @intrinsic_vadd_mask_vx_nxv4i64_nxv4i64_i64(<vscale x 4 x i64> %0, <vscale x 4 x i64> %1, i64 %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
2076 ; RV32-LABEL: intrinsic_vadd_mask_vx_nxv4i64_nxv4i64_i64:
2077 ; RV32:       # %bb.0: # %entry
2078 ; RV32-NEXT:    addi sp, sp, -16
2079 ; RV32-NEXT:    sw a1, 12(sp)
2080 ; RV32-NEXT:    sw a0, 8(sp)
2081 ; RV32-NEXT:    addi a0, sp, 8
2082 ; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, mu
2083 ; RV32-NEXT:    vlse64.v v16, (a0), zero
2084 ; RV32-NEXT:    vadd.vv v8, v12, v16, v0.t
2085 ; RV32-NEXT:    addi sp, sp, 16
2086 ; RV32-NEXT:    ret
2088 ; RV64-LABEL: intrinsic_vadd_mask_vx_nxv4i64_nxv4i64_i64:
2089 ; RV64:       # %bb.0: # %entry
2090 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, mu
2091 ; RV64-NEXT:    vadd.vx v8, v12, a0, v0.t
2092 ; RV64-NEXT:    ret
2093 entry:
2094   %a = call <vscale x 4 x i64> @llvm.riscv.vadd.mask.nxv4i64.i64(
2095     <vscale x 4 x i64> %0,
2096     <vscale x 4 x i64> %1,
2097     i64 %2,
2098     <vscale x 4 x i1> %3,
2099     iXLen %4, iXLen 1)
2101   ret <vscale x 4 x i64> %a
2104 declare <vscale x 8 x i64> @llvm.riscv.vadd.nxv8i64.i64(
2105   <vscale x 8 x i64>,
2106   <vscale x 8 x i64>,
2107   i64,
2108   iXLen);
2110 define <vscale x 8 x i64> @intrinsic_vadd_vx_nxv8i64_nxv8i64_i64(<vscale x 8 x i64> %0, i64 %1, iXLen %2) nounwind {
2111 ; RV32-LABEL: intrinsic_vadd_vx_nxv8i64_nxv8i64_i64:
2112 ; RV32:       # %bb.0: # %entry
2113 ; RV32-NEXT:    addi sp, sp, -16
2114 ; RV32-NEXT:    sw a1, 12(sp)
2115 ; RV32-NEXT:    sw a0, 8(sp)
2116 ; RV32-NEXT:    addi a0, sp, 8
2117 ; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
2118 ; RV32-NEXT:    vlse64.v v16, (a0), zero
2119 ; RV32-NEXT:    vadd.vv v8, v8, v16
2120 ; RV32-NEXT:    addi sp, sp, 16
2121 ; RV32-NEXT:    ret
2123 ; RV64-LABEL: intrinsic_vadd_vx_nxv8i64_nxv8i64_i64:
2124 ; RV64:       # %bb.0: # %entry
2125 ; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
2126 ; RV64-NEXT:    vadd.vx v8, v8, a0
2127 ; RV64-NEXT:    ret
2128 entry:
2129   %a = call <vscale x 8 x i64> @llvm.riscv.vadd.nxv8i64.i64(
2130     <vscale x 8 x i64> undef,
2131     <vscale x 8 x i64> %0,
2132     i64 %1,
2133     iXLen %2)
2135   ret <vscale x 8 x i64> %a
2138 declare <vscale x 8 x i64> @llvm.riscv.vadd.mask.nxv8i64.i64(
2139   <vscale x 8 x i64>,
2140   <vscale x 8 x i64>,
2141   i64,
2142   <vscale x 8 x i1>,
2143   iXLen, iXLen);
2145 define <vscale x 8 x i64> @intrinsic_vadd_mask_vx_nxv8i64_nxv8i64_i64(<vscale x 8 x i64> %0, <vscale x 8 x i64> %1, i64 %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
2146 ; RV32-LABEL: intrinsic_vadd_mask_vx_nxv8i64_nxv8i64_i64:
2147 ; RV32:       # %bb.0: # %entry
2148 ; RV32-NEXT:    addi sp, sp, -16
2149 ; RV32-NEXT:    sw a1, 12(sp)
2150 ; RV32-NEXT:    sw a0, 8(sp)
2151 ; RV32-NEXT:    addi a0, sp, 8
2152 ; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, mu
2153 ; RV32-NEXT:    vlse64.v v24, (a0), zero
2154 ; RV32-NEXT:    vadd.vv v8, v16, v24, v0.t
2155 ; RV32-NEXT:    addi sp, sp, 16
2156 ; RV32-NEXT:    ret
2158 ; RV64-LABEL: intrinsic_vadd_mask_vx_nxv8i64_nxv8i64_i64:
2159 ; RV64:       # %bb.0: # %entry
2160 ; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, mu
2161 ; RV64-NEXT:    vadd.vx v8, v16, a0, v0.t
2162 ; RV64-NEXT:    ret
2163 entry:
2164   %a = call <vscale x 8 x i64> @llvm.riscv.vadd.mask.nxv8i64.i64(
2165     <vscale x 8 x i64> %0,
2166     <vscale x 8 x i64> %1,
2167     i64 %2,
2168     <vscale x 8 x i1> %3,
2169     iXLen %4, iXLen 1)
2171   ret <vscale x 8 x i64> %a
2174 define <vscale x 1 x i8> @intrinsic_vadd_vi_nxv1i8_nxv1i8_i8(<vscale x 1 x i8> %0, iXLen %1) nounwind {
2175 ; CHECK-LABEL: intrinsic_vadd_vi_nxv1i8_nxv1i8_i8:
2176 ; CHECK:       # %bb.0: # %entry
2177 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
2178 ; CHECK-NEXT:    vadd.vi v8, v8, 9
2179 ; CHECK-NEXT:    ret
2180 entry:
2181   %a = call <vscale x 1 x i8> @llvm.riscv.vadd.nxv1i8.i8(
2182     <vscale x 1 x i8> undef,
2183     <vscale x 1 x i8> %0,
2184     i8 9,
2185     iXLen %1)
2187   ret <vscale x 1 x i8> %a
2190 define <vscale x 1 x i8> @intrinsic_vadd_mask_vi_nxv1i8_nxv1i8_i8(<vscale x 1 x i8> %0, <vscale x 1 x i8> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
2191 ; CHECK-LABEL: intrinsic_vadd_mask_vi_nxv1i8_nxv1i8_i8:
2192 ; CHECK:       # %bb.0: # %entry
2193 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, mu
2194 ; CHECK-NEXT:    vadd.vi v8, v9, -9, v0.t
2195 ; CHECK-NEXT:    ret
2196 entry:
2197   %a = call <vscale x 1 x i8> @llvm.riscv.vadd.mask.nxv1i8.i8(
2198     <vscale x 1 x i8> %0,
2199     <vscale x 1 x i8> %1,
2200     i8 -9,
2201     <vscale x 1 x i1> %2,
2202     iXLen %3, iXLen 1)
2204   ret <vscale x 1 x i8> %a
2207 define <vscale x 2 x i8> @intrinsic_vadd_vi_nxv2i8_nxv2i8_i8(<vscale x 2 x i8> %0, iXLen %1) nounwind {
2208 ; CHECK-LABEL: intrinsic_vadd_vi_nxv2i8_nxv2i8_i8:
2209 ; CHECK:       # %bb.0: # %entry
2210 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
2211 ; CHECK-NEXT:    vadd.vi v8, v8, 9
2212 ; CHECK-NEXT:    ret
2213 entry:
2214   %a = call <vscale x 2 x i8> @llvm.riscv.vadd.nxv2i8.i8(
2215     <vscale x 2 x i8> undef,
2216     <vscale x 2 x i8> %0,
2217     i8 9,
2218     iXLen %1)
2220   ret <vscale x 2 x i8> %a
2223 define <vscale x 2 x i8> @intrinsic_vadd_mask_vi_nxv2i8_nxv2i8_i8(<vscale x 2 x i8> %0, <vscale x 2 x i8> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
2224 ; CHECK-LABEL: intrinsic_vadd_mask_vi_nxv2i8_nxv2i8_i8:
2225 ; CHECK:       # %bb.0: # %entry
2226 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, mu
2227 ; CHECK-NEXT:    vadd.vi v8, v9, -9, v0.t
2228 ; CHECK-NEXT:    ret
2229 entry:
2230   %a = call <vscale x 2 x i8> @llvm.riscv.vadd.mask.nxv2i8.i8(
2231     <vscale x 2 x i8> %0,
2232     <vscale x 2 x i8> %1,
2233     i8 -9,
2234     <vscale x 2 x i1> %2,
2235     iXLen %3, iXLen 1)
2237   ret <vscale x 2 x i8> %a
2240 define <vscale x 4 x i8> @intrinsic_vadd_vi_nxv4i8_nxv4i8_i8(<vscale x 4 x i8> %0, iXLen %1) nounwind {
2241 ; CHECK-LABEL: intrinsic_vadd_vi_nxv4i8_nxv4i8_i8:
2242 ; CHECK:       # %bb.0: # %entry
2243 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
2244 ; CHECK-NEXT:    vadd.vi v8, v8, 9
2245 ; CHECK-NEXT:    ret
2246 entry:
2247   %a = call <vscale x 4 x i8> @llvm.riscv.vadd.nxv4i8.i8(
2248     <vscale x 4 x i8> undef,
2249     <vscale x 4 x i8> %0,
2250     i8 9,
2251     iXLen %1)
2253   ret <vscale x 4 x i8> %a
2256 define <vscale x 4 x i8> @intrinsic_vadd_mask_vi_nxv4i8_nxv4i8_i8(<vscale x 4 x i8> %0, <vscale x 4 x i8> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
2257 ; CHECK-LABEL: intrinsic_vadd_mask_vi_nxv4i8_nxv4i8_i8:
2258 ; CHECK:       # %bb.0: # %entry
2259 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, mu
2260 ; CHECK-NEXT:    vadd.vi v8, v9, -9, v0.t
2261 ; CHECK-NEXT:    ret
2262 entry:
2263   %a = call <vscale x 4 x i8> @llvm.riscv.vadd.mask.nxv4i8.i8(
2264     <vscale x 4 x i8> %0,
2265     <vscale x 4 x i8> %1,
2266     i8 -9,
2267     <vscale x 4 x i1> %2,
2268     iXLen %3, iXLen 1)
2270   ret <vscale x 4 x i8> %a
2273 define <vscale x 8 x i8> @intrinsic_vadd_vi_nxv8i8_nxv8i8_i8(<vscale x 8 x i8> %0, iXLen %1) nounwind {
2274 ; CHECK-LABEL: intrinsic_vadd_vi_nxv8i8_nxv8i8_i8:
2275 ; CHECK:       # %bb.0: # %entry
2276 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
2277 ; CHECK-NEXT:    vadd.vi v8, v8, 9
2278 ; CHECK-NEXT:    ret
2279 entry:
2280   %a = call <vscale x 8 x i8> @llvm.riscv.vadd.nxv8i8.i8(
2281     <vscale x 8 x i8> undef,
2282     <vscale x 8 x i8> %0,
2283     i8 9,
2284     iXLen %1)
2286   ret <vscale x 8 x i8> %a
2289 define <vscale x 8 x i8> @intrinsic_vadd_mask_vi_nxv8i8_nxv8i8_i8(<vscale x 8 x i8> %0, <vscale x 8 x i8> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
2290 ; CHECK-LABEL: intrinsic_vadd_mask_vi_nxv8i8_nxv8i8_i8:
2291 ; CHECK:       # %bb.0: # %entry
2292 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, mu
2293 ; CHECK-NEXT:    vadd.vi v8, v9, -9, v0.t
2294 ; CHECK-NEXT:    ret
2295 entry:
2296   %a = call <vscale x 8 x i8> @llvm.riscv.vadd.mask.nxv8i8.i8(
2297     <vscale x 8 x i8> %0,
2298     <vscale x 8 x i8> %1,
2299     i8 -9,
2300     <vscale x 8 x i1> %2,
2301     iXLen %3, iXLen 1)
2303   ret <vscale x 8 x i8> %a
2306 define <vscale x 16 x i8> @intrinsic_vadd_vi_nxv16i8_nxv16i8_i8(<vscale x 16 x i8> %0, iXLen %1) nounwind {
2307 ; CHECK-LABEL: intrinsic_vadd_vi_nxv16i8_nxv16i8_i8:
2308 ; CHECK:       # %bb.0: # %entry
2309 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
2310 ; CHECK-NEXT:    vadd.vi v8, v8, 9
2311 ; CHECK-NEXT:    ret
2312 entry:
2313   %a = call <vscale x 16 x i8> @llvm.riscv.vadd.nxv16i8.i8(
2314     <vscale x 16 x i8> undef,
2315     <vscale x 16 x i8> %0,
2316     i8 9,
2317     iXLen %1)
2319   ret <vscale x 16 x i8> %a
2322 define <vscale x 16 x i8> @intrinsic_vadd_mask_vi_nxv16i8_nxv16i8_i8(<vscale x 16 x i8> %0, <vscale x 16 x i8> %1, <vscale x 16 x i1> %2, iXLen %3) nounwind {
2323 ; CHECK-LABEL: intrinsic_vadd_mask_vi_nxv16i8_nxv16i8_i8:
2324 ; CHECK:       # %bb.0: # %entry
2325 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, mu
2326 ; CHECK-NEXT:    vadd.vi v8, v10, -9, v0.t
2327 ; CHECK-NEXT:    ret
2328 entry:
2329   %a = call <vscale x 16 x i8> @llvm.riscv.vadd.mask.nxv16i8.i8(
2330     <vscale x 16 x i8> %0,
2331     <vscale x 16 x i8> %1,
2332     i8 -9,
2333     <vscale x 16 x i1> %2,
2334     iXLen %3, iXLen 1)
2336   ret <vscale x 16 x i8> %a
2339 define <vscale x 32 x i8> @intrinsic_vadd_vi_nxv32i8_nxv32i8_i8(<vscale x 32 x i8> %0, iXLen %1) nounwind {
2340 ; CHECK-LABEL: intrinsic_vadd_vi_nxv32i8_nxv32i8_i8:
2341 ; CHECK:       # %bb.0: # %entry
2342 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
2343 ; CHECK-NEXT:    vadd.vi v8, v8, 9
2344 ; CHECK-NEXT:    ret
2345 entry:
2346   %a = call <vscale x 32 x i8> @llvm.riscv.vadd.nxv32i8.i8(
2347     <vscale x 32 x i8> undef,
2348     <vscale x 32 x i8> %0,
2349     i8 9,
2350     iXLen %1)
2352   ret <vscale x 32 x i8> %a
2355 define <vscale x 32 x i8> @intrinsic_vadd_mask_vi_nxv32i8_nxv32i8_i8(<vscale x 32 x i8> %0, <vscale x 32 x i8> %1, <vscale x 32 x i1> %2, iXLen %3) nounwind {
2356 ; CHECK-LABEL: intrinsic_vadd_mask_vi_nxv32i8_nxv32i8_i8:
2357 ; CHECK:       # %bb.0: # %entry
2358 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, mu
2359 ; CHECK-NEXT:    vadd.vi v8, v12, -9, v0.t
2360 ; CHECK-NEXT:    ret
2361 entry:
2362   %a = call <vscale x 32 x i8> @llvm.riscv.vadd.mask.nxv32i8.i8(
2363     <vscale x 32 x i8> %0,
2364     <vscale x 32 x i8> %1,
2365     i8 -9,
2366     <vscale x 32 x i1> %2,
2367     iXLen %3, iXLen 1)
2369   ret <vscale x 32 x i8> %a
2372 define <vscale x 64 x i8> @intrinsic_vadd_vi_nxv64i8_nxv64i8_i8(<vscale x 64 x i8> %0, iXLen %1) nounwind {
2373 ; CHECK-LABEL: intrinsic_vadd_vi_nxv64i8_nxv64i8_i8:
2374 ; CHECK:       # %bb.0: # %entry
2375 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
2376 ; CHECK-NEXT:    vadd.vi v8, v8, -9
2377 ; CHECK-NEXT:    ret
2378 entry:
2379   %a = call <vscale x 64 x i8> @llvm.riscv.vadd.nxv64i8.i8(
2380     <vscale x 64 x i8> undef,
2381     <vscale x 64 x i8> %0,
2382     i8 -9,
2383     iXLen %1)
2385   ret <vscale x 64 x i8> %a
2388 define <vscale x 64 x i8> @intrinsic_vadd_mask_vi_nxv64i8_nxv64i8_i8(<vscale x 64 x i8> %0, <vscale x 64 x i8> %1, <vscale x 64 x i1> %2, iXLen %3) nounwind {
2389 ; CHECK-LABEL: intrinsic_vadd_mask_vi_nxv64i8_nxv64i8_i8:
2390 ; CHECK:       # %bb.0: # %entry
2391 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, mu
2392 ; CHECK-NEXT:    vadd.vi v8, v16, -9, v0.t
2393 ; CHECK-NEXT:    ret
2394 entry:
2395   %a = call <vscale x 64 x i8> @llvm.riscv.vadd.mask.nxv64i8.i8(
2396     <vscale x 64 x i8> %0,
2397     <vscale x 64 x i8> %1,
2398     i8 -9,
2399     <vscale x 64 x i1> %2,
2400     iXLen %3, iXLen 1)
2402   ret <vscale x 64 x i8> %a
2405 define <vscale x 1 x i16> @intrinsic_vadd_vi_nxv1i16_nxv1i16_i16(<vscale x 1 x i16> %0, iXLen %1) nounwind {
2406 ; CHECK-LABEL: intrinsic_vadd_vi_nxv1i16_nxv1i16_i16:
2407 ; CHECK:       # %bb.0: # %entry
2408 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
2409 ; CHECK-NEXT:    vadd.vi v8, v8, 9
2410 ; CHECK-NEXT:    ret
2411 entry:
2412   %a = call <vscale x 1 x i16> @llvm.riscv.vadd.nxv1i16.i16(
2413     <vscale x 1 x i16> undef,
2414     <vscale x 1 x i16> %0,
2415     i16 9,
2416     iXLen %1)
2418   ret <vscale x 1 x i16> %a
2421 define <vscale x 1 x i16> @intrinsic_vadd_mask_vi_nxv1i16_nxv1i16_i16(<vscale x 1 x i16> %0, <vscale x 1 x i16> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
2422 ; CHECK-LABEL: intrinsic_vadd_mask_vi_nxv1i16_nxv1i16_i16:
2423 ; CHECK:       # %bb.0: # %entry
2424 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, mu
2425 ; CHECK-NEXT:    vadd.vi v8, v9, -9, v0.t
2426 ; CHECK-NEXT:    ret
2427 entry:
2428   %a = call <vscale x 1 x i16> @llvm.riscv.vadd.mask.nxv1i16.i16(
2429     <vscale x 1 x i16> %0,
2430     <vscale x 1 x i16> %1,
2431     i16 -9,
2432     <vscale x 1 x i1> %2,
2433     iXLen %3, iXLen 1)
2435   ret <vscale x 1 x i16> %a
2438 define <vscale x 2 x i16> @intrinsic_vadd_vi_nxv2i16_nxv2i16_i16(<vscale x 2 x i16> %0, iXLen %1) nounwind {
2439 ; CHECK-LABEL: intrinsic_vadd_vi_nxv2i16_nxv2i16_i16:
2440 ; CHECK:       # %bb.0: # %entry
2441 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
2442 ; CHECK-NEXT:    vadd.vi v8, v8, 9
2443 ; CHECK-NEXT:    ret
2444 entry:
2445   %a = call <vscale x 2 x i16> @llvm.riscv.vadd.nxv2i16.i16(
2446     <vscale x 2 x i16> undef,
2447     <vscale x 2 x i16> %0,
2448     i16 9,
2449     iXLen %1)
2451   ret <vscale x 2 x i16> %a
2454 define <vscale x 2 x i16> @intrinsic_vadd_mask_vi_nxv2i16_nxv2i16_i16(<vscale x 2 x i16> %0, <vscale x 2 x i16> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
2455 ; CHECK-LABEL: intrinsic_vadd_mask_vi_nxv2i16_nxv2i16_i16:
2456 ; CHECK:       # %bb.0: # %entry
2457 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, mu
2458 ; CHECK-NEXT:    vadd.vi v8, v9, -9, v0.t
2459 ; CHECK-NEXT:    ret
2460 entry:
2461   %a = call <vscale x 2 x i16> @llvm.riscv.vadd.mask.nxv2i16.i16(
2462     <vscale x 2 x i16> %0,
2463     <vscale x 2 x i16> %1,
2464     i16 -9,
2465     <vscale x 2 x i1> %2,
2466     iXLen %3, iXLen 1)
2468   ret <vscale x 2 x i16> %a
2471 define <vscale x 4 x i16> @intrinsic_vadd_vi_nxv4i16_nxv4i16_i16(<vscale x 4 x i16> %0, iXLen %1) nounwind {
2472 ; CHECK-LABEL: intrinsic_vadd_vi_nxv4i16_nxv4i16_i16:
2473 ; CHECK:       # %bb.0: # %entry
2474 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
2475 ; CHECK-NEXT:    vadd.vi v8, v8, 9
2476 ; CHECK-NEXT:    ret
2477 entry:
2478   %a = call <vscale x 4 x i16> @llvm.riscv.vadd.nxv4i16.i16(
2479     <vscale x 4 x i16> undef,
2480     <vscale x 4 x i16> %0,
2481     i16 9,
2482     iXLen %1)
2484   ret <vscale x 4 x i16> %a
2487 define <vscale x 4 x i16> @intrinsic_vadd_mask_vi_nxv4i16_nxv4i16_i16(<vscale x 4 x i16> %0, <vscale x 4 x i16> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
2488 ; CHECK-LABEL: intrinsic_vadd_mask_vi_nxv4i16_nxv4i16_i16:
2489 ; CHECK:       # %bb.0: # %entry
2490 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, mu
2491 ; CHECK-NEXT:    vadd.vi v8, v9, -9, v0.t
2492 ; CHECK-NEXT:    ret
2493 entry:
2494   %a = call <vscale x 4 x i16> @llvm.riscv.vadd.mask.nxv4i16.i16(
2495     <vscale x 4 x i16> %0,
2496     <vscale x 4 x i16> %1,
2497     i16 -9,
2498     <vscale x 4 x i1> %2,
2499     iXLen %3, iXLen 1)
2501   ret <vscale x 4 x i16> %a
2504 define <vscale x 8 x i16> @intrinsic_vadd_vi_nxv8i16_nxv8i16_i16(<vscale x 8 x i16> %0, iXLen %1) nounwind {
2505 ; CHECK-LABEL: intrinsic_vadd_vi_nxv8i16_nxv8i16_i16:
2506 ; CHECK:       # %bb.0: # %entry
2507 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
2508 ; CHECK-NEXT:    vadd.vi v8, v8, 9
2509 ; CHECK-NEXT:    ret
2510 entry:
2511   %a = call <vscale x 8 x i16> @llvm.riscv.vadd.nxv8i16.i16(
2512     <vscale x 8 x i16> undef,
2513     <vscale x 8 x i16> %0,
2514     i16 9,
2515     iXLen %1)
2517   ret <vscale x 8 x i16> %a
2520 define <vscale x 8 x i16> @intrinsic_vadd_mask_vi_nxv8i16_nxv8i16_i16(<vscale x 8 x i16> %0, <vscale x 8 x i16> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
2521 ; CHECK-LABEL: intrinsic_vadd_mask_vi_nxv8i16_nxv8i16_i16:
2522 ; CHECK:       # %bb.0: # %entry
2523 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, mu
2524 ; CHECK-NEXT:    vadd.vi v8, v10, -9, v0.t
2525 ; CHECK-NEXT:    ret
2526 entry:
2527   %a = call <vscale x 8 x i16> @llvm.riscv.vadd.mask.nxv8i16.i16(
2528     <vscale x 8 x i16> %0,
2529     <vscale x 8 x i16> %1,
2530     i16 -9,
2531     <vscale x 8 x i1> %2,
2532     iXLen %3, iXLen 1)
2534   ret <vscale x 8 x i16> %a
2537 define <vscale x 16 x i16> @intrinsic_vadd_vi_nxv16i16_nxv16i16_i16(<vscale x 16 x i16> %0, iXLen %1) nounwind {
2538 ; CHECK-LABEL: intrinsic_vadd_vi_nxv16i16_nxv16i16_i16:
2539 ; CHECK:       # %bb.0: # %entry
2540 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2541 ; CHECK-NEXT:    vadd.vi v8, v8, 9
2542 ; CHECK-NEXT:    ret
2543 entry:
2544   %a = call <vscale x 16 x i16> @llvm.riscv.vadd.nxv16i16.i16(
2545     <vscale x 16 x i16> undef,
2546     <vscale x 16 x i16> %0,
2547     i16 9,
2548     iXLen %1)
2550   ret <vscale x 16 x i16> %a
2553 define <vscale x 16 x i16> @intrinsic_vadd_mask_vi_nxv16i16_nxv16i16_i16(<vscale x 16 x i16> %0, <vscale x 16 x i16> %1, <vscale x 16 x i1> %2, iXLen %3) nounwind {
2554 ; CHECK-LABEL: intrinsic_vadd_mask_vi_nxv16i16_nxv16i16_i16:
2555 ; CHECK:       # %bb.0: # %entry
2556 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, mu
2557 ; CHECK-NEXT:    vadd.vi v8, v12, -9, v0.t
2558 ; CHECK-NEXT:    ret
2559 entry:
2560   %a = call <vscale x 16 x i16> @llvm.riscv.vadd.mask.nxv16i16.i16(
2561     <vscale x 16 x i16> %0,
2562     <vscale x 16 x i16> %1,
2563     i16 -9,
2564     <vscale x 16 x i1> %2,
2565     iXLen %3, iXLen 1)
2567   ret <vscale x 16 x i16> %a
2570 define <vscale x 32 x i16> @intrinsic_vadd_vi_nxv32i16_nxv32i16_i16(<vscale x 32 x i16> %0, iXLen %1) nounwind {
2571 ; CHECK-LABEL: intrinsic_vadd_vi_nxv32i16_nxv32i16_i16:
2572 ; CHECK:       # %bb.0: # %entry
2573 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
2574 ; CHECK-NEXT:    vadd.vi v8, v8, 9
2575 ; CHECK-NEXT:    ret
2576 entry:
2577   %a = call <vscale x 32 x i16> @llvm.riscv.vadd.nxv32i16.i16(
2578     <vscale x 32 x i16> undef,
2579     <vscale x 32 x i16> %0,
2580     i16 9,
2581     iXLen %1)
2583   ret <vscale x 32 x i16> %a
2586 define <vscale x 32 x i16> @intrinsic_vadd_mask_vi_nxv32i16_nxv32i16_i16(<vscale x 32 x i16> %0, <vscale x 32 x i16> %1, <vscale x 32 x i1> %2, iXLen %3) nounwind {
2587 ; CHECK-LABEL: intrinsic_vadd_mask_vi_nxv32i16_nxv32i16_i16:
2588 ; CHECK:       # %bb.0: # %entry
2589 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, mu
2590 ; CHECK-NEXT:    vadd.vi v8, v16, -9, v0.t
2591 ; CHECK-NEXT:    ret
2592 entry:
2593   %a = call <vscale x 32 x i16> @llvm.riscv.vadd.mask.nxv32i16.i16(
2594     <vscale x 32 x i16> %0,
2595     <vscale x 32 x i16> %1,
2596     i16 -9,
2597     <vscale x 32 x i1> %2,
2598     iXLen %3, iXLen 1)
2600   ret <vscale x 32 x i16> %a
2603 define <vscale x 1 x i32> @intrinsic_vadd_vi_nxv1i32_nxv1i32_i32(<vscale x 1 x i32> %0, iXLen %1) nounwind {
2604 ; CHECK-LABEL: intrinsic_vadd_vi_nxv1i32_nxv1i32_i32:
2605 ; CHECK:       # %bb.0: # %entry
2606 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
2607 ; CHECK-NEXT:    vadd.vi v8, v8, 9
2608 ; CHECK-NEXT:    ret
2609 entry:
2610   %a = call <vscale x 1 x i32> @llvm.riscv.vadd.nxv1i32.i32(
2611     <vscale x 1 x i32> undef,
2612     <vscale x 1 x i32> %0,
2613     i32 9,
2614     iXLen %1)
2616   ret <vscale x 1 x i32> %a
2619 define <vscale x 1 x i32> @intrinsic_vadd_mask_vi_nxv1i32_nxv1i32_i32(<vscale x 1 x i32> %0, <vscale x 1 x i32> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
2620 ; CHECK-LABEL: intrinsic_vadd_mask_vi_nxv1i32_nxv1i32_i32:
2621 ; CHECK:       # %bb.0: # %entry
2622 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, mu
2623 ; CHECK-NEXT:    vadd.vi v8, v9, -9, v0.t
2624 ; CHECK-NEXT:    ret
2625 entry:
2626   %a = call <vscale x 1 x i32> @llvm.riscv.vadd.mask.nxv1i32.i32(
2627     <vscale x 1 x i32> %0,
2628     <vscale x 1 x i32> %1,
2629     i32 -9,
2630     <vscale x 1 x i1> %2,
2631     iXLen %3, iXLen 1)
2633   ret <vscale x 1 x i32> %a
2636 define <vscale x 2 x i32> @intrinsic_vadd_vi_nxv2i32_nxv2i32_i32(<vscale x 2 x i32> %0, iXLen %1) nounwind {
2637 ; CHECK-LABEL: intrinsic_vadd_vi_nxv2i32_nxv2i32_i32:
2638 ; CHECK:       # %bb.0: # %entry
2639 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
2640 ; CHECK-NEXT:    vadd.vi v8, v8, 9
2641 ; CHECK-NEXT:    ret
2642 entry:
2643   %a = call <vscale x 2 x i32> @llvm.riscv.vadd.nxv2i32.i32(
2644     <vscale x 2 x i32> undef,
2645     <vscale x 2 x i32> %0,
2646     i32 9,
2647     iXLen %1)
2649   ret <vscale x 2 x i32> %a
2652 define <vscale x 2 x i32> @intrinsic_vadd_mask_vi_nxv2i32_nxv2i32_i32(<vscale x 2 x i32> %0, <vscale x 2 x i32> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
2653 ; CHECK-LABEL: intrinsic_vadd_mask_vi_nxv2i32_nxv2i32_i32:
2654 ; CHECK:       # %bb.0: # %entry
2655 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, mu
2656 ; CHECK-NEXT:    vadd.vi v8, v9, -9, v0.t
2657 ; CHECK-NEXT:    ret
2658 entry:
2659   %a = call <vscale x 2 x i32> @llvm.riscv.vadd.mask.nxv2i32.i32(
2660     <vscale x 2 x i32> %0,
2661     <vscale x 2 x i32> %1,
2662     i32 -9,
2663     <vscale x 2 x i1> %2,
2664     iXLen %3, iXLen 1)
2666   ret <vscale x 2 x i32> %a
2669 define <vscale x 4 x i32> @intrinsic_vadd_vi_nxv4i32_nxv4i32_i32(<vscale x 4 x i32> %0, iXLen %1) nounwind {
2670 ; CHECK-LABEL: intrinsic_vadd_vi_nxv4i32_nxv4i32_i32:
2671 ; CHECK:       # %bb.0: # %entry
2672 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
2673 ; CHECK-NEXT:    vadd.vi v8, v8, 9
2674 ; CHECK-NEXT:    ret
2675 entry:
2676   %a = call <vscale x 4 x i32> @llvm.riscv.vadd.nxv4i32.i32(
2677     <vscale x 4 x i32> undef,
2678     <vscale x 4 x i32> %0,
2679     i32 9,
2680     iXLen %1)
2682   ret <vscale x 4 x i32> %a
2685 define <vscale x 4 x i32> @intrinsic_vadd_mask_vi_nxv4i32_nxv4i32_i32(<vscale x 4 x i32> %0, <vscale x 4 x i32> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
2686 ; CHECK-LABEL: intrinsic_vadd_mask_vi_nxv4i32_nxv4i32_i32:
2687 ; CHECK:       # %bb.0: # %entry
2688 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, mu
2689 ; CHECK-NEXT:    vadd.vi v8, v10, -9, v0.t
2690 ; CHECK-NEXT:    ret
2691 entry:
2692   %a = call <vscale x 4 x i32> @llvm.riscv.vadd.mask.nxv4i32.i32(
2693     <vscale x 4 x i32> %0,
2694     <vscale x 4 x i32> %1,
2695     i32 -9,
2696     <vscale x 4 x i1> %2,
2697     iXLen %3, iXLen 1)
2699   ret <vscale x 4 x i32> %a
2702 define <vscale x 8 x i32> @intrinsic_vadd_vi_nxv8i32_nxv8i32_i32(<vscale x 8 x i32> %0, iXLen %1) nounwind {
2703 ; CHECK-LABEL: intrinsic_vadd_vi_nxv8i32_nxv8i32_i32:
2704 ; CHECK:       # %bb.0: # %entry
2705 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
2706 ; CHECK-NEXT:    vadd.vi v8, v8, 9
2707 ; CHECK-NEXT:    ret
2708 entry:
2709   %a = call <vscale x 8 x i32> @llvm.riscv.vadd.nxv8i32.i32(
2710     <vscale x 8 x i32> undef,
2711     <vscale x 8 x i32> %0,
2712     i32 9,
2713     iXLen %1)
2715   ret <vscale x 8 x i32> %a
2718 define <vscale x 8 x i32> @intrinsic_vadd_mask_vi_nxv8i32_nxv8i32_i32(<vscale x 8 x i32> %0, <vscale x 8 x i32> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
2719 ; CHECK-LABEL: intrinsic_vadd_mask_vi_nxv8i32_nxv8i32_i32:
2720 ; CHECK:       # %bb.0: # %entry
2721 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, mu
2722 ; CHECK-NEXT:    vadd.vi v8, v12, -9, v0.t
2723 ; CHECK-NEXT:    ret
2724 entry:
2725   %a = call <vscale x 8 x i32> @llvm.riscv.vadd.mask.nxv8i32.i32(
2726     <vscale x 8 x i32> %0,
2727     <vscale x 8 x i32> %1,
2728     i32 -9,
2729     <vscale x 8 x i1> %2,
2730     iXLen %3, iXLen 1)
2732   ret <vscale x 8 x i32> %a
2735 define <vscale x 16 x i32> @intrinsic_vadd_vi_nxv16i32_nxv16i32_i32(<vscale x 16 x i32> %0, iXLen %1) nounwind {
2736 ; CHECK-LABEL: intrinsic_vadd_vi_nxv16i32_nxv16i32_i32:
2737 ; CHECK:       # %bb.0: # %entry
2738 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
2739 ; CHECK-NEXT:    vadd.vi v8, v8, 9
2740 ; CHECK-NEXT:    ret
2741 entry:
2742   %a = call <vscale x 16 x i32> @llvm.riscv.vadd.nxv16i32.i32(
2743     <vscale x 16 x i32> undef,
2744     <vscale x 16 x i32> %0,
2745     i32 9,
2746     iXLen %1)
2748   ret <vscale x 16 x i32> %a
2751 define <vscale x 16 x i32> @intrinsic_vadd_mask_vi_nxv16i32_nxv16i32_i32(<vscale x 16 x i32> %0, <vscale x 16 x i32> %1, <vscale x 16 x i1> %2, iXLen %3) nounwind {
2752 ; CHECK-LABEL: intrinsic_vadd_mask_vi_nxv16i32_nxv16i32_i32:
2753 ; CHECK:       # %bb.0: # %entry
2754 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, mu
2755 ; CHECK-NEXT:    vadd.vi v8, v16, -9, v0.t
2756 ; CHECK-NEXT:    ret
2757 entry:
2758   %a = call <vscale x 16 x i32> @llvm.riscv.vadd.mask.nxv16i32.i32(
2759     <vscale x 16 x i32> %0,
2760     <vscale x 16 x i32> %1,
2761     i32 -9,
2762     <vscale x 16 x i1> %2,
2763     iXLen %3, iXLen 1)
2765   ret <vscale x 16 x i32> %a
2768 define <vscale x 1 x i64> @intrinsic_vadd_vi_nxv1i64_nxv1i64_i64(<vscale x 1 x i64> %0, iXLen %1) nounwind {
2769 ; CHECK-LABEL: intrinsic_vadd_vi_nxv1i64_nxv1i64_i64:
2770 ; CHECK:       # %bb.0: # %entry
2771 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2772 ; CHECK-NEXT:    vadd.vi v8, v8, 9
2773 ; CHECK-NEXT:    ret
2774 entry:
2775   %a = call <vscale x 1 x i64> @llvm.riscv.vadd.nxv1i64.i64(
2776     <vscale x 1 x i64> undef,
2777     <vscale x 1 x i64> %0,
2778     i64 9,
2779     iXLen %1)
2781   ret <vscale x 1 x i64> %a
2784 define <vscale x 1 x i64> @intrinsic_vadd_mask_vi_nxv1i64_nxv1i64_i64(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
2785 ; CHECK-LABEL: intrinsic_vadd_mask_vi_nxv1i64_nxv1i64_i64:
2786 ; CHECK:       # %bb.0: # %entry
2787 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, mu
2788 ; CHECK-NEXT:    vadd.vi v8, v9, 9, v0.t
2789 ; CHECK-NEXT:    ret
2790 entry:
2791   %a = call <vscale x 1 x i64> @llvm.riscv.vadd.mask.nxv1i64.i64(
2792     <vscale x 1 x i64> %0,
2793     <vscale x 1 x i64> %1,
2794     i64 9,
2795     <vscale x 1 x i1> %2,
2796     iXLen %3, iXLen 1)
2798   ret <vscale x 1 x i64> %a
2801 define <vscale x 2 x i64> @intrinsic_vadd_vi_nxv2i64_nxv2i64_i64(<vscale x 2 x i64> %0, iXLen %1) nounwind {
2802 ; CHECK-LABEL: intrinsic_vadd_vi_nxv2i64_nxv2i64_i64:
2803 ; CHECK:       # %bb.0: # %entry
2804 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
2805 ; CHECK-NEXT:    vadd.vi v8, v8, 9
2806 ; CHECK-NEXT:    ret
2807 entry:
2808   %a = call <vscale x 2 x i64> @llvm.riscv.vadd.nxv2i64.i64(
2809     <vscale x 2 x i64> undef,
2810     <vscale x 2 x i64> %0,
2811     i64 9,
2812     iXLen %1)
2814   ret <vscale x 2 x i64> %a
2817 define <vscale x 2 x i64> @intrinsic_vadd_mask_vi_nxv2i64_nxv2i64_i64(<vscale x 2 x i64> %0, <vscale x 2 x i64> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
2818 ; CHECK-LABEL: intrinsic_vadd_mask_vi_nxv2i64_nxv2i64_i64:
2819 ; CHECK:       # %bb.0: # %entry
2820 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, mu
2821 ; CHECK-NEXT:    vadd.vi v8, v10, 9, v0.t
2822 ; CHECK-NEXT:    ret
2823 entry:
2824   %a = call <vscale x 2 x i64> @llvm.riscv.vadd.mask.nxv2i64.i64(
2825     <vscale x 2 x i64> %0,
2826     <vscale x 2 x i64> %1,
2827     i64 9,
2828     <vscale x 2 x i1> %2,
2829     iXLen %3, iXLen 1)
2831   ret <vscale x 2 x i64> %a
2834 define <vscale x 4 x i64> @intrinsic_vadd_vi_nxv4i64_nxv4i64_i64(<vscale x 4 x i64> %0, iXLen %1) nounwind {
2835 ; CHECK-LABEL: intrinsic_vadd_vi_nxv4i64_nxv4i64_i64:
2836 ; CHECK:       # %bb.0: # %entry
2837 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
2838 ; CHECK-NEXT:    vadd.vi v8, v8, 9
2839 ; CHECK-NEXT:    ret
2840 entry:
2841   %a = call <vscale x 4 x i64> @llvm.riscv.vadd.nxv4i64.i64(
2842     <vscale x 4 x i64> undef,
2843     <vscale x 4 x i64> %0,
2844     i64 9,
2845     iXLen %1)
2847   ret <vscale x 4 x i64> %a
2850 define <vscale x 4 x i64> @intrinsic_vadd_mask_vi_nxv4i64_nxv4i64_i64(<vscale x 4 x i64> %0, <vscale x 4 x i64> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
2851 ; CHECK-LABEL: intrinsic_vadd_mask_vi_nxv4i64_nxv4i64_i64:
2852 ; CHECK:       # %bb.0: # %entry
2853 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, mu
2854 ; CHECK-NEXT:    vadd.vi v8, v12, 9, v0.t
2855 ; CHECK-NEXT:    ret
2856 entry:
2857   %a = call <vscale x 4 x i64> @llvm.riscv.vadd.mask.nxv4i64.i64(
2858     <vscale x 4 x i64> %0,
2859     <vscale x 4 x i64> %1,
2860     i64 9,
2861     <vscale x 4 x i1> %2,
2862     iXLen %3, iXLen 1)
2864   ret <vscale x 4 x i64> %a
2867 define <vscale x 8 x i64> @intrinsic_vadd_vi_nxv8i64_nxv8i64_i64(<vscale x 8 x i64> %0, iXLen %1) nounwind {
2868 ; CHECK-LABEL: intrinsic_vadd_vi_nxv8i64_nxv8i64_i64:
2869 ; CHECK:       # %bb.0: # %entry
2870 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
2871 ; CHECK-NEXT:    vadd.vi v8, v8, 9
2872 ; CHECK-NEXT:    ret
2873 entry:
2874   %a = call <vscale x 8 x i64> @llvm.riscv.vadd.nxv8i64.i64(
2875     <vscale x 8 x i64> undef,
2876     <vscale x 8 x i64> %0,
2877     i64 9,
2878     iXLen %1)
2880   ret <vscale x 8 x i64> %a
2883 define <vscale x 8 x i64> @intrinsic_vadd_mask_vi_nxv8i64_nxv8i64_i64(<vscale x 8 x i64> %0, <vscale x 8 x i64> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
2884 ; CHECK-LABEL: intrinsic_vadd_mask_vi_nxv8i64_nxv8i64_i64:
2885 ; CHECK:       # %bb.0: # %entry
2886 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, mu
2887 ; CHECK-NEXT:    vadd.vi v8, v16, 9, v0.t
2888 ; CHECK-NEXT:    ret
2889 entry:
2890   %a = call <vscale x 8 x i64> @llvm.riscv.vadd.mask.nxv8i64.i64(
2891     <vscale x 8 x i64> %0,
2892     <vscale x 8 x i64> %1,
2893     i64 9,
2894     <vscale x 8 x i1> %2,
2895     iXLen %3, iXLen 1)
2897   ret <vscale x 8 x i64> %a