@@ -1449,6 +1449,42 @@ define <64 x i8> @shuffle_v64i8_shift_00_02_04_06_08_10_12_14_64_66_68_70_72_74_
1449
1449
ret <64 x i8 > %5
1450
1450
}
1451
1451
1452
+ ; PR114001
1453
+ define <64 x i8 > @shuffle_v8i8_00_00_00_00_00_00_00_00_01_01_01_01_01_01_01_01_02_02_02_02_02_02_02_02_03_03_03_03_03_03_03_03_04_04_04_04_04_04_04_04_05_05_05_05_05_05_05_05_06_06_06_06_06_06_06_06_07_07_07_07_07_07_07_07 (<8 x i8 > %a0 ) {
1454
+ ; AVX512F-LABEL: shuffle_v8i8_00_00_00_00_00_00_00_00_01_01_01_01_01_01_01_01_02_02_02_02_02_02_02_02_03_03_03_03_03_03_03_03_04_04_04_04_04_04_04_04_05_05_05_05_05_05_05_05_06_06_06_06_06_06_06_06_07_07_07_07_07_07_07_07:
1455
+ ; AVX512F: # %bb.0:
1456
+ ; AVX512F-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm0
1457
+ ; AVX512F-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]
1458
+ ; AVX512F-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19]
1459
+ ; AVX512F-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23]
1460
+ ; AVX512F-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm0
1461
+ ; AVX512F-NEXT: retq
1462
+ ;
1463
+ ; AVX512BW-LABEL: shuffle_v8i8_00_00_00_00_00_00_00_00_01_01_01_01_01_01_01_01_02_02_02_02_02_02_02_02_03_03_03_03_03_03_03_03_04_04_04_04_04_04_04_04_05_05_05_05_05_05_05_05_06_06_06_06_06_06_06_06_07_07_07_07_07_07_07_07:
1464
+ ; AVX512BW: # %bb.0:
1465
+ ; AVX512BW-NEXT: vpbroadcastq %xmm0, %zmm0
1466
+ ; AVX512BW-NEXT: vpshufb {{.*#+}} zmm0 = zmm0[0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,36,36,36,36,36,36,36,36,37,37,37,37,37,37,37,37,54,54,54,54,54,54,54,54,55,55,55,55,55,55,55,55]
1467
+ ; AVX512BW-NEXT: retq
1468
+ ;
1469
+ ; AVX512DQ-LABEL: shuffle_v8i8_00_00_00_00_00_00_00_00_01_01_01_01_01_01_01_01_02_02_02_02_02_02_02_02_03_03_03_03_03_03_03_03_04_04_04_04_04_04_04_04_05_05_05_05_05_05_05_05_06_06_06_06_06_06_06_06_07_07_07_07_07_07_07_07:
1470
+ ; AVX512DQ: # %bb.0:
1471
+ ; AVX512DQ-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm0
1472
+ ; AVX512DQ-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]
1473
+ ; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm1 = ymm0[0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19]
1474
+ ; AVX512DQ-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23]
1475
+ ; AVX512DQ-NEXT: vinserti64x4 $1, %ymm0, %zmm1, %zmm0
1476
+ ; AVX512DQ-NEXT: retq
1477
+ ;
1478
+ ; AVX512VBMI-LABEL: shuffle_v8i8_00_00_00_00_00_00_00_00_01_01_01_01_01_01_01_01_02_02_02_02_02_02_02_02_03_03_03_03_03_03_03_03_04_04_04_04_04_04_04_04_05_05_05_05_05_05_05_05_06_06_06_06_06_06_06_06_07_07_07_07_07_07_07_07:
1479
+ ; AVX512VBMI: # %bb.0:
1480
+ ; AVX512VBMI-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0
1481
+ ; AVX512VBMI-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7]
1482
+ ; AVX512VBMI-NEXT: vpermb %zmm0, %zmm1, %zmm0
1483
+ ; AVX512VBMI-NEXT: retq
1484
+ %s = shufflevector <8 x i8 > %a0 , <8 x i8 > poison, <64 x i32 > <i32 0 , i32 0 , i32 0 , i32 0 , i32 0 , i32 0 , i32 0 , i32 0 , i32 1 , i32 1 , i32 1 , i32 1 , i32 1 , i32 1 , i32 1 , i32 1 , i32 2 , i32 2 , i32 2 , i32 2 , i32 2 , i32 2 , i32 2 , i32 2 , i32 3 , i32 3 , i32 3 , i32 3 , i32 3 , i32 3 , i32 3 , i32 3 , i32 4 , i32 4 , i32 4 , i32 4 , i32 4 , i32 4 , i32 4 , i32 4 , i32 5 , i32 5 , i32 5 , i32 5 , i32 5 , i32 5 , i32 5 , i32 5 , i32 6 , i32 6 , i32 6 , i32 6 , i32 6 , i32 6 , i32 6 , i32 6 , i32 7 , i32 7 , i32 7 , i32 7 , i32 7 , i32 7 , i32 7 , i32 7 >
1485
+ ret <64 x i8 > %s
1486
+ }
1487
+
1452
1488
define <64 x i8 > @PR54562_ref (<64 x i8 > %a0 ) {
1453
1489
; AVX512F-LABEL: PR54562_ref:
1454
1490
; AVX512F: # %bb.0:
0 commit comments