@@ -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
4129
4129
ret <32 x i8 > %shuffle
4130
4130
}
4131
4131
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
+
4132
4188
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 ) {
4133
4189
; 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:
4134
4190
; AVX1: # %bb.0:
0 commit comments