Re-land [openmp] Fix warnings when building on Windows with latest MSVC or Clang...
[llvm-project.git] / llvm / test / CodeGen / RISCV / GlobalISel / irtranslator / vec-ret.ll
blobeec9969063c87a5db8568ae0f4e65fa73b3a9bc9
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 <vscale x 1 x i8> @test_ret_nxv1i8() {
12   ; RV32-LABEL: name: test_ret_nxv1i8
13   ; RV32: bb.1.entry:
14   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s8>) = G_IMPLICIT_DEF
15   ; RV32-NEXT:   $v8 = COPY [[DEF]](<vscale x 1 x s8>)
16   ; RV32-NEXT:   PseudoRET implicit $v8
17   ;
18   ; RV64-LABEL: name: test_ret_nxv1i8
19   ; RV64: bb.1.entry:
20   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s8>) = G_IMPLICIT_DEF
21   ; RV64-NEXT:   $v8 = COPY [[DEF]](<vscale x 1 x s8>)
22   ; RV64-NEXT:   PseudoRET implicit $v8
23 entry:
24   ret <vscale x 1 x i8> undef
27 define <vscale x 2 x i8> @test_ret_nxv2i8() {
28   ; RV32-LABEL: name: test_ret_nxv2i8
29   ; RV32: bb.1.entry:
30   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s8>) = G_IMPLICIT_DEF
31   ; RV32-NEXT:   $v8 = COPY [[DEF]](<vscale x 2 x s8>)
32   ; RV32-NEXT:   PseudoRET implicit $v8
33   ;
34   ; RV64-LABEL: name: test_ret_nxv2i8
35   ; RV64: bb.1.entry:
36   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s8>) = G_IMPLICIT_DEF
37   ; RV64-NEXT:   $v8 = COPY [[DEF]](<vscale x 2 x s8>)
38   ; RV64-NEXT:   PseudoRET implicit $v8
39 entry:
40   ret <vscale x 2 x i8> undef
43 define <vscale x 4 x i8> @test_ret_nxv4i8() {
44   ; RV32-LABEL: name: test_ret_nxv4i8
45   ; RV32: bb.1.entry:
46   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s8>) = G_IMPLICIT_DEF
47   ; RV32-NEXT:   $v8 = COPY [[DEF]](<vscale x 4 x s8>)
48   ; RV32-NEXT:   PseudoRET implicit $v8
49   ;
50   ; RV64-LABEL: name: test_ret_nxv4i8
51   ; RV64: bb.1.entry:
52   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s8>) = G_IMPLICIT_DEF
53   ; RV64-NEXT:   $v8 = COPY [[DEF]](<vscale x 4 x s8>)
54   ; RV64-NEXT:   PseudoRET implicit $v8
55 entry:
56   ret <vscale x 4 x i8> undef
59 define <vscale x 8 x i8> @test_ret_nxv8i8() {
60   ; RV32-LABEL: name: test_ret_nxv8i8
61   ; RV32: bb.1.entry:
62   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s8>) = G_IMPLICIT_DEF
63   ; RV32-NEXT:   $v8 = COPY [[DEF]](<vscale x 8 x s8>)
64   ; RV32-NEXT:   PseudoRET implicit $v8
65   ;
66   ; RV64-LABEL: name: test_ret_nxv8i8
67   ; RV64: bb.1.entry:
68   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s8>) = G_IMPLICIT_DEF
69   ; RV64-NEXT:   $v8 = COPY [[DEF]](<vscale x 8 x s8>)
70   ; RV64-NEXT:   PseudoRET implicit $v8
71 entry:
72   ret <vscale x 8 x i8> undef
75 define <vscale x 16 x i8> @test_ret_nxv16i8() {
76   ; RV32-LABEL: name: test_ret_nxv16i8
77   ; RV32: bb.1.entry:
78   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s8>) = G_IMPLICIT_DEF
79   ; RV32-NEXT:   $v8m2 = COPY [[DEF]](<vscale x 16 x s8>)
80   ; RV32-NEXT:   PseudoRET implicit $v8m2
81   ;
82   ; RV64-LABEL: name: test_ret_nxv16i8
83   ; RV64: bb.1.entry:
84   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s8>) = G_IMPLICIT_DEF
85   ; RV64-NEXT:   $v8m2 = COPY [[DEF]](<vscale x 16 x s8>)
86   ; RV64-NEXT:   PseudoRET implicit $v8m2
87 entry:
88   ret <vscale x 16 x i8> undef
91 define <vscale x 32 x i8> @test_ret_nxv32i8() {
92   ; RV32-LABEL: name: test_ret_nxv32i8
93   ; RV32: bb.1.entry:
94   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 32 x s8>) = G_IMPLICIT_DEF
95   ; RV32-NEXT:   $v8m4 = COPY [[DEF]](<vscale x 32 x s8>)
96   ; RV32-NEXT:   PseudoRET implicit $v8m4
97   ;
98   ; RV64-LABEL: name: test_ret_nxv32i8
99   ; RV64: bb.1.entry:
100   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 32 x s8>) = G_IMPLICIT_DEF
101   ; RV64-NEXT:   $v8m4 = COPY [[DEF]](<vscale x 32 x s8>)
102   ; RV64-NEXT:   PseudoRET implicit $v8m4
103 entry:
104   ret <vscale x 32 x i8> undef
107 define <vscale x 64 x i8> @test_ret_nxv64i8() {
108   ; RV32-LABEL: name: test_ret_nxv64i8
109   ; RV32: bb.1.entry:
110   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 64 x s8>) = G_IMPLICIT_DEF
111   ; RV32-NEXT:   $v8m8 = COPY [[DEF]](<vscale x 64 x s8>)
112   ; RV32-NEXT:   PseudoRET implicit $v8m8
113   ;
114   ; RV64-LABEL: name: test_ret_nxv64i8
115   ; RV64: bb.1.entry:
116   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 64 x s8>) = G_IMPLICIT_DEF
117   ; RV64-NEXT:   $v8m8 = COPY [[DEF]](<vscale x 64 x s8>)
118   ; RV64-NEXT:   PseudoRET implicit $v8m8
119 entry:
120   ret <vscale x 64 x i8> undef
123 define <vscale x 1 x i16> @test_ret_nxv1i16() {
124   ; RV32-LABEL: name: test_ret_nxv1i16
125   ; RV32: bb.1.entry:
126   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s16>) = G_IMPLICIT_DEF
127   ; RV32-NEXT:   $v8 = COPY [[DEF]](<vscale x 1 x s16>)
128   ; RV32-NEXT:   PseudoRET implicit $v8
129   ;
130   ; RV64-LABEL: name: test_ret_nxv1i16
131   ; RV64: bb.1.entry:
132   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s16>) = G_IMPLICIT_DEF
133   ; RV64-NEXT:   $v8 = COPY [[DEF]](<vscale x 1 x s16>)
134   ; RV64-NEXT:   PseudoRET implicit $v8
135 entry:
136   ret <vscale x 1 x i16> undef
139 define <vscale x 2 x i16> @test_ret_nxv2i16() {
140   ; RV32-LABEL: name: test_ret_nxv2i16
141   ; RV32: bb.1.entry:
142   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s16>) = G_IMPLICIT_DEF
143   ; RV32-NEXT:   $v8 = COPY [[DEF]](<vscale x 2 x s16>)
144   ; RV32-NEXT:   PseudoRET implicit $v8
145   ;
146   ; RV64-LABEL: name: test_ret_nxv2i16
147   ; RV64: bb.1.entry:
148   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s16>) = G_IMPLICIT_DEF
149   ; RV64-NEXT:   $v8 = COPY [[DEF]](<vscale x 2 x s16>)
150   ; RV64-NEXT:   PseudoRET implicit $v8
151 entry:
152   ret <vscale x 2 x i16> undef
155 define <vscale x 4 x i16> @test_ret_nxv4i16() {
156   ; RV32-LABEL: name: test_ret_nxv4i16
157   ; RV32: bb.1.entry:
158   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s16>) = G_IMPLICIT_DEF
159   ; RV32-NEXT:   $v8 = COPY [[DEF]](<vscale x 4 x s16>)
160   ; RV32-NEXT:   PseudoRET implicit $v8
161   ;
162   ; RV64-LABEL: name: test_ret_nxv4i16
163   ; RV64: bb.1.entry:
164   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s16>) = G_IMPLICIT_DEF
165   ; RV64-NEXT:   $v8 = COPY [[DEF]](<vscale x 4 x s16>)
166   ; RV64-NEXT:   PseudoRET implicit $v8
167 entry:
168   ret <vscale x 4 x i16> undef
171 define <vscale x 8 x i16> @test_ret_nxv8i16() {
172   ; RV32-LABEL: name: test_ret_nxv8i16
173   ; RV32: bb.1.entry:
174   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s16>) = G_IMPLICIT_DEF
175   ; RV32-NEXT:   $v8m2 = COPY [[DEF]](<vscale x 8 x s16>)
176   ; RV32-NEXT:   PseudoRET implicit $v8m2
177   ;
178   ; RV64-LABEL: name: test_ret_nxv8i16
179   ; RV64: bb.1.entry:
180   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s16>) = G_IMPLICIT_DEF
181   ; RV64-NEXT:   $v8m2 = COPY [[DEF]](<vscale x 8 x s16>)
182   ; RV64-NEXT:   PseudoRET implicit $v8m2
183 entry:
184   ret <vscale x 8 x i16> undef
187 define <vscale x 16 x i16> @test_ret_nxv16i16() {
188   ; RV32-LABEL: name: test_ret_nxv16i16
189   ; RV32: bb.1.entry:
190   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s16>) = G_IMPLICIT_DEF
191   ; RV32-NEXT:   $v8m4 = COPY [[DEF]](<vscale x 16 x s16>)
192   ; RV32-NEXT:   PseudoRET implicit $v8m4
193   ;
194   ; RV64-LABEL: name: test_ret_nxv16i16
195   ; RV64: bb.1.entry:
196   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s16>) = G_IMPLICIT_DEF
197   ; RV64-NEXT:   $v8m4 = COPY [[DEF]](<vscale x 16 x s16>)
198   ; RV64-NEXT:   PseudoRET implicit $v8m4
199 entry:
200   ret <vscale x 16 x i16> undef
203 define <vscale x 32 x i16> @test_ret_nxv32i16() {
204   ; RV32-LABEL: name: test_ret_nxv32i16
205   ; RV32: bb.1.entry:
206   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 32 x s16>) = G_IMPLICIT_DEF
207   ; RV32-NEXT:   $v8m8 = COPY [[DEF]](<vscale x 32 x s16>)
208   ; RV32-NEXT:   PseudoRET implicit $v8m8
209   ;
210   ; RV64-LABEL: name: test_ret_nxv32i16
211   ; RV64: bb.1.entry:
212   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 32 x s16>) = G_IMPLICIT_DEF
213   ; RV64-NEXT:   $v8m8 = COPY [[DEF]](<vscale x 32 x s16>)
214   ; RV64-NEXT:   PseudoRET implicit $v8m8
215 entry:
216   ret <vscale x 32 x i16> undef
219 define <vscale x 1 x i32> @test_ret_nxv1i32() {
220   ; RV32-LABEL: name: test_ret_nxv1i32
221   ; RV32: bb.1.entry:
222   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s32>) = G_IMPLICIT_DEF
223   ; RV32-NEXT:   $v8 = COPY [[DEF]](<vscale x 1 x s32>)
224   ; RV32-NEXT:   PseudoRET implicit $v8
225   ;
226   ; RV64-LABEL: name: test_ret_nxv1i32
227   ; RV64: bb.1.entry:
228   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s32>) = G_IMPLICIT_DEF
229   ; RV64-NEXT:   $v8 = COPY [[DEF]](<vscale x 1 x s32>)
230   ; RV64-NEXT:   PseudoRET implicit $v8
231 entry:
232   ret <vscale x 1 x i32> undef
235 define <vscale x 2 x i32> @test_ret_nxv2i32() {
236   ; RV32-LABEL: name: test_ret_nxv2i32
237   ; RV32: bb.1.entry:
238   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s32>) = G_IMPLICIT_DEF
239   ; RV32-NEXT:   $v8 = COPY [[DEF]](<vscale x 2 x s32>)
240   ; RV32-NEXT:   PseudoRET implicit $v8
241   ;
242   ; RV64-LABEL: name: test_ret_nxv2i32
243   ; RV64: bb.1.entry:
244   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s32>) = G_IMPLICIT_DEF
245   ; RV64-NEXT:   $v8 = COPY [[DEF]](<vscale x 2 x s32>)
246   ; RV64-NEXT:   PseudoRET implicit $v8
247 entry:
248   ret <vscale x 2 x i32> undef
251 define <vscale x 4 x i32> @test_ret_nxv4i32() {
252   ; RV32-LABEL: name: test_ret_nxv4i32
253   ; RV32: bb.1.entry:
254   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s32>) = G_IMPLICIT_DEF
255   ; RV32-NEXT:   $v8m2 = COPY [[DEF]](<vscale x 4 x s32>)
256   ; RV32-NEXT:   PseudoRET implicit $v8m2
257   ;
258   ; RV64-LABEL: name: test_ret_nxv4i32
259   ; RV64: bb.1.entry:
260   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s32>) = G_IMPLICIT_DEF
261   ; RV64-NEXT:   $v8m2 = COPY [[DEF]](<vscale x 4 x s32>)
262   ; RV64-NEXT:   PseudoRET implicit $v8m2
263 entry:
264   ret <vscale x 4 x i32> undef
267 define <vscale x 8 x i32> @test_ret_nxv8i32() {
268   ; RV32-LABEL: name: test_ret_nxv8i32
269   ; RV32: bb.1.entry:
270   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s32>) = G_IMPLICIT_DEF
271   ; RV32-NEXT:   $v8m4 = COPY [[DEF]](<vscale x 8 x s32>)
272   ; RV32-NEXT:   PseudoRET implicit $v8m4
273   ;
274   ; RV64-LABEL: name: test_ret_nxv8i32
275   ; RV64: bb.1.entry:
276   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s32>) = G_IMPLICIT_DEF
277   ; RV64-NEXT:   $v8m4 = COPY [[DEF]](<vscale x 8 x s32>)
278   ; RV64-NEXT:   PseudoRET implicit $v8m4
279 entry:
280   ret <vscale x 8 x i32> undef
283 define <vscale x 16 x i32> @test_ret_nxv16i32() {
284   ; RV32-LABEL: name: test_ret_nxv16i32
285   ; RV32: bb.1.entry:
286   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s32>) = G_IMPLICIT_DEF
287   ; RV32-NEXT:   $v8m8 = COPY [[DEF]](<vscale x 16 x s32>)
288   ; RV32-NEXT:   PseudoRET implicit $v8m8
289   ;
290   ; RV64-LABEL: name: test_ret_nxv16i32
291   ; RV64: bb.1.entry:
292   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s32>) = G_IMPLICIT_DEF
293   ; RV64-NEXT:   $v8m8 = COPY [[DEF]](<vscale x 16 x s32>)
294   ; RV64-NEXT:   PseudoRET implicit $v8m8
295 entry:
296   ret <vscale x 16 x i32> undef
299 define <vscale x 1 x i64> @test_ret_nxv1i64() {
300   ; RV32-LABEL: name: test_ret_nxv1i64
301   ; RV32: bb.1.entry:
302   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s64>) = G_IMPLICIT_DEF
303   ; RV32-NEXT:   $v8 = COPY [[DEF]](<vscale x 1 x s64>)
304   ; RV32-NEXT:   PseudoRET implicit $v8
305   ;
306   ; RV64-LABEL: name: test_ret_nxv1i64
307   ; RV64: bb.1.entry:
308   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s64>) = G_IMPLICIT_DEF
309   ; RV64-NEXT:   $v8 = COPY [[DEF]](<vscale x 1 x s64>)
310   ; RV64-NEXT:   PseudoRET implicit $v8
311 entry:
312   ret <vscale x 1 x i64> undef
315 define <vscale x 2 x i64> @test_ret_nxv2i64() {
316   ; RV32-LABEL: name: test_ret_nxv2i64
317   ; RV32: bb.1.entry:
318   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s64>) = G_IMPLICIT_DEF
319   ; RV32-NEXT:   $v8m2 = COPY [[DEF]](<vscale x 2 x s64>)
320   ; RV32-NEXT:   PseudoRET implicit $v8m2
321   ;
322   ; RV64-LABEL: name: test_ret_nxv2i64
323   ; RV64: bb.1.entry:
324   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s64>) = G_IMPLICIT_DEF
325   ; RV64-NEXT:   $v8m2 = COPY [[DEF]](<vscale x 2 x s64>)
326   ; RV64-NEXT:   PseudoRET implicit $v8m2
327 entry:
328   ret <vscale x 2 x i64> undef
331 define <vscale x 4 x i64> @test_ret_nxv4i64() {
332   ; RV32-LABEL: name: test_ret_nxv4i64
333   ; RV32: bb.1.entry:
334   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s64>) = G_IMPLICIT_DEF
335   ; RV32-NEXT:   $v8m4 = COPY [[DEF]](<vscale x 4 x s64>)
336   ; RV32-NEXT:   PseudoRET implicit $v8m4
337   ;
338   ; RV64-LABEL: name: test_ret_nxv4i64
339   ; RV64: bb.1.entry:
340   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s64>) = G_IMPLICIT_DEF
341   ; RV64-NEXT:   $v8m4 = COPY [[DEF]](<vscale x 4 x s64>)
342   ; RV64-NEXT:   PseudoRET implicit $v8m4
343 entry:
344   ret <vscale x 4 x i64> undef
347 define <vscale x 8 x i64> @test_ret_nxv8i64() {
348   ; RV32-LABEL: name: test_ret_nxv8i64
349   ; RV32: bb.1.entry:
350   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s64>) = G_IMPLICIT_DEF
351   ; RV32-NEXT:   $v8m8 = COPY [[DEF]](<vscale x 8 x s64>)
352   ; RV32-NEXT:   PseudoRET implicit $v8m8
353   ;
354   ; RV64-LABEL: name: test_ret_nxv8i64
355   ; RV64: bb.1.entry:
356   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s64>) = G_IMPLICIT_DEF
357   ; RV64-NEXT:   $v8m8 = COPY [[DEF]](<vscale x 8 x s64>)
358   ; RV64-NEXT:   PseudoRET implicit $v8m8
359 entry:
360   ret <vscale x 8 x i64> undef
363 define <vscale x 64 x i1> @test_ret_nxv64i1() {
364   ; RV32-LABEL: name: test_ret_nxv64i1
365   ; RV32: bb.1.entry:
366   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 64 x s1>) = G_IMPLICIT_DEF
367   ; RV32-NEXT:   $v8 = COPY [[DEF]](<vscale x 64 x s1>)
368   ; RV32-NEXT:   PseudoRET implicit $v8
369   ;
370   ; RV64-LABEL: name: test_ret_nxv64i1
371   ; RV64: bb.1.entry:
372   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 64 x s1>) = G_IMPLICIT_DEF
373   ; RV64-NEXT:   $v8 = COPY [[DEF]](<vscale x 64 x s1>)
374   ; RV64-NEXT:   PseudoRET implicit $v8
375 entry:
376   ret <vscale x 64 x i1> undef
379 define <vscale x 32 x i1> @test_ret_nxv32i1() {
380   ; RV32-LABEL: name: test_ret_nxv32i1
381   ; RV32: bb.1.entry:
382   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 32 x s1>) = G_IMPLICIT_DEF
383   ; RV32-NEXT:   $v8 = COPY [[DEF]](<vscale x 32 x s1>)
384   ; RV32-NEXT:   PseudoRET implicit $v8
385   ;
386   ; RV64-LABEL: name: test_ret_nxv32i1
387   ; RV64: bb.1.entry:
388   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 32 x s1>) = G_IMPLICIT_DEF
389   ; RV64-NEXT:   $v8 = COPY [[DEF]](<vscale x 32 x s1>)
390   ; RV64-NEXT:   PseudoRET implicit $v8
391 entry:
392   ret <vscale x 32 x i1> undef
395 define <vscale x 16 x i1> @test_ret_nxv16i1() {
396   ; RV32-LABEL: name: test_ret_nxv16i1
397   ; RV32: bb.1.entry:
398   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s1>) = G_IMPLICIT_DEF
399   ; RV32-NEXT:   $v8 = COPY [[DEF]](<vscale x 16 x s1>)
400   ; RV32-NEXT:   PseudoRET implicit $v8
401   ;
402   ; RV64-LABEL: name: test_ret_nxv16i1
403   ; RV64: bb.1.entry:
404   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s1>) = G_IMPLICIT_DEF
405   ; RV64-NEXT:   $v8 = COPY [[DEF]](<vscale x 16 x s1>)
406   ; RV64-NEXT:   PseudoRET implicit $v8
407 entry:
408   ret <vscale x 16 x i1> undef
411 define <vscale x 8 x i1> @test_ret_nxv8i1() {
412   ; RV32-LABEL: name: test_ret_nxv8i1
413   ; RV32: bb.1.entry:
414   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s1>) = G_IMPLICIT_DEF
415   ; RV32-NEXT:   $v8 = COPY [[DEF]](<vscale x 8 x s1>)
416   ; RV32-NEXT:   PseudoRET implicit $v8
417   ;
418   ; RV64-LABEL: name: test_ret_nxv8i1
419   ; RV64: bb.1.entry:
420   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s1>) = G_IMPLICIT_DEF
421   ; RV64-NEXT:   $v8 = COPY [[DEF]](<vscale x 8 x s1>)
422   ; RV64-NEXT:   PseudoRET implicit $v8
423 entry:
424   ret <vscale x 8 x i1> undef
427 define <vscale x 4 x i1> @test_ret_nxv4i1() {
428   ; RV32-LABEL: name: test_ret_nxv4i1
429   ; RV32: bb.1.entry:
430   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s1>) = G_IMPLICIT_DEF
431   ; RV32-NEXT:   $v8 = COPY [[DEF]](<vscale x 4 x s1>)
432   ; RV32-NEXT:   PseudoRET implicit $v8
433   ;
434   ; RV64-LABEL: name: test_ret_nxv4i1
435   ; RV64: bb.1.entry:
436   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s1>) = G_IMPLICIT_DEF
437   ; RV64-NEXT:   $v8 = COPY [[DEF]](<vscale x 4 x s1>)
438   ; RV64-NEXT:   PseudoRET implicit $v8
439 entry:
440   ret <vscale x 4 x i1> undef
443 define <vscale x 2 x i1> @test_ret_nxv2i1() {
444   ; RV32-LABEL: name: test_ret_nxv2i1
445   ; RV32: bb.1.entry:
446   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s1>) = G_IMPLICIT_DEF
447   ; RV32-NEXT:   $v8 = COPY [[DEF]](<vscale x 2 x s1>)
448   ; RV32-NEXT:   PseudoRET implicit $v8
449   ;
450   ; RV64-LABEL: name: test_ret_nxv2i1
451   ; RV64: bb.1.entry:
452   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s1>) = G_IMPLICIT_DEF
453   ; RV64-NEXT:   $v8 = COPY [[DEF]](<vscale x 2 x s1>)
454   ; RV64-NEXT:   PseudoRET implicit $v8
455 entry:
456   ret <vscale x 2 x i1> undef
459 define <vscale x 1 x i1> @test_ret_nxv1i1() {
460   ; RV32-LABEL: name: test_ret_nxv1i1
461   ; RV32: bb.1.entry:
462   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s1>) = G_IMPLICIT_DEF
463   ; RV32-NEXT:   $v8 = COPY [[DEF]](<vscale x 1 x s1>)
464   ; RV32-NEXT:   PseudoRET implicit $v8
465   ;
466   ; RV64-LABEL: name: test_ret_nxv1i1
467   ; RV64: bb.1.entry:
468   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s1>) = G_IMPLICIT_DEF
469   ; RV64-NEXT:   $v8 = COPY [[DEF]](<vscale x 1 x s1>)
470   ; RV64-NEXT:   PseudoRET implicit $v8
471 entry:
472   ret <vscale x 1 x i1> undef
475 define <vscale x 1 x float> @test_ret_nxv1f32() {
476   ; RV32-LABEL: name: test_ret_nxv1f32
477   ; RV32: bb.1.entry:
478   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s32>) = G_IMPLICIT_DEF
479   ; RV32-NEXT:   $v8 = COPY [[DEF]](<vscale x 1 x s32>)
480   ; RV32-NEXT:   PseudoRET implicit $v8
481   ;
482   ; RV64-LABEL: name: test_ret_nxv1f32
483   ; RV64: bb.1.entry:
484   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s32>) = G_IMPLICIT_DEF
485   ; RV64-NEXT:   $v8 = COPY [[DEF]](<vscale x 1 x s32>)
486   ; RV64-NEXT:   PseudoRET implicit $v8
487 entry:
488   ret <vscale x 1 x float> undef
491 define <vscale x 2 x float> @test_ret_nxv2f32() {
492   ; RV32-LABEL: name: test_ret_nxv2f32
493   ; RV32: bb.1.entry:
494   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s32>) = G_IMPLICIT_DEF
495   ; RV32-NEXT:   $v8 = COPY [[DEF]](<vscale x 2 x s32>)
496   ; RV32-NEXT:   PseudoRET implicit $v8
497   ;
498   ; RV64-LABEL: name: test_ret_nxv2f32
499   ; RV64: bb.1.entry:
500   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s32>) = G_IMPLICIT_DEF
501   ; RV64-NEXT:   $v8 = COPY [[DEF]](<vscale x 2 x s32>)
502   ; RV64-NEXT:   PseudoRET implicit $v8
503 entry:
504   ret <vscale x 2 x float> undef
507 define <vscale x 4 x float> @test_ret_nxv4f32() {
508   ; RV32-LABEL: name: test_ret_nxv4f32
509   ; RV32: bb.1.entry:
510   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s32>) = G_IMPLICIT_DEF
511   ; RV32-NEXT:   $v8m2 = COPY [[DEF]](<vscale x 4 x s32>)
512   ; RV32-NEXT:   PseudoRET implicit $v8m2
513   ;
514   ; RV64-LABEL: name: test_ret_nxv4f32
515   ; RV64: bb.1.entry:
516   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s32>) = G_IMPLICIT_DEF
517   ; RV64-NEXT:   $v8m2 = COPY [[DEF]](<vscale x 4 x s32>)
518   ; RV64-NEXT:   PseudoRET implicit $v8m2
519 entry:
520   ret <vscale x 4 x float> undef
523 define <vscale x 8 x float> @test_ret_nxv8f32() {
524   ; RV32-LABEL: name: test_ret_nxv8f32
525   ; RV32: bb.1.entry:
526   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s32>) = G_IMPLICIT_DEF
527   ; RV32-NEXT:   $v8m4 = COPY [[DEF]](<vscale x 8 x s32>)
528   ; RV32-NEXT:   PseudoRET implicit $v8m4
529   ;
530   ; RV64-LABEL: name: test_ret_nxv8f32
531   ; RV64: bb.1.entry:
532   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s32>) = G_IMPLICIT_DEF
533   ; RV64-NEXT:   $v8m4 = COPY [[DEF]](<vscale x 8 x s32>)
534   ; RV64-NEXT:   PseudoRET implicit $v8m4
535 entry:
536   ret <vscale x 8 x float> undef
539 define <vscale x 16 x float> @test_ret_nxv16f32() {
540   ; RV32-LABEL: name: test_ret_nxv16f32
541   ; RV32: bb.1.entry:
542   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s32>) = G_IMPLICIT_DEF
543   ; RV32-NEXT:   $v8m8 = COPY [[DEF]](<vscale x 16 x s32>)
544   ; RV32-NEXT:   PseudoRET implicit $v8m8
545   ;
546   ; RV64-LABEL: name: test_ret_nxv16f32
547   ; RV64: bb.1.entry:
548   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s32>) = G_IMPLICIT_DEF
549   ; RV64-NEXT:   $v8m8 = COPY [[DEF]](<vscale x 16 x s32>)
550   ; RV64-NEXT:   PseudoRET implicit $v8m8
551 entry:
552   ret <vscale x 16 x float> undef
555 define <vscale x 1 x double> @test_ret_nxv1f64() {
556   ; RV32-LABEL: name: test_ret_nxv1f64
557   ; RV32: bb.1.entry:
558   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s64>) = G_IMPLICIT_DEF
559   ; RV32-NEXT:   $v8 = COPY [[DEF]](<vscale x 1 x s64>)
560   ; RV32-NEXT:   PseudoRET implicit $v8
561   ;
562   ; RV64-LABEL: name: test_ret_nxv1f64
563   ; RV64: bb.1.entry:
564   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s64>) = G_IMPLICIT_DEF
565   ; RV64-NEXT:   $v8 = COPY [[DEF]](<vscale x 1 x s64>)
566   ; RV64-NEXT:   PseudoRET implicit $v8
567 entry:
568   ret <vscale x 1 x double> undef
571 define <vscale x 2 x double> @test_ret_nxv2f64() {
572   ; RV32-LABEL: name: test_ret_nxv2f64
573   ; RV32: bb.1.entry:
574   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s64>) = G_IMPLICIT_DEF
575   ; RV32-NEXT:   $v8m2 = COPY [[DEF]](<vscale x 2 x s64>)
576   ; RV32-NEXT:   PseudoRET implicit $v8m2
577   ;
578   ; RV64-LABEL: name: test_ret_nxv2f64
579   ; RV64: bb.1.entry:
580   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s64>) = G_IMPLICIT_DEF
581   ; RV64-NEXT:   $v8m2 = COPY [[DEF]](<vscale x 2 x s64>)
582   ; RV64-NEXT:   PseudoRET implicit $v8m2
583 entry:
584   ret <vscale x 2 x double> undef
587 define <vscale x 4 x double> @test_ret_nxv4f64() {
588   ; RV32-LABEL: name: test_ret_nxv4f64
589   ; RV32: bb.1.entry:
590   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s64>) = G_IMPLICIT_DEF
591   ; RV32-NEXT:   $v8m4 = COPY [[DEF]](<vscale x 4 x s64>)
592   ; RV32-NEXT:   PseudoRET implicit $v8m4
593   ;
594   ; RV64-LABEL: name: test_ret_nxv4f64
595   ; RV64: bb.1.entry:
596   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s64>) = G_IMPLICIT_DEF
597   ; RV64-NEXT:   $v8m4 = COPY [[DEF]](<vscale x 4 x s64>)
598   ; RV64-NEXT:   PseudoRET implicit $v8m4
599 entry:
600   ret <vscale x 4 x double> undef
603 define <vscale x 8 x double> @test_ret_nxv8f64() {
604   ; RV32-LABEL: name: test_ret_nxv8f64
605   ; RV32: bb.1.entry:
606   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s64>) = G_IMPLICIT_DEF
607   ; RV32-NEXT:   $v8m8 = COPY [[DEF]](<vscale x 8 x s64>)
608   ; RV32-NEXT:   PseudoRET implicit $v8m8
609   ;
610   ; RV64-LABEL: name: test_ret_nxv8f64
611   ; RV64: bb.1.entry:
612   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s64>) = G_IMPLICIT_DEF
613   ; RV64-NEXT:   $v8m8 = COPY [[DEF]](<vscale x 8 x s64>)
614   ; RV64-NEXT:   PseudoRET implicit $v8m8
615 entry:
616   ret <vscale x 8 x double> undef
619 define <vscale x 1 x half> @test_ret_nxv1f16() {
620   ; RV32-LABEL: name: test_ret_nxv1f16
621   ; RV32: bb.1.entry:
622   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s16>) = G_IMPLICIT_DEF
623   ; RV32-NEXT:   $v8 = COPY [[DEF]](<vscale x 1 x s16>)
624   ; RV32-NEXT:   PseudoRET implicit $v8
625   ;
626   ; RV64-LABEL: name: test_ret_nxv1f16
627   ; RV64: bb.1.entry:
628   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s16>) = G_IMPLICIT_DEF
629   ; RV64-NEXT:   $v8 = COPY [[DEF]](<vscale x 1 x s16>)
630   ; RV64-NEXT:   PseudoRET implicit $v8
631 entry:
632   ret <vscale x 1 x half> undef
635 define <vscale x 2 x half> @test_ret_nxv2f16() {
636   ; RV32-LABEL: name: test_ret_nxv2f16
637   ; RV32: bb.1.entry:
638   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s16>) = G_IMPLICIT_DEF
639   ; RV32-NEXT:   $v8 = COPY [[DEF]](<vscale x 2 x s16>)
640   ; RV32-NEXT:   PseudoRET implicit $v8
641   ;
642   ; RV64-LABEL: name: test_ret_nxv2f16
643   ; RV64: bb.1.entry:
644   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s16>) = G_IMPLICIT_DEF
645   ; RV64-NEXT:   $v8 = COPY [[DEF]](<vscale x 2 x s16>)
646   ; RV64-NEXT:   PseudoRET implicit $v8
647 entry:
648   ret <vscale x 2 x half> undef
651 define <vscale x 4 x half> @test_ret_nxv4f16() {
652   ; RV32-LABEL: name: test_ret_nxv4f16
653   ; RV32: bb.1.entry:
654   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s16>) = G_IMPLICIT_DEF
655   ; RV32-NEXT:   $v8 = COPY [[DEF]](<vscale x 4 x s16>)
656   ; RV32-NEXT:   PseudoRET implicit $v8
657   ;
658   ; RV64-LABEL: name: test_ret_nxv4f16
659   ; RV64: bb.1.entry:
660   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s16>) = G_IMPLICIT_DEF
661   ; RV64-NEXT:   $v8 = COPY [[DEF]](<vscale x 4 x s16>)
662   ; RV64-NEXT:   PseudoRET implicit $v8
663 entry:
664   ret <vscale x 4 x half> undef
667 define <vscale x 8 x half> @test_ret_nxv8f16() {
668   ; RV32-LABEL: name: test_ret_nxv8f16
669   ; RV32: bb.1.entry:
670   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s16>) = G_IMPLICIT_DEF
671   ; RV32-NEXT:   $v8m2 = COPY [[DEF]](<vscale x 8 x s16>)
672   ; RV32-NEXT:   PseudoRET implicit $v8m2
673   ;
674   ; RV64-LABEL: name: test_ret_nxv8f16
675   ; RV64: bb.1.entry:
676   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s16>) = G_IMPLICIT_DEF
677   ; RV64-NEXT:   $v8m2 = COPY [[DEF]](<vscale x 8 x s16>)
678   ; RV64-NEXT:   PseudoRET implicit $v8m2
679 entry:
680   ret <vscale x 8 x half> undef
683 define <vscale x 16 x half> @test_ret_nxv16f16() {
684   ; RV32-LABEL: name: test_ret_nxv16f16
685   ; RV32: bb.1.entry:
686   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s16>) = G_IMPLICIT_DEF
687   ; RV32-NEXT:   $v8m4 = COPY [[DEF]](<vscale x 16 x s16>)
688   ; RV32-NEXT:   PseudoRET implicit $v8m4
689   ;
690   ; RV64-LABEL: name: test_ret_nxv16f16
691   ; RV64: bb.1.entry:
692   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s16>) = G_IMPLICIT_DEF
693   ; RV64-NEXT:   $v8m4 = COPY [[DEF]](<vscale x 16 x s16>)
694   ; RV64-NEXT:   PseudoRET implicit $v8m4
695 entry:
696   ret <vscale x 16 x half> undef
699 define <vscale x 32 x half> @test_ret_nxv32f16() {
700   ; RV32-LABEL: name: test_ret_nxv32f16
701   ; RV32: bb.1.entry:
702   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 32 x s16>) = G_IMPLICIT_DEF
703   ; RV32-NEXT:   $v8m8 = COPY [[DEF]](<vscale x 32 x s16>)
704   ; RV32-NEXT:   PseudoRET implicit $v8m8
705   ;
706   ; RV64-LABEL: name: test_ret_nxv32f16
707   ; RV64: bb.1.entry:
708   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 32 x s16>) = G_IMPLICIT_DEF
709   ; RV64-NEXT:   $v8m8 = COPY [[DEF]](<vscale x 32 x s16>)
710   ; RV64-NEXT:   PseudoRET implicit $v8m8
711 entry:
712   ret <vscale x 32 x half> undef
715 define <vscale x 1 x bfloat> @test_ret_nxv1b16() {
716   ; RV32-LABEL: name: test_ret_nxv1b16
717   ; RV32: bb.1.entry:
718   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s16>) = G_IMPLICIT_DEF
719   ; RV32-NEXT:   $v8 = COPY [[DEF]](<vscale x 1 x s16>)
720   ; RV32-NEXT:   PseudoRET implicit $v8
721   ;
722   ; RV64-LABEL: name: test_ret_nxv1b16
723   ; RV64: bb.1.entry:
724   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s16>) = G_IMPLICIT_DEF
725   ; RV64-NEXT:   $v8 = COPY [[DEF]](<vscale x 1 x s16>)
726   ; RV64-NEXT:   PseudoRET implicit $v8
727 entry:
728   ret <vscale x 1 x bfloat> undef
731 define <vscale x 2 x bfloat> @test_ret_nxv2b16() {
732   ; RV32-LABEL: name: test_ret_nxv2b16
733   ; RV32: bb.1.entry:
734   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s16>) = G_IMPLICIT_DEF
735   ; RV32-NEXT:   $v8 = COPY [[DEF]](<vscale x 2 x s16>)
736   ; RV32-NEXT:   PseudoRET implicit $v8
737   ;
738   ; RV64-LABEL: name: test_ret_nxv2b16
739   ; RV64: bb.1.entry:
740   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s16>) = G_IMPLICIT_DEF
741   ; RV64-NEXT:   $v8 = COPY [[DEF]](<vscale x 2 x s16>)
742   ; RV64-NEXT:   PseudoRET implicit $v8
743 entry:
744   ret <vscale x 2 x bfloat> undef
747 define <vscale x 4 x bfloat> @test_ret_nxv4b16() {
748   ; RV32-LABEL: name: test_ret_nxv4b16
749   ; RV32: bb.1.entry:
750   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s16>) = G_IMPLICIT_DEF
751   ; RV32-NEXT:   $v8 = COPY [[DEF]](<vscale x 4 x s16>)
752   ; RV32-NEXT:   PseudoRET implicit $v8
753   ;
754   ; RV64-LABEL: name: test_ret_nxv4b16
755   ; RV64: bb.1.entry:
756   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s16>) = G_IMPLICIT_DEF
757   ; RV64-NEXT:   $v8 = COPY [[DEF]](<vscale x 4 x s16>)
758   ; RV64-NEXT:   PseudoRET implicit $v8
759 entry:
760   ret <vscale x 4 x bfloat> undef
763 define <vscale x 8 x bfloat> @test_ret_nxv8b16() {
764   ; RV32-LABEL: name: test_ret_nxv8b16
765   ; RV32: bb.1.entry:
766   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s16>) = G_IMPLICIT_DEF
767   ; RV32-NEXT:   $v8m2 = COPY [[DEF]](<vscale x 8 x s16>)
768   ; RV32-NEXT:   PseudoRET implicit $v8m2
769   ;
770   ; RV64-LABEL: name: test_ret_nxv8b16
771   ; RV64: bb.1.entry:
772   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s16>) = G_IMPLICIT_DEF
773   ; RV64-NEXT:   $v8m2 = COPY [[DEF]](<vscale x 8 x s16>)
774   ; RV64-NEXT:   PseudoRET implicit $v8m2
775 entry:
776   ret <vscale x 8 x bfloat> undef
779 define <vscale x 16 x bfloat> @test_ret_nxv16b16() {
780   ; RV32-LABEL: name: test_ret_nxv16b16
781   ; RV32: bb.1.entry:
782   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s16>) = G_IMPLICIT_DEF
783   ; RV32-NEXT:   $v8m4 = COPY [[DEF]](<vscale x 16 x s16>)
784   ; RV32-NEXT:   PseudoRET implicit $v8m4
785   ;
786   ; RV64-LABEL: name: test_ret_nxv16b16
787   ; RV64: bb.1.entry:
788   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s16>) = G_IMPLICIT_DEF
789   ; RV64-NEXT:   $v8m4 = COPY [[DEF]](<vscale x 16 x s16>)
790   ; RV64-NEXT:   PseudoRET implicit $v8m4
791 entry:
792   ret <vscale x 16 x bfloat> undef
795 define <vscale x 32 x bfloat> @test_ret_nxv32b16() {
796   ; RV32-LABEL: name: test_ret_nxv32b16
797   ; RV32: bb.1.entry:
798   ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 32 x s16>) = G_IMPLICIT_DEF
799   ; RV32-NEXT:   $v8m8 = COPY [[DEF]](<vscale x 32 x s16>)
800   ; RV32-NEXT:   PseudoRET implicit $v8m8
801   ;
802   ; RV64-LABEL: name: test_ret_nxv32b16
803   ; RV64: bb.1.entry:
804   ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 32 x s16>) = G_IMPLICIT_DEF
805   ; RV64-NEXT:   $v8m8 = COPY [[DEF]](<vscale x 32 x s16>)
806   ; RV64-NEXT:   PseudoRET implicit $v8m8
807 entry:
808   ret <vscale x 32 x bfloat> undef