[TableGen] Add TreePatternNode::children and use it in for loops (NFC) (#119877)
[llvm-project.git] / llvm / test / CodeGen / RISCV / GlobalISel / regbankselect / vec-args-ret.mir
blob9ed3b678e9711e2f66f22b0f29858434d962b2b9
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=riscv32  -run-pass=regbankselect \
3 # RUN:   -simplify-mir -verify-machineinstrs %s \
4 # RUN:   -o - | FileCheck -check-prefixes=RV32 %s
5 # RUN: llc -mtriple=riscv64  -run-pass=regbankselect \
6 # RUN:   -simplify-mir -verify-machineinstrs %s \
7 # RUN:   -o - | FileCheck -check-prefixes=RV64 %s
9 ...
10 ---
11 name:            test_ret_nxv1i8
12 legalized:         true
13 tracksRegLiveness: true
14 body:             |
15   bb.1.entry:
16     liveins: $v8
17     ; RV32-LABEL: name: test_ret_nxv1i8
18     ; RV32: liveins: $v8
19     ; RV32-NEXT: {{  $}}
20     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 1 x s8>) = COPY $v8
21     ; RV32-NEXT: $v8 = COPY [[COPY]](<vscale x 1 x s8>)
22     ; RV32-NEXT: PseudoRET implicit $v8
23     ;
24     ; RV64-LABEL: name: test_ret_nxv1i8
25     ; RV64: liveins: $v8
26     ; RV64-NEXT: {{  $}}
27     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 1 x s8>) = COPY $v8
28     ; RV64-NEXT: $v8 = COPY [[COPY]](<vscale x 1 x s8>)
29     ; RV64-NEXT: PseudoRET implicit $v8
30     %0:_(<vscale x 1 x s8>) = COPY $v8
31     $v8 = COPY %0(<vscale x 1 x s8>)
32     PseudoRET implicit $v8
34 ...
35 ---
36 name:            test_ret_nxv2i8
37 legalized:         true
38 tracksRegLiveness: true
39 body:             |
40   bb.1.entry:
41     liveins: $v8
42     ; RV32-LABEL: name: test_ret_nxv2i8
43     ; RV32: liveins: $v8
44     ; RV32-NEXT: {{  $}}
45     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 2 x s8>) = COPY $v8
46     ; RV32-NEXT: $v8 = COPY [[COPY]](<vscale x 2 x s8>)
47     ; RV32-NEXT: PseudoRET implicit $v8
48     ;
49     ; RV64-LABEL: name: test_ret_nxv2i8
50     ; RV64: liveins: $v8
51     ; RV64-NEXT: {{  $}}
52     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 2 x s8>) = COPY $v8
53     ; RV64-NEXT: $v8 = COPY [[COPY]](<vscale x 2 x s8>)
54     ; RV64-NEXT: PseudoRET implicit $v8
55     %0:_(<vscale x 2 x s8>) = COPY $v8
56     $v8 = COPY %0(<vscale x 2 x s8>)
57     PseudoRET implicit $v8
59 ...
60 ---
61 name:            test_ret_nxv4i8
62 legalized:         true
63 tracksRegLiveness: true
64 body:             |
65   bb.1.entry:
66     liveins: $v8
67     ; RV32-LABEL: name: test_ret_nxv4i8
68     ; RV32: liveins: $v8
69     ; RV32-NEXT: {{  $}}
70     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 4 x s8>) = COPY $v8
71     ; RV32-NEXT: $v8 = COPY [[COPY]](<vscale x 4 x s8>)
72     ; RV32-NEXT: PseudoRET implicit $v8
73     ;
74     ; RV64-LABEL: name: test_ret_nxv4i8
75     ; RV64: liveins: $v8
76     ; RV64-NEXT: {{  $}}
77     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 4 x s8>) = COPY $v8
78     ; RV64-NEXT: $v8 = COPY [[COPY]](<vscale x 4 x s8>)
79     ; RV64-NEXT: PseudoRET implicit $v8
80     %0:_(<vscale x 4 x s8>) = COPY $v8
81     $v8 = COPY %0(<vscale x 4 x s8>)
82     PseudoRET implicit $v8
84 ...
85 ---
86 name:            test_ret_nxv8i8
87 legalized:         true
88 tracksRegLiveness: true
89 body:             |
90   bb.1.entry:
91     liveins: $v8
92     ; RV32-LABEL: name: test_ret_nxv8i8
93     ; RV32: liveins: $v8
94     ; RV32-NEXT: {{  $}}
95     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 8 x s8>) = COPY $v8
96     ; RV32-NEXT: $v8 = COPY [[COPY]](<vscale x 8 x s8>)
97     ; RV32-NEXT: PseudoRET implicit $v8
98     ;
99     ; RV64-LABEL: name: test_ret_nxv8i8
100     ; RV64: liveins: $v8
101     ; RV64-NEXT: {{  $}}
102     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 8 x s8>) = COPY $v8
103     ; RV64-NEXT: $v8 = COPY [[COPY]](<vscale x 8 x s8>)
104     ; RV64-NEXT: PseudoRET implicit $v8
105     %0:_(<vscale x 8 x s8>) = COPY $v8
106     $v8 = COPY %0(<vscale x 8 x s8>)
107     PseudoRET implicit $v8
111 name:            test_ret_nxv16i8
112 legalized:         true
113 tracksRegLiveness: true
114 body:             |
115   bb.1.entry:
116     liveins: $v8
117     ; RV32-LABEL: name: test_ret_nxv16i8
118     ; RV32: liveins: $v8
119     ; RV32-NEXT: {{  $}}
120     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 16 x s8>) = COPY $v8
121     ; RV32-NEXT: $v8m2 = COPY [[COPY]](<vscale x 16 x s8>)
122     ; RV32-NEXT: PseudoRET implicit $v8m2
123     ;
124     ; RV64-LABEL: name: test_ret_nxv16i8
125     ; RV64: liveins: $v8
126     ; RV64-NEXT: {{  $}}
127     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 16 x s8>) = COPY $v8
128     ; RV64-NEXT: $v8m2 = COPY [[COPY]](<vscale x 16 x s8>)
129     ; RV64-NEXT: PseudoRET implicit $v8m2
130     %0:_(<vscale x 16 x s8>) = COPY $v8
131     $v8m2 = COPY %0(<vscale x 16 x s8>)
132     PseudoRET implicit $v8m2
136 name:            test_ret_nxv32i8
137 legalized:         true
138 tracksRegLiveness: true
139 body:             |
140   bb.1.entry:
141     liveins: $v8
142     ; RV32-LABEL: name: test_ret_nxv32i8
143     ; RV32: liveins: $v8
144     ; RV32-NEXT: {{  $}}
145     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 32 x s8>) = COPY $v8
146     ; RV32-NEXT: $v8m4 = COPY [[COPY]](<vscale x 32 x s8>)
147     ; RV32-NEXT: PseudoRET implicit $v8m4
148     ;
149     ; RV64-LABEL: name: test_ret_nxv32i8
150     ; RV64: liveins: $v8
151     ; RV64-NEXT: {{  $}}
152     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 32 x s8>) = COPY $v8
153     ; RV64-NEXT: $v8m4 = COPY [[COPY]](<vscale x 32 x s8>)
154     ; RV64-NEXT: PseudoRET implicit $v8m4
155     %0:_(<vscale x 32 x s8>) = COPY $v8
156     $v8m4 = COPY %0(<vscale x 32 x s8>)
157     PseudoRET implicit $v8m4
161 name:            test_ret_nxv64i8
162 legalized:         true
163 tracksRegLiveness: true
164 body:             |
165   bb.1.entry:
166     liveins: $v8
167     ; RV32-LABEL: name: test_ret_nxv64i8
168     ; RV32: liveins: $v8
169     ; RV32-NEXT: {{  $}}
170     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 64 x s8>) = COPY $v8
171     ; RV32-NEXT: $v8m8 = COPY [[COPY]](<vscale x 64 x s8>)
172     ; RV32-NEXT: PseudoRET implicit $v8m8
173     ;
174     ; RV64-LABEL: name: test_ret_nxv64i8
175     ; RV64: liveins: $v8
176     ; RV64-NEXT: {{  $}}
177     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 64 x s8>) = COPY $v8
178     ; RV64-NEXT: $v8m8 = COPY [[COPY]](<vscale x 64 x s8>)
179     ; RV64-NEXT: PseudoRET implicit $v8m8
180     %0:_(<vscale x 64 x s8>) = COPY $v8
181     $v8m8 = COPY %0(<vscale x 64 x s8>)
182     PseudoRET implicit $v8m8
186 name:            test_ret_nxv1i16
187 legalized:         true
188 tracksRegLiveness: true
189 body:             |
190   bb.1.entry:
191     liveins: $v8
192     ; RV32-LABEL: name: test_ret_nxv1i16
193     ; RV32: liveins: $v8
194     ; RV32-NEXT: {{  $}}
195     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 1 x s16>) = COPY $v8
196     ; RV32-NEXT: $v8 = COPY [[COPY]](<vscale x 1 x s16>)
197     ; RV32-NEXT: PseudoRET implicit $v8
198     ;
199     ; RV64-LABEL: name: test_ret_nxv1i16
200     ; RV64: liveins: $v8
201     ; RV64-NEXT: {{  $}}
202     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 1 x s16>) = COPY $v8
203     ; RV64-NEXT: $v8 = COPY [[COPY]](<vscale x 1 x s16>)
204     ; RV64-NEXT: PseudoRET implicit $v8
205     %0:_(<vscale x 1 x s16>) = COPY $v8
206     $v8 = COPY %0(<vscale x 1 x s16>)
207     PseudoRET implicit $v8
211 name:            test_ret_nxv2i16
212 legalized:         true
213 tracksRegLiveness: true
214 body:             |
215   bb.1.entry:
216     liveins: $v8
217     ; RV32-LABEL: name: test_ret_nxv2i16
218     ; RV32: liveins: $v8
219     ; RV32-NEXT: {{  $}}
220     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 2 x s16>) = COPY $v8
221     ; RV32-NEXT: $v8 = COPY [[COPY]](<vscale x 2 x s16>)
222     ; RV32-NEXT: PseudoRET implicit $v8
223     ;
224     ; RV64-LABEL: name: test_ret_nxv2i16
225     ; RV64: liveins: $v8
226     ; RV64-NEXT: {{  $}}
227     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 2 x s16>) = COPY $v8
228     ; RV64-NEXT: $v8 = COPY [[COPY]](<vscale x 2 x s16>)
229     ; RV64-NEXT: PseudoRET implicit $v8
230     %0:_(<vscale x 2 x s16>) = COPY $v8
231     $v8 = COPY %0(<vscale x 2 x s16>)
232     PseudoRET implicit $v8
236 name:            test_ret_nxv4i16
237 legalized:         true
238 tracksRegLiveness: true
239 body:             |
240   bb.1.entry:
241     liveins: $v8
242     ; RV32-LABEL: name: test_ret_nxv4i16
243     ; RV32: liveins: $v8
244     ; RV32-NEXT: {{  $}}
245     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 4 x s16>) = COPY $v8
246     ; RV32-NEXT: $v8 = COPY [[COPY]](<vscale x 4 x s16>)
247     ; RV32-NEXT: PseudoRET implicit $v8
248     ;
249     ; RV64-LABEL: name: test_ret_nxv4i16
250     ; RV64: liveins: $v8
251     ; RV64-NEXT: {{  $}}
252     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 4 x s16>) = COPY $v8
253     ; RV64-NEXT: $v8 = COPY [[COPY]](<vscale x 4 x s16>)
254     ; RV64-NEXT: PseudoRET implicit $v8
255     %0:_(<vscale x 4 x s16>) = COPY $v8
256     $v8 = COPY %0(<vscale x 4 x s16>)
257     PseudoRET implicit $v8
261 name:            test_ret_nxv8i16
262 legalized:         true
263 tracksRegLiveness: true
264 body:             |
265   bb.1.entry:
266     liveins: $v8
267     ; RV32-LABEL: name: test_ret_nxv8i16
268     ; RV32: liveins: $v8
269     ; RV32-NEXT: {{  $}}
270     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 8 x s16>) = COPY $v8
271     ; RV32-NEXT: $v8m2 = COPY [[COPY]](<vscale x 8 x s16>)
272     ; RV32-NEXT: PseudoRET implicit $v8m2
273     ;
274     ; RV64-LABEL: name: test_ret_nxv8i16
275     ; RV64: liveins: $v8
276     ; RV64-NEXT: {{  $}}
277     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 8 x s16>) = COPY $v8
278     ; RV64-NEXT: $v8m2 = COPY [[COPY]](<vscale x 8 x s16>)
279     ; RV64-NEXT: PseudoRET implicit $v8m2
280     %0:_(<vscale x 8 x s16>) = COPY $v8
281     $v8m2 = COPY %0(<vscale x 8 x s16>)
282     PseudoRET implicit $v8m2
286 name:            test_ret_nxv16i16
287 legalized:         true
288 tracksRegLiveness: true
289 body:             |
290   bb.1.entry:
291     liveins: $v8
292     ; RV32-LABEL: name: test_ret_nxv16i16
293     ; RV32: liveins: $v8
294     ; RV32-NEXT: {{  $}}
295     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 16 x s16>) = COPY $v8
296     ; RV32-NEXT: $v8m4 = COPY [[COPY]](<vscale x 16 x s16>)
297     ; RV32-NEXT: PseudoRET implicit $v8m4
298     ;
299     ; RV64-LABEL: name: test_ret_nxv16i16
300     ; RV64: liveins: $v8
301     ; RV64-NEXT: {{  $}}
302     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 16 x s16>) = COPY $v8
303     ; RV64-NEXT: $v8m4 = COPY [[COPY]](<vscale x 16 x s16>)
304     ; RV64-NEXT: PseudoRET implicit $v8m4
305     %0:_(<vscale x 16 x s16>) = COPY $v8
306     $v8m4 = COPY %0(<vscale x 16 x s16>)
307     PseudoRET implicit $v8m4
311 name:            test_ret_nxv32i16
312 legalized:         true
313 tracksRegLiveness: true
314 body:             |
315   bb.1.entry:
316     liveins: $v8
317     ; RV32-LABEL: name: test_ret_nxv32i16
318     ; RV32: liveins: $v8
319     ; RV32-NEXT: {{  $}}
320     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 32 x s16>) = COPY $v8
321     ; RV32-NEXT: $v8m8 = COPY [[COPY]](<vscale x 32 x s16>)
322     ; RV32-NEXT: PseudoRET implicit $v8m8
323     ;
324     ; RV64-LABEL: name: test_ret_nxv32i16
325     ; RV64: liveins: $v8
326     ; RV64-NEXT: {{  $}}
327     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 32 x s16>) = COPY $v8
328     ; RV64-NEXT: $v8m8 = COPY [[COPY]](<vscale x 32 x s16>)
329     ; RV64-NEXT: PseudoRET implicit $v8m8
330     %0:_(<vscale x 32 x s16>) = COPY $v8
331     $v8m8 = COPY %0(<vscale x 32 x s16>)
332     PseudoRET implicit $v8m8
336 name:            test_ret_nxv1i32
337 legalized:         true
338 tracksRegLiveness: true
339 body:             |
340   bb.1.entry:
341     liveins: $v8
342     ; RV32-LABEL: name: test_ret_nxv1i32
343     ; RV32: liveins: $v8
344     ; RV32-NEXT: {{  $}}
345     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 1 x s32>) = COPY $v8
346     ; RV32-NEXT: $v8 = COPY [[COPY]](<vscale x 1 x s32>)
347     ; RV32-NEXT: PseudoRET implicit $v8
348     ;
349     ; RV64-LABEL: name: test_ret_nxv1i32
350     ; RV64: liveins: $v8
351     ; RV64-NEXT: {{  $}}
352     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 1 x s32>) = COPY $v8
353     ; RV64-NEXT: $v8 = COPY [[COPY]](<vscale x 1 x s32>)
354     ; RV64-NEXT: PseudoRET implicit $v8
355     %0:_(<vscale x 1 x s32>) = COPY $v8
356     $v8 = COPY %0(<vscale x 1 x s32>)
357     PseudoRET implicit $v8
361 name:            test_ret_nxv2i32
362 legalized:         true
363 tracksRegLiveness: true
364 body:             |
365   bb.1.entry:
366     liveins: $v8
367     ; RV32-LABEL: name: test_ret_nxv2i32
368     ; RV32: liveins: $v8
369     ; RV32-NEXT: {{  $}}
370     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 2 x s32>) = COPY $v8
371     ; RV32-NEXT: $v8 = COPY [[COPY]](<vscale x 2 x s32>)
372     ; RV32-NEXT: PseudoRET implicit $v8
373     ;
374     ; RV64-LABEL: name: test_ret_nxv2i32
375     ; RV64: liveins: $v8
376     ; RV64-NEXT: {{  $}}
377     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 2 x s32>) = COPY $v8
378     ; RV64-NEXT: $v8 = COPY [[COPY]](<vscale x 2 x s32>)
379     ; RV64-NEXT: PseudoRET implicit $v8
380     %0:_(<vscale x 2 x s32>) = COPY $v8
381     $v8 = COPY %0(<vscale x 2 x s32>)
382     PseudoRET implicit $v8
386 name:            test_ret_nxv4i32
387 legalized:         true
388 tracksRegLiveness: true
389 body:             |
390   bb.1.entry:
391     liveins: $v8
392     ; RV32-LABEL: name: test_ret_nxv4i32
393     ; RV32: liveins: $v8
394     ; RV32-NEXT: {{  $}}
395     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 4 x s32>) = COPY $v8
396     ; RV32-NEXT: $v8m2 = COPY [[COPY]](<vscale x 4 x s32>)
397     ; RV32-NEXT: PseudoRET implicit $v8m2
398     ;
399     ; RV64-LABEL: name: test_ret_nxv4i32
400     ; RV64: liveins: $v8
401     ; RV64-NEXT: {{  $}}
402     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 4 x s32>) = COPY $v8
403     ; RV64-NEXT: $v8m2 = COPY [[COPY]](<vscale x 4 x s32>)
404     ; RV64-NEXT: PseudoRET implicit $v8m2
405     %0:_(<vscale x 4 x s32>) = COPY $v8
406     $v8m2 = COPY %0(<vscale x 4 x s32>)
407     PseudoRET implicit $v8m2
411 name:            test_ret_nxv8i32
412 legalized:         true
413 tracksRegLiveness: true
414 body:             |
415   bb.1.entry:
416     liveins: $v8
417     ; RV32-LABEL: name: test_ret_nxv8i32
418     ; RV32: liveins: $v8
419     ; RV32-NEXT: {{  $}}
420     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 8 x s32>) = COPY $v8
421     ; RV32-NEXT: $v8m4 = COPY [[COPY]](<vscale x 8 x s32>)
422     ; RV32-NEXT: PseudoRET implicit $v8m4
423     ;
424     ; RV64-LABEL: name: test_ret_nxv8i32
425     ; RV64: liveins: $v8
426     ; RV64-NEXT: {{  $}}
427     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 8 x s32>) = COPY $v8
428     ; RV64-NEXT: $v8m4 = COPY [[COPY]](<vscale x 8 x s32>)
429     ; RV64-NEXT: PseudoRET implicit $v8m4
430     %0:_(<vscale x 8 x s32>) = COPY $v8
431     $v8m4 = COPY %0(<vscale x 8 x s32>)
432     PseudoRET implicit $v8m4
436 name:            test_ret_nxv16i32
437 legalized:         true
438 tracksRegLiveness: true
439 body:             |
440   bb.1.entry:
441     liveins: $v8
442     ; RV32-LABEL: name: test_ret_nxv16i32
443     ; RV32: liveins: $v8
444     ; RV32-NEXT: {{  $}}
445     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 16 x s32>) = COPY $v8
446     ; RV32-NEXT: $v8m8 = COPY [[COPY]](<vscale x 16 x s32>)
447     ; RV32-NEXT: PseudoRET implicit $v8m8
448     ;
449     ; RV64-LABEL: name: test_ret_nxv16i32
450     ; RV64: liveins: $v8
451     ; RV64-NEXT: {{  $}}
452     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 16 x s32>) = COPY $v8
453     ; RV64-NEXT: $v8m8 = COPY [[COPY]](<vscale x 16 x s32>)
454     ; RV64-NEXT: PseudoRET implicit $v8m8
455     %0:_(<vscale x 16 x s32>) = COPY $v8
456     $v8m8 = COPY %0(<vscale x 16 x s32>)
457     PseudoRET implicit $v8m8
461 name:            test_ret_nxv1i64
462 legalized:         true
463 tracksRegLiveness: true
464 body:             |
465   bb.1.entry:
466     liveins: $v8
467     ; RV32-LABEL: name: test_ret_nxv1i64
468     ; RV32: liveins: $v8
469     ; RV32-NEXT: {{  $}}
470     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 1 x s64>) = COPY $v8
471     ; RV32-NEXT: $v8 = COPY [[COPY]](<vscale x 1 x s64>)
472     ; RV32-NEXT: PseudoRET implicit $v8
473     ;
474     ; RV64-LABEL: name: test_ret_nxv1i64
475     ; RV64: liveins: $v8
476     ; RV64-NEXT: {{  $}}
477     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 1 x s64>) = COPY $v8
478     ; RV64-NEXT: $v8 = COPY [[COPY]](<vscale x 1 x s64>)
479     ; RV64-NEXT: PseudoRET implicit $v8
480     %0:_(<vscale x 1 x s64>) = COPY $v8
481     $v8 = COPY %0(<vscale x 1 x s64>)
482     PseudoRET implicit $v8
486 name:            test_ret_nxv2i64
487 legalized:         true
488 tracksRegLiveness: true
489 body:             |
490   bb.1.entry:
491     liveins: $v8
492     ; RV32-LABEL: name: test_ret_nxv2i64
493     ; RV32: liveins: $v8
494     ; RV32-NEXT: {{  $}}
495     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 2 x s64>) = COPY $v8
496     ; RV32-NEXT: $v8m2 = COPY [[COPY]](<vscale x 2 x s64>)
497     ; RV32-NEXT: PseudoRET implicit $v8m2
498     ;
499     ; RV64-LABEL: name: test_ret_nxv2i64
500     ; RV64: liveins: $v8
501     ; RV64-NEXT: {{  $}}
502     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 2 x s64>) = COPY $v8
503     ; RV64-NEXT: $v8m2 = COPY [[COPY]](<vscale x 2 x s64>)
504     ; RV64-NEXT: PseudoRET implicit $v8m2
505     %0:_(<vscale x 2 x s64>) = COPY $v8
506     $v8m2 = COPY %0(<vscale x 2 x s64>)
507     PseudoRET implicit $v8m2
511 name:            test_ret_nxv4i64
512 legalized:         true
513 tracksRegLiveness: true
514 body:             |
515   bb.1.entry:
516     liveins: $v8
517     ; RV32-LABEL: name: test_ret_nxv4i64
518     ; RV32: liveins: $v8
519     ; RV32-NEXT: {{  $}}
520     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 4 x s64>) = COPY $v8
521     ; RV32-NEXT: $v8m4 = COPY [[COPY]](<vscale x 4 x s64>)
522     ; RV32-NEXT: PseudoRET implicit $v8m4
523     ;
524     ; RV64-LABEL: name: test_ret_nxv4i64
525     ; RV64: liveins: $v8
526     ; RV64-NEXT: {{  $}}
527     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 4 x s64>) = COPY $v8
528     ; RV64-NEXT: $v8m4 = COPY [[COPY]](<vscale x 4 x s64>)
529     ; RV64-NEXT: PseudoRET implicit $v8m4
530     %0:_(<vscale x 4 x s64>) = COPY $v8
531     $v8m4 = COPY %0(<vscale x 4 x s64>)
532     PseudoRET implicit $v8m4
536 name:            test_ret_nxv8i64
537 legalized:         true
538 tracksRegLiveness: true
539 body:             |
540   bb.1.entry:
541     liveins: $v8
542     ; RV32-LABEL: name: test_ret_nxv8i64
543     ; RV32: liveins: $v8
544     ; RV32-NEXT: {{  $}}
545     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 8 x s64>) = COPY $v8
546     ; RV32-NEXT: $v8m8 = COPY [[COPY]](<vscale x 8 x s64>)
547     ; RV32-NEXT: PseudoRET implicit $v8m8
548     ;
549     ; RV64-LABEL: name: test_ret_nxv8i64
550     ; RV64: liveins: $v8
551     ; RV64-NEXT: {{  $}}
552     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 8 x s64>) = COPY $v8
553     ; RV64-NEXT: $v8m8 = COPY [[COPY]](<vscale x 8 x s64>)
554     ; RV64-NEXT: PseudoRET implicit $v8m8
555     %0:_(<vscale x 8 x s64>) = COPY $v8
556     $v8m8 = COPY %0(<vscale x 8 x s64>)
557     PseudoRET implicit $v8m8
561 name:            test_ret_nxv64i1
562 legalized:         true
563 tracksRegLiveness: true
564 body:             |
565   bb.1.entry:
566     liveins: $v8
567     ; RV32-LABEL: name: test_ret_nxv64i1
568     ; RV32: liveins: $v8
569     ; RV32-NEXT: {{  $}}
570     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 64 x s1>) = COPY $v8
571     ; RV32-NEXT: $v8 = COPY [[COPY]](<vscale x 64 x s1>)
572     ; RV32-NEXT: PseudoRET implicit $v8
573     ;
574     ; RV64-LABEL: name: test_ret_nxv64i1
575     ; RV64: liveins: $v8
576     ; RV64-NEXT: {{  $}}
577     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 64 x s1>) = COPY $v8
578     ; RV64-NEXT: $v8 = COPY [[COPY]](<vscale x 64 x s1>)
579     ; RV64-NEXT: PseudoRET implicit $v8
580     %0:_(<vscale x 64 x s1>) = COPY $v8
581     $v8 = COPY %0(<vscale x 64 x s1>)
582     PseudoRET implicit $v8
586 name:            test_ret_nxv32i1
587 legalized:         true
588 tracksRegLiveness: true
589 body:             |
590   bb.1.entry:
591     liveins: $v8
592     ; RV32-LABEL: name: test_ret_nxv32i1
593     ; RV32: liveins: $v8
594     ; RV32-NEXT: {{  $}}
595     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 32 x s1>) = COPY $v8
596     ; RV32-NEXT: $v8 = COPY [[COPY]](<vscale x 32 x s1>)
597     ; RV32-NEXT: PseudoRET implicit $v8
598     ;
599     ; RV64-LABEL: name: test_ret_nxv32i1
600     ; RV64: liveins: $v8
601     ; RV64-NEXT: {{  $}}
602     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 32 x s1>) = COPY $v8
603     ; RV64-NEXT: $v8 = COPY [[COPY]](<vscale x 32 x s1>)
604     ; RV64-NEXT: PseudoRET implicit $v8
605     %0:_(<vscale x 32 x s1>) = COPY $v8
606     $v8 = COPY %0(<vscale x 32 x s1>)
607     PseudoRET implicit $v8
611 name:            test_ret_nxv16i1
612 legalized:         true
613 tracksRegLiveness: true
614 body:             |
615   bb.1.entry:
616     liveins: $v8
617     ; RV32-LABEL: name: test_ret_nxv16i1
618     ; RV32: liveins: $v8
619     ; RV32-NEXT: {{  $}}
620     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 16 x s1>) = COPY $v8
621     ; RV32-NEXT: $v8 = COPY [[COPY]](<vscale x 16 x s1>)
622     ; RV32-NEXT: PseudoRET implicit $v8
623     ;
624     ; RV64-LABEL: name: test_ret_nxv16i1
625     ; RV64: liveins: $v8
626     ; RV64-NEXT: {{  $}}
627     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 16 x s1>) = COPY $v8
628     ; RV64-NEXT: $v8 = COPY [[COPY]](<vscale x 16 x s1>)
629     ; RV64-NEXT: PseudoRET implicit $v8
630     %0:_(<vscale x 16 x s1>) = COPY $v8
631     $v8 = COPY %0(<vscale x 16 x s1>)
632     PseudoRET implicit $v8
636 name:            test_ret_nxv8i1
637 legalized:         true
638 tracksRegLiveness: true
639 body:             |
640   bb.1.entry:
641     liveins: $v8
642     ; RV32-LABEL: name: test_ret_nxv8i1
643     ; RV32: liveins: $v8
644     ; RV32-NEXT: {{  $}}
645     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 8 x s1>) = COPY $v8
646     ; RV32-NEXT: $v8 = COPY [[COPY]](<vscale x 8 x s1>)
647     ; RV32-NEXT: PseudoRET implicit $v8
648     ;
649     ; RV64-LABEL: name: test_ret_nxv8i1
650     ; RV64: liveins: $v8
651     ; RV64-NEXT: {{  $}}
652     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 8 x s1>) = COPY $v8
653     ; RV64-NEXT: $v8 = COPY [[COPY]](<vscale x 8 x s1>)
654     ; RV64-NEXT: PseudoRET implicit $v8
655     %0:_(<vscale x 8 x s1>) = COPY $v8
656     $v8 = COPY %0(<vscale x 8 x s1>)
657     PseudoRET implicit $v8
661 name:            test_ret_nxv4i1
662 legalized:         true
663 tracksRegLiveness: true
664 body:             |
665   bb.1.entry:
666     liveins: $v8
667     ; RV32-LABEL: name: test_ret_nxv4i1
668     ; RV32: liveins: $v8
669     ; RV32-NEXT: {{  $}}
670     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 4 x s1>) = COPY $v8
671     ; RV32-NEXT: $v8 = COPY [[COPY]](<vscale x 4 x s1>)
672     ; RV32-NEXT: PseudoRET implicit $v8
673     ;
674     ; RV64-LABEL: name: test_ret_nxv4i1
675     ; RV64: liveins: $v8
676     ; RV64-NEXT: {{  $}}
677     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 4 x s1>) = COPY $v8
678     ; RV64-NEXT: $v8 = COPY [[COPY]](<vscale x 4 x s1>)
679     ; RV64-NEXT: PseudoRET implicit $v8
680     %0:_(<vscale x 4 x s1>) = COPY $v8
681     $v8 = COPY %0(<vscale x 4 x s1>)
682     PseudoRET implicit $v8
686 name:            test_ret_nxv2i1
687 legalized:         true
688 tracksRegLiveness: true
689 body:             |
690   bb.1.entry:
691     liveins: $v8
692     ; RV32-LABEL: name: test_ret_nxv2i1
693     ; RV32: liveins: $v8
694     ; RV32-NEXT: {{  $}}
695     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 2 x s1>) = COPY $v8
696     ; RV32-NEXT: $v8 = COPY [[COPY]](<vscale x 2 x s1>)
697     ; RV32-NEXT: PseudoRET implicit $v8
698     ;
699     ; RV64-LABEL: name: test_ret_nxv2i1
700     ; RV64: liveins: $v8
701     ; RV64-NEXT: {{  $}}
702     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 2 x s1>) = COPY $v8
703     ; RV64-NEXT: $v8 = COPY [[COPY]](<vscale x 2 x s1>)
704     ; RV64-NEXT: PseudoRET implicit $v8
705     %0:_(<vscale x 2 x s1>) = COPY $v8
706     $v8 = COPY %0(<vscale x 2 x s1>)
707     PseudoRET implicit $v8
711 name:            test_ret_nxv1i1
712 legalized:         true
713 tracksRegLiveness: true
714 body:             |
715   bb.1.entry:
716     liveins: $v8
717     ; RV32-LABEL: name: test_ret_nxv1i1
718     ; RV32: liveins: $v8
719     ; RV32-NEXT: {{  $}}
720     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 1 x s1>) = COPY $v8
721     ; RV32-NEXT: $v8 = COPY [[COPY]](<vscale x 1 x s1>)
722     ; RV32-NEXT: PseudoRET implicit $v8
723     ;
724     ; RV64-LABEL: name: test_ret_nxv1i1
725     ; RV64: liveins: $v8
726     ; RV64-NEXT: {{  $}}
727     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 1 x s1>) = COPY $v8
728     ; RV64-NEXT: $v8 = COPY [[COPY]](<vscale x 1 x s1>)
729     ; RV64-NEXT: PseudoRET implicit $v8
730     %0:_(<vscale x 1 x s1>) = COPY $v8
731     $v8 = COPY %0(<vscale x 1 x s1>)
732     PseudoRET implicit $v8
736 name:            test_ret_nxv1f32
737 legalized:         true
738 tracksRegLiveness: true
739 body:             |
740   bb.1.entry:
741     liveins: $v8
742     ; RV32-LABEL: name: test_ret_nxv1f32
743     ; RV32: liveins: $v8
744     ; RV32-NEXT: {{  $}}
745     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 1 x s32>) = COPY $v8
746     ; RV32-NEXT: $v8 = COPY [[COPY]](<vscale x 1 x s32>)
747     ; RV32-NEXT: PseudoRET implicit $v8
748     ;
749     ; RV64-LABEL: name: test_ret_nxv1f32
750     ; RV64: liveins: $v8
751     ; RV64-NEXT: {{  $}}
752     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 1 x s32>) = COPY $v8
753     ; RV64-NEXT: $v8 = COPY [[COPY]](<vscale x 1 x s32>)
754     ; RV64-NEXT: PseudoRET implicit $v8
755     %0:_(<vscale x 1 x s32>) = COPY $v8
756     $v8 = COPY %0(<vscale x 1 x s32>)
757     PseudoRET implicit $v8
761 name:            test_ret_nxv2f32
762 legalized:         true
763 tracksRegLiveness: true
764 body:             |
765   bb.1.entry:
766     liveins: $v8
767     ; RV32-LABEL: name: test_ret_nxv2f32
768     ; RV32: liveins: $v8
769     ; RV32-NEXT: {{  $}}
770     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 2 x s32>) = COPY $v8
771     ; RV32-NEXT: $v8 = COPY [[COPY]](<vscale x 2 x s32>)
772     ; RV32-NEXT: PseudoRET implicit $v8
773     ;
774     ; RV64-LABEL: name: test_ret_nxv2f32
775     ; RV64: liveins: $v8
776     ; RV64-NEXT: {{  $}}
777     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 2 x s32>) = COPY $v8
778     ; RV64-NEXT: $v8 = COPY [[COPY]](<vscale x 2 x s32>)
779     ; RV64-NEXT: PseudoRET implicit $v8
780     %0:_(<vscale x 2 x s32>) = COPY $v8
781     $v8 = COPY %0(<vscale x 2 x s32>)
782     PseudoRET implicit $v8
786 name:            test_ret_nxv4f32
787 legalized:         true
788 tracksRegLiveness: true
789 body:             |
790   bb.1.entry:
791     liveins: $v8
792     ; RV32-LABEL: name: test_ret_nxv4f32
793     ; RV32: liveins: $v8
794     ; RV32-NEXT: {{  $}}
795     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 4 x s32>) = COPY $v8
796     ; RV32-NEXT: $v8m2 = COPY [[COPY]](<vscale x 4 x s32>)
797     ; RV32-NEXT: PseudoRET implicit $v8m2
798     ;
799     ; RV64-LABEL: name: test_ret_nxv4f32
800     ; RV64: liveins: $v8
801     ; RV64-NEXT: {{  $}}
802     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 4 x s32>) = COPY $v8
803     ; RV64-NEXT: $v8m2 = COPY [[COPY]](<vscale x 4 x s32>)
804     ; RV64-NEXT: PseudoRET implicit $v8m2
805     %0:_(<vscale x 4 x s32>) = COPY $v8
806     $v8m2 = COPY %0(<vscale x 4 x s32>)
807     PseudoRET implicit $v8m2
811 name:            test_ret_nxv8f32
812 legalized:         true
813 tracksRegLiveness: true
814 body:             |
815   bb.1.entry:
816     liveins: $v8
817     ; RV32-LABEL: name: test_ret_nxv8f32
818     ; RV32: liveins: $v8
819     ; RV32-NEXT: {{  $}}
820     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 8 x s32>) = COPY $v8
821     ; RV32-NEXT: $v8m4 = COPY [[COPY]](<vscale x 8 x s32>)
822     ; RV32-NEXT: PseudoRET implicit $v8m4
823     ;
824     ; RV64-LABEL: name: test_ret_nxv8f32
825     ; RV64: liveins: $v8
826     ; RV64-NEXT: {{  $}}
827     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 8 x s32>) = COPY $v8
828     ; RV64-NEXT: $v8m4 = COPY [[COPY]](<vscale x 8 x s32>)
829     ; RV64-NEXT: PseudoRET implicit $v8m4
830     %0:_(<vscale x 8 x s32>) = COPY $v8
831     $v8m4 = COPY %0(<vscale x 8 x s32>)
832     PseudoRET implicit $v8m4
836 name:            test_ret_nxv16f32
837 legalized:         true
838 tracksRegLiveness: true
839 body:             |
840   bb.1.entry:
841     liveins: $v8
842     ; RV32-LABEL: name: test_ret_nxv16f32
843     ; RV32: liveins: $v8
844     ; RV32-NEXT: {{  $}}
845     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 16 x s32>) = COPY $v8
846     ; RV32-NEXT: $v8m8 = COPY [[COPY]](<vscale x 16 x s32>)
847     ; RV32-NEXT: PseudoRET implicit $v8m8
848     ;
849     ; RV64-LABEL: name: test_ret_nxv16f32
850     ; RV64: liveins: $v8
851     ; RV64-NEXT: {{  $}}
852     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 16 x s32>) = COPY $v8
853     ; RV64-NEXT: $v8m8 = COPY [[COPY]](<vscale x 16 x s32>)
854     ; RV64-NEXT: PseudoRET implicit $v8m8
855     %0:_(<vscale x 16 x s32>) = COPY $v8
856     $v8m8 = COPY %0(<vscale x 16 x s32>)
857     PseudoRET implicit $v8m8
861 name:            test_ret_nxv1f64
862 legalized:         true
863 tracksRegLiveness: true
864 body:             |
865   bb.1.entry:
866     liveins: $v8
867     ; RV32-LABEL: name: test_ret_nxv1f64
868     ; RV32: liveins: $v8
869     ; RV32-NEXT: {{  $}}
870     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 1 x s64>) = COPY $v8
871     ; RV32-NEXT: $v8 = COPY [[COPY]](<vscale x 1 x s64>)
872     ; RV32-NEXT: PseudoRET implicit $v8
873     ;
874     ; RV64-LABEL: name: test_ret_nxv1f64
875     ; RV64: liveins: $v8
876     ; RV64-NEXT: {{  $}}
877     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 1 x s64>) = COPY $v8
878     ; RV64-NEXT: $v8 = COPY [[COPY]](<vscale x 1 x s64>)
879     ; RV64-NEXT: PseudoRET implicit $v8
880     %0:_(<vscale x 1 x s64>) = COPY $v8
881     $v8 = COPY %0(<vscale x 1 x s64>)
882     PseudoRET implicit $v8
886 name:            test_ret_nxv2f64
887 legalized:         true
888 tracksRegLiveness: true
889 body:             |
890   bb.1.entry:
891     liveins: $v8
892     ; RV32-LABEL: name: test_ret_nxv2f64
893     ; RV32: liveins: $v8
894     ; RV32-NEXT: {{  $}}
895     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 2 x s64>) = COPY $v8
896     ; RV32-NEXT: $v8m2 = COPY [[COPY]](<vscale x 2 x s64>)
897     ; RV32-NEXT: PseudoRET implicit $v8m2
898     ;
899     ; RV64-LABEL: name: test_ret_nxv2f64
900     ; RV64: liveins: $v8
901     ; RV64-NEXT: {{  $}}
902     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 2 x s64>) = COPY $v8
903     ; RV64-NEXT: $v8m2 = COPY [[COPY]](<vscale x 2 x s64>)
904     ; RV64-NEXT: PseudoRET implicit $v8m2
905     %0:_(<vscale x 2 x s64>) = COPY $v8
906     $v8m2 = COPY %0(<vscale x 2 x s64>)
907     PseudoRET implicit $v8m2
911 name:            test_ret_nxv4f64
912 legalized:         true
913 tracksRegLiveness: true
914 body:             |
915   bb.1.entry:
916     liveins: $v8
917     ; RV32-LABEL: name: test_ret_nxv4f64
918     ; RV32: liveins: $v8
919     ; RV32-NEXT: {{  $}}
920     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 4 x s64>) = COPY $v8
921     ; RV32-NEXT: $v8m4 = COPY [[COPY]](<vscale x 4 x s64>)
922     ; RV32-NEXT: PseudoRET implicit $v8m4
923     ;
924     ; RV64-LABEL: name: test_ret_nxv4f64
925     ; RV64: liveins: $v8
926     ; RV64-NEXT: {{  $}}
927     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 4 x s64>) = COPY $v8
928     ; RV64-NEXT: $v8m4 = COPY [[COPY]](<vscale x 4 x s64>)
929     ; RV64-NEXT: PseudoRET implicit $v8m4
930     %0:_(<vscale x 4 x s64>) = COPY $v8
931     $v8m4 = COPY %0(<vscale x 4 x s64>)
932     PseudoRET implicit $v8m4
936 name:            test_ret_nxv8f64
937 legalized:         true
938 tracksRegLiveness: true
939 body:             |
940   bb.1.entry:
941     liveins: $v8
942     ; RV32-LABEL: name: test_ret_nxv8f64
943     ; RV32: liveins: $v8
944     ; RV32-NEXT: {{  $}}
945     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 8 x s64>) = COPY $v8
946     ; RV32-NEXT: $v8m8 = COPY [[COPY]](<vscale x 8 x s64>)
947     ; RV32-NEXT: PseudoRET implicit $v8m8
948     ;
949     ; RV64-LABEL: name: test_ret_nxv8f64
950     ; RV64: liveins: $v8
951     ; RV64-NEXT: {{  $}}
952     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 8 x s64>) = COPY $v8
953     ; RV64-NEXT: $v8m8 = COPY [[COPY]](<vscale x 8 x s64>)
954     ; RV64-NEXT: PseudoRET implicit $v8m8
955     %0:_(<vscale x 8 x s64>) = COPY $v8
956     $v8m8 = COPY %0(<vscale x 8 x s64>)
957     PseudoRET implicit $v8m8
961 name:            test_ret_nxv1f16
962 legalized:         true
963 tracksRegLiveness: true
964 body:             |
965   bb.1.entry:
966     liveins: $v8
967     ; RV32-LABEL: name: test_ret_nxv1f16
968     ; RV32: liveins: $v8
969     ; RV32-NEXT: {{  $}}
970     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 1 x s16>) = COPY $v8
971     ; RV32-NEXT: $v8 = COPY [[COPY]](<vscale x 1 x s16>)
972     ; RV32-NEXT: PseudoRET implicit $v8
973     ;
974     ; RV64-LABEL: name: test_ret_nxv1f16
975     ; RV64: liveins: $v8
976     ; RV64-NEXT: {{  $}}
977     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 1 x s16>) = COPY $v8
978     ; RV64-NEXT: $v8 = COPY [[COPY]](<vscale x 1 x s16>)
979     ; RV64-NEXT: PseudoRET implicit $v8
980     %0:_(<vscale x 1 x s16>) = COPY $v8
981     $v8 = COPY %0(<vscale x 1 x s16>)
982     PseudoRET implicit $v8
986 name:            test_ret_nxv2f16
987 legalized:         true
988 tracksRegLiveness: true
989 body:             |
990   bb.1.entry:
991     liveins: $v8
992     ; RV32-LABEL: name: test_ret_nxv2f16
993     ; RV32: liveins: $v8
994     ; RV32-NEXT: {{  $}}
995     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 2 x s16>) = COPY $v8
996     ; RV32-NEXT: $v8 = COPY [[COPY]](<vscale x 2 x s16>)
997     ; RV32-NEXT: PseudoRET implicit $v8
998     ;
999     ; RV64-LABEL: name: test_ret_nxv2f16
1000     ; RV64: liveins: $v8
1001     ; RV64-NEXT: {{  $}}
1002     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 2 x s16>) = COPY $v8
1003     ; RV64-NEXT: $v8 = COPY [[COPY]](<vscale x 2 x s16>)
1004     ; RV64-NEXT: PseudoRET implicit $v8
1005     %0:_(<vscale x 2 x s16>) = COPY $v8
1006     $v8 = COPY %0(<vscale x 2 x s16>)
1007     PseudoRET implicit $v8
1011 name:            test_ret_nxv4f16
1012 legalized:         true
1013 tracksRegLiveness: true
1014 body:             |
1015   bb.1.entry:
1016     liveins: $v8
1017     ; RV32-LABEL: name: test_ret_nxv4f16
1018     ; RV32: liveins: $v8
1019     ; RV32-NEXT: {{  $}}
1020     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 4 x s16>) = COPY $v8
1021     ; RV32-NEXT: $v8 = COPY [[COPY]](<vscale x 4 x s16>)
1022     ; RV32-NEXT: PseudoRET implicit $v8
1023     ;
1024     ; RV64-LABEL: name: test_ret_nxv4f16
1025     ; RV64: liveins: $v8
1026     ; RV64-NEXT: {{  $}}
1027     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 4 x s16>) = COPY $v8
1028     ; RV64-NEXT: $v8 = COPY [[COPY]](<vscale x 4 x s16>)
1029     ; RV64-NEXT: PseudoRET implicit $v8
1030     %0:_(<vscale x 4 x s16>) = COPY $v8
1031     $v8 = COPY %0(<vscale x 4 x s16>)
1032     PseudoRET implicit $v8
1036 name:            test_ret_nxv8f16
1037 legalized:         true
1038 tracksRegLiveness: true
1039 body:             |
1040   bb.1.entry:
1041     liveins: $v8
1042     ; RV32-LABEL: name: test_ret_nxv8f16
1043     ; RV32: liveins: $v8
1044     ; RV32-NEXT: {{  $}}
1045     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 8 x s16>) = COPY $v8
1046     ; RV32-NEXT: $v8m2 = COPY [[COPY]](<vscale x 8 x s16>)
1047     ; RV32-NEXT: PseudoRET implicit $v8m2
1048     ;
1049     ; RV64-LABEL: name: test_ret_nxv8f16
1050     ; RV64: liveins: $v8
1051     ; RV64-NEXT: {{  $}}
1052     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 8 x s16>) = COPY $v8
1053     ; RV64-NEXT: $v8m2 = COPY [[COPY]](<vscale x 8 x s16>)
1054     ; RV64-NEXT: PseudoRET implicit $v8m2
1055     %0:_(<vscale x 8 x s16>) = COPY $v8
1056     $v8m2 = COPY %0(<vscale x 8 x s16>)
1057     PseudoRET implicit $v8m2
1061 name:            test_ret_nxv16f16
1062 legalized:         true
1063 tracksRegLiveness: true
1064 body:             |
1065   bb.1.entry:
1066     liveins: $v8
1067     ; RV32-LABEL: name: test_ret_nxv16f16
1068     ; RV32: liveins: $v8
1069     ; RV32-NEXT: {{  $}}
1070     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 16 x s16>) = COPY $v8
1071     ; RV32-NEXT: $v8m4 = COPY [[COPY]](<vscale x 16 x s16>)
1072     ; RV32-NEXT: PseudoRET implicit $v8m4
1073     ;
1074     ; RV64-LABEL: name: test_ret_nxv16f16
1075     ; RV64: liveins: $v8
1076     ; RV64-NEXT: {{  $}}
1077     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 16 x s16>) = COPY $v8
1078     ; RV64-NEXT: $v8m4 = COPY [[COPY]](<vscale x 16 x s16>)
1079     ; RV64-NEXT: PseudoRET implicit $v8m4
1080     %0:_(<vscale x 16 x s16>) = COPY $v8
1081     $v8m4 = COPY %0(<vscale x 16 x s16>)
1082     PseudoRET implicit $v8m4
1086 name:            test_ret_nxv32f16
1087 legalized:         true
1088 tracksRegLiveness: true
1089 body:             |
1090   bb.1.entry:
1091     liveins: $v8
1092     ; RV32-LABEL: name: test_ret_nxv32f16
1093     ; RV32: liveins: $v8
1094     ; RV32-NEXT: {{  $}}
1095     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 32 x s16>) = COPY $v8
1096     ; RV32-NEXT: $v8m8 = COPY [[COPY]](<vscale x 32 x s16>)
1097     ; RV32-NEXT: PseudoRET implicit $v8m8
1098     ;
1099     ; RV64-LABEL: name: test_ret_nxv32f16
1100     ; RV64: liveins: $v8
1101     ; RV64-NEXT: {{  $}}
1102     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 32 x s16>) = COPY $v8
1103     ; RV64-NEXT: $v8m8 = COPY [[COPY]](<vscale x 32 x s16>)
1104     ; RV64-NEXT: PseudoRET implicit $v8m8
1105     %0:_(<vscale x 32 x s16>) = COPY $v8
1106     $v8m8 = COPY %0(<vscale x 32 x s16>)
1107     PseudoRET implicit $v8m8
1111 name:            test_ret_nxv1b16
1112 legalized:         true
1113 tracksRegLiveness: true
1114 body:             |
1115   bb.1.entry:
1116     liveins: $v8
1117     ; RV32-LABEL: name: test_ret_nxv1b16
1118     ; RV32: liveins: $v8
1119     ; RV32-NEXT: {{  $}}
1120     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 1 x s16>) = COPY $v8
1121     ; RV32-NEXT: $v8 = COPY [[COPY]](<vscale x 1 x s16>)
1122     ; RV32-NEXT: PseudoRET implicit $v8
1123     ;
1124     ; RV64-LABEL: name: test_ret_nxv1b16
1125     ; RV64: liveins: $v8
1126     ; RV64-NEXT: {{  $}}
1127     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 1 x s16>) = COPY $v8
1128     ; RV64-NEXT: $v8 = COPY [[COPY]](<vscale x 1 x s16>)
1129     ; RV64-NEXT: PseudoRET implicit $v8
1130     %0:_(<vscale x 1 x s16>) = COPY $v8
1131     $v8 = COPY %0(<vscale x 1 x s16>)
1132     PseudoRET implicit $v8
1136 name:            test_ret_nxv2b16
1137 legalized:         true
1138 tracksRegLiveness: true
1139 body:             |
1140   bb.1.entry:
1141     liveins: $v8
1142     ; RV32-LABEL: name: test_ret_nxv2b16
1143     ; RV32: liveins: $v8
1144     ; RV32-NEXT: {{  $}}
1145     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 2 x s16>) = COPY $v8
1146     ; RV32-NEXT: $v8 = COPY [[COPY]](<vscale x 2 x s16>)
1147     ; RV32-NEXT: PseudoRET implicit $v8
1148     ;
1149     ; RV64-LABEL: name: test_ret_nxv2b16
1150     ; RV64: liveins: $v8
1151     ; RV64-NEXT: {{  $}}
1152     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 2 x s16>) = COPY $v8
1153     ; RV64-NEXT: $v8 = COPY [[COPY]](<vscale x 2 x s16>)
1154     ; RV64-NEXT: PseudoRET implicit $v8
1155     %0:_(<vscale x 2 x s16>) = COPY $v8
1156     $v8 = COPY %0(<vscale x 2 x s16>)
1157     PseudoRET implicit $v8
1161 name:            test_ret_nxv4b16
1162 legalized:         true
1163 tracksRegLiveness: true
1164 body:             |
1165   bb.1.entry:
1166     liveins: $v8
1167     ; RV32-LABEL: name: test_ret_nxv4b16
1168     ; RV32: liveins: $v8
1169     ; RV32-NEXT: {{  $}}
1170     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 4 x s16>) = COPY $v8
1171     ; RV32-NEXT: $v8 = COPY [[COPY]](<vscale x 4 x s16>)
1172     ; RV32-NEXT: PseudoRET implicit $v8
1173     ;
1174     ; RV64-LABEL: name: test_ret_nxv4b16
1175     ; RV64: liveins: $v8
1176     ; RV64-NEXT: {{  $}}
1177     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 4 x s16>) = COPY $v8
1178     ; RV64-NEXT: $v8 = COPY [[COPY]](<vscale x 4 x s16>)
1179     ; RV64-NEXT: PseudoRET implicit $v8
1180     %0:_(<vscale x 4 x s16>) = COPY $v8
1181     $v8 = COPY %0(<vscale x 4 x s16>)
1182     PseudoRET implicit $v8
1186 name:            test_ret_nxv8b16
1187 legalized:         true
1188 tracksRegLiveness: true
1189 body:             |
1190   bb.1.entry:
1191     liveins: $v8
1192     ; RV32-LABEL: name: test_ret_nxv8b16
1193     ; RV32: liveins: $v8
1194     ; RV32-NEXT: {{  $}}
1195     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 8 x s16>) = COPY $v8
1196     ; RV32-NEXT: $v8m2 = COPY [[COPY]](<vscale x 8 x s16>)
1197     ; RV32-NEXT: PseudoRET implicit $v8m2
1198     ;
1199     ; RV64-LABEL: name: test_ret_nxv8b16
1200     ; RV64: liveins: $v8
1201     ; RV64-NEXT: {{  $}}
1202     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 8 x s16>) = COPY $v8
1203     ; RV64-NEXT: $v8m2 = COPY [[COPY]](<vscale x 8 x s16>)
1204     ; RV64-NEXT: PseudoRET implicit $v8m2
1205     %0:_(<vscale x 8 x s16>) = COPY $v8
1206     $v8m2 = COPY %0(<vscale x 8 x s16>)
1207     PseudoRET implicit $v8m2
1211 name:            test_ret_nxv16b16
1212 legalized:         true
1213 tracksRegLiveness: true
1214 body:             |
1215   bb.1.entry:
1216     liveins: $v8
1217     ; RV32-LABEL: name: test_ret_nxv16b16
1218     ; RV32: liveins: $v8
1219     ; RV32-NEXT: {{  $}}
1220     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 16 x s16>) = COPY $v8
1221     ; RV32-NEXT: $v8m4 = COPY [[COPY]](<vscale x 16 x s16>)
1222     ; RV32-NEXT: PseudoRET implicit $v8m4
1223     ;
1224     ; RV64-LABEL: name: test_ret_nxv16b16
1225     ; RV64: liveins: $v8
1226     ; RV64-NEXT: {{  $}}
1227     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 16 x s16>) = COPY $v8
1228     ; RV64-NEXT: $v8m4 = COPY [[COPY]](<vscale x 16 x s16>)
1229     ; RV64-NEXT: PseudoRET implicit $v8m4
1230     %0:_(<vscale x 16 x s16>) = COPY $v8
1231     $v8m4 = COPY %0(<vscale x 16 x s16>)
1232     PseudoRET implicit $v8m4
1236 name:            test_ret_nxv32b16
1237 legalized:         true
1238 tracksRegLiveness: true
1239 body:             |
1240   bb.1.entry:
1241     liveins: $v8
1242     ; RV32-LABEL: name: test_ret_nxv32b16
1243     ; RV32: liveins: $v8
1244     ; RV32-NEXT: {{  $}}
1245     ; RV32-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 32 x s16>) = COPY $v8
1246     ; RV32-NEXT: $v8m8 = COPY [[COPY]](<vscale x 32 x s16>)
1247     ; RV32-NEXT: PseudoRET implicit $v8m8
1248     ;
1249     ; RV64-LABEL: name: test_ret_nxv32b16
1250     ; RV64: liveins: $v8
1251     ; RV64-NEXT: {{  $}}
1252     ; RV64-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 32 x s16>) = COPY $v8
1253     ; RV64-NEXT: $v8m8 = COPY [[COPY]](<vscale x 32 x s16>)
1254     ; RV64-NEXT: PseudoRET implicit $v8m8
1255     %0:_(<vscale x 32 x s16>) = COPY $v8
1256     $v8m8 = COPY %0(<vscale x 32 x s16>)
1257     PseudoRET implicit $v8m8