Skip to content

Commit 0c8efbe

Browse files
committed
[X86] Add shuffle test for #121823
1 parent faa3f75 commit 0c8efbe

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

llvm/test/CodeGen/X86/vector-shuffle-256-v32.ll

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4129,6 +4129,62 @@ define <32 x i8> @shuffle_v32i8_56_zz_zz_zz_57_zz_zz_zz_58_zz_zz_zz__zz_59_zz_zz
41294129
ret <32 x i8> %shuffle
41304130
}
41314131

4132+
; PR121823
4133+
define <32 x i8> @shuffle_v32i8_01_09_00_03_11_02_05_13_04_07_15_06_17_25_16_19_27_18_21_29_20_23_31_22_zz_zz_zz_zz_zz_zz_zz_zz(<32 x i8> %a) {
4134+
; AVX1-LABEL: shuffle_v32i8_01_09_00_03_11_02_05_13_04_07_15_06_17_25_16_19_27_18_21_29_20_23_31_22_zz_zz_zz_zz_zz_zz_zz_zz:
4135+
; AVX1: # %bb.0:
4136+
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1
4137+
; AVX1-NEXT: vpshufb {{.*#+}} xmm2 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm1[1,9,0,3]
4138+
; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[1,9,0,3,11,2,5,13,4,7,15,6],zero,zero,zero,zero
4139+
; AVX1-NEXT: vpor %xmm2, %xmm0, %xmm0
4140+
; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[11,2,5,13,4,7,15,6],zero,zero,zero,zero,zero,zero,zero,zero
4141+
; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
4142+
; AVX1-NEXT: retq
4143+
;
4144+
; AVX2-LABEL: shuffle_v32i8_01_09_00_03_11_02_05_13_04_07_15_06_17_25_16_19_27_18_21_29_20_23_31_22_zz_zz_zz_zz_zz_zz_zz_zz:
4145+
; AVX2: # %bb.0:
4146+
; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[1,9,0,3,11,2,5,13,4,7,15,6,u,u,u,u,17,25,16,19,27,18,21,29,20,23,31,22,u,u,u,u]
4147+
; AVX2-NEXT: vpmovsxbd {{.*#+}} ymm1 = [0,1,2,4,5,6,0,0]
4148+
; AVX2-NEXT: vpermd %ymm0, %ymm1, %ymm0
4149+
; AVX2-NEXT: vpxor %xmm1, %xmm1, %xmm1
4150+
; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5],ymm1[6,7]
4151+
; AVX2-NEXT: retq
4152+
;
4153+
; AVX512VLBW-LABEL: shuffle_v32i8_01_09_00_03_11_02_05_13_04_07_15_06_17_25_16_19_27_18_21_29_20_23_31_22_zz_zz_zz_zz_zz_zz_zz_zz:
4154+
; AVX512VLBW: # %bb.0:
4155+
; AVX512VLBW-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[1,9,0,3,11,2,5,13,4,7,15,6,u,u,u,u,17,25,16,19,27,18,21,29,20,23,31,22,u,u,u,u]
4156+
; AVX512VLBW-NEXT: vpxor %xmm2, %xmm2, %xmm2
4157+
; AVX512VLBW-NEXT: vpmovsxbd {{.*#+}} ymm0 = [0,1,2,4,5,6,14,15]
4158+
; AVX512VLBW-NEXT: vpermi2d %ymm2, %ymm1, %ymm0
4159+
; AVX512VLBW-NEXT: retq
4160+
;
4161+
; AVX512VLVBMI-LABEL: shuffle_v32i8_01_09_00_03_11_02_05_13_04_07_15_06_17_25_16_19_27_18_21_29_20_23_31_22_zz_zz_zz_zz_zz_zz_zz_zz:
4162+
; AVX512VLVBMI: # %bb.0:
4163+
; AVX512VLVBMI-NEXT: vpxor %xmm1, %xmm1, %xmm1
4164+
; AVX512VLVBMI-NEXT: vmovdqa {{.*#+}} ymm2 = [1,9,0,3,11,2,5,13,4,7,15,6,17,25,16,19,27,18,21,29,20,23,31,22,56,57,58,59,60,61,62,63]
4165+
; AVX512VLVBMI-NEXT: vpermt2b %ymm1, %ymm2, %ymm0
4166+
; AVX512VLVBMI-NEXT: retq
4167+
;
4168+
; XOPAVX1-LABEL: shuffle_v32i8_01_09_00_03_11_02_05_13_04_07_15_06_17_25_16_19_27_18_21_29_20_23_31_22_zz_zz_zz_zz_zz_zz_zz_zz:
4169+
; XOPAVX1: # %bb.0:
4170+
; XOPAVX1-NEXT: vextractf128 $1, %ymm0, %xmm1
4171+
; XOPAVX1-NEXT: vpperm {{.*#+}} xmm0 = xmm0[1,9,0,3,11,2,5,13,4,7,15,6],xmm1[1,9,0,3]
4172+
; XOPAVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[11,2,5,13,4,7,15,6],zero,zero,zero,zero,zero,zero,zero,zero
4173+
; XOPAVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
4174+
; XOPAVX1-NEXT: retq
4175+
;
4176+
; XOPAVX2-LABEL: shuffle_v32i8_01_09_00_03_11_02_05_13_04_07_15_06_17_25_16_19_27_18_21_29_20_23_31_22_zz_zz_zz_zz_zz_zz_zz_zz:
4177+
; XOPAVX2: # %bb.0:
4178+
; XOPAVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[1,9,0,3,11,2,5,13,4,7,15,6,u,u,u,u,17,25,16,19,27,18,21,29,20,23,31,22,u,u,u,u]
4179+
; XOPAVX2-NEXT: vpmovsxbd {{.*#+}} ymm1 = [0,1,2,4,5,6,0,0]
4180+
; XOPAVX2-NEXT: vpermd %ymm0, %ymm1, %ymm0
4181+
; XOPAVX2-NEXT: vpxor %xmm1, %xmm1, %xmm1
4182+
; XOPAVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5],ymm1[6,7]
4183+
; XOPAVX2-NEXT: retq
4184+
%r = shufflevector <32 x i8> %a, <32 x i8> zeroinitializer, <32 x i32> <i32 1, i32 9, i32 0, i32 3, i32 11, i32 2, i32 5, i32 13, i32 4, i32 7, i32 15, i32 6, i32 17, i32 25, i32 16, i32 19, i32 27, i32 18, i32 21, i32 29, i32 20, i32 23, i32 31, i32 22, i32 32, i32 32, i32 32, i32 32, i32 48, i32 48, i32 48, i32 48>
4185+
ret <32 x i8> %r
4186+
}
4187+
41324188
define <32 x i8> @shuffle_v32i8_47_00_01_02_03_04_05_06_07_08_09_10_11_12_13_14_63_16_17_18_19_20_21_22_23_24_25_26_27_28_29_30(<32 x i8> %a, <32 x i8> %b) {
41334189
; AVX1-LABEL: shuffle_v32i8_47_00_01_02_03_04_05_06_07_08_09_10_11_12_13_14_63_16_17_18_19_20_21_22_23_24_25_26_27_28_29_30:
41344190
; AVX1: # %bb.0:

0 commit comments

Comments
 (0)