@@ -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_
14491449 ret <64 x i8 > %5
14501450}
14511451
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+
14521488define <64 x i8 > @PR54562_ref (<64 x i8 > %a0 ) {
14531489; AVX512F-LABEL: PR54562_ref:
14541490; AVX512F: # %bb.0:
0 commit comments