[SimplifyCFG] Always allow hoisting if all instructions match. (#97158)
[llvm-project.git] / llvm / test / CodeGen / RISCV / GlobalISel / regbankselect / rvv / anyext.mir
blob4ec6422716476c6ed3462175a70c9a66ea33cf6e
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=riscv32 -mattr=+m,+v -run-pass=regbankselect \
3 # RUN:   -simplify-mir -verify-machineinstrs %s \
4 # RUN:   -o - | FileCheck -check-prefix=RV32I %s
5 # RUN: llc -mtriple=riscv64 -mattr=+m,+v -run-pass=regbankselect \
6 # RUN:   -simplify-mir -verify-machineinstrs %s \
7 # RUN:   -o - | FileCheck -check-prefix=RV64I %s
9 ---
10 name:            anyext_nxv1i16_nxv1i8
11 legalized:       true
12 tracksRegLiveness: true
13 body:             |
14   bb.0.entry:
15     liveins: $v8
17     ; RV32I-LABEL: name: anyext_nxv1i16_nxv1i8
18     ; RV32I: liveins: $v8
19     ; RV32I-NEXT: {{  $}}
20     ; RV32I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 1 x s8>) = COPY $v8
21     ; RV32I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 1 x s16>) = G_ANYEXT [[COPY]](<vscale x 1 x s8>)
22     ; RV32I-NEXT: $v8 = COPY [[ANYEXT]](<vscale x 1 x s16>)
23     ; RV32I-NEXT: PseudoRET implicit $v8
24     ;
25     ; RV64I-LABEL: name: anyext_nxv1i16_nxv1i8
26     ; RV64I: liveins: $v8
27     ; RV64I-NEXT: {{  $}}
28     ; RV64I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 1 x s8>) = COPY $v8
29     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 1 x s16>) = G_ANYEXT [[COPY]](<vscale x 1 x s8>)
30     ; RV64I-NEXT: $v8 = COPY [[ANYEXT]](<vscale x 1 x s16>)
31     ; RV64I-NEXT: PseudoRET implicit $v8
32     %0:_(<vscale x 1 x s8>) = COPY $v8
33     %1:_(<vscale x 1 x s16>) = G_ANYEXT %0(<vscale x 1 x s8>)
34     $v8 = COPY %1(<vscale x 1 x s16>)
35     PseudoRET implicit $v8
37 ...
38 ---
39 name:            anyext_nxv1i32_nxv1i8
40 legalized:       true
41 tracksRegLiveness: true
42 body:             |
43   bb.0.entry:
44     liveins: $v8
46     ; RV32I-LABEL: name: anyext_nxv1i32_nxv1i8
47     ; RV32I: liveins: $v8
48     ; RV32I-NEXT: {{  $}}
49     ; RV32I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 1 x s8>) = COPY $v8
50     ; RV32I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 1 x s32>) = G_ANYEXT [[COPY]](<vscale x 1 x s8>)
51     ; RV32I-NEXT: $v8 = COPY [[ANYEXT]](<vscale x 1 x s32>)
52     ; RV32I-NEXT: PseudoRET implicit $v8
53     ;
54     ; RV64I-LABEL: name: anyext_nxv1i32_nxv1i8
55     ; RV64I: liveins: $v8
56     ; RV64I-NEXT: {{  $}}
57     ; RV64I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 1 x s8>) = COPY $v8
58     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 1 x s32>) = G_ANYEXT [[COPY]](<vscale x 1 x s8>)
59     ; RV64I-NEXT: $v8 = COPY [[ANYEXT]](<vscale x 1 x s32>)
60     ; RV64I-NEXT: PseudoRET implicit $v8
61     %0:_(<vscale x 1 x s8>) = COPY $v8
62     %1:_(<vscale x 1 x s32>) = G_ANYEXT %0(<vscale x 1 x s8>)
63     $v8 = COPY %1(<vscale x 1 x s32>)
64     PseudoRET implicit $v8
66 ...
67 ---
68 name:            anyext_nxv1i64_nxv1i8
69 legalized:       true
70 tracksRegLiveness: true
71 body:             |
72   bb.0.entry:
73     liveins: $v8
75     ; RV32I-LABEL: name: anyext_nxv1i64_nxv1i8
76     ; RV32I: liveins: $v8
77     ; RV32I-NEXT: {{  $}}
78     ; RV32I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 1 x s8>) = COPY $v8
79     ; RV32I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 1 x s64>) = G_ANYEXT [[COPY]](<vscale x 1 x s8>)
80     ; RV32I-NEXT: $v8 = COPY [[ANYEXT]](<vscale x 1 x s64>)
81     ; RV32I-NEXT: PseudoRET implicit $v8
82     ;
83     ; RV64I-LABEL: name: anyext_nxv1i64_nxv1i8
84     ; RV64I: liveins: $v8
85     ; RV64I-NEXT: {{  $}}
86     ; RV64I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 1 x s8>) = COPY $v8
87     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 1 x s64>) = G_ANYEXT [[COPY]](<vscale x 1 x s8>)
88     ; RV64I-NEXT: $v8 = COPY [[ANYEXT]](<vscale x 1 x s64>)
89     ; RV64I-NEXT: PseudoRET implicit $v8
90     %0:_(<vscale x 1 x s8>) = COPY $v8
91     %1:_(<vscale x 1 x s64>) = G_ANYEXT %0(<vscale x 1 x s8>)
92     $v8 = COPY %1(<vscale x 1 x s64>)
93     PseudoRET implicit $v8
95 ...
96 ---
97 name:            anyext_nxv2i16_nxv2i8
98 legalized:       true
99 tracksRegLiveness: true
100 body:             |
101   bb.0.entry:
102     liveins: $v8
104     ; RV32I-LABEL: name: anyext_nxv2i16_nxv2i8
105     ; RV32I: liveins: $v8
106     ; RV32I-NEXT: {{  $}}
107     ; RV32I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 2 x s8>) = COPY $v8
108     ; RV32I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 2 x s16>) = G_ANYEXT [[COPY]](<vscale x 2 x s8>)
109     ; RV32I-NEXT: $v8 = COPY [[ANYEXT]](<vscale x 2 x s16>)
110     ; RV32I-NEXT: PseudoRET implicit $v8
111     ;
112     ; RV64I-LABEL: name: anyext_nxv2i16_nxv2i8
113     ; RV64I: liveins: $v8
114     ; RV64I-NEXT: {{  $}}
115     ; RV64I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 2 x s8>) = COPY $v8
116     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 2 x s16>) = G_ANYEXT [[COPY]](<vscale x 2 x s8>)
117     ; RV64I-NEXT: $v8 = COPY [[ANYEXT]](<vscale x 2 x s16>)
118     ; RV64I-NEXT: PseudoRET implicit $v8
119     %0:_(<vscale x 2 x s8>) = COPY $v8
120     %1:_(<vscale x 2 x s16>) = G_ANYEXT %0(<vscale x 2 x s8>)
121     $v8 = COPY %1(<vscale x 2 x s16>)
122     PseudoRET implicit $v8
126 name:            anyext_nxv2i32_nxv2i8
127 legalized:       true
128 tracksRegLiveness: true
129 body:             |
130   bb.0.entry:
131     liveins: $v8
133     ; RV32I-LABEL: name: anyext_nxv2i32_nxv2i8
134     ; RV32I: liveins: $v8
135     ; RV32I-NEXT: {{  $}}
136     ; RV32I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 2 x s8>) = COPY $v8
137     ; RV32I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 2 x s32>) = G_ANYEXT [[COPY]](<vscale x 2 x s8>)
138     ; RV32I-NEXT: $v8 = COPY [[ANYEXT]](<vscale x 2 x s32>)
139     ; RV32I-NEXT: PseudoRET implicit $v8
140     ;
141     ; RV64I-LABEL: name: anyext_nxv2i32_nxv2i8
142     ; RV64I: liveins: $v8
143     ; RV64I-NEXT: {{  $}}
144     ; RV64I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 2 x s8>) = COPY $v8
145     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 2 x s32>) = G_ANYEXT [[COPY]](<vscale x 2 x s8>)
146     ; RV64I-NEXT: $v8 = COPY [[ANYEXT]](<vscale x 2 x s32>)
147     ; RV64I-NEXT: PseudoRET implicit $v8
148     %0:_(<vscale x 2 x s8>) = COPY $v8
149     %1:_(<vscale x 2 x s32>) = G_ANYEXT %0(<vscale x 2 x s8>)
150     $v8 = COPY %1(<vscale x 2 x s32>)
151     PseudoRET implicit $v8
155 name:            anyext_nxv2i64_nxv2i8
156 legalized:       true
157 tracksRegLiveness: true
158 body:             |
159   bb.0.entry:
160     liveins: $v8
162     ; RV32I-LABEL: name: anyext_nxv2i64_nxv2i8
163     ; RV32I: liveins: $v8
164     ; RV32I-NEXT: {{  $}}
165     ; RV32I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 2 x s8>) = COPY $v8
166     ; RV32I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 2 x s64>) = G_ANYEXT [[COPY]](<vscale x 2 x s8>)
167     ; RV32I-NEXT: $v8m2 = COPY [[ANYEXT]](<vscale x 2 x s64>)
168     ; RV32I-NEXT: PseudoRET implicit $v8m2
169     ;
170     ; RV64I-LABEL: name: anyext_nxv2i64_nxv2i8
171     ; RV64I: liveins: $v8
172     ; RV64I-NEXT: {{  $}}
173     ; RV64I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 2 x s8>) = COPY $v8
174     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 2 x s64>) = G_ANYEXT [[COPY]](<vscale x 2 x s8>)
175     ; RV64I-NEXT: $v8m2 = COPY [[ANYEXT]](<vscale x 2 x s64>)
176     ; RV64I-NEXT: PseudoRET implicit $v8m2
177     %0:_(<vscale x 2 x s8>) = COPY $v8
178     %1:_(<vscale x 2 x s64>) = G_ANYEXT %0(<vscale x 2 x s8>)
179     $v8m2 = COPY %1(<vscale x 2 x s64>)
180     PseudoRET implicit $v8m2
184 name:            anyext_nxv4i16_nxv4i8
185 legalized:       true
186 tracksRegLiveness: true
187 body:             |
188   bb.0.entry:
189     liveins: $v8
191     ; RV32I-LABEL: name: anyext_nxv4i16_nxv4i8
192     ; RV32I: liveins: $v8
193     ; RV32I-NEXT: {{  $}}
194     ; RV32I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 4 x s8>) = COPY $v8
195     ; RV32I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 4 x s16>) = G_ANYEXT [[COPY]](<vscale x 4 x s8>)
196     ; RV32I-NEXT: $v8 = COPY [[ANYEXT]](<vscale x 4 x s16>)
197     ; RV32I-NEXT: PseudoRET implicit $v8
198     ;
199     ; RV64I-LABEL: name: anyext_nxv4i16_nxv4i8
200     ; RV64I: liveins: $v8
201     ; RV64I-NEXT: {{  $}}
202     ; RV64I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 4 x s8>) = COPY $v8
203     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 4 x s16>) = G_ANYEXT [[COPY]](<vscale x 4 x s8>)
204     ; RV64I-NEXT: $v8 = COPY [[ANYEXT]](<vscale x 4 x s16>)
205     ; RV64I-NEXT: PseudoRET implicit $v8
206     %0:_(<vscale x 4 x s8>) = COPY $v8
207     %1:_(<vscale x 4 x s16>) = G_ANYEXT %0(<vscale x 4 x s8>)
208     $v8 = COPY %1(<vscale x 4 x s16>)
209     PseudoRET implicit $v8
213 name:            anyext_nxv4i32_nxv4i8
214 legalized:       true
215 tracksRegLiveness: true
216 body:             |
217   bb.0.entry:
218     liveins: $v8
220     ; RV32I-LABEL: name: anyext_nxv4i32_nxv4i8
221     ; RV32I: liveins: $v8
222     ; RV32I-NEXT: {{  $}}
223     ; RV32I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 4 x s8>) = COPY $v8
224     ; RV32I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 4 x s32>) = G_ANYEXT [[COPY]](<vscale x 4 x s8>)
225     ; RV32I-NEXT: $v8m2 = COPY [[ANYEXT]](<vscale x 4 x s32>)
226     ; RV32I-NEXT: PseudoRET implicit $v8m2
227     ;
228     ; RV64I-LABEL: name: anyext_nxv4i32_nxv4i8
229     ; RV64I: liveins: $v8
230     ; RV64I-NEXT: {{  $}}
231     ; RV64I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 4 x s8>) = COPY $v8
232     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 4 x s32>) = G_ANYEXT [[COPY]](<vscale x 4 x s8>)
233     ; RV64I-NEXT: $v8m2 = COPY [[ANYEXT]](<vscale x 4 x s32>)
234     ; RV64I-NEXT: PseudoRET implicit $v8m2
235     %0:_(<vscale x 4 x s8>) = COPY $v8
236     %1:_(<vscale x 4 x s32>) = G_ANYEXT %0(<vscale x 4 x s8>)
237     $v8m2 = COPY %1(<vscale x 4 x s32>)
238     PseudoRET implicit $v8m2
242 name:            anyext_nxv4i64_nxv4i8
243 legalized:       true
244 tracksRegLiveness: true
245 body:             |
246   bb.0.entry:
247     liveins: $v8
249     ; RV32I-LABEL: name: anyext_nxv4i64_nxv4i8
250     ; RV32I: liveins: $v8
251     ; RV32I-NEXT: {{  $}}
252     ; RV32I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 4 x s8>) = COPY $v8
253     ; RV32I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 4 x s64>) = G_ANYEXT [[COPY]](<vscale x 4 x s8>)
254     ; RV32I-NEXT: $v8m4 = COPY [[ANYEXT]](<vscale x 4 x s64>)
255     ; RV32I-NEXT: PseudoRET implicit $v8m4
256     ;
257     ; RV64I-LABEL: name: anyext_nxv4i64_nxv4i8
258     ; RV64I: liveins: $v8
259     ; RV64I-NEXT: {{  $}}
260     ; RV64I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 4 x s8>) = COPY $v8
261     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 4 x s64>) = G_ANYEXT [[COPY]](<vscale x 4 x s8>)
262     ; RV64I-NEXT: $v8m4 = COPY [[ANYEXT]](<vscale x 4 x s64>)
263     ; RV64I-NEXT: PseudoRET implicit $v8m4
264     %0:_(<vscale x 4 x s8>) = COPY $v8
265     %1:_(<vscale x 4 x s64>) = G_ANYEXT %0(<vscale x 4 x s8>)
266     $v8m4 = COPY %1(<vscale x 4 x s64>)
267     PseudoRET implicit $v8m4
271 name:            anyext_nxv8i16_nxv8i8
272 legalized:       true
273 tracksRegLiveness: true
274 body:             |
275   bb.0.entry:
276     liveins: $v8
278     ; RV32I-LABEL: name: anyext_nxv8i16_nxv8i8
279     ; RV32I: liveins: $v8
280     ; RV32I-NEXT: {{  $}}
281     ; RV32I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 8 x s8>) = COPY $v8
282     ; RV32I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 8 x s16>) = G_ANYEXT [[COPY]](<vscale x 8 x s8>)
283     ; RV32I-NEXT: $v8m2 = COPY [[ANYEXT]](<vscale x 8 x s16>)
284     ; RV32I-NEXT: PseudoRET implicit $v8m2
285     ;
286     ; RV64I-LABEL: name: anyext_nxv8i16_nxv8i8
287     ; RV64I: liveins: $v8
288     ; RV64I-NEXT: {{  $}}
289     ; RV64I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 8 x s8>) = COPY $v8
290     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 8 x s16>) = G_ANYEXT [[COPY]](<vscale x 8 x s8>)
291     ; RV64I-NEXT: $v8m2 = COPY [[ANYEXT]](<vscale x 8 x s16>)
292     ; RV64I-NEXT: PseudoRET implicit $v8m2
293     %0:_(<vscale x 8 x s8>) = COPY $v8
294     %1:_(<vscale x 8 x s16>) = G_ANYEXT %0(<vscale x 8 x s8>)
295     $v8m2 = COPY %1(<vscale x 8 x s16>)
296     PseudoRET implicit $v8m2
300 name:            anyext_nxv8i32_nxv8i8
301 legalized:       true
302 tracksRegLiveness: true
303 body:             |
304   bb.0.entry:
305     liveins: $v8
307     ; RV32I-LABEL: name: anyext_nxv8i32_nxv8i8
308     ; RV32I: liveins: $v8
309     ; RV32I-NEXT: {{  $}}
310     ; RV32I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 8 x s8>) = COPY $v8
311     ; RV32I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 8 x s32>) = G_ANYEXT [[COPY]](<vscale x 8 x s8>)
312     ; RV32I-NEXT: $v8m4 = COPY [[ANYEXT]](<vscale x 8 x s32>)
313     ; RV32I-NEXT: PseudoRET implicit $v8m4
314     ;
315     ; RV64I-LABEL: name: anyext_nxv8i32_nxv8i8
316     ; RV64I: liveins: $v8
317     ; RV64I-NEXT: {{  $}}
318     ; RV64I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 8 x s8>) = COPY $v8
319     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 8 x s32>) = G_ANYEXT [[COPY]](<vscale x 8 x s8>)
320     ; RV64I-NEXT: $v8m4 = COPY [[ANYEXT]](<vscale x 8 x s32>)
321     ; RV64I-NEXT: PseudoRET implicit $v8m4
322     %0:_(<vscale x 8 x s8>) = COPY $v8
323     %1:_(<vscale x 8 x s32>) = G_ANYEXT %0(<vscale x 8 x s8>)
324     $v8m4 = COPY %1(<vscale x 8 x s32>)
325     PseudoRET implicit $v8m4
329 name:            anyext_nxv8i64_nxv8i8
330 legalized:       true
331 tracksRegLiveness: true
332 body:             |
333   bb.0.entry:
334     liveins: $v8
336     ; RV32I-LABEL: name: anyext_nxv8i64_nxv8i8
337     ; RV32I: liveins: $v8
338     ; RV32I-NEXT: {{  $}}
339     ; RV32I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 8 x s8>) = COPY $v8
340     ; RV32I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 8 x s64>) = G_ANYEXT [[COPY]](<vscale x 8 x s8>)
341     ; RV32I-NEXT: $v8m8 = COPY [[ANYEXT]](<vscale x 8 x s64>)
342     ; RV32I-NEXT: PseudoRET implicit $v8m8
343     ;
344     ; RV64I-LABEL: name: anyext_nxv8i64_nxv8i8
345     ; RV64I: liveins: $v8
346     ; RV64I-NEXT: {{  $}}
347     ; RV64I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 8 x s8>) = COPY $v8
348     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 8 x s64>) = G_ANYEXT [[COPY]](<vscale x 8 x s8>)
349     ; RV64I-NEXT: $v8m8 = COPY [[ANYEXT]](<vscale x 8 x s64>)
350     ; RV64I-NEXT: PseudoRET implicit $v8m8
351     %0:_(<vscale x 8 x s8>) = COPY $v8
352     %1:_(<vscale x 8 x s64>) = G_ANYEXT %0(<vscale x 8 x s8>)
353     $v8m8 = COPY %1(<vscale x 8 x s64>)
354     PseudoRET implicit $v8m8
358 name:            anyext_nxv16i16_nxv16i8
359 legalized:       true
360 tracksRegLiveness: true
361 body:             |
362   bb.0.entry:
363     liveins: $v8
365     ; RV32I-LABEL: name: anyext_nxv16i16_nxv16i8
366     ; RV32I: liveins: $v8
367     ; RV32I-NEXT: {{  $}}
368     ; RV32I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 16 x s8>) = COPY $v8m2
369     ; RV32I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 16 x s16>) = G_ANYEXT [[COPY]](<vscale x 16 x s8>)
370     ; RV32I-NEXT: $v8m4 = COPY [[ANYEXT]](<vscale x 16 x s16>)
371     ; RV32I-NEXT: PseudoRET implicit $v8m4
372     ;
373     ; RV64I-LABEL: name: anyext_nxv16i16_nxv16i8
374     ; RV64I: liveins: $v8
375     ; RV64I-NEXT: {{  $}}
376     ; RV64I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 16 x s8>) = COPY $v8m2
377     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 16 x s16>) = G_ANYEXT [[COPY]](<vscale x 16 x s8>)
378     ; RV64I-NEXT: $v8m4 = COPY [[ANYEXT]](<vscale x 16 x s16>)
379     ; RV64I-NEXT: PseudoRET implicit $v8m4
380     %0:_(<vscale x 16 x s8>) = COPY $v8m2
381     %1:_(<vscale x 16 x s16>) = G_ANYEXT %0(<vscale x 16 x s8>)
382     $v8m4 = COPY %1(<vscale x 16 x s16>)
383     PseudoRET implicit $v8m4
387 name:            anyext_nxv16i32_nxv16i8
388 legalized:       true
389 tracksRegLiveness: true
390 body:             |
391   bb.0.entry:
392     liveins: $v8
394     ; RV32I-LABEL: name: anyext_nxv16i32_nxv16i8
395     ; RV32I: liveins: $v8
396     ; RV32I-NEXT: {{  $}}
397     ; RV32I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 16 x s8>) = COPY $v8m4
398     ; RV32I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 16 x s32>) = G_ANYEXT [[COPY]](<vscale x 16 x s8>)
399     ; RV32I-NEXT: $v8m8 = COPY [[ANYEXT]](<vscale x 16 x s32>)
400     ; RV32I-NEXT: PseudoRET implicit $v8m8
401     ;
402     ; RV64I-LABEL: name: anyext_nxv16i32_nxv16i8
403     ; RV64I: liveins: $v8
404     ; RV64I-NEXT: {{  $}}
405     ; RV64I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 16 x s8>) = COPY $v8m4
406     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 16 x s32>) = G_ANYEXT [[COPY]](<vscale x 16 x s8>)
407     ; RV64I-NEXT: $v8m8 = COPY [[ANYEXT]](<vscale x 16 x s32>)
408     ; RV64I-NEXT: PseudoRET implicit $v8m8
409     %0:_(<vscale x 16 x s8>) = COPY $v8m4
410     %1:_(<vscale x 16 x s32>) = G_ANYEXT %0(<vscale x 16 x s8>)
411     $v8m8 = COPY %1(<vscale x 16 x s32>)
412     PseudoRET implicit $v8m8
416 name:            anyext_nxv32i16_nxv32i8
417 legalized:       true
418 tracksRegLiveness: true
419 body:             |
420   bb.0.entry:
421     liveins: $v8
423     ; RV32I-LABEL: name: anyext_nxv32i16_nxv32i8
424     ; RV32I: liveins: $v8
425     ; RV32I-NEXT: {{  $}}
426     ; RV32I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 32 x s8>) = COPY $v8m4
427     ; RV32I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 32 x s16>) = G_ANYEXT [[COPY]](<vscale x 32 x s8>)
428     ; RV32I-NEXT: $v8m8 = COPY [[ANYEXT]](<vscale x 32 x s16>)
429     ; RV32I-NEXT: PseudoRET implicit $v8m8
430     ;
431     ; RV64I-LABEL: name: anyext_nxv32i16_nxv32i8
432     ; RV64I: liveins: $v8
433     ; RV64I-NEXT: {{  $}}
434     ; RV64I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 32 x s8>) = COPY $v8m4
435     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 32 x s16>) = G_ANYEXT [[COPY]](<vscale x 32 x s8>)
436     ; RV64I-NEXT: $v8m8 = COPY [[ANYEXT]](<vscale x 32 x s16>)
437     ; RV64I-NEXT: PseudoRET implicit $v8m8
438     %0:_(<vscale x 32 x s8>) = COPY $v8m4
439     %1:_(<vscale x 32 x s16>) = G_ANYEXT %0(<vscale x 32 x s8>)
440     $v8m8 = COPY %1(<vscale x 32 x s16>)
441     PseudoRET implicit $v8m8
445 name:            anyext_nxv1i32_nxv1i16
446 legalized:       true
447 tracksRegLiveness: true
448 body:             |
449   bb.0.entry:
450     liveins: $v8
452     ; RV32I-LABEL: name: anyext_nxv1i32_nxv1i16
453     ; RV32I: liveins: $v8
454     ; RV32I-NEXT: {{  $}}
455     ; RV32I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 1 x s16>) = COPY $v8
456     ; RV32I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 1 x s32>) = G_ANYEXT [[COPY]](<vscale x 1 x s16>)
457     ; RV32I-NEXT: $v8 = COPY [[ANYEXT]](<vscale x 1 x s32>)
458     ; RV32I-NEXT: PseudoRET implicit $v8
459     ;
460     ; RV64I-LABEL: name: anyext_nxv1i32_nxv1i16
461     ; RV64I: liveins: $v8
462     ; RV64I-NEXT: {{  $}}
463     ; RV64I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 1 x s16>) = COPY $v8
464     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 1 x s32>) = G_ANYEXT [[COPY]](<vscale x 1 x s16>)
465     ; RV64I-NEXT: $v8 = COPY [[ANYEXT]](<vscale x 1 x s32>)
466     ; RV64I-NEXT: PseudoRET implicit $v8
467     %0:_(<vscale x 1 x s16>) = COPY $v8
468     %1:_(<vscale x 1 x s32>) = G_ANYEXT %0(<vscale x 1 x s16>)
469     $v8 = COPY %1(<vscale x 1 x s32>)
470     PseudoRET implicit $v8
474 name:            anyext_nxv1i64_nxv1i16
475 legalized:       true
476 tracksRegLiveness: true
477 body:             |
478   bb.0.entry:
479     liveins: $v8
481     ; RV32I-LABEL: name: anyext_nxv1i64_nxv1i16
482     ; RV32I: liveins: $v8
483     ; RV32I-NEXT: {{  $}}
484     ; RV32I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 1 x s16>) = COPY $v8
485     ; RV32I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 1 x s64>) = G_ANYEXT [[COPY]](<vscale x 1 x s16>)
486     ; RV32I-NEXT: $v8 = COPY [[ANYEXT]](<vscale x 1 x s64>)
487     ; RV32I-NEXT: PseudoRET implicit $v8
488     ;
489     ; RV64I-LABEL: name: anyext_nxv1i64_nxv1i16
490     ; RV64I: liveins: $v8
491     ; RV64I-NEXT: {{  $}}
492     ; RV64I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 1 x s16>) = COPY $v8
493     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 1 x s64>) = G_ANYEXT [[COPY]](<vscale x 1 x s16>)
494     ; RV64I-NEXT: $v8 = COPY [[ANYEXT]](<vscale x 1 x s64>)
495     ; RV64I-NEXT: PseudoRET implicit $v8
496     %0:_(<vscale x 1 x s16>) = COPY $v8
497     %1:_(<vscale x 1 x s64>) = G_ANYEXT %0(<vscale x 1 x s16>)
498     $v8 = COPY %1(<vscale x 1 x s64>)
499     PseudoRET implicit $v8
503 name:            anyext_nxv2i32_nxv2i16
504 legalized:       true
505 tracksRegLiveness: true
506 body:             |
507   bb.0.entry:
508     liveins: $v8
510     ; RV32I-LABEL: name: anyext_nxv2i32_nxv2i16
511     ; RV32I: liveins: $v8
512     ; RV32I-NEXT: {{  $}}
513     ; RV32I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 2 x s16>) = COPY $v8
514     ; RV32I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 2 x s32>) = G_ANYEXT [[COPY]](<vscale x 2 x s16>)
515     ; RV32I-NEXT: $v8 = COPY [[ANYEXT]](<vscale x 2 x s32>)
516     ; RV32I-NEXT: PseudoRET implicit $v8
517     ;
518     ; RV64I-LABEL: name: anyext_nxv2i32_nxv2i16
519     ; RV64I: liveins: $v8
520     ; RV64I-NEXT: {{  $}}
521     ; RV64I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 2 x s16>) = COPY $v8
522     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 2 x s32>) = G_ANYEXT [[COPY]](<vscale x 2 x s16>)
523     ; RV64I-NEXT: $v8 = COPY [[ANYEXT]](<vscale x 2 x s32>)
524     ; RV64I-NEXT: PseudoRET implicit $v8
525     %0:_(<vscale x 2 x s16>) = COPY $v8
526     %1:_(<vscale x 2 x s32>) = G_ANYEXT %0(<vscale x 2 x s16>)
527     $v8 = COPY %1(<vscale x 2 x s32>)
528     PseudoRET implicit $v8
532 name:            anyext_nxv2i64_nxv2i16
533 legalized:       true
534 tracksRegLiveness: true
535 body:             |
536   bb.0.entry:
537     liveins: $v8
539     ; RV32I-LABEL: name: anyext_nxv2i64_nxv2i16
540     ; RV32I: liveins: $v8
541     ; RV32I-NEXT: {{  $}}
542     ; RV32I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 2 x s16>) = COPY $v8
543     ; RV32I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 2 x s64>) = G_ANYEXT [[COPY]](<vscale x 2 x s16>)
544     ; RV32I-NEXT: $v8m2 = COPY [[ANYEXT]](<vscale x 2 x s64>)
545     ; RV32I-NEXT: PseudoRET implicit $v8m2
546     ;
547     ; RV64I-LABEL: name: anyext_nxv2i64_nxv2i16
548     ; RV64I: liveins: $v8
549     ; RV64I-NEXT: {{  $}}
550     ; RV64I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 2 x s16>) = COPY $v8
551     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 2 x s64>) = G_ANYEXT [[COPY]](<vscale x 2 x s16>)
552     ; RV64I-NEXT: $v8m2 = COPY [[ANYEXT]](<vscale x 2 x s64>)
553     ; RV64I-NEXT: PseudoRET implicit $v8m2
554     %0:_(<vscale x 2 x s16>) = COPY $v8
555     %1:_(<vscale x 2 x s64>) = G_ANYEXT %0(<vscale x 2 x s16>)
556     $v8m2 = COPY %1(<vscale x 2 x s64>)
557     PseudoRET implicit $v8m2
561 name:            anyext_nxv4i32_nxv4i16
562 legalized:       true
563 tracksRegLiveness: true
564 body:             |
565   bb.0.entry:
566     liveins: $v8
568     ; RV32I-LABEL: name: anyext_nxv4i32_nxv4i16
569     ; RV32I: liveins: $v8
570     ; RV32I-NEXT: {{  $}}
571     ; RV32I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 4 x s16>) = COPY $v8
572     ; RV32I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 4 x s32>) = G_ANYEXT [[COPY]](<vscale x 4 x s16>)
573     ; RV32I-NEXT: $v8m2 = COPY [[ANYEXT]](<vscale x 4 x s32>)
574     ; RV32I-NEXT: PseudoRET implicit $v8m2
575     ;
576     ; RV64I-LABEL: name: anyext_nxv4i32_nxv4i16
577     ; RV64I: liveins: $v8
578     ; RV64I-NEXT: {{  $}}
579     ; RV64I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 4 x s16>) = COPY $v8
580     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 4 x s32>) = G_ANYEXT [[COPY]](<vscale x 4 x s16>)
581     ; RV64I-NEXT: $v8m2 = COPY [[ANYEXT]](<vscale x 4 x s32>)
582     ; RV64I-NEXT: PseudoRET implicit $v8m2
583     %0:_(<vscale x 4 x s16>) = COPY $v8
584     %1:_(<vscale x 4 x s32>) = G_ANYEXT %0(<vscale x 4 x s16>)
585     $v8m2 = COPY %1(<vscale x 4 x s32>)
586     PseudoRET implicit $v8m2
590 name:            anyext_nxv4i64_nxv4i16
591 legalized:       true
592 tracksRegLiveness: true
593 body:             |
594   bb.0.entry:
595     liveins: $v8
597     ; RV32I-LABEL: name: anyext_nxv4i64_nxv4i16
598     ; RV32I: liveins: $v8
599     ; RV32I-NEXT: {{  $}}
600     ; RV32I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 4 x s16>) = COPY $v8
601     ; RV32I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 4 x s64>) = G_ANYEXT [[COPY]](<vscale x 4 x s16>)
602     ; RV32I-NEXT: $v8m4 = COPY [[ANYEXT]](<vscale x 4 x s64>)
603     ; RV32I-NEXT: PseudoRET implicit $v8m4
604     ;
605     ; RV64I-LABEL: name: anyext_nxv4i64_nxv4i16
606     ; RV64I: liveins: $v8
607     ; RV64I-NEXT: {{  $}}
608     ; RV64I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 4 x s16>) = COPY $v8
609     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 4 x s64>) = G_ANYEXT [[COPY]](<vscale x 4 x s16>)
610     ; RV64I-NEXT: $v8m4 = COPY [[ANYEXT]](<vscale x 4 x s64>)
611     ; RV64I-NEXT: PseudoRET implicit $v8m4
612     %0:_(<vscale x 4 x s16>) = COPY $v8
613     %1:_(<vscale x 4 x s64>) = G_ANYEXT %0(<vscale x 4 x s16>)
614     $v8m4 = COPY %1(<vscale x 4 x s64>)
615     PseudoRET implicit $v8m4
619 name:            anyext_nxv8i32_nxv8i16
620 legalized:       true
621 tracksRegLiveness: true
622 body:             |
623   bb.0.entry:
624     liveins: $v8
626     ; RV32I-LABEL: name: anyext_nxv8i32_nxv8i16
627     ; RV32I: liveins: $v8
628     ; RV32I-NEXT: {{  $}}
629     ; RV32I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 8 x s16>) = COPY $v8m2
630     ; RV32I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 8 x s32>) = G_ANYEXT [[COPY]](<vscale x 8 x s16>)
631     ; RV32I-NEXT: $v8m4 = COPY [[ANYEXT]](<vscale x 8 x s32>)
632     ; RV32I-NEXT: PseudoRET implicit $v8m4
633     ;
634     ; RV64I-LABEL: name: anyext_nxv8i32_nxv8i16
635     ; RV64I: liveins: $v8
636     ; RV64I-NEXT: {{  $}}
637     ; RV64I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 8 x s16>) = COPY $v8m2
638     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 8 x s32>) = G_ANYEXT [[COPY]](<vscale x 8 x s16>)
639     ; RV64I-NEXT: $v8m4 = COPY [[ANYEXT]](<vscale x 8 x s32>)
640     ; RV64I-NEXT: PseudoRET implicit $v8m4
641     %0:_(<vscale x 8 x s16>) = COPY $v8m2
642     %1:_(<vscale x 8 x s32>) = G_ANYEXT %0(<vscale x 8 x s16>)
643     $v8m4 = COPY %1(<vscale x 8 x s32>)
644     PseudoRET implicit $v8m4
648 name:            anyext_nxv8i64_nxv8i16
649 legalized:       true
650 tracksRegLiveness: true
651 body:             |
652   bb.0.entry:
653     liveins: $v8
655     ; RV32I-LABEL: name: anyext_nxv8i64_nxv8i16
656     ; RV32I: liveins: $v8
657     ; RV32I-NEXT: {{  $}}
658     ; RV32I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 8 x s16>) = COPY $v8m2
659     ; RV32I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 8 x s64>) = G_ANYEXT [[COPY]](<vscale x 8 x s16>)
660     ; RV32I-NEXT: $v8m8 = COPY [[ANYEXT]](<vscale x 8 x s64>)
661     ; RV32I-NEXT: PseudoRET implicit $v8m8
662     ;
663     ; RV64I-LABEL: name: anyext_nxv8i64_nxv8i16
664     ; RV64I: liveins: $v8
665     ; RV64I-NEXT: {{  $}}
666     ; RV64I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 8 x s16>) = COPY $v8m2
667     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 8 x s64>) = G_ANYEXT [[COPY]](<vscale x 8 x s16>)
668     ; RV64I-NEXT: $v8m8 = COPY [[ANYEXT]](<vscale x 8 x s64>)
669     ; RV64I-NEXT: PseudoRET implicit $v8m8
670     %0:_(<vscale x 8 x s16>) = COPY $v8m2
671     %1:_(<vscale x 8 x s64>) = G_ANYEXT %0(<vscale x 8 x s16>)
672     $v8m8 = COPY %1(<vscale x 8 x s64>)
673     PseudoRET implicit $v8m8
677 name:            anyext_nxv16i32_nxv16i16
678 legalized:       true
679 tracksRegLiveness: true
680 body:             |
681   bb.0.entry:
682     liveins: $v8
684     ; RV32I-LABEL: name: anyext_nxv16i32_nxv16i16
685     ; RV32I: liveins: $v8
686     ; RV32I-NEXT: {{  $}}
687     ; RV32I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 16 x s16>) = COPY $v8m4
688     ; RV32I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 16 x s32>) = G_ANYEXT [[COPY]](<vscale x 16 x s16>)
689     ; RV32I-NEXT: $v8m8 = COPY [[ANYEXT]](<vscale x 16 x s32>)
690     ; RV32I-NEXT: PseudoRET implicit $v8m8
691     ;
692     ; RV64I-LABEL: name: anyext_nxv16i32_nxv16i16
693     ; RV64I: liveins: $v8
694     ; RV64I-NEXT: {{  $}}
695     ; RV64I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 16 x s16>) = COPY $v8m4
696     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 16 x s32>) = G_ANYEXT [[COPY]](<vscale x 16 x s16>)
697     ; RV64I-NEXT: $v8m8 = COPY [[ANYEXT]](<vscale x 16 x s32>)
698     ; RV64I-NEXT: PseudoRET implicit $v8m8
699     %0:_(<vscale x 16 x s16>) = COPY $v8m4
700     %1:_(<vscale x 16 x s32>) = G_ANYEXT %0(<vscale x 16 x s16>)
701     $v8m8 = COPY %1(<vscale x 16 x s32>)
702     PseudoRET implicit $v8m8
706 name:            anyext_nxv1i64_nxv1i32
707 legalized:       true
708 tracksRegLiveness: true
709 body:             |
710   bb.0.entry:
711     liveins: $v8
713     ; RV32I-LABEL: name: anyext_nxv1i64_nxv1i32
714     ; RV32I: liveins: $v8
715     ; RV32I-NEXT: {{  $}}
716     ; RV32I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 1 x s32>) = COPY $v8
717     ; RV32I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 1 x s64>) = G_ANYEXT [[COPY]](<vscale x 1 x s32>)
718     ; RV32I-NEXT: $v8 = COPY [[ANYEXT]](<vscale x 1 x s64>)
719     ; RV32I-NEXT: PseudoRET implicit $v8
720     ;
721     ; RV64I-LABEL: name: anyext_nxv1i64_nxv1i32
722     ; RV64I: liveins: $v8
723     ; RV64I-NEXT: {{  $}}
724     ; RV64I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 1 x s32>) = COPY $v8
725     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 1 x s64>) = G_ANYEXT [[COPY]](<vscale x 1 x s32>)
726     ; RV64I-NEXT: $v8 = COPY [[ANYEXT]](<vscale x 1 x s64>)
727     ; RV64I-NEXT: PseudoRET implicit $v8
728     %0:_(<vscale x 1 x s32>) = COPY $v8
729     %1:_(<vscale x 1 x s64>) = G_ANYEXT %0(<vscale x 1 x s32>)
730     $v8 = COPY %1(<vscale x 1 x s64>)
731     PseudoRET implicit $v8
735 name:            anyext_nxv2i64_nxv2i32
736 legalized:       true
737 tracksRegLiveness: true
738 body:             |
739   bb.0.entry:
740     liveins: $v8
742     ; RV32I-LABEL: name: anyext_nxv2i64_nxv2i32
743     ; RV32I: liveins: $v8
744     ; RV32I-NEXT: {{  $}}
745     ; RV32I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 2 x s32>) = COPY $v8
746     ; RV32I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 2 x s64>) = G_ANYEXT [[COPY]](<vscale x 2 x s32>)
747     ; RV32I-NEXT: $v8m2 = COPY [[ANYEXT]](<vscale x 2 x s64>)
748     ; RV32I-NEXT: PseudoRET implicit $v8m2
749     ;
750     ; RV64I-LABEL: name: anyext_nxv2i64_nxv2i32
751     ; RV64I: liveins: $v8
752     ; RV64I-NEXT: {{  $}}
753     ; RV64I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 2 x s32>) = COPY $v8
754     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 2 x s64>) = G_ANYEXT [[COPY]](<vscale x 2 x s32>)
755     ; RV64I-NEXT: $v8m2 = COPY [[ANYEXT]](<vscale x 2 x s64>)
756     ; RV64I-NEXT: PseudoRET implicit $v8m2
757     %0:_(<vscale x 2 x s32>) = COPY $v8
758     %1:_(<vscale x 2 x s64>) = G_ANYEXT %0(<vscale x 2 x s32>)
759     $v8m2 = COPY %1(<vscale x 2 x s64>)
760     PseudoRET implicit $v8m2
764 name:            anyext_nxv4i64_nxv4i32
765 legalized:       true
766 tracksRegLiveness: true
767 body:             |
768   bb.0.entry:
769     liveins: $v8
771     ; RV32I-LABEL: name: anyext_nxv4i64_nxv4i32
772     ; RV32I: liveins: $v8
773     ; RV32I-NEXT: {{  $}}
774     ; RV32I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 4 x s32>) = COPY $v8m2
775     ; RV32I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 4 x s64>) = G_ANYEXT [[COPY]](<vscale x 4 x s32>)
776     ; RV32I-NEXT: $v8m4 = COPY [[ANYEXT]](<vscale x 4 x s64>)
777     ; RV32I-NEXT: PseudoRET implicit $v8m4
778     ;
779     ; RV64I-LABEL: name: anyext_nxv4i64_nxv4i32
780     ; RV64I: liveins: $v8
781     ; RV64I-NEXT: {{  $}}
782     ; RV64I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 4 x s32>) = COPY $v8m2
783     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 4 x s64>) = G_ANYEXT [[COPY]](<vscale x 4 x s32>)
784     ; RV64I-NEXT: $v8m4 = COPY [[ANYEXT]](<vscale x 4 x s64>)
785     ; RV64I-NEXT: PseudoRET implicit $v8m4
786     %0:_(<vscale x 4 x s32>) = COPY $v8m2
787     %1:_(<vscale x 4 x s64>) = G_ANYEXT %0(<vscale x 4 x s32>)
788     $v8m4 = COPY %1(<vscale x 4 x s64>)
789     PseudoRET implicit $v8m4
793 name:            anyext_nxv8i64_nxv8i32
794 legalized:       true
795 tracksRegLiveness: true
796 body:             |
797   bb.0.entry:
798     liveins: $v8
800     ; RV32I-LABEL: name: anyext_nxv8i64_nxv8i32
801     ; RV32I: liveins: $v8
802     ; RV32I-NEXT: {{  $}}
803     ; RV32I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 8 x s32>) = COPY $v8m4
804     ; RV32I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 8 x s64>) = G_ANYEXT [[COPY]](<vscale x 8 x s32>)
805     ; RV32I-NEXT: $v8m8 = COPY [[ANYEXT]](<vscale x 8 x s64>)
806     ; RV32I-NEXT: PseudoRET implicit $v8m8
807     ;
808     ; RV64I-LABEL: name: anyext_nxv8i64_nxv8i32
809     ; RV64I: liveins: $v8
810     ; RV64I-NEXT: {{  $}}
811     ; RV64I-NEXT: [[COPY:%[0-9]+]]:vrb(<vscale x 8 x s32>) = COPY $v8m4
812     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:vrb(<vscale x 8 x s64>) = G_ANYEXT [[COPY]](<vscale x 8 x s32>)
813     ; RV64I-NEXT: $v8m8 = COPY [[ANYEXT]](<vscale x 8 x s64>)
814     ; RV64I-NEXT: PseudoRET implicit $v8m8
815     %0:_(<vscale x 8 x s32>) = COPY $v8m4
816     %1:_(<vscale x 8 x s64>) = G_ANYEXT %0(<vscale x 8 x s32>)
817     $v8m8 = COPY %1(<vscale x 8 x s64>)
818     PseudoRET implicit $v8m8