[RISCV] Support postRA vsetvl insertion pass (#70549)
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vmv.v.v-rv32.ll
blobca317209055a251c768cdabab4d2056253f78a8d
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv32 -mattr=+v,+d,+zfh,+zvfh -verify-machineinstrs \
3 ; RUN:   < %s | FileCheck %s
5 declare <vscale x 1 x i8> @llvm.riscv.vmv.v.v.nxv1i8(
6   <vscale x 1 x i8>,
7   <vscale x 1 x i8>,
8   i32);
10 define <vscale x 1 x i8> @intrinsic_vmv.v.v_v_nxv1i8_nxv1i8(<vscale x 1 x i8> %0, i32 %1) nounwind {
11 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv1i8_nxv1i8:
12 ; CHECK:       # %bb.0: # %entry
13 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
14 ; CHECK-NEXT:    vmv.v.v v8, v8
15 ; CHECK-NEXT:    ret
16 entry:
17   %a = call <vscale x 1 x i8> @llvm.riscv.vmv.v.v.nxv1i8(
18     <vscale x 1 x i8> undef,
19     <vscale x 1 x i8> %0,
20     i32 %1)
22   ret <vscale x 1 x i8> %a
25 declare <vscale x 2 x i8> @llvm.riscv.vmv.v.v.nxv2i8(
26   <vscale x 2 x i8>,
27   <vscale x 2 x i8>,
28   i32);
30 define <vscale x 2 x i8> @intrinsic_vmv.v.v_v_nxv2i8_nxv2i8(<vscale x 2 x i8> %0, i32 %1) nounwind {
31 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv2i8_nxv2i8:
32 ; CHECK:       # %bb.0: # %entry
33 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
34 ; CHECK-NEXT:    vmv.v.v v8, v8
35 ; CHECK-NEXT:    ret
36 entry:
37   %a = call <vscale x 2 x i8> @llvm.riscv.vmv.v.v.nxv2i8(
38     <vscale x 2 x i8> undef,
39     <vscale x 2 x i8> %0,
40     i32 %1)
42   ret <vscale x 2 x i8> %a
45 declare <vscale x 4 x i8> @llvm.riscv.vmv.v.v.nxv4i8(
46   <vscale x 4 x i8>,
47   <vscale x 4 x i8>,
48   i32);
50 define <vscale x 4 x i8> @intrinsic_vmv.v.v_v_nxv4i8_nxv4i8(<vscale x 4 x i8> %0, i32 %1) nounwind {
51 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv4i8_nxv4i8:
52 ; CHECK:       # %bb.0: # %entry
53 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
54 ; CHECK-NEXT:    vmv.v.v v8, v8
55 ; CHECK-NEXT:    ret
56 entry:
57   %a = call <vscale x 4 x i8> @llvm.riscv.vmv.v.v.nxv4i8(
58     <vscale x 4 x i8> undef,
59     <vscale x 4 x i8> %0,
60     i32 %1)
62   ret <vscale x 4 x i8> %a
65 declare <vscale x 8 x i8> @llvm.riscv.vmv.v.v.nxv8i8(
66   <vscale x 8 x i8>,
67   <vscale x 8 x i8>,
68   i32);
70 define <vscale x 8 x i8> @intrinsic_vmv.v.v_v_nxv8i8_nxv8i8(<vscale x 8 x i8> %0, i32 %1) nounwind {
71 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv8i8_nxv8i8:
72 ; CHECK:       # %bb.0: # %entry
73 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
74 ; CHECK-NEXT:    vmv.v.v v8, v8
75 ; CHECK-NEXT:    ret
76 entry:
77   %a = call <vscale x 8 x i8> @llvm.riscv.vmv.v.v.nxv8i8(
78     <vscale x 8 x i8> undef,
79     <vscale x 8 x i8> %0,
80     i32 %1)
82   ret <vscale x 8 x i8> %a
85 declare <vscale x 16 x i8> @llvm.riscv.vmv.v.v.nxv16i8(
86   <vscale x 16 x i8>,
87   <vscale x 16 x i8>,
88   i32);
90 define <vscale x 16 x i8> @intrinsic_vmv.v.v_v_nxv16i8_nxv16i8(<vscale x 16 x i8> %0, i32 %1) nounwind {
91 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv16i8_nxv16i8:
92 ; CHECK:       # %bb.0: # %entry
93 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
94 ; CHECK-NEXT:    vmv.v.v v8, v8
95 ; CHECK-NEXT:    ret
96 entry:
97   %a = call <vscale x 16 x i8> @llvm.riscv.vmv.v.v.nxv16i8(
98     <vscale x 16 x i8> undef,
99     <vscale x 16 x i8> %0,
100     i32 %1)
102   ret <vscale x 16 x i8> %a
105 declare <vscale x 32 x i8> @llvm.riscv.vmv.v.v.nxv32i8(
106   <vscale x 32 x i8>,
107   <vscale x 32 x i8>,
108   i32);
110 define <vscale x 32 x i8> @intrinsic_vmv.v.v_v_nxv32i8_nxv32i8(<vscale x 32 x i8> %0, i32 %1) nounwind {
111 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv32i8_nxv32i8:
112 ; CHECK:       # %bb.0: # %entry
113 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
114 ; CHECK-NEXT:    vmv.v.v v8, v8
115 ; CHECK-NEXT:    ret
116 entry:
117   %a = call <vscale x 32 x i8> @llvm.riscv.vmv.v.v.nxv32i8(
118     <vscale x 32 x i8> undef,
119     <vscale x 32 x i8> %0,
120     i32 %1)
122   ret <vscale x 32 x i8> %a
125 declare <vscale x 64 x i8> @llvm.riscv.vmv.v.v.nxv64i8(
126   <vscale x 64 x i8>,
127   <vscale x 64 x i8>,
128   i32);
130 define <vscale x 64 x i8> @intrinsic_vmv.v.v_v_nxv64i8_nxv64i8(<vscale x 64 x i8> %0, i32 %1) nounwind {
131 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv64i8_nxv64i8:
132 ; CHECK:       # %bb.0: # %entry
133 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
134 ; CHECK-NEXT:    vmv.v.v v8, v8
135 ; CHECK-NEXT:    ret
136 entry:
137   %a = call <vscale x 64 x i8> @llvm.riscv.vmv.v.v.nxv64i8(
138     <vscale x 64 x i8> undef,
139     <vscale x 64 x i8> %0,
140     i32 %1)
142   ret <vscale x 64 x i8> %a
145 declare <vscale x 1 x i16> @llvm.riscv.vmv.v.v.nxv1i16(
146   <vscale x 1 x i16>,
147   <vscale x 1 x i16>,
148   i32);
150 define <vscale x 1 x i16> @intrinsic_vmv.v.v_v_nxv1i16_nxv1i16(<vscale x 1 x i16> %0, i32 %1) nounwind {
151 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv1i16_nxv1i16:
152 ; CHECK:       # %bb.0: # %entry
153 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
154 ; CHECK-NEXT:    vmv.v.v v8, v8
155 ; CHECK-NEXT:    ret
156 entry:
157   %a = call <vscale x 1 x i16> @llvm.riscv.vmv.v.v.nxv1i16(
158     <vscale x 1 x i16> undef,
159     <vscale x 1 x i16> %0,
160     i32 %1)
162   ret <vscale x 1 x i16> %a
165 declare <vscale x 2 x i16> @llvm.riscv.vmv.v.v.nxv2i16(
166   <vscale x 2 x i16>,
167   <vscale x 2 x i16>,
168   i32);
170 define <vscale x 2 x i16> @intrinsic_vmv.v.v_v_nxv2i16_nxv2i16(<vscale x 2 x i16> %0, i32 %1) nounwind {
171 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv2i16_nxv2i16:
172 ; CHECK:       # %bb.0: # %entry
173 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
174 ; CHECK-NEXT:    vmv.v.v v8, v8
175 ; CHECK-NEXT:    ret
176 entry:
177   %a = call <vscale x 2 x i16> @llvm.riscv.vmv.v.v.nxv2i16(
178     <vscale x 2 x i16> undef,
179     <vscale x 2 x i16> %0,
180     i32 %1)
182   ret <vscale x 2 x i16> %a
185 declare <vscale x 4 x i16> @llvm.riscv.vmv.v.v.nxv4i16(
186   <vscale x 4 x i16>,
187   <vscale x 4 x i16>,
188   i32);
190 define <vscale x 4 x i16> @intrinsic_vmv.v.v_v_nxv4i16_nxv4i16(<vscale x 4 x i16> %0, i32 %1) nounwind {
191 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv4i16_nxv4i16:
192 ; CHECK:       # %bb.0: # %entry
193 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
194 ; CHECK-NEXT:    vmv.v.v v8, v8
195 ; CHECK-NEXT:    ret
196 entry:
197   %a = call <vscale x 4 x i16> @llvm.riscv.vmv.v.v.nxv4i16(
198     <vscale x 4 x i16> undef,
199     <vscale x 4 x i16> %0,
200     i32 %1)
202   ret <vscale x 4 x i16> %a
205 declare <vscale x 8 x i16> @llvm.riscv.vmv.v.v.nxv8i16(
206   <vscale x 8 x i16>,
207   <vscale x 8 x i16>,
208   i32);
210 define <vscale x 8 x i16> @intrinsic_vmv.v.v_v_nxv8i16_nxv8i16(<vscale x 8 x i16> %0, i32 %1) nounwind {
211 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv8i16_nxv8i16:
212 ; CHECK:       # %bb.0: # %entry
213 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
214 ; CHECK-NEXT:    vmv.v.v v8, v8
215 ; CHECK-NEXT:    ret
216 entry:
217   %a = call <vscale x 8 x i16> @llvm.riscv.vmv.v.v.nxv8i16(
218     <vscale x 8 x i16> undef,
219     <vscale x 8 x i16> %0,
220     i32 %1)
222   ret <vscale x 8 x i16> %a
225 declare <vscale x 16 x i16> @llvm.riscv.vmv.v.v.nxv16i16(
226   <vscale x 16 x i16>,
227   <vscale x 16 x i16>,
228   i32);
230 define <vscale x 16 x i16> @intrinsic_vmv.v.v_v_nxv16i16_nxv16i16(<vscale x 16 x i16> %0, i32 %1) nounwind {
231 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv16i16_nxv16i16:
232 ; CHECK:       # %bb.0: # %entry
233 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
234 ; CHECK-NEXT:    vmv.v.v v8, v8
235 ; CHECK-NEXT:    ret
236 entry:
237   %a = call <vscale x 16 x i16> @llvm.riscv.vmv.v.v.nxv16i16(
238     <vscale x 16 x i16> undef,
239     <vscale x 16 x i16> %0,
240     i32 %1)
242   ret <vscale x 16 x i16> %a
245 declare <vscale x 32 x i16> @llvm.riscv.vmv.v.v.nxv32i16(
246   <vscale x 32 x i16>,
247   <vscale x 32 x i16>,
248   i32);
250 define <vscale x 32 x i16> @intrinsic_vmv.v.v_v_nxv32i16_nxv32i16(<vscale x 32 x i16> %0, i32 %1) nounwind {
251 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv32i16_nxv32i16:
252 ; CHECK:       # %bb.0: # %entry
253 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
254 ; CHECK-NEXT:    vmv.v.v v8, v8
255 ; CHECK-NEXT:    ret
256 entry:
257   %a = call <vscale x 32 x i16> @llvm.riscv.vmv.v.v.nxv32i16(
258     <vscale x 32 x i16> undef,
259     <vscale x 32 x i16> %0,
260     i32 %1)
262   ret <vscale x 32 x i16> %a
265 declare <vscale x 1 x i32> @llvm.riscv.vmv.v.v.nxv1i32(
266   <vscale x 1 x i32>,
267   <vscale x 1 x i32>,
268   i32);
270 define <vscale x 1 x i32> @intrinsic_vmv.v.v_v_nxv1i32_nxv1i32(<vscale x 1 x i32> %0, i32 %1) nounwind {
271 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv1i32_nxv1i32:
272 ; CHECK:       # %bb.0: # %entry
273 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
274 ; CHECK-NEXT:    vmv.v.v v8, v8
275 ; CHECK-NEXT:    ret
276 entry:
277   %a = call <vscale x 1 x i32> @llvm.riscv.vmv.v.v.nxv1i32(
278     <vscale x 1 x i32> undef,
279     <vscale x 1 x i32> %0,
280     i32 %1)
282   ret <vscale x 1 x i32> %a
285 declare <vscale x 2 x i32> @llvm.riscv.vmv.v.v.nxv2i32(
286   <vscale x 2 x i32>,
287   <vscale x 2 x i32>,
288   i32);
290 define <vscale x 2 x i32> @intrinsic_vmv.v.v_v_nxv2i32_nxv2i32(<vscale x 2 x i32> %0, i32 %1) nounwind {
291 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv2i32_nxv2i32:
292 ; CHECK:       # %bb.0: # %entry
293 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
294 ; CHECK-NEXT:    vmv.v.v v8, v8
295 ; CHECK-NEXT:    ret
296 entry:
297   %a = call <vscale x 2 x i32> @llvm.riscv.vmv.v.v.nxv2i32(
298     <vscale x 2 x i32> undef,
299     <vscale x 2 x i32> %0,
300     i32 %1)
302   ret <vscale x 2 x i32> %a
305 declare <vscale x 4 x i32> @llvm.riscv.vmv.v.v.nxv4i32(
306   <vscale x 4 x i32>,
307   <vscale x 4 x i32>,
308   i32);
310 define <vscale x 4 x i32> @intrinsic_vmv.v.v_v_nxv4i32_nxv4i32(<vscale x 4 x i32> %0, i32 %1) nounwind {
311 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv4i32_nxv4i32:
312 ; CHECK:       # %bb.0: # %entry
313 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
314 ; CHECK-NEXT:    vmv.v.v v8, v8
315 ; CHECK-NEXT:    ret
316 entry:
317   %a = call <vscale x 4 x i32> @llvm.riscv.vmv.v.v.nxv4i32(
318     <vscale x 4 x i32> undef,
319     <vscale x 4 x i32> %0,
320     i32 %1)
322   ret <vscale x 4 x i32> %a
325 declare <vscale x 8 x i32> @llvm.riscv.vmv.v.v.nxv8i32(
326   <vscale x 8 x i32>,
327   <vscale x 8 x i32>,
328   i32);
330 define <vscale x 8 x i32> @intrinsic_vmv.v.v_v_nxv8i32_nxv8i32(<vscale x 8 x i32> %0, i32 %1) nounwind {
331 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv8i32_nxv8i32:
332 ; CHECK:       # %bb.0: # %entry
333 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
334 ; CHECK-NEXT:    vmv.v.v v8, v8
335 ; CHECK-NEXT:    ret
336 entry:
337   %a = call <vscale x 8 x i32> @llvm.riscv.vmv.v.v.nxv8i32(
338     <vscale x 8 x i32> undef,
339     <vscale x 8 x i32> %0,
340     i32 %1)
342   ret <vscale x 8 x i32> %a
345 declare <vscale x 16 x i32> @llvm.riscv.vmv.v.v.nxv16i32(
346   <vscale x 16 x i32>,
347   <vscale x 16 x i32>,
348   i32);
350 define <vscale x 16 x i32> @intrinsic_vmv.v.v_v_nxv16i32_nxv16i32(<vscale x 16 x i32> %0, i32 %1) nounwind {
351 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv16i32_nxv16i32:
352 ; CHECK:       # %bb.0: # %entry
353 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
354 ; CHECK-NEXT:    vmv.v.v v8, v8
355 ; CHECK-NEXT:    ret
356 entry:
357   %a = call <vscale x 16 x i32> @llvm.riscv.vmv.v.v.nxv16i32(
358     <vscale x 16 x i32> undef,
359     <vscale x 16 x i32> %0,
360     i32 %1)
362   ret <vscale x 16 x i32> %a
365 declare <vscale x 1 x i64> @llvm.riscv.vmv.v.v.nxv1i64(
366   <vscale x 1 x i64>,
367   <vscale x 1 x i64>,
368   i32);
370 define <vscale x 1 x i64> @intrinsic_vmv.v.v_v_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, i32 %1) nounwind {
371 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv1i64_nxv1i64:
372 ; CHECK:       # %bb.0: # %entry
373 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
374 ; CHECK-NEXT:    vmv.v.v v8, v8
375 ; CHECK-NEXT:    ret
376 entry:
377   %a = call <vscale x 1 x i64> @llvm.riscv.vmv.v.v.nxv1i64(
378     <vscale x 1 x i64> undef,
379     <vscale x 1 x i64> %0,
380     i32 %1)
382   ret <vscale x 1 x i64> %a
385 declare <vscale x 2 x i64> @llvm.riscv.vmv.v.v.nxv2i64(
386   <vscale x 2 x i64>,
387   <vscale x 2 x i64>,
388   i32);
390 define <vscale x 2 x i64> @intrinsic_vmv.v.v_v_nxv2i64_nxv2i64(<vscale x 2 x i64> %0, i32 %1) nounwind {
391 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv2i64_nxv2i64:
392 ; CHECK:       # %bb.0: # %entry
393 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
394 ; CHECK-NEXT:    vmv.v.v v8, v8
395 ; CHECK-NEXT:    ret
396 entry:
397   %a = call <vscale x 2 x i64> @llvm.riscv.vmv.v.v.nxv2i64(
398     <vscale x 2 x i64> undef,
399     <vscale x 2 x i64> %0,
400     i32 %1)
402   ret <vscale x 2 x i64> %a
405 declare <vscale x 4 x i64> @llvm.riscv.vmv.v.v.nxv4i64(
406   <vscale x 4 x i64>,
407   <vscale x 4 x i64>,
408   i32);
410 define <vscale x 4 x i64> @intrinsic_vmv.v.v_v_nxv4i64_nxv4i64(<vscale x 4 x i64> %0, i32 %1) nounwind {
411 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv4i64_nxv4i64:
412 ; CHECK:       # %bb.0: # %entry
413 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
414 ; CHECK-NEXT:    vmv.v.v v8, v8
415 ; CHECK-NEXT:    ret
416 entry:
417   %a = call <vscale x 4 x i64> @llvm.riscv.vmv.v.v.nxv4i64(
418     <vscale x 4 x i64> undef,
419     <vscale x 4 x i64> %0,
420     i32 %1)
422   ret <vscale x 4 x i64> %a
425 declare <vscale x 8 x i64> @llvm.riscv.vmv.v.v.nxv8i64(
426   <vscale x 8 x i64>,
427   <vscale x 8 x i64>,
428   i32);
430 define <vscale x 8 x i64> @intrinsic_vmv.v.v_v_nxv8i64_nxv8i64(<vscale x 8 x i64> %0, i32 %1) nounwind {
431 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv8i64_nxv8i64:
432 ; CHECK:       # %bb.0: # %entry
433 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
434 ; CHECK-NEXT:    vmv.v.v v8, v8
435 ; CHECK-NEXT:    ret
436 entry:
437   %a = call <vscale x 8 x i64> @llvm.riscv.vmv.v.v.nxv8i64(
438     <vscale x 8 x i64> undef,
439     <vscale x 8 x i64> %0,
440     i32 %1)
442   ret <vscale x 8 x i64> %a
445 declare <vscale x 1 x half> @llvm.riscv.vmv.v.v.nxv1f16(
446   <vscale x 1 x half>,
447   <vscale x 1 x half>,
448   i32);
450 define <vscale x 1 x half> @intrinsic_vmv.v.v_v_nxv1f16_nxv1f16(<vscale x 1 x half> %0, i32 %1) nounwind {
451 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv1f16_nxv1f16:
452 ; CHECK:       # %bb.0: # %entry
453 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
454 ; CHECK-NEXT:    vmv.v.v v8, v8
455 ; CHECK-NEXT:    ret
456 entry:
457   %a = call <vscale x 1 x half> @llvm.riscv.vmv.v.v.nxv1f16(
458     <vscale x 1 x half> undef,
459     <vscale x 1 x half> %0,
460     i32 %1)
462   ret <vscale x 1 x half> %a
465 declare <vscale x 2 x half> @llvm.riscv.vmv.v.v.nxv2f16(
466   <vscale x 2 x half>,
467   <vscale x 2 x half>,
468   i32);
470 define <vscale x 2 x half> @intrinsic_vmv.v.v_v_nxv2f16_nxv2f16(<vscale x 2 x half> %0, i32 %1) nounwind {
471 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv2f16_nxv2f16:
472 ; CHECK:       # %bb.0: # %entry
473 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
474 ; CHECK-NEXT:    vmv.v.v v8, v8
475 ; CHECK-NEXT:    ret
476 entry:
477   %a = call <vscale x 2 x half> @llvm.riscv.vmv.v.v.nxv2f16(
478     <vscale x 2 x half> undef,
479     <vscale x 2 x half> %0,
480     i32 %1)
482   ret <vscale x 2 x half> %a
485 declare <vscale x 4 x half> @llvm.riscv.vmv.v.v.nxv4f16(
486   <vscale x 4 x half>,
487   <vscale x 4 x half>,
488   i32);
490 define <vscale x 4 x half> @intrinsic_vmv.v.v_v_nxv4f16_nxv4f16(<vscale x 4 x half> %0, i32 %1) nounwind {
491 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv4f16_nxv4f16:
492 ; CHECK:       # %bb.0: # %entry
493 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
494 ; CHECK-NEXT:    vmv.v.v v8, v8
495 ; CHECK-NEXT:    ret
496 entry:
497   %a = call <vscale x 4 x half> @llvm.riscv.vmv.v.v.nxv4f16(
498     <vscale x 4 x half> undef,
499     <vscale x 4 x half> %0,
500     i32 %1)
502   ret <vscale x 4 x half> %a
505 declare <vscale x 8 x half> @llvm.riscv.vmv.v.v.nxv8f16(
506   <vscale x 8 x half>,
507   <vscale x 8 x half>,
508   i32);
510 define <vscale x 8 x half> @intrinsic_vmv.v.v_v_nxv8f16_nxv8f16(<vscale x 8 x half> %0, i32 %1) nounwind {
511 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv8f16_nxv8f16:
512 ; CHECK:       # %bb.0: # %entry
513 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
514 ; CHECK-NEXT:    vmv.v.v v8, v8
515 ; CHECK-NEXT:    ret
516 entry:
517   %a = call <vscale x 8 x half> @llvm.riscv.vmv.v.v.nxv8f16(
518     <vscale x 8 x half> undef,
519     <vscale x 8 x half> %0,
520     i32 %1)
522   ret <vscale x 8 x half> %a
525 declare <vscale x 16 x half> @llvm.riscv.vmv.v.v.nxv16f16(
526   <vscale x 16 x half>,
527   <vscale x 16 x half>,
528   i32);
530 define <vscale x 16 x half> @intrinsic_vmv.v.v_v_nxv16f16_nxv16f16(<vscale x 16 x half> %0, i32 %1) nounwind {
531 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv16f16_nxv16f16:
532 ; CHECK:       # %bb.0: # %entry
533 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
534 ; CHECK-NEXT:    vmv.v.v v8, v8
535 ; CHECK-NEXT:    ret
536 entry:
537   %a = call <vscale x 16 x half> @llvm.riscv.vmv.v.v.nxv16f16(
538     <vscale x 16 x half> undef,
539     <vscale x 16 x half> %0,
540     i32 %1)
542   ret <vscale x 16 x half> %a
545 declare <vscale x 32 x half> @llvm.riscv.vmv.v.v.nxv32f16(
546   <vscale x 32 x half>,
547   <vscale x 32 x half>,
548   i32);
550 define <vscale x 32 x half> @intrinsic_vmv.v.v_v_nxv32f16_nxv32f16(<vscale x 32 x half> %0, i32 %1) nounwind {
551 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv32f16_nxv32f16:
552 ; CHECK:       # %bb.0: # %entry
553 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
554 ; CHECK-NEXT:    vmv.v.v v8, v8
555 ; CHECK-NEXT:    ret
556 entry:
557   %a = call <vscale x 32 x half> @llvm.riscv.vmv.v.v.nxv32f16(
558     <vscale x 32 x half> undef,
559     <vscale x 32 x half> %0,
560     i32 %1)
562   ret <vscale x 32 x half> %a
565 declare <vscale x 1 x float> @llvm.riscv.vmv.v.v.nxv1f32(
566   <vscale x 1 x float>,
567   <vscale x 1 x float>,
568   i32);
570 define <vscale x 1 x float> @intrinsic_vmv.v.v_v_nxv1f32_nxv1f32(<vscale x 1 x float> %0, i32 %1) nounwind {
571 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv1f32_nxv1f32:
572 ; CHECK:       # %bb.0: # %entry
573 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
574 ; CHECK-NEXT:    vmv.v.v v8, v8
575 ; CHECK-NEXT:    ret
576 entry:
577   %a = call <vscale x 1 x float> @llvm.riscv.vmv.v.v.nxv1f32(
578     <vscale x 1 x float> undef,
579     <vscale x 1 x float> %0,
580     i32 %1)
582   ret <vscale x 1 x float> %a
585 declare <vscale x 2 x float> @llvm.riscv.vmv.v.v.nxv2f32(
586   <vscale x 2 x float>,
587   <vscale x 2 x float>,
588   i32);
590 define <vscale x 2 x float> @intrinsic_vmv.v.v_v_nxv2f32_nxv2f32(<vscale x 2 x float> %0, i32 %1) nounwind {
591 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv2f32_nxv2f32:
592 ; CHECK:       # %bb.0: # %entry
593 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
594 ; CHECK-NEXT:    vmv.v.v v8, v8
595 ; CHECK-NEXT:    ret
596 entry:
597   %a = call <vscale x 2 x float> @llvm.riscv.vmv.v.v.nxv2f32(
598     <vscale x 2 x float> undef,
599     <vscale x 2 x float> %0,
600     i32 %1)
602   ret <vscale x 2 x float> %a
605 declare <vscale x 4 x float> @llvm.riscv.vmv.v.v.nxv4f32(
606   <vscale x 4 x float>,
607   <vscale x 4 x float>,
608   i32);
610 define <vscale x 4 x float> @intrinsic_vmv.v.v_v_nxv4f32_nxv4f32(<vscale x 4 x float> %0, i32 %1) nounwind {
611 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv4f32_nxv4f32:
612 ; CHECK:       # %bb.0: # %entry
613 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
614 ; CHECK-NEXT:    vmv.v.v v8, v8
615 ; CHECK-NEXT:    ret
616 entry:
617   %a = call <vscale x 4 x float> @llvm.riscv.vmv.v.v.nxv4f32(
618     <vscale x 4 x float> undef,
619     <vscale x 4 x float> %0,
620     i32 %1)
622   ret <vscale x 4 x float> %a
625 declare <vscale x 8 x float> @llvm.riscv.vmv.v.v.nxv8f32(
626   <vscale x 8 x float>,
627   <vscale x 8 x float>,
628   i32);
630 define <vscale x 8 x float> @intrinsic_vmv.v.v_v_nxv8f32_nxv8f32(<vscale x 8 x float> %0, i32 %1) nounwind {
631 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv8f32_nxv8f32:
632 ; CHECK:       # %bb.0: # %entry
633 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
634 ; CHECK-NEXT:    vmv.v.v v8, v8
635 ; CHECK-NEXT:    ret
636 entry:
637   %a = call <vscale x 8 x float> @llvm.riscv.vmv.v.v.nxv8f32(
638     <vscale x 8 x float> undef,
639     <vscale x 8 x float> %0,
640     i32 %1)
642   ret <vscale x 8 x float> %a
645 declare <vscale x 16 x float> @llvm.riscv.vmv.v.v.nxv16f32(
646   <vscale x 16 x float>,
647   <vscale x 16 x float>,
648   i32);
650 define <vscale x 16 x float> @intrinsic_vmv.v.v_v_nxv16f32_nxv16f32(<vscale x 16 x float> %0, i32 %1) nounwind {
651 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv16f32_nxv16f32:
652 ; CHECK:       # %bb.0: # %entry
653 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
654 ; CHECK-NEXT:    vmv.v.v v8, v8
655 ; CHECK-NEXT:    ret
656 entry:
657   %a = call <vscale x 16 x float> @llvm.riscv.vmv.v.v.nxv16f32(
658     <vscale x 16 x float> undef,
659     <vscale x 16 x float> %0,
660     i32 %1)
662   ret <vscale x 16 x float> %a
665 declare <vscale x 1 x double> @llvm.riscv.vmv.v.v.nxv1f64(
666   <vscale x 1 x double>,
667   <vscale x 1 x double>,
668   i32);
670 define <vscale x 1 x double> @intrinsic_vmv.v.v_v_nxv1f64_nxv1f64(<vscale x 1 x double> %0, i32 %1) nounwind {
671 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv1f64_nxv1f64:
672 ; CHECK:       # %bb.0: # %entry
673 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
674 ; CHECK-NEXT:    vmv.v.v v8, v8
675 ; CHECK-NEXT:    ret
676 entry:
677   %a = call <vscale x 1 x double> @llvm.riscv.vmv.v.v.nxv1f64(
678     <vscale x 1 x double> undef,
679     <vscale x 1 x double> %0,
680     i32 %1)
682   ret <vscale x 1 x double> %a
685 declare <vscale x 2 x double> @llvm.riscv.vmv.v.v.nxv2f64(
686   <vscale x 2 x double>,
687   <vscale x 2 x double>,
688   i32);
690 define <vscale x 2 x double> @intrinsic_vmv.v.v_v_nxv2f64_nxv2f64(<vscale x 2 x double> %0, i32 %1) nounwind {
691 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv2f64_nxv2f64:
692 ; CHECK:       # %bb.0: # %entry
693 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
694 ; CHECK-NEXT:    vmv.v.v v8, v8
695 ; CHECK-NEXT:    ret
696 entry:
697   %a = call <vscale x 2 x double> @llvm.riscv.vmv.v.v.nxv2f64(
698     <vscale x 2 x double> undef,
699     <vscale x 2 x double> %0,
700     i32 %1)
702   ret <vscale x 2 x double> %a
705 declare <vscale x 4 x double> @llvm.riscv.vmv.v.v.nxv4f64(
706   <vscale x 4 x double>,
707   <vscale x 4 x double>,
708   i32);
710 define <vscale x 4 x double> @intrinsic_vmv.v.v_v_nxv4f64_nxv4f64(<vscale x 4 x double> %0, i32 %1) nounwind {
711 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv4f64_nxv4f64:
712 ; CHECK:       # %bb.0: # %entry
713 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
714 ; CHECK-NEXT:    vmv.v.v v8, v8
715 ; CHECK-NEXT:    ret
716 entry:
717   %a = call <vscale x 4 x double> @llvm.riscv.vmv.v.v.nxv4f64(
718     <vscale x 4 x double> undef,
719     <vscale x 4 x double> %0,
720     i32 %1)
722   ret <vscale x 4 x double> %a
725 declare <vscale x 8 x double> @llvm.riscv.vmv.v.v.nxv8f64(
726   <vscale x 8 x double>,
727   <vscale x 8 x double>,
728   i32);
730 define <vscale x 8 x double> @intrinsic_vmv.v.v_v_nxv8f64_nxv8f64(<vscale x 8 x double> %0, i32 %1) nounwind {
731 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv8f64_nxv8f64:
732 ; CHECK:       # %bb.0: # %entry
733 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
734 ; CHECK-NEXT:    vmv.v.v v8, v8
735 ; CHECK-NEXT:    ret
736 entry:
737   %a = call <vscale x 8 x double> @llvm.riscv.vmv.v.v.nxv8f64(
738     <vscale x 8 x double> undef,
739     <vscale x 8 x double> %0,
740     i32 %1)
742   ret <vscale x 8 x double> %a