1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv64 -mattr=+v,+d,+zfh,+zvfh,+f -verify-machineinstrs \
3 ; RUN: < %s | FileCheck %s
5 ; The intrinsics are not supported with RV32.
7 declare void @llvm.riscv.vsuxei.nxv1i8.nxv1i64(
13 define void @intrinsic_vsuxei_v_nxv1i8_nxv1i8_nxv1i64(<vscale x 1 x i8> %0, ptr %1, <vscale x 1 x i64> %2, i64 %3) nounwind {
14 ; CHECK-LABEL: intrinsic_vsuxei_v_nxv1i8_nxv1i8_nxv1i64:
15 ; CHECK: # %bb.0: # %entry
16 ; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
17 ; CHECK-NEXT: vsuxei64.v v8, (a0), v9
20 call void @llvm.riscv.vsuxei.nxv1i8.nxv1i64(
23 <vscale x 1 x i64> %2,
29 declare void @llvm.riscv.vsuxei.mask.nxv1i8.nxv1i64(
36 define void @intrinsic_vsuxei_mask_v_nxv1i8_nxv1i8_nxv1i64(<vscale x 1 x i8> %0, ptr %1, <vscale x 1 x i64> %2, <vscale x 1 x i1> %3, i64 %4) nounwind {
37 ; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1i8_nxv1i8_nxv1i64:
38 ; CHECK: # %bb.0: # %entry
39 ; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
40 ; CHECK-NEXT: vsuxei64.v v8, (a0), v9, v0.t
43 call void @llvm.riscv.vsuxei.mask.nxv1i8.nxv1i64(
46 <vscale x 1 x i64> %2,
53 declare void @llvm.riscv.vsuxei.nxv2i8.nxv2i64(
59 define void @intrinsic_vsuxei_v_nxv2i8_nxv2i8_nxv2i64(<vscale x 2 x i8> %0, ptr %1, <vscale x 2 x i64> %2, i64 %3) nounwind {
60 ; CHECK-LABEL: intrinsic_vsuxei_v_nxv2i8_nxv2i8_nxv2i64:
61 ; CHECK: # %bb.0: # %entry
62 ; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma
63 ; CHECK-NEXT: vsuxei64.v v8, (a0), v10
66 call void @llvm.riscv.vsuxei.nxv2i8.nxv2i64(
69 <vscale x 2 x i64> %2,
75 declare void @llvm.riscv.vsuxei.mask.nxv2i8.nxv2i64(
82 define void @intrinsic_vsuxei_mask_v_nxv2i8_nxv2i8_nxv2i64(<vscale x 2 x i8> %0, ptr %1, <vscale x 2 x i64> %2, <vscale x 2 x i1> %3, i64 %4) nounwind {
83 ; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2i8_nxv2i8_nxv2i64:
84 ; CHECK: # %bb.0: # %entry
85 ; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma
86 ; CHECK-NEXT: vsuxei64.v v8, (a0), v10, v0.t
89 call void @llvm.riscv.vsuxei.mask.nxv2i8.nxv2i64(
92 <vscale x 2 x i64> %2,
99 declare void @llvm.riscv.vsuxei.nxv4i8.nxv4i64(
105 define void @intrinsic_vsuxei_v_nxv4i8_nxv4i8_nxv4i64(<vscale x 4 x i8> %0, ptr %1, <vscale x 4 x i64> %2, i64 %3) nounwind {
106 ; CHECK-LABEL: intrinsic_vsuxei_v_nxv4i8_nxv4i8_nxv4i64:
107 ; CHECK: # %bb.0: # %entry
108 ; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma
109 ; CHECK-NEXT: vsuxei64.v v8, (a0), v12
112 call void @llvm.riscv.vsuxei.nxv4i8.nxv4i64(
113 <vscale x 4 x i8> %0,
115 <vscale x 4 x i64> %2,
121 declare void @llvm.riscv.vsuxei.mask.nxv4i8.nxv4i64(
128 define void @intrinsic_vsuxei_mask_v_nxv4i8_nxv4i8_nxv4i64(<vscale x 4 x i8> %0, ptr %1, <vscale x 4 x i64> %2, <vscale x 4 x i1> %3, i64 %4) nounwind {
129 ; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4i8_nxv4i8_nxv4i64:
130 ; CHECK: # %bb.0: # %entry
131 ; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma
132 ; CHECK-NEXT: vsuxei64.v v8, (a0), v12, v0.t
135 call void @llvm.riscv.vsuxei.mask.nxv4i8.nxv4i64(
136 <vscale x 4 x i8> %0,
138 <vscale x 4 x i64> %2,
139 <vscale x 4 x i1> %3,
145 declare void @llvm.riscv.vsuxei.nxv8i8.nxv8i64(
151 define void @intrinsic_vsuxei_v_nxv8i8_nxv8i8_nxv8i64(<vscale x 8 x i8> %0, ptr %1, <vscale x 8 x i64> %2, i64 %3) nounwind {
152 ; CHECK-LABEL: intrinsic_vsuxei_v_nxv8i8_nxv8i8_nxv8i64:
153 ; CHECK: # %bb.0: # %entry
154 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
155 ; CHECK-NEXT: vsuxei64.v v8, (a0), v16
158 call void @llvm.riscv.vsuxei.nxv8i8.nxv8i64(
159 <vscale x 8 x i8> %0,
161 <vscale x 8 x i64> %2,
167 declare void @llvm.riscv.vsuxei.mask.nxv8i8.nxv8i64(
174 define void @intrinsic_vsuxei_mask_v_nxv8i8_nxv8i8_nxv8i64(<vscale x 8 x i8> %0, ptr %1, <vscale x 8 x i64> %2, <vscale x 8 x i1> %3, i64 %4) nounwind {
175 ; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8i8_nxv8i8_nxv8i64:
176 ; CHECK: # %bb.0: # %entry
177 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
178 ; CHECK-NEXT: vsuxei64.v v8, (a0), v16, v0.t
181 call void @llvm.riscv.vsuxei.mask.nxv8i8.nxv8i64(
182 <vscale x 8 x i8> %0,
184 <vscale x 8 x i64> %2,
185 <vscale x 8 x i1> %3,
191 declare void @llvm.riscv.vsuxei.nxv1i16.nxv1i64(
197 define void @intrinsic_vsuxei_v_nxv1i16_nxv1i16_nxv1i64(<vscale x 1 x i16> %0, ptr %1, <vscale x 1 x i64> %2, i64 %3) nounwind {
198 ; CHECK-LABEL: intrinsic_vsuxei_v_nxv1i16_nxv1i16_nxv1i64:
199 ; CHECK: # %bb.0: # %entry
200 ; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
201 ; CHECK-NEXT: vsuxei64.v v8, (a0), v9
204 call void @llvm.riscv.vsuxei.nxv1i16.nxv1i64(
205 <vscale x 1 x i16> %0,
207 <vscale x 1 x i64> %2,
213 declare void @llvm.riscv.vsuxei.mask.nxv1i16.nxv1i64(
220 define void @intrinsic_vsuxei_mask_v_nxv1i16_nxv1i16_nxv1i64(<vscale x 1 x i16> %0, ptr %1, <vscale x 1 x i64> %2, <vscale x 1 x i1> %3, i64 %4) nounwind {
221 ; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1i16_nxv1i16_nxv1i64:
222 ; CHECK: # %bb.0: # %entry
223 ; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
224 ; CHECK-NEXT: vsuxei64.v v8, (a0), v9, v0.t
227 call void @llvm.riscv.vsuxei.mask.nxv1i16.nxv1i64(
228 <vscale x 1 x i16> %0,
230 <vscale x 1 x i64> %2,
231 <vscale x 1 x i1> %3,
237 declare void @llvm.riscv.vsuxei.nxv2i16.nxv2i64(
243 define void @intrinsic_vsuxei_v_nxv2i16_nxv2i16_nxv2i64(<vscale x 2 x i16> %0, ptr %1, <vscale x 2 x i64> %2, i64 %3) nounwind {
244 ; CHECK-LABEL: intrinsic_vsuxei_v_nxv2i16_nxv2i16_nxv2i64:
245 ; CHECK: # %bb.0: # %entry
246 ; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma
247 ; CHECK-NEXT: vsuxei64.v v8, (a0), v10
250 call void @llvm.riscv.vsuxei.nxv2i16.nxv2i64(
251 <vscale x 2 x i16> %0,
253 <vscale x 2 x i64> %2,
259 declare void @llvm.riscv.vsuxei.mask.nxv2i16.nxv2i64(
266 define void @intrinsic_vsuxei_mask_v_nxv2i16_nxv2i16_nxv2i64(<vscale x 2 x i16> %0, ptr %1, <vscale x 2 x i64> %2, <vscale x 2 x i1> %3, i64 %4) nounwind {
267 ; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2i16_nxv2i16_nxv2i64:
268 ; CHECK: # %bb.0: # %entry
269 ; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma
270 ; CHECK-NEXT: vsuxei64.v v8, (a0), v10, v0.t
273 call void @llvm.riscv.vsuxei.mask.nxv2i16.nxv2i64(
274 <vscale x 2 x i16> %0,
276 <vscale x 2 x i64> %2,
277 <vscale x 2 x i1> %3,
283 declare void @llvm.riscv.vsuxei.nxv4i16.nxv4i64(
289 define void @intrinsic_vsuxei_v_nxv4i16_nxv4i16_nxv4i64(<vscale x 4 x i16> %0, ptr %1, <vscale x 4 x i64> %2, i64 %3) nounwind {
290 ; CHECK-LABEL: intrinsic_vsuxei_v_nxv4i16_nxv4i16_nxv4i64:
291 ; CHECK: # %bb.0: # %entry
292 ; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma
293 ; CHECK-NEXT: vsuxei64.v v8, (a0), v12
296 call void @llvm.riscv.vsuxei.nxv4i16.nxv4i64(
297 <vscale x 4 x i16> %0,
299 <vscale x 4 x i64> %2,
305 declare void @llvm.riscv.vsuxei.mask.nxv4i16.nxv4i64(
312 define void @intrinsic_vsuxei_mask_v_nxv4i16_nxv4i16_nxv4i64(<vscale x 4 x i16> %0, ptr %1, <vscale x 4 x i64> %2, <vscale x 4 x i1> %3, i64 %4) nounwind {
313 ; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4i16_nxv4i16_nxv4i64:
314 ; CHECK: # %bb.0: # %entry
315 ; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma
316 ; CHECK-NEXT: vsuxei64.v v8, (a0), v12, v0.t
319 call void @llvm.riscv.vsuxei.mask.nxv4i16.nxv4i64(
320 <vscale x 4 x i16> %0,
322 <vscale x 4 x i64> %2,
323 <vscale x 4 x i1> %3,
329 declare void @llvm.riscv.vsuxei.nxv8i16.nxv8i64(
335 define void @intrinsic_vsuxei_v_nxv8i16_nxv8i16_nxv8i64(<vscale x 8 x i16> %0, ptr %1, <vscale x 8 x i64> %2, i64 %3) nounwind {
336 ; CHECK-LABEL: intrinsic_vsuxei_v_nxv8i16_nxv8i16_nxv8i64:
337 ; CHECK: # %bb.0: # %entry
338 ; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma
339 ; CHECK-NEXT: vsuxei64.v v8, (a0), v16
342 call void @llvm.riscv.vsuxei.nxv8i16.nxv8i64(
343 <vscale x 8 x i16> %0,
345 <vscale x 8 x i64> %2,
351 declare void @llvm.riscv.vsuxei.mask.nxv8i16.nxv8i64(
358 define void @intrinsic_vsuxei_mask_v_nxv8i16_nxv8i16_nxv8i64(<vscale x 8 x i16> %0, ptr %1, <vscale x 8 x i64> %2, <vscale x 8 x i1> %3, i64 %4) nounwind {
359 ; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8i16_nxv8i16_nxv8i64:
360 ; CHECK: # %bb.0: # %entry
361 ; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma
362 ; CHECK-NEXT: vsuxei64.v v8, (a0), v16, v0.t
365 call void @llvm.riscv.vsuxei.mask.nxv8i16.nxv8i64(
366 <vscale x 8 x i16> %0,
368 <vscale x 8 x i64> %2,
369 <vscale x 8 x i1> %3,
375 declare void @llvm.riscv.vsuxei.nxv1i32.nxv1i64(
381 define void @intrinsic_vsuxei_v_nxv1i32_nxv1i32_nxv1i64(<vscale x 1 x i32> %0, ptr %1, <vscale x 1 x i64> %2, i64 %3) nounwind {
382 ; CHECK-LABEL: intrinsic_vsuxei_v_nxv1i32_nxv1i32_nxv1i64:
383 ; CHECK: # %bb.0: # %entry
384 ; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
385 ; CHECK-NEXT: vsuxei64.v v8, (a0), v9
388 call void @llvm.riscv.vsuxei.nxv1i32.nxv1i64(
389 <vscale x 1 x i32> %0,
391 <vscale x 1 x i64> %2,
397 declare void @llvm.riscv.vsuxei.mask.nxv1i32.nxv1i64(
404 define void @intrinsic_vsuxei_mask_v_nxv1i32_nxv1i32_nxv1i64(<vscale x 1 x i32> %0, ptr %1, <vscale x 1 x i64> %2, <vscale x 1 x i1> %3, i64 %4) nounwind {
405 ; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1i32_nxv1i32_nxv1i64:
406 ; CHECK: # %bb.0: # %entry
407 ; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
408 ; CHECK-NEXT: vsuxei64.v v8, (a0), v9, v0.t
411 call void @llvm.riscv.vsuxei.mask.nxv1i32.nxv1i64(
412 <vscale x 1 x i32> %0,
414 <vscale x 1 x i64> %2,
415 <vscale x 1 x i1> %3,
421 declare void @llvm.riscv.vsuxei.nxv2i32.nxv2i64(
427 define void @intrinsic_vsuxei_v_nxv2i32_nxv2i32_nxv2i64(<vscale x 2 x i32> %0, ptr %1, <vscale x 2 x i64> %2, i64 %3) nounwind {
428 ; CHECK-LABEL: intrinsic_vsuxei_v_nxv2i32_nxv2i32_nxv2i64:
429 ; CHECK: # %bb.0: # %entry
430 ; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma
431 ; CHECK-NEXT: vsuxei64.v v8, (a0), v10
434 call void @llvm.riscv.vsuxei.nxv2i32.nxv2i64(
435 <vscale x 2 x i32> %0,
437 <vscale x 2 x i64> %2,
443 declare void @llvm.riscv.vsuxei.mask.nxv2i32.nxv2i64(
450 define void @intrinsic_vsuxei_mask_v_nxv2i32_nxv2i32_nxv2i64(<vscale x 2 x i32> %0, ptr %1, <vscale x 2 x i64> %2, <vscale x 2 x i1> %3, i64 %4) nounwind {
451 ; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2i32_nxv2i32_nxv2i64:
452 ; CHECK: # %bb.0: # %entry
453 ; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma
454 ; CHECK-NEXT: vsuxei64.v v8, (a0), v10, v0.t
457 call void @llvm.riscv.vsuxei.mask.nxv2i32.nxv2i64(
458 <vscale x 2 x i32> %0,
460 <vscale x 2 x i64> %2,
461 <vscale x 2 x i1> %3,
467 declare void @llvm.riscv.vsuxei.nxv4i32.nxv4i64(
473 define void @intrinsic_vsuxei_v_nxv4i32_nxv4i32_nxv4i64(<vscale x 4 x i32> %0, ptr %1, <vscale x 4 x i64> %2, i64 %3) nounwind {
474 ; CHECK-LABEL: intrinsic_vsuxei_v_nxv4i32_nxv4i32_nxv4i64:
475 ; CHECK: # %bb.0: # %entry
476 ; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
477 ; CHECK-NEXT: vsuxei64.v v8, (a0), v12
480 call void @llvm.riscv.vsuxei.nxv4i32.nxv4i64(
481 <vscale x 4 x i32> %0,
483 <vscale x 4 x i64> %2,
489 declare void @llvm.riscv.vsuxei.mask.nxv4i32.nxv4i64(
496 define void @intrinsic_vsuxei_mask_v_nxv4i32_nxv4i32_nxv4i64(<vscale x 4 x i32> %0, ptr %1, <vscale x 4 x i64> %2, <vscale x 4 x i1> %3, i64 %4) nounwind {
497 ; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4i32_nxv4i32_nxv4i64:
498 ; CHECK: # %bb.0: # %entry
499 ; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
500 ; CHECK-NEXT: vsuxei64.v v8, (a0), v12, v0.t
503 call void @llvm.riscv.vsuxei.mask.nxv4i32.nxv4i64(
504 <vscale x 4 x i32> %0,
506 <vscale x 4 x i64> %2,
507 <vscale x 4 x i1> %3,
513 declare void @llvm.riscv.vsuxei.nxv8i32.nxv8i64(
519 define void @intrinsic_vsuxei_v_nxv8i32_nxv8i32_nxv8i64(<vscale x 8 x i32> %0, ptr %1, <vscale x 8 x i64> %2, i64 %3) nounwind {
520 ; CHECK-LABEL: intrinsic_vsuxei_v_nxv8i32_nxv8i32_nxv8i64:
521 ; CHECK: # %bb.0: # %entry
522 ; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma
523 ; CHECK-NEXT: vsuxei64.v v8, (a0), v16
526 call void @llvm.riscv.vsuxei.nxv8i32.nxv8i64(
527 <vscale x 8 x i32> %0,
529 <vscale x 8 x i64> %2,
535 declare void @llvm.riscv.vsuxei.mask.nxv8i32.nxv8i64(
542 define void @intrinsic_vsuxei_mask_v_nxv8i32_nxv8i32_nxv8i64(<vscale x 8 x i32> %0, ptr %1, <vscale x 8 x i64> %2, <vscale x 8 x i1> %3, i64 %4) nounwind {
543 ; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8i32_nxv8i32_nxv8i64:
544 ; CHECK: # %bb.0: # %entry
545 ; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma
546 ; CHECK-NEXT: vsuxei64.v v8, (a0), v16, v0.t
549 call void @llvm.riscv.vsuxei.mask.nxv8i32.nxv8i64(
550 <vscale x 8 x i32> %0,
552 <vscale x 8 x i64> %2,
553 <vscale x 8 x i1> %3,
559 declare void @llvm.riscv.vsuxei.nxv1i64.nxv1i64(
565 define void @intrinsic_vsuxei_v_nxv1i64_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, ptr %1, <vscale x 1 x i64> %2, i64 %3) nounwind {
566 ; CHECK-LABEL: intrinsic_vsuxei_v_nxv1i64_nxv1i64_nxv1i64:
567 ; CHECK: # %bb.0: # %entry
568 ; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma
569 ; CHECK-NEXT: vsuxei64.v v8, (a0), v9
572 call void @llvm.riscv.vsuxei.nxv1i64.nxv1i64(
573 <vscale x 1 x i64> %0,
575 <vscale x 1 x i64> %2,
581 declare void @llvm.riscv.vsuxei.mask.nxv1i64.nxv1i64(
588 define void @intrinsic_vsuxei_mask_v_nxv1i64_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, ptr %1, <vscale x 1 x i64> %2, <vscale x 1 x i1> %3, i64 %4) nounwind {
589 ; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1i64_nxv1i64_nxv1i64:
590 ; CHECK: # %bb.0: # %entry
591 ; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma
592 ; CHECK-NEXT: vsuxei64.v v8, (a0), v9, v0.t
595 call void @llvm.riscv.vsuxei.mask.nxv1i64.nxv1i64(
596 <vscale x 1 x i64> %0,
598 <vscale x 1 x i64> %2,
599 <vscale x 1 x i1> %3,
605 declare void @llvm.riscv.vsuxei.nxv2i64.nxv2i64(
611 define void @intrinsic_vsuxei_v_nxv2i64_nxv2i64_nxv2i64(<vscale x 2 x i64> %0, ptr %1, <vscale x 2 x i64> %2, i64 %3) nounwind {
612 ; CHECK-LABEL: intrinsic_vsuxei_v_nxv2i64_nxv2i64_nxv2i64:
613 ; CHECK: # %bb.0: # %entry
614 ; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma
615 ; CHECK-NEXT: vsuxei64.v v8, (a0), v10
618 call void @llvm.riscv.vsuxei.nxv2i64.nxv2i64(
619 <vscale x 2 x i64> %0,
621 <vscale x 2 x i64> %2,
627 declare void @llvm.riscv.vsuxei.mask.nxv2i64.nxv2i64(
634 define void @intrinsic_vsuxei_mask_v_nxv2i64_nxv2i64_nxv2i64(<vscale x 2 x i64> %0, ptr %1, <vscale x 2 x i64> %2, <vscale x 2 x i1> %3, i64 %4) nounwind {
635 ; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2i64_nxv2i64_nxv2i64:
636 ; CHECK: # %bb.0: # %entry
637 ; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma
638 ; CHECK-NEXT: vsuxei64.v v8, (a0), v10, v0.t
641 call void @llvm.riscv.vsuxei.mask.nxv2i64.nxv2i64(
642 <vscale x 2 x i64> %0,
644 <vscale x 2 x i64> %2,
645 <vscale x 2 x i1> %3,
651 declare void @llvm.riscv.vsuxei.nxv4i64.nxv4i64(
657 define void @intrinsic_vsuxei_v_nxv4i64_nxv4i64_nxv4i64(<vscale x 4 x i64> %0, ptr %1, <vscale x 4 x i64> %2, i64 %3) nounwind {
658 ; CHECK-LABEL: intrinsic_vsuxei_v_nxv4i64_nxv4i64_nxv4i64:
659 ; CHECK: # %bb.0: # %entry
660 ; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma
661 ; CHECK-NEXT: vsuxei64.v v8, (a0), v12
664 call void @llvm.riscv.vsuxei.nxv4i64.nxv4i64(
665 <vscale x 4 x i64> %0,
667 <vscale x 4 x i64> %2,
673 declare void @llvm.riscv.vsuxei.mask.nxv4i64.nxv4i64(
680 define void @intrinsic_vsuxei_mask_v_nxv4i64_nxv4i64_nxv4i64(<vscale x 4 x i64> %0, ptr %1, <vscale x 4 x i64> %2, <vscale x 4 x i1> %3, i64 %4) nounwind {
681 ; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4i64_nxv4i64_nxv4i64:
682 ; CHECK: # %bb.0: # %entry
683 ; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma
684 ; CHECK-NEXT: vsuxei64.v v8, (a0), v12, v0.t
687 call void @llvm.riscv.vsuxei.mask.nxv4i64.nxv4i64(
688 <vscale x 4 x i64> %0,
690 <vscale x 4 x i64> %2,
691 <vscale x 4 x i1> %3,
697 declare void @llvm.riscv.vsuxei.nxv8i64.nxv8i64(
703 define void @intrinsic_vsuxei_v_nxv8i64_nxv8i64_nxv8i64(<vscale x 8 x i64> %0, ptr %1, <vscale x 8 x i64> %2, i64 %3) nounwind {
704 ; CHECK-LABEL: intrinsic_vsuxei_v_nxv8i64_nxv8i64_nxv8i64:
705 ; CHECK: # %bb.0: # %entry
706 ; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma
707 ; CHECK-NEXT: vsuxei64.v v8, (a0), v16
710 call void @llvm.riscv.vsuxei.nxv8i64.nxv8i64(
711 <vscale x 8 x i64> %0,
713 <vscale x 8 x i64> %2,
719 declare void @llvm.riscv.vsuxei.mask.nxv8i64.nxv8i64(
726 define void @intrinsic_vsuxei_mask_v_nxv8i64_nxv8i64_nxv8i64(<vscale x 8 x i64> %0, ptr %1, <vscale x 8 x i64> %2, <vscale x 8 x i1> %3, i64 %4) nounwind {
727 ; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8i64_nxv8i64_nxv8i64:
728 ; CHECK: # %bb.0: # %entry
729 ; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma
730 ; CHECK-NEXT: vsuxei64.v v8, (a0), v16, v0.t
733 call void @llvm.riscv.vsuxei.mask.nxv8i64.nxv8i64(
734 <vscale x 8 x i64> %0,
736 <vscale x 8 x i64> %2,
737 <vscale x 8 x i1> %3,
743 declare void @llvm.riscv.vsuxei.nxv1f16.nxv1i64(
749 define void @intrinsic_vsuxei_v_nxv1f16_nxv1f16_nxv1i64(<vscale x 1 x half> %0, ptr %1, <vscale x 1 x i64> %2, i64 %3) nounwind {
750 ; CHECK-LABEL: intrinsic_vsuxei_v_nxv1f16_nxv1f16_nxv1i64:
751 ; CHECK: # %bb.0: # %entry
752 ; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
753 ; CHECK-NEXT: vsuxei64.v v8, (a0), v9
756 call void @llvm.riscv.vsuxei.nxv1f16.nxv1i64(
757 <vscale x 1 x half> %0,
759 <vscale x 1 x i64> %2,
765 declare void @llvm.riscv.vsuxei.mask.nxv1f16.nxv1i64(
772 define void @intrinsic_vsuxei_mask_v_nxv1f16_nxv1f16_nxv1i64(<vscale x 1 x half> %0, ptr %1, <vscale x 1 x i64> %2, <vscale x 1 x i1> %3, i64 %4) nounwind {
773 ; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1f16_nxv1f16_nxv1i64:
774 ; CHECK: # %bb.0: # %entry
775 ; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
776 ; CHECK-NEXT: vsuxei64.v v8, (a0), v9, v0.t
779 call void @llvm.riscv.vsuxei.mask.nxv1f16.nxv1i64(
780 <vscale x 1 x half> %0,
782 <vscale x 1 x i64> %2,
783 <vscale x 1 x i1> %3,
789 declare void @llvm.riscv.vsuxei.nxv2f16.nxv2i64(
795 define void @intrinsic_vsuxei_v_nxv2f16_nxv2f16_nxv2i64(<vscale x 2 x half> %0, ptr %1, <vscale x 2 x i64> %2, i64 %3) nounwind {
796 ; CHECK-LABEL: intrinsic_vsuxei_v_nxv2f16_nxv2f16_nxv2i64:
797 ; CHECK: # %bb.0: # %entry
798 ; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma
799 ; CHECK-NEXT: vsuxei64.v v8, (a0), v10
802 call void @llvm.riscv.vsuxei.nxv2f16.nxv2i64(
803 <vscale x 2 x half> %0,
805 <vscale x 2 x i64> %2,
811 declare void @llvm.riscv.vsuxei.mask.nxv2f16.nxv2i64(
818 define void @intrinsic_vsuxei_mask_v_nxv2f16_nxv2f16_nxv2i64(<vscale x 2 x half> %0, ptr %1, <vscale x 2 x i64> %2, <vscale x 2 x i1> %3, i64 %4) nounwind {
819 ; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2f16_nxv2f16_nxv2i64:
820 ; CHECK: # %bb.0: # %entry
821 ; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma
822 ; CHECK-NEXT: vsuxei64.v v8, (a0), v10, v0.t
825 call void @llvm.riscv.vsuxei.mask.nxv2f16.nxv2i64(
826 <vscale x 2 x half> %0,
828 <vscale x 2 x i64> %2,
829 <vscale x 2 x i1> %3,
835 declare void @llvm.riscv.vsuxei.nxv4f16.nxv4i64(
841 define void @intrinsic_vsuxei_v_nxv4f16_nxv4f16_nxv4i64(<vscale x 4 x half> %0, ptr %1, <vscale x 4 x i64> %2, i64 %3) nounwind {
842 ; CHECK-LABEL: intrinsic_vsuxei_v_nxv4f16_nxv4f16_nxv4i64:
843 ; CHECK: # %bb.0: # %entry
844 ; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma
845 ; CHECK-NEXT: vsuxei64.v v8, (a0), v12
848 call void @llvm.riscv.vsuxei.nxv4f16.nxv4i64(
849 <vscale x 4 x half> %0,
851 <vscale x 4 x i64> %2,
857 declare void @llvm.riscv.vsuxei.mask.nxv4f16.nxv4i64(
864 define void @intrinsic_vsuxei_mask_v_nxv4f16_nxv4f16_nxv4i64(<vscale x 4 x half> %0, ptr %1, <vscale x 4 x i64> %2, <vscale x 4 x i1> %3, i64 %4) nounwind {
865 ; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4f16_nxv4f16_nxv4i64:
866 ; CHECK: # %bb.0: # %entry
867 ; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma
868 ; CHECK-NEXT: vsuxei64.v v8, (a0), v12, v0.t
871 call void @llvm.riscv.vsuxei.mask.nxv4f16.nxv4i64(
872 <vscale x 4 x half> %0,
874 <vscale x 4 x i64> %2,
875 <vscale x 4 x i1> %3,
881 declare void @llvm.riscv.vsuxei.nxv8f16.nxv8i64(
887 define void @intrinsic_vsuxei_v_nxv8f16_nxv8f16_nxv8i64(<vscale x 8 x half> %0, ptr %1, <vscale x 8 x i64> %2, i64 %3) nounwind {
888 ; CHECK-LABEL: intrinsic_vsuxei_v_nxv8f16_nxv8f16_nxv8i64:
889 ; CHECK: # %bb.0: # %entry
890 ; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma
891 ; CHECK-NEXT: vsuxei64.v v8, (a0), v16
894 call void @llvm.riscv.vsuxei.nxv8f16.nxv8i64(
895 <vscale x 8 x half> %0,
897 <vscale x 8 x i64> %2,
903 declare void @llvm.riscv.vsuxei.mask.nxv8f16.nxv8i64(
910 define void @intrinsic_vsuxei_mask_v_nxv8f16_nxv8f16_nxv8i64(<vscale x 8 x half> %0, ptr %1, <vscale x 8 x i64> %2, <vscale x 8 x i1> %3, i64 %4) nounwind {
911 ; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8f16_nxv8f16_nxv8i64:
912 ; CHECK: # %bb.0: # %entry
913 ; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma
914 ; CHECK-NEXT: vsuxei64.v v8, (a0), v16, v0.t
917 call void @llvm.riscv.vsuxei.mask.nxv8f16.nxv8i64(
918 <vscale x 8 x half> %0,
920 <vscale x 8 x i64> %2,
921 <vscale x 8 x i1> %3,
927 declare void @llvm.riscv.vsuxei.nxv1f32.nxv1i64(
928 <vscale x 1 x float>,
933 define void @intrinsic_vsuxei_v_nxv1f32_nxv1f32_nxv1i64(<vscale x 1 x float> %0, ptr %1, <vscale x 1 x i64> %2, i64 %3) nounwind {
934 ; CHECK-LABEL: intrinsic_vsuxei_v_nxv1f32_nxv1f32_nxv1i64:
935 ; CHECK: # %bb.0: # %entry
936 ; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
937 ; CHECK-NEXT: vsuxei64.v v8, (a0), v9
940 call void @llvm.riscv.vsuxei.nxv1f32.nxv1i64(
941 <vscale x 1 x float> %0,
943 <vscale x 1 x i64> %2,
949 declare void @llvm.riscv.vsuxei.mask.nxv1f32.nxv1i64(
950 <vscale x 1 x float>,
956 define void @intrinsic_vsuxei_mask_v_nxv1f32_nxv1f32_nxv1i64(<vscale x 1 x float> %0, ptr %1, <vscale x 1 x i64> %2, <vscale x 1 x i1> %3, i64 %4) nounwind {
957 ; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1f32_nxv1f32_nxv1i64:
958 ; CHECK: # %bb.0: # %entry
959 ; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
960 ; CHECK-NEXT: vsuxei64.v v8, (a0), v9, v0.t
963 call void @llvm.riscv.vsuxei.mask.nxv1f32.nxv1i64(
964 <vscale x 1 x float> %0,
966 <vscale x 1 x i64> %2,
967 <vscale x 1 x i1> %3,
973 declare void @llvm.riscv.vsuxei.nxv2f32.nxv2i64(
974 <vscale x 2 x float>,
979 define void @intrinsic_vsuxei_v_nxv2f32_nxv2f32_nxv2i64(<vscale x 2 x float> %0, ptr %1, <vscale x 2 x i64> %2, i64 %3) nounwind {
980 ; CHECK-LABEL: intrinsic_vsuxei_v_nxv2f32_nxv2f32_nxv2i64:
981 ; CHECK: # %bb.0: # %entry
982 ; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma
983 ; CHECK-NEXT: vsuxei64.v v8, (a0), v10
986 call void @llvm.riscv.vsuxei.nxv2f32.nxv2i64(
987 <vscale x 2 x float> %0,
989 <vscale x 2 x i64> %2,
995 declare void @llvm.riscv.vsuxei.mask.nxv2f32.nxv2i64(
996 <vscale x 2 x float>,
1002 define void @intrinsic_vsuxei_mask_v_nxv2f32_nxv2f32_nxv2i64(<vscale x 2 x float> %0, ptr %1, <vscale x 2 x i64> %2, <vscale x 2 x i1> %3, i64 %4) nounwind {
1003 ; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2f32_nxv2f32_nxv2i64:
1004 ; CHECK: # %bb.0: # %entry
1005 ; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma
1006 ; CHECK-NEXT: vsuxei64.v v8, (a0), v10, v0.t
1009 call void @llvm.riscv.vsuxei.mask.nxv2f32.nxv2i64(
1010 <vscale x 2 x float> %0,
1012 <vscale x 2 x i64> %2,
1013 <vscale x 2 x i1> %3,
1019 declare void @llvm.riscv.vsuxei.nxv4f32.nxv4i64(
1020 <vscale x 4 x float>,
1025 define void @intrinsic_vsuxei_v_nxv4f32_nxv4f32_nxv4i64(<vscale x 4 x float> %0, ptr %1, <vscale x 4 x i64> %2, i64 %3) nounwind {
1026 ; CHECK-LABEL: intrinsic_vsuxei_v_nxv4f32_nxv4f32_nxv4i64:
1027 ; CHECK: # %bb.0: # %entry
1028 ; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
1029 ; CHECK-NEXT: vsuxei64.v v8, (a0), v12
1032 call void @llvm.riscv.vsuxei.nxv4f32.nxv4i64(
1033 <vscale x 4 x float> %0,
1035 <vscale x 4 x i64> %2,
1041 declare void @llvm.riscv.vsuxei.mask.nxv4f32.nxv4i64(
1042 <vscale x 4 x float>,
1048 define void @intrinsic_vsuxei_mask_v_nxv4f32_nxv4f32_nxv4i64(<vscale x 4 x float> %0, ptr %1, <vscale x 4 x i64> %2, <vscale x 4 x i1> %3, i64 %4) nounwind {
1049 ; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4f32_nxv4f32_nxv4i64:
1050 ; CHECK: # %bb.0: # %entry
1051 ; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
1052 ; CHECK-NEXT: vsuxei64.v v8, (a0), v12, v0.t
1055 call void @llvm.riscv.vsuxei.mask.nxv4f32.nxv4i64(
1056 <vscale x 4 x float> %0,
1058 <vscale x 4 x i64> %2,
1059 <vscale x 4 x i1> %3,
1065 declare void @llvm.riscv.vsuxei.nxv8f32.nxv8i64(
1066 <vscale x 8 x float>,
1071 define void @intrinsic_vsuxei_v_nxv8f32_nxv8f32_nxv8i64(<vscale x 8 x float> %0, ptr %1, <vscale x 8 x i64> %2, i64 %3) nounwind {
1072 ; CHECK-LABEL: intrinsic_vsuxei_v_nxv8f32_nxv8f32_nxv8i64:
1073 ; CHECK: # %bb.0: # %entry
1074 ; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma
1075 ; CHECK-NEXT: vsuxei64.v v8, (a0), v16
1078 call void @llvm.riscv.vsuxei.nxv8f32.nxv8i64(
1079 <vscale x 8 x float> %0,
1081 <vscale x 8 x i64> %2,
1087 declare void @llvm.riscv.vsuxei.mask.nxv8f32.nxv8i64(
1088 <vscale x 8 x float>,
1094 define void @intrinsic_vsuxei_mask_v_nxv8f32_nxv8f32_nxv8i64(<vscale x 8 x float> %0, ptr %1, <vscale x 8 x i64> %2, <vscale x 8 x i1> %3, i64 %4) nounwind {
1095 ; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8f32_nxv8f32_nxv8i64:
1096 ; CHECK: # %bb.0: # %entry
1097 ; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma
1098 ; CHECK-NEXT: vsuxei64.v v8, (a0), v16, v0.t
1101 call void @llvm.riscv.vsuxei.mask.nxv8f32.nxv8i64(
1102 <vscale x 8 x float> %0,
1104 <vscale x 8 x i64> %2,
1105 <vscale x 8 x i1> %3,
1111 declare void @llvm.riscv.vsuxei.nxv1f64.nxv1i64(
1112 <vscale x 1 x double>,
1117 define void @intrinsic_vsuxei_v_nxv1f64_nxv1f64_nxv1i64(<vscale x 1 x double> %0, ptr %1, <vscale x 1 x i64> %2, i64 %3) nounwind {
1118 ; CHECK-LABEL: intrinsic_vsuxei_v_nxv1f64_nxv1f64_nxv1i64:
1119 ; CHECK: # %bb.0: # %entry
1120 ; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma
1121 ; CHECK-NEXT: vsuxei64.v v8, (a0), v9
1124 call void @llvm.riscv.vsuxei.nxv1f64.nxv1i64(
1125 <vscale x 1 x double> %0,
1127 <vscale x 1 x i64> %2,
1133 declare void @llvm.riscv.vsuxei.mask.nxv1f64.nxv1i64(
1134 <vscale x 1 x double>,
1140 define void @intrinsic_vsuxei_mask_v_nxv1f64_nxv1f64_nxv1i64(<vscale x 1 x double> %0, ptr %1, <vscale x 1 x i64> %2, <vscale x 1 x i1> %3, i64 %4) nounwind {
1141 ; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1f64_nxv1f64_nxv1i64:
1142 ; CHECK: # %bb.0: # %entry
1143 ; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma
1144 ; CHECK-NEXT: vsuxei64.v v8, (a0), v9, v0.t
1147 call void @llvm.riscv.vsuxei.mask.nxv1f64.nxv1i64(
1148 <vscale x 1 x double> %0,
1150 <vscale x 1 x i64> %2,
1151 <vscale x 1 x i1> %3,
1157 declare void @llvm.riscv.vsuxei.nxv2f64.nxv2i64(
1158 <vscale x 2 x double>,
1163 define void @intrinsic_vsuxei_v_nxv2f64_nxv2f64_nxv2i64(<vscale x 2 x double> %0, ptr %1, <vscale x 2 x i64> %2, i64 %3) nounwind {
1164 ; CHECK-LABEL: intrinsic_vsuxei_v_nxv2f64_nxv2f64_nxv2i64:
1165 ; CHECK: # %bb.0: # %entry
1166 ; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma
1167 ; CHECK-NEXT: vsuxei64.v v8, (a0), v10
1170 call void @llvm.riscv.vsuxei.nxv2f64.nxv2i64(
1171 <vscale x 2 x double> %0,
1173 <vscale x 2 x i64> %2,
1179 declare void @llvm.riscv.vsuxei.mask.nxv2f64.nxv2i64(
1180 <vscale x 2 x double>,
1186 define void @intrinsic_vsuxei_mask_v_nxv2f64_nxv2f64_nxv2i64(<vscale x 2 x double> %0, ptr %1, <vscale x 2 x i64> %2, <vscale x 2 x i1> %3, i64 %4) nounwind {
1187 ; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2f64_nxv2f64_nxv2i64:
1188 ; CHECK: # %bb.0: # %entry
1189 ; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma
1190 ; CHECK-NEXT: vsuxei64.v v8, (a0), v10, v0.t
1193 call void @llvm.riscv.vsuxei.mask.nxv2f64.nxv2i64(
1194 <vscale x 2 x double> %0,
1196 <vscale x 2 x i64> %2,
1197 <vscale x 2 x i1> %3,
1203 declare void @llvm.riscv.vsuxei.nxv4f64.nxv4i64(
1204 <vscale x 4 x double>,
1209 define void @intrinsic_vsuxei_v_nxv4f64_nxv4f64_nxv4i64(<vscale x 4 x double> %0, ptr %1, <vscale x 4 x i64> %2, i64 %3) nounwind {
1210 ; CHECK-LABEL: intrinsic_vsuxei_v_nxv4f64_nxv4f64_nxv4i64:
1211 ; CHECK: # %bb.0: # %entry
1212 ; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma
1213 ; CHECK-NEXT: vsuxei64.v v8, (a0), v12
1216 call void @llvm.riscv.vsuxei.nxv4f64.nxv4i64(
1217 <vscale x 4 x double> %0,
1219 <vscale x 4 x i64> %2,
1225 declare void @llvm.riscv.vsuxei.mask.nxv4f64.nxv4i64(
1226 <vscale x 4 x double>,
1232 define void @intrinsic_vsuxei_mask_v_nxv4f64_nxv4f64_nxv4i64(<vscale x 4 x double> %0, ptr %1, <vscale x 4 x i64> %2, <vscale x 4 x i1> %3, i64 %4) nounwind {
1233 ; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4f64_nxv4f64_nxv4i64:
1234 ; CHECK: # %bb.0: # %entry
1235 ; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma
1236 ; CHECK-NEXT: vsuxei64.v v8, (a0), v12, v0.t
1239 call void @llvm.riscv.vsuxei.mask.nxv4f64.nxv4i64(
1240 <vscale x 4 x double> %0,
1242 <vscale x 4 x i64> %2,
1243 <vscale x 4 x i1> %3,
1249 declare void @llvm.riscv.vsuxei.nxv8f64.nxv8i64(
1250 <vscale x 8 x double>,
1255 define void @intrinsic_vsuxei_v_nxv8f64_nxv8f64_nxv8i64(<vscale x 8 x double> %0, ptr %1, <vscale x 8 x i64> %2, i64 %3) nounwind {
1256 ; CHECK-LABEL: intrinsic_vsuxei_v_nxv8f64_nxv8f64_nxv8i64:
1257 ; CHECK: # %bb.0: # %entry
1258 ; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma
1259 ; CHECK-NEXT: vsuxei64.v v8, (a0), v16
1262 call void @llvm.riscv.vsuxei.nxv8f64.nxv8i64(
1263 <vscale x 8 x double> %0,
1265 <vscale x 8 x i64> %2,
1271 declare void @llvm.riscv.vsuxei.mask.nxv8f64.nxv8i64(
1272 <vscale x 8 x double>,
1278 define void @intrinsic_vsuxei_mask_v_nxv8f64_nxv8f64_nxv8i64(<vscale x 8 x double> %0, ptr %1, <vscale x 8 x i64> %2, <vscale x 8 x i1> %3, i64 %4) nounwind {
1279 ; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8f64_nxv8f64_nxv8i64:
1280 ; CHECK: # %bb.0: # %entry
1281 ; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma
1282 ; CHECK-NEXT: vsuxei64.v v8, (a0), v16, v0.t
1285 call void @llvm.riscv.vsuxei.mask.nxv8f64.nxv8i64(
1286 <vscale x 8 x double> %0,
1288 <vscale x 8 x i64> %2,
1289 <vscale x 8 x i1> %3,