xref: /llvm-project/llvm/test/CodeGen/RISCV/rvv/fixed-vector-i8-index-cornercase.ll (revision bc7449c790bab21d9e09c531ce07607fff5a7688)
17386aa02SPhilip Reames; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
27386aa02SPhilip Reames; RUN: llc -mtriple=riscv64 -mattr=+v,+zvl512b < %s | FileCheck %s
37386aa02SPhilip Reames
47386aa02SPhilip Reames; A single source shuffle with an offset not representable in an i8
57386aa02SPhilip Reames; vector, and a type which can't be promoted to i16 element type while
67386aa02SPhilip Reames; remaining a valid type.  Note that splitting the vector is legal here
77386aa02SPhilip Reamesdefine <512 x i8> @single_source(<512 x i8> %a) {
87386aa02SPhilip Reames; CHECK-LABEL: single_source:
97386aa02SPhilip Reames; CHECK:       # %bb.0:
1079509073SPhilip Reames; CHECK-NEXT:    addi sp, sp, -1536
1179509073SPhilip Reames; CHECK-NEXT:    .cfi_def_cfa_offset 1536
1279509073SPhilip Reames; CHECK-NEXT:    sd ra, 1528(sp) # 8-byte Folded Spill
1379509073SPhilip Reames; CHECK-NEXT:    sd s0, 1520(sp) # 8-byte Folded Spill
1479509073SPhilip Reames; CHECK-NEXT:    .cfi_offset ra, -8
1579509073SPhilip Reames; CHECK-NEXT:    .cfi_offset s0, -16
1679509073SPhilip Reames; CHECK-NEXT:    addi s0, sp, 1536
1779509073SPhilip Reames; CHECK-NEXT:    .cfi_def_cfa s0, 0
1879509073SPhilip Reames; CHECK-NEXT:    andi sp, sp, -512
19b6c0f1bfSLuke Lau; CHECK-NEXT:    vsetivli zero, 1, e8, m1, ta, ma
2079509073SPhilip Reames; CHECK-NEXT:    vmv8r.v v16, v8
217386aa02SPhilip Reames; CHECK-NEXT:    li a0, 512
2279509073SPhilip Reames; CHECK-NEXT:    addi a1, sp, 512
239122c523SPengcheng Wang; CHECK-NEXT:    vmv.x.s a2, v16
249122c523SPengcheng Wang; CHECK-NEXT:    vslidedown.vi v24, v16, 5
259122c523SPengcheng Wang; CHECK-NEXT:    li a3, 432
267386aa02SPhilip Reames; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
2779509073SPhilip Reames; CHECK-NEXT:    vse8.v v8, (a1)
289122c523SPengcheng Wang; CHECK-NEXT:    vmv.v.x v8, a2
2979509073SPhilip Reames; CHECK-NEXT:    lbu a0, 770(sp)
3079509073SPhilip Reames; CHECK-NEXT:    li a1, 431
319122c523SPengcheng Wang; CHECK-NEXT:    vslide1down.vx v8, v8, a0
329122c523SPengcheng Wang; CHECK-NEXT:    lbu a0, 1012(sp)
339122c523SPengcheng Wang; CHECK-NEXT:    vsetvli zero, a3, e8, m8, tu, ma
3479509073SPhilip Reames; CHECK-NEXT:    vslideup.vx v8, v24, a1
3579509073SPhilip Reames; CHECK-NEXT:    vsetivli zero, 1, e8, m1, ta, ma
369122c523SPengcheng Wang; CHECK-NEXT:    vslidedown.vi v24, v16, 4
379122c523SPengcheng Wang; CHECK-NEXT:    li a1, 466
389122c523SPengcheng Wang; CHECK-NEXT:    vmv.s.x v16, a0
399122c523SPengcheng Wang; CHECK-NEXT:    li a0, 465
409122c523SPengcheng Wang; CHECK-NEXT:    li a2, 501
419122c523SPengcheng Wang; CHECK-NEXT:    vsetvli zero, a1, e8, m8, tu, ma
429122c523SPengcheng Wang; CHECK-NEXT:    vslideup.vx v8, v24, a0
439122c523SPengcheng Wang; CHECK-NEXT:    li a0, 500
449122c523SPengcheng Wang; CHECK-NEXT:    vsetvli zero, a2, e8, m8, tu, ma
459122c523SPengcheng Wang; CHECK-NEXT:    vslideup.vx v8, v16, a0
4679509073SPhilip Reames; CHECK-NEXT:    addi sp, s0, -1536
4797982a8cSdlav-sc; CHECK-NEXT:    .cfi_def_cfa sp, 1536
4879509073SPhilip Reames; CHECK-NEXT:    ld ra, 1528(sp) # 8-byte Folded Reload
4979509073SPhilip Reames; CHECK-NEXT:    ld s0, 1520(sp) # 8-byte Folded Reload
5097982a8cSdlav-sc; CHECK-NEXT:    .cfi_restore ra
5197982a8cSdlav-sc; CHECK-NEXT:    .cfi_restore s0
5279509073SPhilip Reames; CHECK-NEXT:    addi sp, sp, 1536
5397982a8cSdlav-sc; CHECK-NEXT:    .cfi_def_cfa_offset 0
547386aa02SPhilip Reames; CHECK-NEXT:    ret
557386aa02SPhilip Reames  %res = shufflevector <512 x i8> %a, <512 x i8> poison, <512 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 5, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 500, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 258>
567386aa02SPhilip Reames  ret <512 x i8> %res
577386aa02SPhilip Reames}
587386aa02SPhilip Reames
597386aa02SPhilip Reames; Like the above, but the actual values of the index are all representable
607386aa02SPhilip Reamesdefine <512 x i8> @range_restriction(<512 x i8> %a) {
617386aa02SPhilip Reames; CHECK-LABEL: range_restriction:
627386aa02SPhilip Reames; CHECK:       # %bb.0:
637386aa02SPhilip Reames; CHECK-NEXT:    li a0, 512
649122c523SPengcheng Wang; CHECK-NEXT:    li a1, 254
659122c523SPengcheng Wang; CHECK-NEXT:    li a2, 432
667386aa02SPhilip Reames; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
67ff53d507SPhilip Reames; CHECK-NEXT:    vmv.v.i v16, 0
68ff53d507SPhilip Reames; CHECK-NEXT:    vslide1down.vx v24, v16, a1
699122c523SPengcheng Wang; CHECK-NEXT:    li a1, 431
70ff53d507SPhilip Reames; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
71ff53d507SPhilip Reames; CHECK-NEXT:    vmv.v.i v16, 5
729122c523SPengcheng Wang; CHECK-NEXT:    vsetvli zero, a2, e8, m8, tu, ma
739122c523SPengcheng Wang; CHECK-NEXT:    vslideup.vx v24, v16, a1
74ff53d507SPhilip Reames; CHECK-NEXT:    li a1, 466
75ff53d507SPhilip Reames; CHECK-NEXT:    li a2, 465
769122c523SPengcheng Wang; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
779122c523SPengcheng Wang; CHECK-NEXT:    vmv.v.i v16, 4
78ff53d507SPhilip Reames; CHECK-NEXT:    vsetvli zero, a1, e8, m8, tu, ma
79ff53d507SPhilip Reames; CHECK-NEXT:    vslideup.vx v24, v16, a2
80ff53d507SPhilip Reames; CHECK-NEXT:    li a1, 44
819122c523SPengcheng Wang; CHECK-NEXT:    li a2, 501
82ff53d507SPhilip Reames; CHECK-NEXT:    vmv.s.x v16, a1
839122c523SPengcheng Wang; CHECK-NEXT:    li a1, 500
849122c523SPengcheng Wang; CHECK-NEXT:    vsetvli zero, a2, e8, m8, tu, ma
859122c523SPengcheng Wang; CHECK-NEXT:    vslideup.vx v24, v16, a1
86ff53d507SPhilip Reames; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
87ff53d507SPhilip Reames; CHECK-NEXT:    vrgather.vv v16, v8, v24
88ff53d507SPhilip Reames; CHECK-NEXT:    vmv.v.v v8, v16
897386aa02SPhilip Reames; CHECK-NEXT:    ret
907386aa02SPhilip Reames  %res = shufflevector <512 x i8> %a, <512 x i8> poison, <512 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 5, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 44, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 254>
917386aa02SPhilip Reames  ret <512 x i8> %res
927386aa02SPhilip Reames}
937386aa02SPhilip Reames
947386aa02SPhilip Reames
957386aa02SPhilip Reamesdefine <512 x i8> @two_source(<512 x i8> %a, <512 x i8> %b) {
967386aa02SPhilip Reames; CHECK-LABEL: two_source:
977386aa02SPhilip Reames; CHECK:       # %bb.0:
98ff53d507SPhilip Reames; CHECK-NEXT:    addi sp, sp, -1536
99ff53d507SPhilip Reames; CHECK-NEXT:    .cfi_def_cfa_offset 1536
100ff53d507SPhilip Reames; CHECK-NEXT:    sd ra, 1528(sp) # 8-byte Folded Spill
101ff53d507SPhilip Reames; CHECK-NEXT:    sd s0, 1520(sp) # 8-byte Folded Spill
1027386aa02SPhilip Reames; CHECK-NEXT:    .cfi_offset ra, -8
1037386aa02SPhilip Reames; CHECK-NEXT:    .cfi_offset s0, -16
104ff53d507SPhilip Reames; CHECK-NEXT:    addi s0, sp, 1536
1057386aa02SPhilip Reames; CHECK-NEXT:    .cfi_def_cfa s0, 0
106*bc7449c7SLuke Lau; CHECK-NEXT:    csrr a0, vlenb
107*bc7449c7SLuke Lau; CHECK-NEXT:    slli a0, a0, 3
108*bc7449c7SLuke Lau; CHECK-NEXT:    sub sp, sp, a0
1097386aa02SPhilip Reames; CHECK-NEXT:    andi sp, sp, -512
110*bc7449c7SLuke Lau; CHECK-NEXT:    addi a0, sp, 1520
111*bc7449c7SLuke Lau; CHECK-NEXT:    vs8r.v v16, (a0) # Unknown-size Folded Spill
112b6c0f1bfSLuke Lau; CHECK-NEXT:    vsetivli zero, 1, e8, m1, ta, ma
1137386aa02SPhilip Reames; CHECK-NEXT:    vmv8r.v v24, v8
1147386aa02SPhilip Reames; CHECK-NEXT:    li a0, 512
115ff53d507SPhilip Reames; CHECK-NEXT:    addi a1, sp, 512
1162524146bSCraig Topper; CHECK-NEXT:    vslidedown.vi v0, v24, 5
1179122c523SPengcheng Wang; CHECK-NEXT:    vmv.x.s a2, v24
1189122c523SPengcheng Wang; CHECK-NEXT:    li a3, 432
1192524146bSCraig Topper; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
1209122c523SPengcheng Wang; CHECK-NEXT:    vmv.v.x v8, a2
121ff53d507SPhilip Reames; CHECK-NEXT:    li a2, 431
1229122c523SPengcheng Wang; CHECK-NEXT:    vsetvli zero, a3, e8, m8, tu, ma
123ff53d507SPhilip Reames; CHECK-NEXT:    vslideup.vx v8, v0, a2
124ff53d507SPhilip Reames; CHECK-NEXT:    vsetivli zero, 1, e8, m1, ta, ma
1259122c523SPengcheng Wang; CHECK-NEXT:    vslidedown.vi v0, v24, 4
1269122c523SPengcheng Wang; CHECK-NEXT:    li a2, 466
1279122c523SPengcheng Wang; CHECK-NEXT:    li a3, 465
1289122c523SPengcheng Wang; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
1299122c523SPengcheng Wang; CHECK-NEXT:    vse8.v v24, (a1)
1309122c523SPengcheng Wang; CHECK-NEXT:    lbu a1, 985(sp)
13114c4f28eSAlex Bradbury; CHECK-NEXT:    vsetvli zero, a2, e8, m8, tu, ma
1329122c523SPengcheng Wang; CHECK-NEXT:    vslideup.vx v8, v0, a3
1339122c523SPengcheng Wang; CHECK-NEXT:    li a2, 478
1349122c523SPengcheng Wang; CHECK-NEXT:    lbu a3, 1012(sp)
13514c4f28eSAlex Bradbury; CHECK-NEXT:    vmv.s.x v24, a1
1369122c523SPengcheng Wang; CHECK-NEXT:    li a1, 477
1379122c523SPengcheng Wang; CHECK-NEXT:    vsetvli zero, a2, e8, m8, tu, ma
1389122c523SPengcheng Wang; CHECK-NEXT:    vslideup.vx v8, v24, a1
139ff53d507SPhilip Reames; CHECK-NEXT:    li a1, 501
140*bc7449c7SLuke Lau; CHECK-NEXT:    lui a2, %hi(.LCPI2_1)
141*bc7449c7SLuke Lau; CHECK-NEXT:    addi a2, a2, %lo(.LCPI2_1)
142*bc7449c7SLuke Lau; CHECK-NEXT:    vsetivli zero, 8, e64, m1, ta, ma
143*bc7449c7SLuke Lau; CHECK-NEXT:    vle64.v v0, (a2)
144ff53d507SPhilip Reames; CHECK-NEXT:    li a2, 500
145*bc7449c7SLuke Lau; CHECK-NEXT:    vmv.s.x v24, a3
146*bc7449c7SLuke Lau; CHECK-NEXT:    lui a3, %hi(.LCPI2_0)
147*bc7449c7SLuke Lau; CHECK-NEXT:    addi a3, a3, %lo(.LCPI2_0)
148*bc7449c7SLuke Lau; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
149*bc7449c7SLuke Lau; CHECK-NEXT:    vle8.v v16, (a3)
150ff53d507SPhilip Reames; CHECK-NEXT:    vsetvli zero, a1, e8, m8, tu, ma
151ff53d507SPhilip Reames; CHECK-NEXT:    vslideup.vx v8, v24, a2
152*bc7449c7SLuke Lau; CHECK-NEXT:    addi a1, sp, 1520
153*bc7449c7SLuke Lau; CHECK-NEXT:    vl8r.v v24, (a1) # Unknown-size Folded Reload
154ff53d507SPhilip Reames; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, mu
155*bc7449c7SLuke Lau; CHECK-NEXT:    vrgather.vv v8, v24, v16, v0.t
156ff53d507SPhilip Reames; CHECK-NEXT:    addi sp, s0, -1536
15797982a8cSdlav-sc; CHECK-NEXT:    .cfi_def_cfa sp, 1536
158ff53d507SPhilip Reames; CHECK-NEXT:    ld ra, 1528(sp) # 8-byte Folded Reload
159ff53d507SPhilip Reames; CHECK-NEXT:    ld s0, 1520(sp) # 8-byte Folded Reload
16097982a8cSdlav-sc; CHECK-NEXT:    .cfi_restore ra
16197982a8cSdlav-sc; CHECK-NEXT:    .cfi_restore s0
162ff53d507SPhilip Reames; CHECK-NEXT:    addi sp, sp, 1536
16397982a8cSdlav-sc; CHECK-NEXT:    .cfi_def_cfa_offset 0
1647386aa02SPhilip Reames; CHECK-NEXT:    ret
165*bc7449c7SLuke Lau  %res = shufflevector <512 x i8> %a, <512 x i8> %b, <512 x i32> <i32 0, i32 512, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 512, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 512, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 548, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 5, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 4, i32 574, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 512, i32 473, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 674, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 500, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 555>
1667386aa02SPhilip Reames  ret <512 x i8> %res
1677386aa02SPhilip Reames}
1687386aa02SPhilip Reames
169