Revert "[InstCombine] Support gep nuw in icmp folds" (#118698)
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vid.ll
blobf7510eadcef91603273f1585cca2989b7a473b0d
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
4 ; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v \
5 ; RUN:   -verify-machineinstrs | FileCheck %s
7 declare <vscale x 1 x i8> @llvm.riscv.vid.nxv1i8(
8   <vscale x 1 x i8>,
9   iXLen);
11 define <vscale x 1 x i8> @intrinsic_vid_v_nxv1i8(iXLen %0) nounwind {
12 ; CHECK-LABEL: intrinsic_vid_v_nxv1i8:
13 ; CHECK:       # %bb.0: # %entry
14 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
15 ; CHECK-NEXT:    vid.v v8
16 ; CHECK-NEXT:    ret
17 entry:
18   %a = call <vscale x 1 x i8> @llvm.riscv.vid.nxv1i8(
19     <vscale x 1 x i8> undef,
20     iXLen %0)
22   ret <vscale x 1 x i8> %a
25 declare <vscale x 1 x i8> @llvm.riscv.vid.mask.nxv1i8(
26   <vscale x 1 x i8>,
27   <vscale x 1 x i1>,
28   iXLen, iXLen);
30 define <vscale x 1 x i8> @intrinsic_vid_mask_v_nxv1i8(<vscale x 1 x i8> %0, <vscale x 1 x i1> %1, iXLen %2) nounwind {
31 ; CHECK-LABEL: intrinsic_vid_mask_v_nxv1i8:
32 ; CHECK:       # %bb.0: # %entry
33 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, tu, mu
34 ; CHECK-NEXT:    vid.v v8, v0.t
35 ; CHECK-NEXT:    ret
36 entry:
37   %a = call <vscale x 1 x i8> @llvm.riscv.vid.mask.nxv1i8(
38     <vscale x 1 x i8> %0,
39     <vscale x 1 x i1> %1,
40     iXLen %2, iXLen 0)
42   ret <vscale x 1 x i8> %a
45 declare <vscale x 2 x i8> @llvm.riscv.vid.nxv2i8(
46   <vscale x 2 x i8>,
47   iXLen);
49 define <vscale x 2 x i8> @intrinsic_vid_v_nxv2i8(iXLen %0) nounwind {
50 ; CHECK-LABEL: intrinsic_vid_v_nxv2i8:
51 ; CHECK:       # %bb.0: # %entry
52 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
53 ; CHECK-NEXT:    vid.v v8
54 ; CHECK-NEXT:    ret
55 entry:
56   %a = call <vscale x 2 x i8> @llvm.riscv.vid.nxv2i8(
57     <vscale x 2 x i8> undef,
58     iXLen %0)
60   ret <vscale x 2 x i8> %a
63 declare <vscale x 2 x i8> @llvm.riscv.vid.mask.nxv2i8(
64   <vscale x 2 x i8>,
65   <vscale x 2 x i1>,
66   iXLen, iXLen);
68 define <vscale x 2 x i8> @intrinsic_vid_mask_v_nxv2i8(<vscale x 2 x i8> %0, <vscale x 2 x i1> %1, iXLen %2) nounwind {
69 ; CHECK-LABEL: intrinsic_vid_mask_v_nxv2i8:
70 ; CHECK:       # %bb.0: # %entry
71 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, tu, mu
72 ; CHECK-NEXT:    vid.v v8, v0.t
73 ; CHECK-NEXT:    ret
74 entry:
75   %a = call <vscale x 2 x i8> @llvm.riscv.vid.mask.nxv2i8(
76     <vscale x 2 x i8> %0,
77     <vscale x 2 x i1> %1,
78     iXLen %2, iXLen 0)
80   ret <vscale x 2 x i8> %a
83 declare <vscale x 4 x i8> @llvm.riscv.vid.nxv4i8(
84   <vscale x 4 x i8>,
85   iXLen);
87 define <vscale x 4 x i8> @intrinsic_vid_v_nxv4i8(iXLen %0) nounwind {
88 ; CHECK-LABEL: intrinsic_vid_v_nxv4i8:
89 ; CHECK:       # %bb.0: # %entry
90 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
91 ; CHECK-NEXT:    vid.v v8
92 ; CHECK-NEXT:    ret
93 entry:
94   %a = call <vscale x 4 x i8> @llvm.riscv.vid.nxv4i8(
95     <vscale x 4 x i8> undef,
96     iXLen %0)
98   ret <vscale x 4 x i8> %a
101 declare <vscale x 4 x i8> @llvm.riscv.vid.mask.nxv4i8(
102   <vscale x 4 x i8>,
103   <vscale x 4 x i1>,
104   iXLen, iXLen);
106 define <vscale x 4 x i8> @intrinsic_vid_mask_v_nxv4i8(<vscale x 4 x i8> %0, <vscale x 4 x i1> %1, iXLen %2) nounwind {
107 ; CHECK-LABEL: intrinsic_vid_mask_v_nxv4i8:
108 ; CHECK:       # %bb.0: # %entry
109 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, tu, mu
110 ; CHECK-NEXT:    vid.v v8, v0.t
111 ; CHECK-NEXT:    ret
112 entry:
113   %a = call <vscale x 4 x i8> @llvm.riscv.vid.mask.nxv4i8(
114     <vscale x 4 x i8> %0,
115     <vscale x 4 x i1> %1,
116     iXLen %2, iXLen 0)
118   ret <vscale x 4 x i8> %a
121 declare <vscale x 8 x i8> @llvm.riscv.vid.nxv8i8(
122   <vscale x 8 x i8>,
123   iXLen);
125 define <vscale x 8 x i8> @intrinsic_vid_v_nxv8i8(iXLen %0) nounwind {
126 ; CHECK-LABEL: intrinsic_vid_v_nxv8i8:
127 ; CHECK:       # %bb.0: # %entry
128 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
129 ; CHECK-NEXT:    vid.v v8
130 ; CHECK-NEXT:    ret
131 entry:
132   %a = call <vscale x 8 x i8> @llvm.riscv.vid.nxv8i8(
133     <vscale x 8 x i8> undef,
134     iXLen %0)
136   ret <vscale x 8 x i8> %a
139 declare <vscale x 8 x i8> @llvm.riscv.vid.mask.nxv8i8(
140   <vscale x 8 x i8>,
141   <vscale x 8 x i1>,
142   iXLen, iXLen);
144 define <vscale x 8 x i8> @intrinsic_vid_mask_v_nxv8i8(<vscale x 8 x i8> %0, <vscale x 8 x i1> %1, iXLen %2) nounwind {
145 ; CHECK-LABEL: intrinsic_vid_mask_v_nxv8i8:
146 ; CHECK:       # %bb.0: # %entry
147 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, tu, mu
148 ; CHECK-NEXT:    vid.v v8, v0.t
149 ; CHECK-NEXT:    ret
150 entry:
151   %a = call <vscale x 8 x i8> @llvm.riscv.vid.mask.nxv8i8(
152     <vscale x 8 x i8> %0,
153     <vscale x 8 x i1> %1,
154     iXLen %2, iXLen 0)
156   ret <vscale x 8 x i8> %a
159 declare <vscale x 16 x i8> @llvm.riscv.vid.nxv16i8(
160   <vscale x 16 x i8>,
161   iXLen);
163 define <vscale x 16 x i8> @intrinsic_vid_v_nxv16i8(iXLen %0) nounwind {
164 ; CHECK-LABEL: intrinsic_vid_v_nxv16i8:
165 ; CHECK:       # %bb.0: # %entry
166 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
167 ; CHECK-NEXT:    vid.v v8
168 ; CHECK-NEXT:    ret
169 entry:
170   %a = call <vscale x 16 x i8> @llvm.riscv.vid.nxv16i8(
171     <vscale x 16 x i8> undef,
172     iXLen %0)
174   ret <vscale x 16 x i8> %a
177 declare <vscale x 16 x i8> @llvm.riscv.vid.mask.nxv16i8(
178   <vscale x 16 x i8>,
179   <vscale x 16 x i1>,
180   iXLen, iXLen);
182 define <vscale x 16 x i8> @intrinsic_vid_mask_v_nxv16i8(<vscale x 16 x i8> %0, <vscale x 16 x i1> %1, iXLen %2) nounwind {
183 ; CHECK-LABEL: intrinsic_vid_mask_v_nxv16i8:
184 ; CHECK:       # %bb.0: # %entry
185 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, tu, mu
186 ; CHECK-NEXT:    vid.v v8, v0.t
187 ; CHECK-NEXT:    ret
188 entry:
189   %a = call <vscale x 16 x i8> @llvm.riscv.vid.mask.nxv16i8(
190     <vscale x 16 x i8> %0,
191     <vscale x 16 x i1> %1,
192     iXLen %2, iXLen 0)
194   ret <vscale x 16 x i8> %a
197 declare <vscale x 32 x i8> @llvm.riscv.vid.nxv32i8(
198   <vscale x 32 x i8>,
199   iXLen);
201 define <vscale x 32 x i8> @intrinsic_vid_v_nxv32i8(iXLen %0) nounwind {
202 ; CHECK-LABEL: intrinsic_vid_v_nxv32i8:
203 ; CHECK:       # %bb.0: # %entry
204 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
205 ; CHECK-NEXT:    vid.v v8
206 ; CHECK-NEXT:    ret
207 entry:
208   %a = call <vscale x 32 x i8> @llvm.riscv.vid.nxv32i8(
209     <vscale x 32 x i8> undef,
210     iXLen %0)
212   ret <vscale x 32 x i8> %a
215 declare <vscale x 32 x i8> @llvm.riscv.vid.mask.nxv32i8(
216   <vscale x 32 x i8>,
217   <vscale x 32 x i1>,
218   iXLen, iXLen);
220 define <vscale x 32 x i8> @intrinsic_vid_mask_v_nxv32i8(<vscale x 32 x i8> %0, <vscale x 32 x i1> %1, iXLen %2) nounwind {
221 ; CHECK-LABEL: intrinsic_vid_mask_v_nxv32i8:
222 ; CHECK:       # %bb.0: # %entry
223 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, tu, mu
224 ; CHECK-NEXT:    vid.v v8, v0.t
225 ; CHECK-NEXT:    ret
226 entry:
227   %a = call <vscale x 32 x i8> @llvm.riscv.vid.mask.nxv32i8(
228     <vscale x 32 x i8> %0,
229     <vscale x 32 x i1> %1,
230     iXLen %2, iXLen 0)
232   ret <vscale x 32 x i8> %a
235 declare <vscale x 1 x i16> @llvm.riscv.vid.nxv1i16(
236   <vscale x 1 x i16>,
237   iXLen);
239 define <vscale x 1 x i16> @intrinsic_vid_v_nxv1i16(iXLen %0) nounwind {
240 ; CHECK-LABEL: intrinsic_vid_v_nxv1i16:
241 ; CHECK:       # %bb.0: # %entry
242 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
243 ; CHECK-NEXT:    vid.v v8
244 ; CHECK-NEXT:    ret
245 entry:
246   %a = call <vscale x 1 x i16> @llvm.riscv.vid.nxv1i16(
247     <vscale x 1 x i16> undef,
248     iXLen %0)
250   ret <vscale x 1 x i16> %a
253 declare <vscale x 1 x i16> @llvm.riscv.vid.mask.nxv1i16(
254   <vscale x 1 x i16>,
255   <vscale x 1 x i1>,
256   iXLen, iXLen);
258 define <vscale x 1 x i16> @intrinsic_vid_mask_v_nxv1i16(<vscale x 1 x i16> %0, <vscale x 1 x i1> %1, iXLen %2) nounwind {
259 ; CHECK-LABEL: intrinsic_vid_mask_v_nxv1i16:
260 ; CHECK:       # %bb.0: # %entry
261 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, tu, mu
262 ; CHECK-NEXT:    vid.v v8, v0.t
263 ; CHECK-NEXT:    ret
264 entry:
265   %a = call <vscale x 1 x i16> @llvm.riscv.vid.mask.nxv1i16(
266     <vscale x 1 x i16> %0,
267     <vscale x 1 x i1> %1,
268     iXLen %2, iXLen 0)
270   ret <vscale x 1 x i16> %a
273 declare <vscale x 2 x i16> @llvm.riscv.vid.nxv2i16(
274   <vscale x 2 x i16>,
275   iXLen);
277 define <vscale x 2 x i16> @intrinsic_vid_v_nxv2i16(iXLen %0) nounwind {
278 ; CHECK-LABEL: intrinsic_vid_v_nxv2i16:
279 ; CHECK:       # %bb.0: # %entry
280 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
281 ; CHECK-NEXT:    vid.v v8
282 ; CHECK-NEXT:    ret
283 entry:
284   %a = call <vscale x 2 x i16> @llvm.riscv.vid.nxv2i16(
285     <vscale x 2 x i16> undef,
286     iXLen %0)
288   ret <vscale x 2 x i16> %a
291 declare <vscale x 2 x i16> @llvm.riscv.vid.mask.nxv2i16(
292   <vscale x 2 x i16>,
293   <vscale x 2 x i1>,
294   iXLen, iXLen);
296 define <vscale x 2 x i16> @intrinsic_vid_mask_v_nxv2i16(<vscale x 2 x i16> %0, <vscale x 2 x i1> %1, iXLen %2) nounwind {
297 ; CHECK-LABEL: intrinsic_vid_mask_v_nxv2i16:
298 ; CHECK:       # %bb.0: # %entry
299 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, tu, mu
300 ; CHECK-NEXT:    vid.v v8, v0.t
301 ; CHECK-NEXT:    ret
302 entry:
303   %a = call <vscale x 2 x i16> @llvm.riscv.vid.mask.nxv2i16(
304     <vscale x 2 x i16> %0,
305     <vscale x 2 x i1> %1,
306     iXLen %2, iXLen 0)
308   ret <vscale x 2 x i16> %a
311 declare <vscale x 4 x i16> @llvm.riscv.vid.nxv4i16(
312   <vscale x 4 x i16>,
313   iXLen);
315 define <vscale x 4 x i16> @intrinsic_vid_v_nxv4i16(iXLen %0) nounwind {
316 ; CHECK-LABEL: intrinsic_vid_v_nxv4i16:
317 ; CHECK:       # %bb.0: # %entry
318 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
319 ; CHECK-NEXT:    vid.v v8
320 ; CHECK-NEXT:    ret
321 entry:
322   %a = call <vscale x 4 x i16> @llvm.riscv.vid.nxv4i16(
323     <vscale x 4 x i16> undef,
324     iXLen %0)
326   ret <vscale x 4 x i16> %a
329 declare <vscale x 4 x i16> @llvm.riscv.vid.mask.nxv4i16(
330   <vscale x 4 x i16>,
331   <vscale x 4 x i1>,
332   iXLen, iXLen);
334 define <vscale x 4 x i16> @intrinsic_vid_mask_v_nxv4i16(<vscale x 4 x i16> %0, <vscale x 4 x i1> %1, iXLen %2) nounwind {
335 ; CHECK-LABEL: intrinsic_vid_mask_v_nxv4i16:
336 ; CHECK:       # %bb.0: # %entry
337 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, tu, mu
338 ; CHECK-NEXT:    vid.v v8, v0.t
339 ; CHECK-NEXT:    ret
340 entry:
341   %a = call <vscale x 4 x i16> @llvm.riscv.vid.mask.nxv4i16(
342     <vscale x 4 x i16> %0,
343     <vscale x 4 x i1> %1,
344     iXLen %2, iXLen 0)
346   ret <vscale x 4 x i16> %a
349 declare <vscale x 8 x i16> @llvm.riscv.vid.nxv8i16(
350   <vscale x 8 x i16>,
351   iXLen);
353 define <vscale x 8 x i16> @intrinsic_vid_v_nxv8i16(iXLen %0) nounwind {
354 ; CHECK-LABEL: intrinsic_vid_v_nxv8i16:
355 ; CHECK:       # %bb.0: # %entry
356 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
357 ; CHECK-NEXT:    vid.v v8
358 ; CHECK-NEXT:    ret
359 entry:
360   %a = call <vscale x 8 x i16> @llvm.riscv.vid.nxv8i16(
361     <vscale x 8 x i16> undef,
362     iXLen %0)
364   ret <vscale x 8 x i16> %a
367 declare <vscale x 8 x i16> @llvm.riscv.vid.mask.nxv8i16(
368   <vscale x 8 x i16>,
369   <vscale x 8 x i1>,
370   iXLen, iXLen);
372 define <vscale x 8 x i16> @intrinsic_vid_mask_v_nxv8i16(<vscale x 8 x i16> %0, <vscale x 8 x i1> %1, iXLen %2) nounwind {
373 ; CHECK-LABEL: intrinsic_vid_mask_v_nxv8i16:
374 ; CHECK:       # %bb.0: # %entry
375 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, tu, mu
376 ; CHECK-NEXT:    vid.v v8, v0.t
377 ; CHECK-NEXT:    ret
378 entry:
379   %a = call <vscale x 8 x i16> @llvm.riscv.vid.mask.nxv8i16(
380     <vscale x 8 x i16> %0,
381     <vscale x 8 x i1> %1,
382     iXLen %2, iXLen 0)
384   ret <vscale x 8 x i16> %a
387 declare <vscale x 16 x i16> @llvm.riscv.vid.nxv16i16(
388   <vscale x 16 x i16>,
389   iXLen);
391 define <vscale x 16 x i16> @intrinsic_vid_v_nxv16i16(iXLen %0) nounwind {
392 ; CHECK-LABEL: intrinsic_vid_v_nxv16i16:
393 ; CHECK:       # %bb.0: # %entry
394 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
395 ; CHECK-NEXT:    vid.v v8
396 ; CHECK-NEXT:    ret
397 entry:
398   %a = call <vscale x 16 x i16> @llvm.riscv.vid.nxv16i16(
399     <vscale x 16 x i16> undef,
400     iXLen %0)
402   ret <vscale x 16 x i16> %a
405 declare <vscale x 16 x i16> @llvm.riscv.vid.mask.nxv16i16(
406   <vscale x 16 x i16>,
407   <vscale x 16 x i1>,
408   iXLen, iXLen);
410 define <vscale x 16 x i16> @intrinsic_vid_mask_v_nxv16i16(<vscale x 16 x i16> %0, <vscale x 16 x i1> %1, iXLen %2) nounwind {
411 ; CHECK-LABEL: intrinsic_vid_mask_v_nxv16i16:
412 ; CHECK:       # %bb.0: # %entry
413 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, tu, mu
414 ; CHECK-NEXT:    vid.v v8, v0.t
415 ; CHECK-NEXT:    ret
416 entry:
417   %a = call <vscale x 16 x i16> @llvm.riscv.vid.mask.nxv16i16(
418     <vscale x 16 x i16> %0,
419     <vscale x 16 x i1> %1,
420     iXLen %2, iXLen 0)
422   ret <vscale x 16 x i16> %a
425 declare <vscale x 32 x i16> @llvm.riscv.vid.nxv32i16(
426   <vscale x 32 x i16>,
427   iXLen);
429 define <vscale x 32 x i16> @intrinsic_vid_v_nxv32i16(iXLen %0) nounwind {
430 ; CHECK-LABEL: intrinsic_vid_v_nxv32i16:
431 ; CHECK:       # %bb.0: # %entry
432 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
433 ; CHECK-NEXT:    vid.v v8
434 ; CHECK-NEXT:    ret
435 entry:
436   %a = call <vscale x 32 x i16> @llvm.riscv.vid.nxv32i16(
437     <vscale x 32 x i16> undef,
438     iXLen %0)
440   ret <vscale x 32 x i16> %a
443 declare <vscale x 32 x i16> @llvm.riscv.vid.mask.nxv32i16(
444   <vscale x 32 x i16>,
445   <vscale x 32 x i1>,
446   iXLen, iXLen);
448 define <vscale x 32 x i16> @intrinsic_vid_mask_v_nxv32i16(<vscale x 32 x i16> %0, <vscale x 32 x i1> %1, iXLen %2) nounwind {
449 ; CHECK-LABEL: intrinsic_vid_mask_v_nxv32i16:
450 ; CHECK:       # %bb.0: # %entry
451 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, tu, mu
452 ; CHECK-NEXT:    vid.v v8, v0.t
453 ; CHECK-NEXT:    ret
454 entry:
455   %a = call <vscale x 32 x i16> @llvm.riscv.vid.mask.nxv32i16(
456     <vscale x 32 x i16> %0,
457     <vscale x 32 x i1> %1,
458     iXLen %2, iXLen 0)
460   ret <vscale x 32 x i16> %a
463 declare <vscale x 1 x i32> @llvm.riscv.vid.nxv1i32(
464   <vscale x 1 x i32>,
465   iXLen);
467 define <vscale x 1 x i32> @intrinsic_vid_v_nxv1i32(iXLen %0) nounwind {
468 ; CHECK-LABEL: intrinsic_vid_v_nxv1i32:
469 ; CHECK:       # %bb.0: # %entry
470 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
471 ; CHECK-NEXT:    vid.v v8
472 ; CHECK-NEXT:    ret
473 entry:
474   %a = call <vscale x 1 x i32> @llvm.riscv.vid.nxv1i32(
475     <vscale x 1 x i32> undef,
476     iXLen %0)
478   ret <vscale x 1 x i32> %a
481 declare <vscale x 1 x i32> @llvm.riscv.vid.mask.nxv1i32(
482   <vscale x 1 x i32>,
483   <vscale x 1 x i1>,
484   iXLen, iXLen);
486 define <vscale x 1 x i32> @intrinsic_vid_mask_v_nxv1i32(<vscale x 1 x i32> %0, <vscale x 1 x i1> %1, iXLen %2) nounwind {
487 ; CHECK-LABEL: intrinsic_vid_mask_v_nxv1i32:
488 ; CHECK:       # %bb.0: # %entry
489 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, tu, mu
490 ; CHECK-NEXT:    vid.v v8, v0.t
491 ; CHECK-NEXT:    ret
492 entry:
493   %a = call <vscale x 1 x i32> @llvm.riscv.vid.mask.nxv1i32(
494     <vscale x 1 x i32> %0,
495     <vscale x 1 x i1> %1,
496     iXLen %2, iXLen 0)
498   ret <vscale x 1 x i32> %a
501 declare <vscale x 2 x i32> @llvm.riscv.vid.nxv2i32(
502   <vscale x 2 x i32>,
503   iXLen);
505 define <vscale x 2 x i32> @intrinsic_vid_v_nxv2i32(iXLen %0) nounwind {
506 ; CHECK-LABEL: intrinsic_vid_v_nxv2i32:
507 ; CHECK:       # %bb.0: # %entry
508 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
509 ; CHECK-NEXT:    vid.v v8
510 ; CHECK-NEXT:    ret
511 entry:
512   %a = call <vscale x 2 x i32> @llvm.riscv.vid.nxv2i32(
513     <vscale x 2 x i32> undef,
514     iXLen %0)
516   ret <vscale x 2 x i32> %a
519 declare <vscale x 2 x i32> @llvm.riscv.vid.mask.nxv2i32(
520   <vscale x 2 x i32>,
521   <vscale x 2 x i1>,
522   iXLen, iXLen);
524 define <vscale x 2 x i32> @intrinsic_vid_mask_v_nxv2i32(<vscale x 2 x i32> %0, <vscale x 2 x i1> %1, iXLen %2) nounwind {
525 ; CHECK-LABEL: intrinsic_vid_mask_v_nxv2i32:
526 ; CHECK:       # %bb.0: # %entry
527 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, tu, mu
528 ; CHECK-NEXT:    vid.v v8, v0.t
529 ; CHECK-NEXT:    ret
530 entry:
531   %a = call <vscale x 2 x i32> @llvm.riscv.vid.mask.nxv2i32(
532     <vscale x 2 x i32> %0,
533     <vscale x 2 x i1> %1,
534     iXLen %2, iXLen 0)
536   ret <vscale x 2 x i32> %a
539 declare <vscale x 4 x i32> @llvm.riscv.vid.nxv4i32(
540   <vscale x 4 x i32>,
541   iXLen);
543 define <vscale x 4 x i32> @intrinsic_vid_v_nxv4i32(iXLen %0) nounwind {
544 ; CHECK-LABEL: intrinsic_vid_v_nxv4i32:
545 ; CHECK:       # %bb.0: # %entry
546 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
547 ; CHECK-NEXT:    vid.v v8
548 ; CHECK-NEXT:    ret
549 entry:
550   %a = call <vscale x 4 x i32> @llvm.riscv.vid.nxv4i32(
551     <vscale x 4 x i32> undef,
552     iXLen %0)
554   ret <vscale x 4 x i32> %a
557 declare <vscale x 4 x i32> @llvm.riscv.vid.mask.nxv4i32(
558   <vscale x 4 x i32>,
559   <vscale x 4 x i1>,
560   iXLen, iXLen);
562 define <vscale x 4 x i32> @intrinsic_vid_mask_v_nxv4i32(<vscale x 4 x i32> %0, <vscale x 4 x i1> %1, iXLen %2) nounwind {
563 ; CHECK-LABEL: intrinsic_vid_mask_v_nxv4i32:
564 ; CHECK:       # %bb.0: # %entry
565 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, tu, mu
566 ; CHECK-NEXT:    vid.v v8, v0.t
567 ; CHECK-NEXT:    ret
568 entry:
569   %a = call <vscale x 4 x i32> @llvm.riscv.vid.mask.nxv4i32(
570     <vscale x 4 x i32> %0,
571     <vscale x 4 x i1> %1,
572     iXLen %2, iXLen 0)
574   ret <vscale x 4 x i32> %a
577 declare <vscale x 8 x i32> @llvm.riscv.vid.nxv8i32(
578   <vscale x 8 x i32>,
579   iXLen);
581 define <vscale x 8 x i32> @intrinsic_vid_v_nxv8i32(iXLen %0) nounwind {
582 ; CHECK-LABEL: intrinsic_vid_v_nxv8i32:
583 ; CHECK:       # %bb.0: # %entry
584 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
585 ; CHECK-NEXT:    vid.v v8
586 ; CHECK-NEXT:    ret
587 entry:
588   %a = call <vscale x 8 x i32> @llvm.riscv.vid.nxv8i32(
589     <vscale x 8 x i32> undef,
590     iXLen %0)
592   ret <vscale x 8 x i32> %a
595 declare <vscale x 8 x i32> @llvm.riscv.vid.mask.nxv8i32(
596   <vscale x 8 x i32>,
597   <vscale x 8 x i1>,
598   iXLen, iXLen);
600 define <vscale x 8 x i32> @intrinsic_vid_mask_v_nxv8i32(<vscale x 8 x i32> %0, <vscale x 8 x i1> %1, iXLen %2) nounwind {
601 ; CHECK-LABEL: intrinsic_vid_mask_v_nxv8i32:
602 ; CHECK:       # %bb.0: # %entry
603 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, tu, mu
604 ; CHECK-NEXT:    vid.v v8, v0.t
605 ; CHECK-NEXT:    ret
606 entry:
607   %a = call <vscale x 8 x i32> @llvm.riscv.vid.mask.nxv8i32(
608     <vscale x 8 x i32> %0,
609     <vscale x 8 x i1> %1,
610     iXLen %2, iXLen 0)
612   ret <vscale x 8 x i32> %a
615 declare <vscale x 16 x i32> @llvm.riscv.vid.nxv16i32(
616   <vscale x 16 x i32>,
617   iXLen);
619 define <vscale x 16 x i32> @intrinsic_vid_v_nxv16i32(iXLen %0) nounwind {
620 ; CHECK-LABEL: intrinsic_vid_v_nxv16i32:
621 ; CHECK:       # %bb.0: # %entry
622 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
623 ; CHECK-NEXT:    vid.v v8
624 ; CHECK-NEXT:    ret
625 entry:
626   %a = call <vscale x 16 x i32> @llvm.riscv.vid.nxv16i32(
627     <vscale x 16 x i32> undef,
628     iXLen %0)
630   ret <vscale x 16 x i32> %a
633 declare <vscale x 16 x i32> @llvm.riscv.vid.mask.nxv16i32(
634   <vscale x 16 x i32>,
635   <vscale x 16 x i1>,
636   iXLen, iXLen);
638 define <vscale x 16 x i32> @intrinsic_vid_mask_v_nxv16i32(<vscale x 16 x i32> %0, <vscale x 16 x i1> %1, iXLen %2) nounwind {
639 ; CHECK-LABEL: intrinsic_vid_mask_v_nxv16i32:
640 ; CHECK:       # %bb.0: # %entry
641 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, tu, mu
642 ; CHECK-NEXT:    vid.v v8, v0.t
643 ; CHECK-NEXT:    ret
644 entry:
645   %a = call <vscale x 16 x i32> @llvm.riscv.vid.mask.nxv16i32(
646     <vscale x 16 x i32> %0,
647     <vscale x 16 x i1> %1,
648     iXLen %2, iXLen 0)
650   ret <vscale x 16 x i32> %a
653 declare <vscale x 1 x i64> @llvm.riscv.vid.nxv1i64(
654   <vscale x 1 x i64>,
655   iXLen);
657 define <vscale x 1 x i64> @intrinsic_vid_v_nxv1i64(iXLen %0) nounwind {
658 ; CHECK-LABEL: intrinsic_vid_v_nxv1i64:
659 ; CHECK:       # %bb.0: # %entry
660 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
661 ; CHECK-NEXT:    vid.v v8
662 ; CHECK-NEXT:    ret
663 entry:
664   %a = call <vscale x 1 x i64> @llvm.riscv.vid.nxv1i64(
665     <vscale x 1 x i64> undef,
666     iXLen %0)
668   ret <vscale x 1 x i64> %a
671 declare <vscale x 1 x i64> @llvm.riscv.vid.mask.nxv1i64(
672   <vscale x 1 x i64>,
673   <vscale x 1 x i1>,
674   iXLen, iXLen);
676 define <vscale x 1 x i64> @intrinsic_vid_mask_v_nxv1i64(<vscale x 1 x i64> %0, <vscale x 1 x i1> %1, iXLen %2) nounwind {
677 ; CHECK-LABEL: intrinsic_vid_mask_v_nxv1i64:
678 ; CHECK:       # %bb.0: # %entry
679 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, tu, mu
680 ; CHECK-NEXT:    vid.v v8, v0.t
681 ; CHECK-NEXT:    ret
682 entry:
683   %a = call <vscale x 1 x i64> @llvm.riscv.vid.mask.nxv1i64(
684     <vscale x 1 x i64> %0,
685     <vscale x 1 x i1> %1,
686     iXLen %2, iXLen 0)
688   ret <vscale x 1 x i64> %a
691 declare <vscale x 2 x i64> @llvm.riscv.vid.nxv2i64(
692   <vscale x 2 x i64>,
693   iXLen);
695 define <vscale x 2 x i64> @intrinsic_vid_v_nxv2i64(iXLen %0) nounwind {
696 ; CHECK-LABEL: intrinsic_vid_v_nxv2i64:
697 ; CHECK:       # %bb.0: # %entry
698 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
699 ; CHECK-NEXT:    vid.v v8
700 ; CHECK-NEXT:    ret
701 entry:
702   %a = call <vscale x 2 x i64> @llvm.riscv.vid.nxv2i64(
703     <vscale x 2 x i64> undef,
704     iXLen %0)
706   ret <vscale x 2 x i64> %a
709 declare <vscale x 2 x i64> @llvm.riscv.vid.mask.nxv2i64(
710   <vscale x 2 x i64>,
711   <vscale x 2 x i1>,
712   iXLen, iXLen);
714 define <vscale x 2 x i64> @intrinsic_vid_mask_v_nxv2i64(<vscale x 2 x i64> %0, <vscale x 2 x i1> %1, iXLen %2) nounwind {
715 ; CHECK-LABEL: intrinsic_vid_mask_v_nxv2i64:
716 ; CHECK:       # %bb.0: # %entry
717 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, tu, mu
718 ; CHECK-NEXT:    vid.v v8, v0.t
719 ; CHECK-NEXT:    ret
720 entry:
721   %a = call <vscale x 2 x i64> @llvm.riscv.vid.mask.nxv2i64(
722     <vscale x 2 x i64> %0,
723     <vscale x 2 x i1> %1,
724     iXLen %2, iXLen 0)
726   ret <vscale x 2 x i64> %a
729 declare <vscale x 4 x i64> @llvm.riscv.vid.nxv4i64(
730   <vscale x 4 x i64>,
731   iXLen);
733 define <vscale x 4 x i64> @intrinsic_vid_v_nxv4i64(iXLen %0) nounwind {
734 ; CHECK-LABEL: intrinsic_vid_v_nxv4i64:
735 ; CHECK:       # %bb.0: # %entry
736 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
737 ; CHECK-NEXT:    vid.v v8
738 ; CHECK-NEXT:    ret
739 entry:
740   %a = call <vscale x 4 x i64> @llvm.riscv.vid.nxv4i64(
741     <vscale x 4 x i64> undef,
742     iXLen %0)
744   ret <vscale x 4 x i64> %a
747 declare <vscale x 4 x i64> @llvm.riscv.vid.mask.nxv4i64(
748   <vscale x 4 x i64>,
749   <vscale x 4 x i1>,
750   iXLen, iXLen);
752 define <vscale x 4 x i64> @intrinsic_vid_mask_v_nxv4i64(<vscale x 4 x i64> %0, <vscale x 4 x i1> %1, iXLen %2) nounwind {
753 ; CHECK-LABEL: intrinsic_vid_mask_v_nxv4i64:
754 ; CHECK:       # %bb.0: # %entry
755 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, tu, mu
756 ; CHECK-NEXT:    vid.v v8, v0.t
757 ; CHECK-NEXT:    ret
758 entry:
759   %a = call <vscale x 4 x i64> @llvm.riscv.vid.mask.nxv4i64(
760     <vscale x 4 x i64> %0,
761     <vscale x 4 x i1> %1,
762     iXLen %2, iXLen 0)
764   ret <vscale x 4 x i64> %a
767 declare <vscale x 8 x i64> @llvm.riscv.vid.nxv8i64(
768   <vscale x 8 x i64>,
769   iXLen);
771 define <vscale x 8 x i64> @intrinsic_vid_v_nxv8i64(iXLen %0) nounwind {
772 ; CHECK-LABEL: intrinsic_vid_v_nxv8i64:
773 ; CHECK:       # %bb.0: # %entry
774 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
775 ; CHECK-NEXT:    vid.v v8
776 ; CHECK-NEXT:    ret
777 entry:
778   %a = call <vscale x 8 x i64> @llvm.riscv.vid.nxv8i64(
779     <vscale x 8 x i64> undef,
780     iXLen %0)
782   ret <vscale x 8 x i64> %a
785 declare <vscale x 8 x i64> @llvm.riscv.vid.mask.nxv8i64(
786   <vscale x 8 x i64>,
787   <vscale x 8 x i1>,
788   iXLen, iXLen);
790 define <vscale x 8 x i64> @intrinsic_vid_mask_v_nxv8i64(<vscale x 8 x i64> %0, <vscale x 8 x i1> %1, iXLen %2) nounwind {
791 ; CHECK-LABEL: intrinsic_vid_mask_v_nxv8i64:
792 ; CHECK:       # %bb.0: # %entry
793 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, tu, mu
794 ; CHECK-NEXT:    vid.v v8, v0.t
795 ; CHECK-NEXT:    ret
796 entry:
797   %a = call <vscale x 8 x i64> @llvm.riscv.vid.mask.nxv8i64(
798     <vscale x 8 x i64> %0,
799     <vscale x 8 x i1> %1,
800     iXLen %2, iXLen 0)
802   ret <vscale x 8 x i64> %a