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