@@ -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_
275
275
define <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 ) {
276
276
; AVX512F-LABEL: trunc_shuffle_v64i8_01_05_09_13_17_21_25_29_33_37_41_45_49_53_57_62:
277
277
; 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
286
284
; AVX512F-NEXT: vzeroupper
287
285
; AVX512F-NEXT: retq
288
286
;
289
287
; AVX512VL-LABEL: trunc_shuffle_v64i8_01_05_09_13_17_21_25_29_33_37_41_45_49_53_57_62:
290
288
; 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
299
295
; AVX512VL-NEXT: vzeroupper
300
296
; AVX512VL-NEXT: retq
301
297
;
302
298
; AVX512BW-LABEL: trunc_shuffle_v64i8_01_05_09_13_17_21_25_29_33_37_41_45_49_53_57_62:
303
299
; 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
312
306
; AVX512BW-NEXT: vzeroupper
313
307
; AVX512BW-NEXT: retq
314
308
;
315
309
; AVX512BWVL-LABEL: trunc_shuffle_v64i8_01_05_09_13_17_21_25_29_33_37_41_45_49_53_57_62:
316
310
; 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
325
317
; AVX512BWVL-NEXT: vzeroupper
326
318
; AVX512BWVL-NEXT: retq
327
319
;
0 commit comments