@@ -275,53 +275,45 @@ define <16 x i8> @trunc_shuffle_v64i8_01_05_09_13_17_21_25_29_33_37_41_45_49_53_
275275define <16 x i8 > @trunc_shuffle_v64i8_01_05_09_13_17_21_25_29_33_37_41_45_49_53_57_62 (<64 x i8 > %x ) {
276276; AVX512F-LABEL: trunc_shuffle_v64i8_01_05_09_13_17_21_25_29_33_37_41_45_49_53_57_62:
277277; AVX512F: # %bb.0:
278- ; AVX512F-NEXT: vextracti64x4 $1, %zmm0, %ymm1
279- ; AVX512F-NEXT: vextracti128 $1, %ymm1, %xmm2
280- ; AVX512F-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[u,u,u,u,1,5,9,14,u,u,u,u,u,u,u,u]
281- ; AVX512F-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[u,u,u,u,1,5,9,13,u,u,u,u,u,u,u,u]
282- ; AVX512F-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
283- ; AVX512F-NEXT: vpsrld $8, %ymm0, %ymm0
284- ; AVX512F-NEXT: vpmovdb %zmm0, %xmm0
285- ; AVX512F-NEXT: vpblendd {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,3]
278+ ; AVX512F-NEXT: vpmovsxbd {{.*#+}} xmm1 = [0,4,16,21]
279+ ; AVX512F-NEXT: vextracti64x4 $1, %zmm0, %ymm2
280+ ; AVX512F-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[1,5,9,13,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,17,21,25,30,u,u,u,u,u,u,u,u]
281+ ; AVX512F-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[1,5,9,13,u,u,u,u,u,u,u,u,u,u,u,u,17,21,25,29,u,u,u,u,u,u,u,u,u,u,u,u]
282+ ; AVX512F-NEXT: vpermt2d %zmm2, %zmm1, %zmm0
283+ ; AVX512F-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0
286284; AVX512F-NEXT: vzeroupper
287285; AVX512F-NEXT: retq
288286;
289287; AVX512VL-LABEL: trunc_shuffle_v64i8_01_05_09_13_17_21_25_29_33_37_41_45_49_53_57_62:
290288; AVX512VL: # %bb.0:
291- ; AVX512VL-NEXT: vextracti64x4 $1, %zmm0, %ymm1
292- ; AVX512VL-NEXT: vextracti128 $1, %ymm1, %xmm2
293- ; AVX512VL-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[u,u,u,u,1,5,9,14,u,u,u,u,u,u,u,u]
294- ; AVX512VL-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[u,u,u,u,1,5,9,13,u,u,u,u,u,u,u,u]
295- ; AVX512VL-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
296- ; AVX512VL-NEXT: vpsrld $8, %ymm0, %ymm0
297- ; AVX512VL-NEXT: vpmovdb %ymm0, %xmm0
298- ; AVX512VL-NEXT: vpblendd {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,3]
289+ ; AVX512VL-NEXT: vpmovsxbd {{.*#+}} xmm1 = [0,4,8,13]
290+ ; AVX512VL-NEXT: vextracti64x4 $1, %zmm0, %ymm2
291+ ; AVX512VL-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[1,5,9,13,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,17,21,25,30,u,u,u,u,u,u,u,u]
292+ ; AVX512VL-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[1,5,9,13,u,u,u,u,u,u,u,u,u,u,u,u,17,21,25,29,u,u,u,u,u,u,u,u,u,u,u,u]
293+ ; AVX512VL-NEXT: vpermt2d %ymm2, %ymm1, %ymm0
294+ ; AVX512VL-NEXT: # kill: def $xmm0 killed $xmm0 killed $ymm0
299295; AVX512VL-NEXT: vzeroupper
300296; AVX512VL-NEXT: retq
301297;
302298; AVX512BW-LABEL: trunc_shuffle_v64i8_01_05_09_13_17_21_25_29_33_37_41_45_49_53_57_62:
303299; AVX512BW: # %bb.0:
304- ; AVX512BW-NEXT: vextracti64x4 $1, %zmm0, %ymm1
305- ; AVX512BW-NEXT: vextracti128 $1, %ymm1, %xmm2
306- ; AVX512BW-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[u,u,u,u,1,5,9,14,u,u,u,u,u,u,u,u]
307- ; AVX512BW-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[u,u,u,u,1,5,9,13,u,u,u,u,u,u,u,u]
308- ; AVX512BW-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
309- ; AVX512BW-NEXT: vpsrld $8, %ymm0, %ymm0
310- ; AVX512BW-NEXT: vpmovdb %zmm0, %xmm0
311- ; AVX512BW-NEXT: vpblendd {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,3]
300+ ; AVX512BW-NEXT: vpmovsxbd {{.*#+}} xmm1 = [0,4,16,21]
301+ ; AVX512BW-NEXT: vextracti64x4 $1, %zmm0, %ymm2
302+ ; AVX512BW-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[1,5,9,13,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,17,21,25,30,u,u,u,u,u,u,u,u]
303+ ; AVX512BW-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[1,5,9,13,u,u,u,u,u,u,u,u,u,u,u,u,17,21,25,29,u,u,u,u,u,u,u,u,u,u,u,u]
304+ ; AVX512BW-NEXT: vpermt2d %zmm2, %zmm1, %zmm0
305+ ; AVX512BW-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0
312306; AVX512BW-NEXT: vzeroupper
313307; AVX512BW-NEXT: retq
314308;
315309; AVX512BWVL-LABEL: trunc_shuffle_v64i8_01_05_09_13_17_21_25_29_33_37_41_45_49_53_57_62:
316310; AVX512BWVL: # %bb.0:
317- ; AVX512BWVL-NEXT: vextracti64x4 $1, %zmm0, %ymm1
318- ; AVX512BWVL-NEXT: vextracti128 $1, %ymm1, %xmm2
319- ; AVX512BWVL-NEXT: vpshufb {{.*#+}} xmm2 = xmm2[u,u,u,u,1,5,9,14,u,u,u,u,u,u,u,u]
320- ; AVX512BWVL-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[u,u,u,u,1,5,9,13,u,u,u,u,u,u,u,u]
321- ; AVX512BWVL-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
322- ; AVX512BWVL-NEXT: vpsrld $8, %ymm0, %ymm0
323- ; AVX512BWVL-NEXT: vpmovdb %ymm0, %xmm0
324- ; AVX512BWVL-NEXT: vpblendd {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,3]
311+ ; AVX512BWVL-NEXT: vpmovsxbd {{.*#+}} xmm1 = [0,4,8,13]
312+ ; AVX512BWVL-NEXT: vextracti64x4 $1, %zmm0, %ymm2
313+ ; AVX512BWVL-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[1,5,9,13,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,17,21,25,30,u,u,u,u,u,u,u,u]
314+ ; AVX512BWVL-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[1,5,9,13,u,u,u,u,u,u,u,u,u,u,u,u,17,21,25,29,u,u,u,u,u,u,u,u,u,u,u,u]
315+ ; AVX512BWVL-NEXT: vpermt2d %ymm2, %ymm1, %ymm0
316+ ; AVX512BWVL-NEXT: # kill: def $xmm0 killed $xmm0 killed $ymm0
325317; AVX512BWVL-NEXT: vzeroupper
326318; AVX512BWVL-NEXT: retq
327319;
0 commit comments