Re-land [openmp] Fix warnings when building on Windows with latest MSVC or Clang...
[llvm-project.git] / llvm / test / CodeGen / RISCV / GlobalISel / irtranslator / vec-args.ll
blob4df0a8f48cc8d0b8f864b4e5f36e73ae5691dd2f
1 ; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 ; RUN: llc -mtriple=riscv32 -mattr=+v,+experimental-zvfbfmin,+zvfh -global-isel -stop-after=irtranslator \
3 ; RUN:   -verify-machineinstrs < %s | FileCheck -check-prefixes=RV32 %s
4 ; RUN: llc -mtriple=riscv64 -mattr=+v,+experimental-zvfbfmin,+zvfh -global-isel -stop-after=irtranslator \
5 ; RUN:   -verify-machineinstrs < %s | FileCheck -check-prefixes=RV64 %s
7 ; ==========================================================================
8 ; ============================= Scalable Types =============================
9 ; ==========================================================================
11 define void @test_args_nxv1i8(<vscale x 1 x i8> %a) {
12   ; RV32-LABEL: name: test_args_nxv1i8
13   ; RV32: bb.1.entry:
14   ; RV32-NEXT:   liveins: $v8
15   ; RV32-NEXT: {{  $}}
16   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 1 x s8>) = COPY $v8
17   ; RV32-NEXT:   PseudoRET
18   ;
19   ; RV64-LABEL: name: test_args_nxv1i8
20   ; RV64: bb.1.entry:
21   ; RV64-NEXT:   liveins: $v8
22   ; RV64-NEXT: {{  $}}
23   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 1 x s8>) = COPY $v8
24   ; RV64-NEXT:   PseudoRET
25 entry:
26   ret void
29 define void @test_args_nxv2i8(<vscale x 2 x i8> %a) {
30   ; RV32-LABEL: name: test_args_nxv2i8
31   ; RV32: bb.1.entry:
32   ; RV32-NEXT:   liveins: $v8
33   ; RV32-NEXT: {{  $}}
34   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 2 x s8>) = COPY $v8
35   ; RV32-NEXT:   PseudoRET
36   ;
37   ; RV64-LABEL: name: test_args_nxv2i8
38   ; RV64: bb.1.entry:
39   ; RV64-NEXT:   liveins: $v8
40   ; RV64-NEXT: {{  $}}
41   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 2 x s8>) = COPY $v8
42   ; RV64-NEXT:   PseudoRET
43 entry:
44   ret void
47 define void @test_args_nxv4i8(<vscale x 4 x i8> %a) {
48   ; RV32-LABEL: name: test_args_nxv4i8
49   ; RV32: bb.1.entry:
50   ; RV32-NEXT:   liveins: $v8
51   ; RV32-NEXT: {{  $}}
52   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 4 x s8>) = COPY $v8
53   ; RV32-NEXT:   PseudoRET
54   ;
55   ; RV64-LABEL: name: test_args_nxv4i8
56   ; RV64: bb.1.entry:
57   ; RV64-NEXT:   liveins: $v8
58   ; RV64-NEXT: {{  $}}
59   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 4 x s8>) = COPY $v8
60   ; RV64-NEXT:   PseudoRET
61 entry:
62   ret void
65 define void @test_args_nxv8i8(<vscale x 8 x i8> %a) {
66   ; RV32-LABEL: name: test_args_nxv8i8
67   ; RV32: bb.1.entry:
68   ; RV32-NEXT:   liveins: $v8
69   ; RV32-NEXT: {{  $}}
70   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 8 x s8>) = COPY $v8
71   ; RV32-NEXT:   PseudoRET
72   ;
73   ; RV64-LABEL: name: test_args_nxv8i8
74   ; RV64: bb.1.entry:
75   ; RV64-NEXT:   liveins: $v8
76   ; RV64-NEXT: {{  $}}
77   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 8 x s8>) = COPY $v8
78   ; RV64-NEXT:   PseudoRET
79 entry:
80   ret void
83 define void @test_args_nxv16i8(<vscale x 16 x i8> %a) {
84   ; RV32-LABEL: name: test_args_nxv16i8
85   ; RV32: bb.1.entry:
86   ; RV32-NEXT:   liveins: $v8m2
87   ; RV32-NEXT: {{  $}}
88   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 16 x s8>) = COPY $v8m2
89   ; RV32-NEXT:   PseudoRET
90   ;
91   ; RV64-LABEL: name: test_args_nxv16i8
92   ; RV64: bb.1.entry:
93   ; RV64-NEXT:   liveins: $v8m2
94   ; RV64-NEXT: {{  $}}
95   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 16 x s8>) = COPY $v8m2
96   ; RV64-NEXT:   PseudoRET
97 entry:
98   ret void
101 define void @test_args_nxv32i8(<vscale x 32 x i8> %a) {
102   ; RV32-LABEL: name: test_args_nxv32i8
103   ; RV32: bb.1.entry:
104   ; RV32-NEXT:   liveins: $v8m4
105   ; RV32-NEXT: {{  $}}
106   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 32 x s8>) = COPY $v8m4
107   ; RV32-NEXT:   PseudoRET
108   ;
109   ; RV64-LABEL: name: test_args_nxv32i8
110   ; RV64: bb.1.entry:
111   ; RV64-NEXT:   liveins: $v8m4
112   ; RV64-NEXT: {{  $}}
113   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 32 x s8>) = COPY $v8m4
114   ; RV64-NEXT:   PseudoRET
115 entry:
116   ret void
119 define void @test_args_nxv64i8(<vscale x 64 x i8> %a) {
120   ; RV32-LABEL: name: test_args_nxv64i8
121   ; RV32: bb.1.entry:
122   ; RV32-NEXT:   liveins: $v8m8
123   ; RV32-NEXT: {{  $}}
124   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 64 x s8>) = COPY $v8m8
125   ; RV32-NEXT:   PseudoRET
126   ;
127   ; RV64-LABEL: name: test_args_nxv64i8
128   ; RV64: bb.1.entry:
129   ; RV64-NEXT:   liveins: $v8m8
130   ; RV64-NEXT: {{  $}}
131   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 64 x s8>) = COPY $v8m8
132   ; RV64-NEXT:   PseudoRET
133 entry:
134   ret void
137 define void @test_args_nxv1i16(<vscale x 1 x i16> %a) {
138   ; RV32-LABEL: name: test_args_nxv1i16
139   ; RV32: bb.1.entry:
140   ; RV32-NEXT:   liveins: $v8
141   ; RV32-NEXT: {{  $}}
142   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 1 x s16>) = COPY $v8
143   ; RV32-NEXT:   PseudoRET
144   ;
145   ; RV64-LABEL: name: test_args_nxv1i16
146   ; RV64: bb.1.entry:
147   ; RV64-NEXT:   liveins: $v8
148   ; RV64-NEXT: {{  $}}
149   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 1 x s16>) = COPY $v8
150   ; RV64-NEXT:   PseudoRET
151 entry:
152   ret void
155 define void @test_args_nxv2i16(<vscale x 2 x i16> %a) {
156   ; RV32-LABEL: name: test_args_nxv2i16
157   ; RV32: bb.1.entry:
158   ; RV32-NEXT:   liveins: $v8
159   ; RV32-NEXT: {{  $}}
160   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 2 x s16>) = COPY $v8
161   ; RV32-NEXT:   PseudoRET
162   ;
163   ; RV64-LABEL: name: test_args_nxv2i16
164   ; RV64: bb.1.entry:
165   ; RV64-NEXT:   liveins: $v8
166   ; RV64-NEXT: {{  $}}
167   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 2 x s16>) = COPY $v8
168   ; RV64-NEXT:   PseudoRET
169 entry:
170   ret void
173 define void @test_args_nxv4i16(<vscale x 4 x i16> %a) {
174   ; RV32-LABEL: name: test_args_nxv4i16
175   ; RV32: bb.1.entry:
176   ; RV32-NEXT:   liveins: $v8
177   ; RV32-NEXT: {{  $}}
178   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 4 x s16>) = COPY $v8
179   ; RV32-NEXT:   PseudoRET
180   ;
181   ; RV64-LABEL: name: test_args_nxv4i16
182   ; RV64: bb.1.entry:
183   ; RV64-NEXT:   liveins: $v8
184   ; RV64-NEXT: {{  $}}
185   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 4 x s16>) = COPY $v8
186   ; RV64-NEXT:   PseudoRET
187 entry:
188   ret void
191 define void @test_args_nxv8i16(<vscale x 8 x i16> %a) {
192   ; RV32-LABEL: name: test_args_nxv8i16
193   ; RV32: bb.1.entry:
194   ; RV32-NEXT:   liveins: $v8m2
195   ; RV32-NEXT: {{  $}}
196   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 8 x s16>) = COPY $v8m2
197   ; RV32-NEXT:   PseudoRET
198   ;
199   ; RV64-LABEL: name: test_args_nxv8i16
200   ; RV64: bb.1.entry:
201   ; RV64-NEXT:   liveins: $v8m2
202   ; RV64-NEXT: {{  $}}
203   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 8 x s16>) = COPY $v8m2
204   ; RV64-NEXT:   PseudoRET
205 entry:
206   ret void
209 define void @test_args_nxv16i16(<vscale x 16 x i16> %a) {
210   ; RV32-LABEL: name: test_args_nxv16i16
211   ; RV32: bb.1.entry:
212   ; RV32-NEXT:   liveins: $v8m4
213   ; RV32-NEXT: {{  $}}
214   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 16 x s16>) = COPY $v8m4
215   ; RV32-NEXT:   PseudoRET
216   ;
217   ; RV64-LABEL: name: test_args_nxv16i16
218   ; RV64: bb.1.entry:
219   ; RV64-NEXT:   liveins: $v8m4
220   ; RV64-NEXT: {{  $}}
221   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 16 x s16>) = COPY $v8m4
222   ; RV64-NEXT:   PseudoRET
223 entry:
224   ret void
227 define void @test_args_nxv32i16(<vscale x 32 x i16> %a) {
228   ; RV32-LABEL: name: test_args_nxv32i16
229   ; RV32: bb.1.entry:
230   ; RV32-NEXT:   liveins: $v8m8
231   ; RV32-NEXT: {{  $}}
232   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 32 x s16>) = COPY $v8m8
233   ; RV32-NEXT:   PseudoRET
234   ;
235   ; RV64-LABEL: name: test_args_nxv32i16
236   ; RV64: bb.1.entry:
237   ; RV64-NEXT:   liveins: $v8m8
238   ; RV64-NEXT: {{  $}}
239   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 32 x s16>) = COPY $v8m8
240   ; RV64-NEXT:   PseudoRET
241 entry:
242   ret void
245 define void @test_args_nxv1i32(<vscale x 1 x i32> %a) {
246   ; RV32-LABEL: name: test_args_nxv1i32
247   ; RV32: bb.1.entry:
248   ; RV32-NEXT:   liveins: $v8
249   ; RV32-NEXT: {{  $}}
250   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 1 x s32>) = COPY $v8
251   ; RV32-NEXT:   PseudoRET
252   ;
253   ; RV64-LABEL: name: test_args_nxv1i32
254   ; RV64: bb.1.entry:
255   ; RV64-NEXT:   liveins: $v8
256   ; RV64-NEXT: {{  $}}
257   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 1 x s32>) = COPY $v8
258   ; RV64-NEXT:   PseudoRET
259 entry:
260   ret void
263 define void @test_args_nxv2i32(<vscale x 2 x i32> %a) {
264   ; RV32-LABEL: name: test_args_nxv2i32
265   ; RV32: bb.1.entry:
266   ; RV32-NEXT:   liveins: $v8
267   ; RV32-NEXT: {{  $}}
268   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 2 x s32>) = COPY $v8
269   ; RV32-NEXT:   PseudoRET
270   ;
271   ; RV64-LABEL: name: test_args_nxv2i32
272   ; RV64: bb.1.entry:
273   ; RV64-NEXT:   liveins: $v8
274   ; RV64-NEXT: {{  $}}
275   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 2 x s32>) = COPY $v8
276   ; RV64-NEXT:   PseudoRET
277 entry:
278   ret void
281 define void @test_args_nxv4i32(<vscale x 4 x i32> %a) {
282   ; RV32-LABEL: name: test_args_nxv4i32
283   ; RV32: bb.1.entry:
284   ; RV32-NEXT:   liveins: $v8m2
285   ; RV32-NEXT: {{  $}}
286   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 4 x s32>) = COPY $v8m2
287   ; RV32-NEXT:   PseudoRET
288   ;
289   ; RV64-LABEL: name: test_args_nxv4i32
290   ; RV64: bb.1.entry:
291   ; RV64-NEXT:   liveins: $v8m2
292   ; RV64-NEXT: {{  $}}
293   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 4 x s32>) = COPY $v8m2
294   ; RV64-NEXT:   PseudoRET
295 entry:
296   ret void
299 define void @test_args_nxv8i32(<vscale x 8 x i32> %a) {
300   ; RV32-LABEL: name: test_args_nxv8i32
301   ; RV32: bb.1.entry:
302   ; RV32-NEXT:   liveins: $v8m4
303   ; RV32-NEXT: {{  $}}
304   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 8 x s32>) = COPY $v8m4
305   ; RV32-NEXT:   PseudoRET
306   ;
307   ; RV64-LABEL: name: test_args_nxv8i32
308   ; RV64: bb.1.entry:
309   ; RV64-NEXT:   liveins: $v8m4
310   ; RV64-NEXT: {{  $}}
311   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 8 x s32>) = COPY $v8m4
312   ; RV64-NEXT:   PseudoRET
313 entry:
314   ret void
317 define void @test_args_nxv16i32(<vscale x 16 x i32> %a) {
318   ; RV32-LABEL: name: test_args_nxv16i32
319   ; RV32: bb.1.entry:
320   ; RV32-NEXT:   liveins: $v8m8
321   ; RV32-NEXT: {{  $}}
322   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 16 x s32>) = COPY $v8m8
323   ; RV32-NEXT:   PseudoRET
324   ;
325   ; RV64-LABEL: name: test_args_nxv16i32
326   ; RV64: bb.1.entry:
327   ; RV64-NEXT:   liveins: $v8m8
328   ; RV64-NEXT: {{  $}}
329   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 16 x s32>) = COPY $v8m8
330   ; RV64-NEXT:   PseudoRET
331 entry:
332   ret void
335 define void @test_args_nxv1i64(<vscale x 1 x i64> %a) {
336   ; RV32-LABEL: name: test_args_nxv1i64
337   ; RV32: bb.1.entry:
338   ; RV32-NEXT:   liveins: $v8
339   ; RV32-NEXT: {{  $}}
340   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 1 x s64>) = COPY $v8
341   ; RV32-NEXT:   PseudoRET
342   ;
343   ; RV64-LABEL: name: test_args_nxv1i64
344   ; RV64: bb.1.entry:
345   ; RV64-NEXT:   liveins: $v8
346   ; RV64-NEXT: {{  $}}
347   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 1 x s64>) = COPY $v8
348   ; RV64-NEXT:   PseudoRET
349 entry:
350   ret void
353 define void @test_args_nxv2i64(<vscale x 2 x i64> %a) {
354   ; RV32-LABEL: name: test_args_nxv2i64
355   ; RV32: bb.1.entry:
356   ; RV32-NEXT:   liveins: $v8m2
357   ; RV32-NEXT: {{  $}}
358   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $v8m2
359   ; RV32-NEXT:   PseudoRET
360   ;
361   ; RV64-LABEL: name: test_args_nxv2i64
362   ; RV64: bb.1.entry:
363   ; RV64-NEXT:   liveins: $v8m2
364   ; RV64-NEXT: {{  $}}
365   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $v8m2
366   ; RV64-NEXT:   PseudoRET
367 entry:
368   ret void
371 define void @test_args_nxv4i64(<vscale x 4 x i64> %a) {
372   ; RV32-LABEL: name: test_args_nxv4i64
373   ; RV32: bb.1.entry:
374   ; RV32-NEXT:   liveins: $v8m4
375   ; RV32-NEXT: {{  $}}
376   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 4 x s64>) = COPY $v8m4
377   ; RV32-NEXT:   PseudoRET
378   ;
379   ; RV64-LABEL: name: test_args_nxv4i64
380   ; RV64: bb.1.entry:
381   ; RV64-NEXT:   liveins: $v8m4
382   ; RV64-NEXT: {{  $}}
383   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 4 x s64>) = COPY $v8m4
384   ; RV64-NEXT:   PseudoRET
385 entry:
386   ret void
389 define void @test_args_nxv8i64(<vscale x 8 x i64> %a) {
390   ; RV32-LABEL: name: test_args_nxv8i64
391   ; RV32: bb.1.entry:
392   ; RV32-NEXT:   liveins: $v8m8
393   ; RV32-NEXT: {{  $}}
394   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 8 x s64>) = COPY $v8m8
395   ; RV32-NEXT:   PseudoRET
396   ;
397   ; RV64-LABEL: name: test_args_nxv8i64
398   ; RV64: bb.1.entry:
399   ; RV64-NEXT:   liveins: $v8m8
400   ; RV64-NEXT: {{  $}}
401   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 8 x s64>) = COPY $v8m8
402   ; RV64-NEXT:   PseudoRET
403 entry:
404   ret void
407 define void @test_args_nxv64i1(<vscale x 64 x i1> %a) {
408   ; RV32-LABEL: name: test_args_nxv64i1
409   ; RV32: bb.1.entry:
410   ; RV32-NEXT:   liveins: $v8
411   ; RV32-NEXT: {{  $}}
412   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 64 x s1>) = COPY $v8
413   ; RV32-NEXT:   PseudoRET
414   ;
415   ; RV64-LABEL: name: test_args_nxv64i1
416   ; RV64: bb.1.entry:
417   ; RV64-NEXT:   liveins: $v8
418   ; RV64-NEXT: {{  $}}
419   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 64 x s1>) = COPY $v8
420   ; RV64-NEXT:   PseudoRET
421 entry:
422   ret void
425 define void @test_args_nxv32i1(<vscale x 32 x i1> %a) {
426   ; RV32-LABEL: name: test_args_nxv32i1
427   ; RV32: bb.1.entry:
428   ; RV32-NEXT:   liveins: $v8
429   ; RV32-NEXT: {{  $}}
430   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 32 x s1>) = COPY $v8
431   ; RV32-NEXT:   PseudoRET
432   ;
433   ; RV64-LABEL: name: test_args_nxv32i1
434   ; RV64: bb.1.entry:
435   ; RV64-NEXT:   liveins: $v8
436   ; RV64-NEXT: {{  $}}
437   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 32 x s1>) = COPY $v8
438   ; RV64-NEXT:   PseudoRET
439 entry:
440   ret void
443 define void @test_args_nxv16i1(<vscale x 16 x i1> %a) {
444   ; RV32-LABEL: name: test_args_nxv16i1
445   ; RV32: bb.1.entry:
446   ; RV32-NEXT:   liveins: $v8
447   ; RV32-NEXT: {{  $}}
448   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 16 x s1>) = COPY $v8
449   ; RV32-NEXT:   PseudoRET
450   ;
451   ; RV64-LABEL: name: test_args_nxv16i1
452   ; RV64: bb.1.entry:
453   ; RV64-NEXT:   liveins: $v8
454   ; RV64-NEXT: {{  $}}
455   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 16 x s1>) = COPY $v8
456   ; RV64-NEXT:   PseudoRET
457 entry:
458   ret void
461 define void @test_args_nxv8i1(<vscale x 8 x i1> %a) {
462   ; RV32-LABEL: name: test_args_nxv8i1
463   ; RV32: bb.1.entry:
464   ; RV32-NEXT:   liveins: $v8
465   ; RV32-NEXT: {{  $}}
466   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 8 x s1>) = COPY $v8
467   ; RV32-NEXT:   PseudoRET
468   ;
469   ; RV64-LABEL: name: test_args_nxv8i1
470   ; RV64: bb.1.entry:
471   ; RV64-NEXT:   liveins: $v8
472   ; RV64-NEXT: {{  $}}
473   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 8 x s1>) = COPY $v8
474   ; RV64-NEXT:   PseudoRET
475 entry:
476   ret void
479 define void @test_args_nxv4i1(<vscale x 4 x i1> %a) {
480   ; RV32-LABEL: name: test_args_nxv4i1
481   ; RV32: bb.1.entry:
482   ; RV32-NEXT:   liveins: $v8
483   ; RV32-NEXT: {{  $}}
484   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 4 x s1>) = COPY $v8
485   ; RV32-NEXT:   PseudoRET
486   ;
487   ; RV64-LABEL: name: test_args_nxv4i1
488   ; RV64: bb.1.entry:
489   ; RV64-NEXT:   liveins: $v8
490   ; RV64-NEXT: {{  $}}
491   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 4 x s1>) = COPY $v8
492   ; RV64-NEXT:   PseudoRET
493 entry:
494   ret void
497 define void @test_args_nxv2i1(<vscale x 2 x i1> %a) {
498   ; RV32-LABEL: name: test_args_nxv2i1
499   ; RV32: bb.1.entry:
500   ; RV32-NEXT:   liveins: $v8
501   ; RV32-NEXT: {{  $}}
502   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 2 x s1>) = COPY $v8
503   ; RV32-NEXT:   PseudoRET
504   ;
505   ; RV64-LABEL: name: test_args_nxv2i1
506   ; RV64: bb.1.entry:
507   ; RV64-NEXT:   liveins: $v8
508   ; RV64-NEXT: {{  $}}
509   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 2 x s1>) = COPY $v8
510   ; RV64-NEXT:   PseudoRET
511 entry:
512   ret void
515 define void @test_args_nxv1i1(<vscale x 1 x i1> %a) {
516   ; RV32-LABEL: name: test_args_nxv1i1
517   ; RV32: bb.1.entry:
518   ; RV32-NEXT:   liveins: $v8
519   ; RV32-NEXT: {{  $}}
520   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 1 x s1>) = COPY $v8
521   ; RV32-NEXT:   PseudoRET
522   ;
523   ; RV64-LABEL: name: test_args_nxv1i1
524   ; RV64: bb.1.entry:
525   ; RV64-NEXT:   liveins: $v8
526   ; RV64-NEXT: {{  $}}
527   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 1 x s1>) = COPY $v8
528   ; RV64-NEXT:   PseudoRET
529 entry:
530   ret void
533 define void @test_args_nxv1f32(<vscale x 1 x float> %a) {
534   ; RV32-LABEL: name: test_args_nxv1f32
535   ; RV32: bb.1.entry:
536   ; RV32-NEXT:   liveins: $v8
537   ; RV32-NEXT: {{  $}}
538   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 1 x s32>) = COPY $v8
539   ; RV32-NEXT:   PseudoRET
540   ;
541   ; RV64-LABEL: name: test_args_nxv1f32
542   ; RV64: bb.1.entry:
543   ; RV64-NEXT:   liveins: $v8
544   ; RV64-NEXT: {{  $}}
545   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 1 x s32>) = COPY $v8
546   ; RV64-NEXT:   PseudoRET
547 entry:
548   ret void
551 define void @test_args_nxv2f32(<vscale x 2 x float> %a) {
552   ; RV32-LABEL: name: test_args_nxv2f32
553   ; RV32: bb.1.entry:
554   ; RV32-NEXT:   liveins: $v8
555   ; RV32-NEXT: {{  $}}
556   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 2 x s32>) = COPY $v8
557   ; RV32-NEXT:   PseudoRET
558   ;
559   ; RV64-LABEL: name: test_args_nxv2f32
560   ; RV64: bb.1.entry:
561   ; RV64-NEXT:   liveins: $v8
562   ; RV64-NEXT: {{  $}}
563   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 2 x s32>) = COPY $v8
564   ; RV64-NEXT:   PseudoRET
565 entry:
566   ret void
569 define void @test_args_nxv4f32(<vscale x 4 x float> %a) {
570   ; RV32-LABEL: name: test_args_nxv4f32
571   ; RV32: bb.1.entry:
572   ; RV32-NEXT:   liveins: $v8m2
573   ; RV32-NEXT: {{  $}}
574   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 4 x s32>) = COPY $v8m2
575   ; RV32-NEXT:   PseudoRET
576   ;
577   ; RV64-LABEL: name: test_args_nxv4f32
578   ; RV64: bb.1.entry:
579   ; RV64-NEXT:   liveins: $v8m2
580   ; RV64-NEXT: {{  $}}
581   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 4 x s32>) = COPY $v8m2
582   ; RV64-NEXT:   PseudoRET
583 entry:
584   ret void
587 define void @test_args_nxv8f32(<vscale x 8 x float> %a) {
588   ; RV32-LABEL: name: test_args_nxv8f32
589   ; RV32: bb.1.entry:
590   ; RV32-NEXT:   liveins: $v8m4
591   ; RV32-NEXT: {{  $}}
592   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 8 x s32>) = COPY $v8m4
593   ; RV32-NEXT:   PseudoRET
594   ;
595   ; RV64-LABEL: name: test_args_nxv8f32
596   ; RV64: bb.1.entry:
597   ; RV64-NEXT:   liveins: $v8m4
598   ; RV64-NEXT: {{  $}}
599   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 8 x s32>) = COPY $v8m4
600   ; RV64-NEXT:   PseudoRET
601 entry:
602   ret void
605 define void @test_args_nxv16f32(<vscale x 16 x float> %a) {
606   ; RV32-LABEL: name: test_args_nxv16f32
607   ; RV32: bb.1.entry:
608   ; RV32-NEXT:   liveins: $v8m8
609   ; RV32-NEXT: {{  $}}
610   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 16 x s32>) = COPY $v8m8
611   ; RV32-NEXT:   PseudoRET
612   ;
613   ; RV64-LABEL: name: test_args_nxv16f32
614   ; RV64: bb.1.entry:
615   ; RV64-NEXT:   liveins: $v8m8
616   ; RV64-NEXT: {{  $}}
617   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 16 x s32>) = COPY $v8m8
618   ; RV64-NEXT:   PseudoRET
619 entry:
620   ret void
623 define void @test_args_nxv1f64(<vscale x 1 x double> %a) {
624   ; RV32-LABEL: name: test_args_nxv1f64
625   ; RV32: bb.1.entry:
626   ; RV32-NEXT:   liveins: $v8
627   ; RV32-NEXT: {{  $}}
628   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 1 x s64>) = COPY $v8
629   ; RV32-NEXT:   PseudoRET
630   ;
631   ; RV64-LABEL: name: test_args_nxv1f64
632   ; RV64: bb.1.entry:
633   ; RV64-NEXT:   liveins: $v8
634   ; RV64-NEXT: {{  $}}
635   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 1 x s64>) = COPY $v8
636   ; RV64-NEXT:   PseudoRET
637 entry:
638   ret void
641 define void @test_args_nxv2f64(<vscale x 2 x double> %a) {
642   ; RV32-LABEL: name: test_args_nxv2f64
643   ; RV32: bb.1.entry:
644   ; RV32-NEXT:   liveins: $v8m2
645   ; RV32-NEXT: {{  $}}
646   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $v8m2
647   ; RV32-NEXT:   PseudoRET
648   ;
649   ; RV64-LABEL: name: test_args_nxv2f64
650   ; RV64: bb.1.entry:
651   ; RV64-NEXT:   liveins: $v8m2
652   ; RV64-NEXT: {{  $}}
653   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $v8m2
654   ; RV64-NEXT:   PseudoRET
655 entry:
656   ret void
659 define void @test_args_nxv4f64(<vscale x 4 x double> %a) {
660   ; RV32-LABEL: name: test_args_nxv4f64
661   ; RV32: bb.1.entry:
662   ; RV32-NEXT:   liveins: $v8m4
663   ; RV32-NEXT: {{  $}}
664   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 4 x s64>) = COPY $v8m4
665   ; RV32-NEXT:   PseudoRET
666   ;
667   ; RV64-LABEL: name: test_args_nxv4f64
668   ; RV64: bb.1.entry:
669   ; RV64-NEXT:   liveins: $v8m4
670   ; RV64-NEXT: {{  $}}
671   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 4 x s64>) = COPY $v8m4
672   ; RV64-NEXT:   PseudoRET
673 entry:
674   ret void
677 define void @test_args_nxv8f64(<vscale x 8 x double> %a) {
678   ; RV32-LABEL: name: test_args_nxv8f64
679   ; RV32: bb.1.entry:
680   ; RV32-NEXT:   liveins: $v8m8
681   ; RV32-NEXT: {{  $}}
682   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 8 x s64>) = COPY $v8m8
683   ; RV32-NEXT:   PseudoRET
684   ;
685   ; RV64-LABEL: name: test_args_nxv8f64
686   ; RV64: bb.1.entry:
687   ; RV64-NEXT:   liveins: $v8m8
688   ; RV64-NEXT: {{  $}}
689   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 8 x s64>) = COPY $v8m8
690   ; RV64-NEXT:   PseudoRET
691 entry:
692   ret void
695 define void @test_args_nxv1f16(<vscale x 1 x half> %a) {
696   ; RV32-LABEL: name: test_args_nxv1f16
697   ; RV32: bb.1.entry:
698   ; RV32-NEXT:   liveins: $v8
699   ; RV32-NEXT: {{  $}}
700   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 1 x s16>) = COPY $v8
701   ; RV32-NEXT:   PseudoRET
702   ;
703   ; RV64-LABEL: name: test_args_nxv1f16
704   ; RV64: bb.1.entry:
705   ; RV64-NEXT:   liveins: $v8
706   ; RV64-NEXT: {{  $}}
707   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 1 x s16>) = COPY $v8
708   ; RV64-NEXT:   PseudoRET
709 entry:
710   ret void
713 define void @test_args_nxv2f16(<vscale x 2 x half> %a) {
714   ; RV32-LABEL: name: test_args_nxv2f16
715   ; RV32: bb.1.entry:
716   ; RV32-NEXT:   liveins: $v8
717   ; RV32-NEXT: {{  $}}
718   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 2 x s16>) = COPY $v8
719   ; RV32-NEXT:   PseudoRET
720   ;
721   ; RV64-LABEL: name: test_args_nxv2f16
722   ; RV64: bb.1.entry:
723   ; RV64-NEXT:   liveins: $v8
724   ; RV64-NEXT: {{  $}}
725   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 2 x s16>) = COPY $v8
726   ; RV64-NEXT:   PseudoRET
727 entry:
728   ret void
731 define void @test_args_nxv4f16(<vscale x 4 x half> %a) {
732   ; RV32-LABEL: name: test_args_nxv4f16
733   ; RV32: bb.1.entry:
734   ; RV32-NEXT:   liveins: $v8
735   ; RV32-NEXT: {{  $}}
736   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 4 x s16>) = COPY $v8
737   ; RV32-NEXT:   PseudoRET
738   ;
739   ; RV64-LABEL: name: test_args_nxv4f16
740   ; RV64: bb.1.entry:
741   ; RV64-NEXT:   liveins: $v8
742   ; RV64-NEXT: {{  $}}
743   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 4 x s16>) = COPY $v8
744   ; RV64-NEXT:   PseudoRET
745 entry:
746   ret void
749 define void @test_args_nxv8f16(<vscale x 8 x half> %a) {
750   ; RV32-LABEL: name: test_args_nxv8f16
751   ; RV32: bb.1.entry:
752   ; RV32-NEXT:   liveins: $v8m2
753   ; RV32-NEXT: {{  $}}
754   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 8 x s16>) = COPY $v8m2
755   ; RV32-NEXT:   PseudoRET
756   ;
757   ; RV64-LABEL: name: test_args_nxv8f16
758   ; RV64: bb.1.entry:
759   ; RV64-NEXT:   liveins: $v8m2
760   ; RV64-NEXT: {{  $}}
761   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 8 x s16>) = COPY $v8m2
762   ; RV64-NEXT:   PseudoRET
763 entry:
764   ret void
767 define void @test_args_nxv16f16(<vscale x 16 x half> %a) {
768   ; RV32-LABEL: name: test_args_nxv16f16
769   ; RV32: bb.1.entry:
770   ; RV32-NEXT:   liveins: $v8m4
771   ; RV32-NEXT: {{  $}}
772   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 16 x s16>) = COPY $v8m4
773   ; RV32-NEXT:   PseudoRET
774   ;
775   ; RV64-LABEL: name: test_args_nxv16f16
776   ; RV64: bb.1.entry:
777   ; RV64-NEXT:   liveins: $v8m4
778   ; RV64-NEXT: {{  $}}
779   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 16 x s16>) = COPY $v8m4
780   ; RV64-NEXT:   PseudoRET
781 entry:
782   ret void
785 define void @test_args_nxv32f16(<vscale x 32 x half> %a) {
786   ; RV32-LABEL: name: test_args_nxv32f16
787   ; RV32: bb.1.entry:
788   ; RV32-NEXT:   liveins: $v8m8
789   ; RV32-NEXT: {{  $}}
790   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 32 x s16>) = COPY $v8m8
791   ; RV32-NEXT:   PseudoRET
792   ;
793   ; RV64-LABEL: name: test_args_nxv32f16
794   ; RV64: bb.1.entry:
795   ; RV64-NEXT:   liveins: $v8m8
796   ; RV64-NEXT: {{  $}}
797   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 32 x s16>) = COPY $v8m8
798   ; RV64-NEXT:   PseudoRET
799 entry:
800   ret void
803 define void @test_args_nxv1b16(<vscale x 1 x bfloat> %a) {
804   ; RV32-LABEL: name: test_args_nxv1b16
805   ; RV32: bb.1.entry:
806   ; RV32-NEXT:   liveins: $v8
807   ; RV32-NEXT: {{  $}}
808   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 1 x s16>) = COPY $v8
809   ; RV32-NEXT:   PseudoRET
810   ;
811   ; RV64-LABEL: name: test_args_nxv1b16
812   ; RV64: bb.1.entry:
813   ; RV64-NEXT:   liveins: $v8
814   ; RV64-NEXT: {{  $}}
815   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 1 x s16>) = COPY $v8
816   ; RV64-NEXT:   PseudoRET
817 entry:
818   ret void
821 define void @test_args_nxv2b16(<vscale x 2 x bfloat> %a) {
822   ; RV32-LABEL: name: test_args_nxv2b16
823   ; RV32: bb.1.entry:
824   ; RV32-NEXT:   liveins: $v8
825   ; RV32-NEXT: {{  $}}
826   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 2 x s16>) = COPY $v8
827   ; RV32-NEXT:   PseudoRET
828   ;
829   ; RV64-LABEL: name: test_args_nxv2b16
830   ; RV64: bb.1.entry:
831   ; RV64-NEXT:   liveins: $v8
832   ; RV64-NEXT: {{  $}}
833   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 2 x s16>) = COPY $v8
834   ; RV64-NEXT:   PseudoRET
835 entry:
836   ret void
839 define void @test_args_nxv4b16(<vscale x 4 x bfloat> %a) {
840   ; RV32-LABEL: name: test_args_nxv4b16
841   ; RV32: bb.1.entry:
842   ; RV32-NEXT:   liveins: $v8
843   ; RV32-NEXT: {{  $}}
844   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 4 x s16>) = COPY $v8
845   ; RV32-NEXT:   PseudoRET
846   ;
847   ; RV64-LABEL: name: test_args_nxv4b16
848   ; RV64: bb.1.entry:
849   ; RV64-NEXT:   liveins: $v8
850   ; RV64-NEXT: {{  $}}
851   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 4 x s16>) = COPY $v8
852   ; RV64-NEXT:   PseudoRET
853 entry:
854   ret void
857 define void @test_args_nxv8b16(<vscale x 8 x bfloat> %a) {
858   ; RV32-LABEL: name: test_args_nxv8b16
859   ; RV32: bb.1.entry:
860   ; RV32-NEXT:   liveins: $v8m2
861   ; RV32-NEXT: {{  $}}
862   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 8 x s16>) = COPY $v8m2
863   ; RV32-NEXT:   PseudoRET
864   ;
865   ; RV64-LABEL: name: test_args_nxv8b16
866   ; RV64: bb.1.entry:
867   ; RV64-NEXT:   liveins: $v8m2
868   ; RV64-NEXT: {{  $}}
869   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 8 x s16>) = COPY $v8m2
870   ; RV64-NEXT:   PseudoRET
871 entry:
872   ret void
875 define void @test_args_nxv16b16(<vscale x 16 x bfloat> %a) {
876   ; RV32-LABEL: name: test_args_nxv16b16
877   ; RV32: bb.1.entry:
878   ; RV32-NEXT:   liveins: $v8m4
879   ; RV32-NEXT: {{  $}}
880   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 16 x s16>) = COPY $v8m4
881   ; RV32-NEXT:   PseudoRET
882   ;
883   ; RV64-LABEL: name: test_args_nxv16b16
884   ; RV64: bb.1.entry:
885   ; RV64-NEXT:   liveins: $v8m4
886   ; RV64-NEXT: {{  $}}
887   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 16 x s16>) = COPY $v8m4
888   ; RV64-NEXT:   PseudoRET
889 entry:
890   ret void
893 define void @test_args_nxv32b16(<vscale x 32 x bfloat> %a) {
894   ; RV32-LABEL: name: test_args_nxv32b16
895   ; RV32: bb.1.entry:
896   ; RV32-NEXT:   liveins: $v8m8
897   ; RV32-NEXT: {{  $}}
898   ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 32 x s16>) = COPY $v8m8
899   ; RV32-NEXT:   PseudoRET
900   ;
901   ; RV64-LABEL: name: test_args_nxv32b16
902   ; RV64: bb.1.entry:
903   ; RV64-NEXT:   liveins: $v8m8
904   ; RV64-NEXT: {{  $}}
905   ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 32 x s16>) = COPY $v8m8
906   ; RV64-NEXT:   PseudoRET
907 entry:
908   ret void