1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+v,+zvfhmin,+zvfbfmin \
3 ; RUN: -verify-machineinstrs | FileCheck %s
4 ; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v,+zvfhmin,+zvfbfmin \
5 ; RUN: -verify-machineinstrs | FileCheck %s
7 declare <vscale x 1 x i8> @llvm.riscv.vmv.v.v.nxv1i8(
12 define <vscale x 1 x i8> @intrinsic_vmv.v.v_v_nxv1i8_nxv1i8(<vscale x 1 x i8> %0, <vscale x 1 x i8> %1, iXLen %2) nounwind {
13 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv1i8_nxv1i8:
14 ; CHECK: # %bb.0: # %entry
15 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, tu, ma
16 ; CHECK-NEXT: vmv.v.v v8, v9
19 %a = call <vscale x 1 x i8> @llvm.riscv.vmv.v.v.nxv1i8(
24 ret <vscale x 1 x i8> %a
27 declare <vscale x 2 x i8> @llvm.riscv.vmv.v.v.nxv2i8(
32 define <vscale x 2 x i8> @intrinsic_vmv.v.v_v_nxv2i8_nxv2i8(<vscale x 2 x i8> %0, <vscale x 2 x i8> %1, iXLen %2) nounwind {
33 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv2i8_nxv2i8:
34 ; CHECK: # %bb.0: # %entry
35 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, tu, ma
36 ; CHECK-NEXT: vmv.v.v v8, v9
39 %a = call <vscale x 2 x i8> @llvm.riscv.vmv.v.v.nxv2i8(
44 ret <vscale x 2 x i8> %a
47 declare <vscale x 4 x i8> @llvm.riscv.vmv.v.v.nxv4i8(
52 define <vscale x 4 x i8> @intrinsic_vmv.v.v_v_nxv4i8_nxv4i8(<vscale x 4 x i8> %0, <vscale x 4 x i8> %1, iXLen %2) nounwind {
53 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv4i8_nxv4i8:
54 ; CHECK: # %bb.0: # %entry
55 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, tu, ma
56 ; CHECK-NEXT: vmv.v.v v8, v9
59 %a = call <vscale x 4 x i8> @llvm.riscv.vmv.v.v.nxv4i8(
64 ret <vscale x 4 x i8> %a
67 declare <vscale x 8 x i8> @llvm.riscv.vmv.v.v.nxv8i8(
72 define <vscale x 8 x i8> @intrinsic_vmv.v.v_v_nxv8i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 8 x i8> %1, iXLen %2) nounwind {
73 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv8i8_nxv8i8:
74 ; CHECK: # %bb.0: # %entry
75 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, tu, ma
76 ; CHECK-NEXT: vmv.v.v v8, v9
79 %a = call <vscale x 8 x i8> @llvm.riscv.vmv.v.v.nxv8i8(
84 ret <vscale x 8 x i8> %a
87 declare <vscale x 16 x i8> @llvm.riscv.vmv.v.v.nxv16i8(
92 define <vscale x 16 x i8> @intrinsic_vmv.v.v_v_nxv16i8_nxv16i8(<vscale x 16 x i8> %0, <vscale x 16 x i8> %1, iXLen %2) nounwind {
93 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv16i8_nxv16i8:
94 ; CHECK: # %bb.0: # %entry
95 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, tu, ma
96 ; CHECK-NEXT: vmv.v.v v8, v10
99 %a = call <vscale x 16 x i8> @llvm.riscv.vmv.v.v.nxv16i8(
100 <vscale x 16 x i8> %0,
101 <vscale x 16 x i8> %1,
104 ret <vscale x 16 x i8> %a
107 declare <vscale x 32 x i8> @llvm.riscv.vmv.v.v.nxv32i8(
112 define <vscale x 32 x i8> @intrinsic_vmv.v.v_v_nxv32i8_nxv32i8(<vscale x 32 x i8> %0, <vscale x 32 x i8> %1, iXLen %2) nounwind {
113 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv32i8_nxv32i8:
114 ; CHECK: # %bb.0: # %entry
115 ; CHECK-NEXT: vsetvli zero, a0, e8, m4, tu, ma
116 ; CHECK-NEXT: vmv.v.v v8, v12
119 %a = call <vscale x 32 x i8> @llvm.riscv.vmv.v.v.nxv32i8(
120 <vscale x 32 x i8> %0,
121 <vscale x 32 x i8> %1,
124 ret <vscale x 32 x i8> %a
127 declare <vscale x 64 x i8> @llvm.riscv.vmv.v.v.nxv64i8(
132 define <vscale x 64 x i8> @intrinsic_vmv.v.v_v_nxv64i8_nxv64i8(<vscale x 64 x i8> %0, <vscale x 64 x i8> %1, iXLen %2) nounwind {
133 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv64i8_nxv64i8:
134 ; CHECK: # %bb.0: # %entry
135 ; CHECK-NEXT: vsetvli zero, a0, e8, m8, tu, ma
136 ; CHECK-NEXT: vmv.v.v v8, v16
139 %a = call <vscale x 64 x i8> @llvm.riscv.vmv.v.v.nxv64i8(
140 <vscale x 64 x i8> %0,
141 <vscale x 64 x i8> %1,
144 ret <vscale x 64 x i8> %a
147 declare <vscale x 1 x i16> @llvm.riscv.vmv.v.v.nxv1i16(
152 define <vscale x 1 x i16> @intrinsic_vmv.v.v_v_nxv1i16_nxv1i16(<vscale x 1 x i16> %0, <vscale x 1 x i16> %1, iXLen %2) nounwind {
153 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv1i16_nxv1i16:
154 ; CHECK: # %bb.0: # %entry
155 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, tu, ma
156 ; CHECK-NEXT: vmv.v.v v8, v9
159 %a = call <vscale x 1 x i16> @llvm.riscv.vmv.v.v.nxv1i16(
160 <vscale x 1 x i16> %0,
161 <vscale x 1 x i16> %1,
164 ret <vscale x 1 x i16> %a
167 declare <vscale x 2 x i16> @llvm.riscv.vmv.v.v.nxv2i16(
172 define <vscale x 2 x i16> @intrinsic_vmv.v.v_v_nxv2i16_nxv2i16(<vscale x 2 x i16> %0, <vscale x 2 x i16> %1, iXLen %2) nounwind {
173 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv2i16_nxv2i16:
174 ; CHECK: # %bb.0: # %entry
175 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, tu, ma
176 ; CHECK-NEXT: vmv.v.v v8, v9
179 %a = call <vscale x 2 x i16> @llvm.riscv.vmv.v.v.nxv2i16(
180 <vscale x 2 x i16> %0,
181 <vscale x 2 x i16> %1,
184 ret <vscale x 2 x i16> %a
187 declare <vscale x 4 x i16> @llvm.riscv.vmv.v.v.nxv4i16(
192 define <vscale x 4 x i16> @intrinsic_vmv.v.v_v_nxv4i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 4 x i16> %1, iXLen %2) nounwind {
193 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv4i16_nxv4i16:
194 ; CHECK: # %bb.0: # %entry
195 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, tu, ma
196 ; CHECK-NEXT: vmv.v.v v8, v9
199 %a = call <vscale x 4 x i16> @llvm.riscv.vmv.v.v.nxv4i16(
200 <vscale x 4 x i16> %0,
201 <vscale x 4 x i16> %1,
204 ret <vscale x 4 x i16> %a
207 declare <vscale x 8 x i16> @llvm.riscv.vmv.v.v.nxv8i16(
212 define <vscale x 8 x i16> @intrinsic_vmv.v.v_v_nxv8i16_nxv8i16(<vscale x 8 x i16> %0, <vscale x 8 x i16> %1, iXLen %2) nounwind {
213 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv8i16_nxv8i16:
214 ; CHECK: # %bb.0: # %entry
215 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, tu, ma
216 ; CHECK-NEXT: vmv.v.v v8, v10
219 %a = call <vscale x 8 x i16> @llvm.riscv.vmv.v.v.nxv8i16(
220 <vscale x 8 x i16> %0,
221 <vscale x 8 x i16> %1,
224 ret <vscale x 8 x i16> %a
227 declare <vscale x 16 x i16> @llvm.riscv.vmv.v.v.nxv16i16(
232 define <vscale x 16 x i16> @intrinsic_vmv.v.v_v_nxv16i16_nxv16i16(<vscale x 16 x i16> %0, <vscale x 16 x i16> %1, iXLen %2) nounwind {
233 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv16i16_nxv16i16:
234 ; CHECK: # %bb.0: # %entry
235 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, tu, ma
236 ; CHECK-NEXT: vmv.v.v v8, v12
239 %a = call <vscale x 16 x i16> @llvm.riscv.vmv.v.v.nxv16i16(
240 <vscale x 16 x i16> %0,
241 <vscale x 16 x i16> %1,
244 ret <vscale x 16 x i16> %a
247 declare <vscale x 32 x i16> @llvm.riscv.vmv.v.v.nxv32i16(
252 define <vscale x 32 x i16> @intrinsic_vmv.v.v_v_nxv32i16_nxv32i16(<vscale x 32 x i16> %0, <vscale x 32 x i16> %1, iXLen %2) nounwind {
253 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv32i16_nxv32i16:
254 ; CHECK: # %bb.0: # %entry
255 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, tu, ma
256 ; CHECK-NEXT: vmv.v.v v8, v16
259 %a = call <vscale x 32 x i16> @llvm.riscv.vmv.v.v.nxv32i16(
260 <vscale x 32 x i16> %0,
261 <vscale x 32 x i16> %1,
264 ret <vscale x 32 x i16> %a
267 declare <vscale x 1 x i32> @llvm.riscv.vmv.v.v.nxv1i32(
272 define <vscale x 1 x i32> @intrinsic_vmv.v.v_v_nxv1i32_nxv1i32(<vscale x 1 x i32> %0, <vscale x 1 x i32> %1, iXLen %2) nounwind {
273 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv1i32_nxv1i32:
274 ; CHECK: # %bb.0: # %entry
275 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, tu, ma
276 ; CHECK-NEXT: vmv.v.v v8, v9
279 %a = call <vscale x 1 x i32> @llvm.riscv.vmv.v.v.nxv1i32(
280 <vscale x 1 x i32> %0,
281 <vscale x 1 x i32> %1,
284 ret <vscale x 1 x i32> %a
287 declare <vscale x 2 x i32> @llvm.riscv.vmv.v.v.nxv2i32(
292 define <vscale x 2 x i32> @intrinsic_vmv.v.v_v_nxv2i32_nxv2i32(<vscale x 2 x i32> %0, <vscale x 2 x i32> %1, iXLen %2) nounwind {
293 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv2i32_nxv2i32:
294 ; CHECK: # %bb.0: # %entry
295 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, tu, ma
296 ; CHECK-NEXT: vmv.v.v v8, v9
299 %a = call <vscale x 2 x i32> @llvm.riscv.vmv.v.v.nxv2i32(
300 <vscale x 2 x i32> %0,
301 <vscale x 2 x i32> %1,
304 ret <vscale x 2 x i32> %a
307 declare <vscale x 4 x i32> @llvm.riscv.vmv.v.v.nxv4i32(
312 define <vscale x 4 x i32> @intrinsic_vmv.v.v_v_nxv4i32_nxv4i32(<vscale x 4 x i32> %0, <vscale x 4 x i32> %1, iXLen %2) nounwind {
313 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv4i32_nxv4i32:
314 ; CHECK: # %bb.0: # %entry
315 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, tu, ma
316 ; CHECK-NEXT: vmv.v.v v8, v10
319 %a = call <vscale x 4 x i32> @llvm.riscv.vmv.v.v.nxv4i32(
320 <vscale x 4 x i32> %0,
321 <vscale x 4 x i32> %1,
324 ret <vscale x 4 x i32> %a
327 declare <vscale x 8 x i32> @llvm.riscv.vmv.v.v.nxv8i32(
332 define <vscale x 8 x i32> @intrinsic_vmv.v.v_v_nxv8i32_nxv8i32(<vscale x 8 x i32> %0, <vscale x 8 x i32> %1, iXLen %2) nounwind {
333 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv8i32_nxv8i32:
334 ; CHECK: # %bb.0: # %entry
335 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, tu, ma
336 ; CHECK-NEXT: vmv.v.v v8, v12
339 %a = call <vscale x 8 x i32> @llvm.riscv.vmv.v.v.nxv8i32(
340 <vscale x 8 x i32> %0,
341 <vscale x 8 x i32> %1,
344 ret <vscale x 8 x i32> %a
347 declare <vscale x 16 x i32> @llvm.riscv.vmv.v.v.nxv16i32(
352 define <vscale x 16 x i32> @intrinsic_vmv.v.v_v_nxv16i32_nxv16i32(<vscale x 16 x i32> %0, <vscale x 16 x i32> %1, iXLen %2) nounwind {
353 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv16i32_nxv16i32:
354 ; CHECK: # %bb.0: # %entry
355 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, tu, ma
356 ; CHECK-NEXT: vmv.v.v v8, v16
359 %a = call <vscale x 16 x i32> @llvm.riscv.vmv.v.v.nxv16i32(
360 <vscale x 16 x i32> %0,
361 <vscale x 16 x i32> %1,
364 ret <vscale x 16 x i32> %a
367 declare <vscale x 1 x i64> @llvm.riscv.vmv.v.v.nxv1i64(
372 define <vscale x 1 x i64> @intrinsic_vmv.v.v_v_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, iXLen %2) nounwind {
373 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv1i64_nxv1i64:
374 ; CHECK: # %bb.0: # %entry
375 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, tu, ma
376 ; CHECK-NEXT: vmv.v.v v8, v9
379 %a = call <vscale x 1 x i64> @llvm.riscv.vmv.v.v.nxv1i64(
380 <vscale x 1 x i64> %0,
381 <vscale x 1 x i64> %1,
384 ret <vscale x 1 x i64> %a
387 declare <vscale x 2 x i64> @llvm.riscv.vmv.v.v.nxv2i64(
392 define <vscale x 2 x i64> @intrinsic_vmv.v.v_v_nxv2i64_nxv2i64(<vscale x 2 x i64> %0, <vscale x 2 x i64> %1, iXLen %2) nounwind {
393 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv2i64_nxv2i64:
394 ; CHECK: # %bb.0: # %entry
395 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, tu, ma
396 ; CHECK-NEXT: vmv.v.v v8, v10
399 %a = call <vscale x 2 x i64> @llvm.riscv.vmv.v.v.nxv2i64(
400 <vscale x 2 x i64> %0,
401 <vscale x 2 x i64> %1,
404 ret <vscale x 2 x i64> %a
407 declare <vscale x 4 x i64> @llvm.riscv.vmv.v.v.nxv4i64(
412 define <vscale x 4 x i64> @intrinsic_vmv.v.v_v_nxv4i64_nxv4i64(<vscale x 4 x i64> %0, <vscale x 4 x i64> %1, iXLen %2) nounwind {
413 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv4i64_nxv4i64:
414 ; CHECK: # %bb.0: # %entry
415 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, tu, ma
416 ; CHECK-NEXT: vmv.v.v v8, v12
419 %a = call <vscale x 4 x i64> @llvm.riscv.vmv.v.v.nxv4i64(
420 <vscale x 4 x i64> %0,
421 <vscale x 4 x i64> %1,
424 ret <vscale x 4 x i64> %a
427 declare <vscale x 8 x i64> @llvm.riscv.vmv.v.v.nxv8i64(
432 define <vscale x 8 x i64> @intrinsic_vmv.v.v_v_nxv8i64_nxv8i64(<vscale x 8 x i64> %0, <vscale x 8 x i64> %1, iXLen %2) nounwind {
433 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv8i64_nxv8i64:
434 ; CHECK: # %bb.0: # %entry
435 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, tu, ma
436 ; CHECK-NEXT: vmv.v.v v8, v16
439 %a = call <vscale x 8 x i64> @llvm.riscv.vmv.v.v.nxv8i64(
440 <vscale x 8 x i64> %0,
441 <vscale x 8 x i64> %1,
444 ret <vscale x 8 x i64> %a
447 declare <vscale x 1 x half> @llvm.riscv.vmv.v.v.nxv1f16(
452 define <vscale x 1 x half> @intrinsic_vmv.v.v_v_nxv1f16_nxv1f16(<vscale x 1 x half> %0, <vscale x 1 x half> %1, iXLen %2) nounwind {
453 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv1f16_nxv1f16:
454 ; CHECK: # %bb.0: # %entry
455 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, tu, ma
456 ; CHECK-NEXT: vmv.v.v v8, v9
459 %a = call <vscale x 1 x half> @llvm.riscv.vmv.v.v.nxv1f16(
460 <vscale x 1 x half> %0,
461 <vscale x 1 x half> %1,
464 ret <vscale x 1 x half> %a
467 declare <vscale x 2 x half> @llvm.riscv.vmv.v.v.nxv2f16(
472 define <vscale x 2 x half> @intrinsic_vmv.v.v_v_nxv2f16_nxv2f16(<vscale x 2 x half> %0, <vscale x 2 x half> %1, iXLen %2) nounwind {
473 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv2f16_nxv2f16:
474 ; CHECK: # %bb.0: # %entry
475 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, tu, ma
476 ; CHECK-NEXT: vmv.v.v v8, v9
479 %a = call <vscale x 2 x half> @llvm.riscv.vmv.v.v.nxv2f16(
480 <vscale x 2 x half> %0,
481 <vscale x 2 x half> %1,
484 ret <vscale x 2 x half> %a
487 declare <vscale x 4 x half> @llvm.riscv.vmv.v.v.nxv4f16(
492 define <vscale x 4 x half> @intrinsic_vmv.v.v_v_nxv4f16_nxv4f16(<vscale x 4 x half> %0, <vscale x 4 x half> %1, iXLen %2) nounwind {
493 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv4f16_nxv4f16:
494 ; CHECK: # %bb.0: # %entry
495 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, tu, ma
496 ; CHECK-NEXT: vmv.v.v v8, v9
499 %a = call <vscale x 4 x half> @llvm.riscv.vmv.v.v.nxv4f16(
500 <vscale x 4 x half> %0,
501 <vscale x 4 x half> %1,
504 ret <vscale x 4 x half> %a
507 declare <vscale x 8 x half> @llvm.riscv.vmv.v.v.nxv8f16(
512 define <vscale x 8 x half> @intrinsic_vmv.v.v_v_nxv8f16_nxv8f16(<vscale x 8 x half> %0, <vscale x 8 x half> %1, iXLen %2) nounwind {
513 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv8f16_nxv8f16:
514 ; CHECK: # %bb.0: # %entry
515 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, tu, ma
516 ; CHECK-NEXT: vmv.v.v v8, v10
519 %a = call <vscale x 8 x half> @llvm.riscv.vmv.v.v.nxv8f16(
520 <vscale x 8 x half> %0,
521 <vscale x 8 x half> %1,
524 ret <vscale x 8 x half> %a
527 declare <vscale x 16 x half> @llvm.riscv.vmv.v.v.nxv16f16(
528 <vscale x 16 x half>,
529 <vscale x 16 x half>,
532 define <vscale x 16 x half> @intrinsic_vmv.v.v_v_nxv16f16_nxv16f16(<vscale x 16 x half> %0, <vscale x 16 x half> %1, iXLen %2) nounwind {
533 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv16f16_nxv16f16:
534 ; CHECK: # %bb.0: # %entry
535 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, tu, ma
536 ; CHECK-NEXT: vmv.v.v v8, v12
539 %a = call <vscale x 16 x half> @llvm.riscv.vmv.v.v.nxv16f16(
540 <vscale x 16 x half> %0,
541 <vscale x 16 x half> %1,
544 ret <vscale x 16 x half> %a
547 declare <vscale x 32 x half> @llvm.riscv.vmv.v.v.nxv32f16(
548 <vscale x 32 x half>,
549 <vscale x 32 x half>,
552 define <vscale x 32 x half> @intrinsic_vmv.v.v_v_nxv32f16_nxv32f16(<vscale x 32 x half> %0, <vscale x 32 x half> %1, iXLen %2) nounwind {
553 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv32f16_nxv32f16:
554 ; CHECK: # %bb.0: # %entry
555 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, tu, ma
556 ; CHECK-NEXT: vmv.v.v v8, v16
559 %a = call <vscale x 32 x half> @llvm.riscv.vmv.v.v.nxv32f16(
560 <vscale x 32 x half> %0,
561 <vscale x 32 x half> %1,
564 ret <vscale x 32 x half> %a
567 declare <vscale x 1 x bfloat> @llvm.riscv.vmv.v.v.nxv1bf16(
568 <vscale x 1 x bfloat>,
569 <vscale x 1 x bfloat>,
572 define <vscale x 1 x bfloat> @intrinsic_vmv.v.v_v_nxv1bf16_nxv1bf16(<vscale x 1 x bfloat> %0, <vscale x 1 x bfloat> %1, iXLen %2) nounwind {
573 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv1bf16_nxv1bf16:
574 ; CHECK: # %bb.0: # %entry
575 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, tu, ma
576 ; CHECK-NEXT: vmv.v.v v8, v9
579 %a = call <vscale x 1 x bfloat> @llvm.riscv.vmv.v.v.nxv1bf16(
580 <vscale x 1 x bfloat> %0,
581 <vscale x 1 x bfloat> %1,
584 ret <vscale x 1 x bfloat> %a
587 declare <vscale x 2 x bfloat> @llvm.riscv.vmv.v.v.nxv2bf16(
588 <vscale x 2 x bfloat>,
589 <vscale x 2 x bfloat>,
592 define <vscale x 2 x bfloat> @intrinsic_vmv.v.v_v_nxv2bf16_nxv2bf16(<vscale x 2 x bfloat> %0, <vscale x 2 x bfloat> %1, iXLen %2) nounwind {
593 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv2bf16_nxv2bf16:
594 ; CHECK: # %bb.0: # %entry
595 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, tu, ma
596 ; CHECK-NEXT: vmv.v.v v8, v9
599 %a = call <vscale x 2 x bfloat> @llvm.riscv.vmv.v.v.nxv2bf16(
600 <vscale x 2 x bfloat> %0,
601 <vscale x 2 x bfloat> %1,
604 ret <vscale x 2 x bfloat> %a
607 declare <vscale x 4 x bfloat> @llvm.riscv.vmv.v.v.nxv4bf16(
608 <vscale x 4 x bfloat>,
609 <vscale x 4 x bfloat>,
612 define <vscale x 4 x bfloat> @intrinsic_vmv.v.v_v_nxv4bf16_nxv4bf16(<vscale x 4 x bfloat> %0, <vscale x 4 x bfloat> %1, iXLen %2) nounwind {
613 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv4bf16_nxv4bf16:
614 ; CHECK: # %bb.0: # %entry
615 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, tu, ma
616 ; CHECK-NEXT: vmv.v.v v8, v9
619 %a = call <vscale x 4 x bfloat> @llvm.riscv.vmv.v.v.nxv4bf16(
620 <vscale x 4 x bfloat> %0,
621 <vscale x 4 x bfloat> %1,
624 ret <vscale x 4 x bfloat> %a
627 declare <vscale x 8 x bfloat> @llvm.riscv.vmv.v.v.nxv8bf16(
628 <vscale x 8 x bfloat>,
629 <vscale x 8 x bfloat>,
632 define <vscale x 8 x bfloat> @intrinsic_vmv.v.v_v_nxv8bf16_nxv8bf16(<vscale x 8 x bfloat> %0, <vscale x 8 x bfloat> %1, iXLen %2) nounwind {
633 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv8bf16_nxv8bf16:
634 ; CHECK: # %bb.0: # %entry
635 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, tu, ma
636 ; CHECK-NEXT: vmv.v.v v8, v10
639 %a = call <vscale x 8 x bfloat> @llvm.riscv.vmv.v.v.nxv8bf16(
640 <vscale x 8 x bfloat> %0,
641 <vscale x 8 x bfloat> %1,
644 ret <vscale x 8 x bfloat> %a
647 declare <vscale x 16 x bfloat> @llvm.riscv.vmv.v.v.nxv16bf16(
648 <vscale x 16 x bfloat>,
649 <vscale x 16 x bfloat>,
652 define <vscale x 16 x bfloat> @intrinsic_vmv.v.v_v_nxv16bf16_nxv16bf16(<vscale x 16 x bfloat> %0, <vscale x 16 x bfloat> %1, iXLen %2) nounwind {
653 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv16bf16_nxv16bf16:
654 ; CHECK: # %bb.0: # %entry
655 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, tu, ma
656 ; CHECK-NEXT: vmv.v.v v8, v12
659 %a = call <vscale x 16 x bfloat> @llvm.riscv.vmv.v.v.nxv16bf16(
660 <vscale x 16 x bfloat> %0,
661 <vscale x 16 x bfloat> %1,
664 ret <vscale x 16 x bfloat> %a
667 declare <vscale x 32 x bfloat> @llvm.riscv.vmv.v.v.nxv32bf16(
668 <vscale x 32 x bfloat>,
669 <vscale x 32 x bfloat>,
672 define <vscale x 32 x bfloat> @intrinsic_vmv.v.v_v_nxv32bf16_nxv32bf16(<vscale x 32 x bfloat> %0, <vscale x 32 x bfloat> %1, iXLen %2) nounwind {
673 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv32bf16_nxv32bf16:
674 ; CHECK: # %bb.0: # %entry
675 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, tu, ma
676 ; CHECK-NEXT: vmv.v.v v8, v16
679 %a = call <vscale x 32 x bfloat> @llvm.riscv.vmv.v.v.nxv32bf16(
680 <vscale x 32 x bfloat> %0,
681 <vscale x 32 x bfloat> %1,
684 ret <vscale x 32 x bfloat> %a
687 declare <vscale x 1 x float> @llvm.riscv.vmv.v.v.nxv1f32(
688 <vscale x 1 x float>,
689 <vscale x 1 x float>,
692 define <vscale x 1 x float> @intrinsic_vmv.v.v_v_nxv1f32_nxv1f32(<vscale x 1 x float> %0, <vscale x 1 x float> %1, iXLen %2) nounwind {
693 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv1f32_nxv1f32:
694 ; CHECK: # %bb.0: # %entry
695 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, tu, ma
696 ; CHECK-NEXT: vmv.v.v v8, v9
699 %a = call <vscale x 1 x float> @llvm.riscv.vmv.v.v.nxv1f32(
700 <vscale x 1 x float> %0,
701 <vscale x 1 x float> %1,
704 ret <vscale x 1 x float> %a
707 declare <vscale x 2 x float> @llvm.riscv.vmv.v.v.nxv2f32(
708 <vscale x 2 x float>,
709 <vscale x 2 x float>,
712 define <vscale x 2 x float> @intrinsic_vmv.v.v_v_nxv2f32_nxv2f32(<vscale x 2 x float> %0, <vscale x 2 x float> %1, iXLen %2) nounwind {
713 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv2f32_nxv2f32:
714 ; CHECK: # %bb.0: # %entry
715 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, tu, ma
716 ; CHECK-NEXT: vmv.v.v v8, v9
719 %a = call <vscale x 2 x float> @llvm.riscv.vmv.v.v.nxv2f32(
720 <vscale x 2 x float> %0,
721 <vscale x 2 x float> %1,
724 ret <vscale x 2 x float> %a
727 declare <vscale x 4 x float> @llvm.riscv.vmv.v.v.nxv4f32(
728 <vscale x 4 x float>,
729 <vscale x 4 x float>,
732 define <vscale x 4 x float> @intrinsic_vmv.v.v_v_nxv4f32_nxv4f32(<vscale x 4 x float> %0, <vscale x 4 x float> %1, iXLen %2) nounwind {
733 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv4f32_nxv4f32:
734 ; CHECK: # %bb.0: # %entry
735 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, tu, ma
736 ; CHECK-NEXT: vmv.v.v v8, v10
739 %a = call <vscale x 4 x float> @llvm.riscv.vmv.v.v.nxv4f32(
740 <vscale x 4 x float> %0,
741 <vscale x 4 x float> %1,
744 ret <vscale x 4 x float> %a
747 declare <vscale x 8 x float> @llvm.riscv.vmv.v.v.nxv8f32(
748 <vscale x 8 x float>,
749 <vscale x 8 x float>,
752 define <vscale x 8 x float> @intrinsic_vmv.v.v_v_nxv8f32_nxv8f32(<vscale x 8 x float> %0, <vscale x 8 x float> %1, iXLen %2) nounwind {
753 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv8f32_nxv8f32:
754 ; CHECK: # %bb.0: # %entry
755 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, tu, ma
756 ; CHECK-NEXT: vmv.v.v v8, v12
759 %a = call <vscale x 8 x float> @llvm.riscv.vmv.v.v.nxv8f32(
760 <vscale x 8 x float> %0,
761 <vscale x 8 x float> %1,
764 ret <vscale x 8 x float> %a
767 declare <vscale x 16 x float> @llvm.riscv.vmv.v.v.nxv16f32(
768 <vscale x 16 x float>,
769 <vscale x 16 x float>,
772 define <vscale x 16 x float> @intrinsic_vmv.v.v_v_nxv16f32_nxv16f32(<vscale x 16 x float> %0, <vscale x 16 x float> %1, iXLen %2) nounwind {
773 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv16f32_nxv16f32:
774 ; CHECK: # %bb.0: # %entry
775 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, tu, ma
776 ; CHECK-NEXT: vmv.v.v v8, v16
779 %a = call <vscale x 16 x float> @llvm.riscv.vmv.v.v.nxv16f32(
780 <vscale x 16 x float> %0,
781 <vscale x 16 x float> %1,
784 ret <vscale x 16 x float> %a
787 declare <vscale x 1 x double> @llvm.riscv.vmv.v.v.nxv1f64(
788 <vscale x 1 x double>,
789 <vscale x 1 x double>,
792 define <vscale x 1 x double> @intrinsic_vmv.v.v_v_nxv1f64_nxv1f64(<vscale x 1 x double> %0, <vscale x 1 x double> %1, iXLen %2) nounwind {
793 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv1f64_nxv1f64:
794 ; CHECK: # %bb.0: # %entry
795 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, tu, ma
796 ; CHECK-NEXT: vmv.v.v v8, v9
799 %a = call <vscale x 1 x double> @llvm.riscv.vmv.v.v.nxv1f64(
800 <vscale x 1 x double> %0,
801 <vscale x 1 x double> %1,
804 ret <vscale x 1 x double> %a
807 declare <vscale x 2 x double> @llvm.riscv.vmv.v.v.nxv2f64(
808 <vscale x 2 x double>,
809 <vscale x 2 x double>,
812 define <vscale x 2 x double> @intrinsic_vmv.v.v_v_nxv2f64_nxv2f64(<vscale x 2 x double> %0, <vscale x 2 x double> %1, iXLen %2) nounwind {
813 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv2f64_nxv2f64:
814 ; CHECK: # %bb.0: # %entry
815 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, tu, ma
816 ; CHECK-NEXT: vmv.v.v v8, v10
819 %a = call <vscale x 2 x double> @llvm.riscv.vmv.v.v.nxv2f64(
820 <vscale x 2 x double> %0,
821 <vscale x 2 x double> %1,
824 ret <vscale x 2 x double> %a
827 declare <vscale x 4 x double> @llvm.riscv.vmv.v.v.nxv4f64(
828 <vscale x 4 x double>,
829 <vscale x 4 x double>,
832 define <vscale x 4 x double> @intrinsic_vmv.v.v_v_nxv4f64_nxv4f64(<vscale x 4 x double> %0, <vscale x 4 x double> %1, iXLen %2) nounwind {
833 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv4f64_nxv4f64:
834 ; CHECK: # %bb.0: # %entry
835 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, tu, ma
836 ; CHECK-NEXT: vmv.v.v v8, v12
839 %a = call <vscale x 4 x double> @llvm.riscv.vmv.v.v.nxv4f64(
840 <vscale x 4 x double> %0,
841 <vscale x 4 x double> %1,
844 ret <vscale x 4 x double> %a
847 declare <vscale x 8 x double> @llvm.riscv.vmv.v.v.nxv8f64(
848 <vscale x 8 x double>,
849 <vscale x 8 x double>,
852 define <vscale x 8 x double> @intrinsic_vmv.v.v_v_nxv8f64_nxv8f64(<vscale x 8 x double> %0, <vscale x 8 x double> %1, iXLen %2) nounwind {
853 ; CHECK-LABEL: intrinsic_vmv.v.v_v_nxv8f64_nxv8f64:
854 ; CHECK: # %bb.0: # %entry
855 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, tu, ma
856 ; CHECK-NEXT: vmv.v.v v8, v16
859 %a = call <vscale x 8 x double> @llvm.riscv.vmv.v.v.nxv8f64(
860 <vscale x 8 x double> %0,
861 <vscale x 8 x double> %1,
864 ret <vscale x 8 x double> %a