Skip to content

Commit e28e214

Browse files
committed
[X86] Treat PSLLDQ/PSRLDQ as a shuffle not a shift
This appears to be a copy+paste typo in the znver1/2 AMD SoG tables, treating the byte shift instructions like bit shifts Older AMD SoG referred to PSLLDQ/PSRLDQ as shuffles, and Agner/instlatx64 both report they are integer shuffles
1 parent c14ef2d commit e28e214

File tree

8 files changed

+30
-58
lines changed

8 files changed

+30
-58
lines changed

llvm/lib/Target/X86/X86ScheduleZnver1.td

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1109,19 +1109,6 @@ def ZnWritePCMPGTQYm : SchedWriteRes<[ZnAGU, ZnFPU03]> {
11091109
def : InstRW<[ZnWritePCMPGTQm], (instregex "(V?)PCMPGTQrm")>;
11101110
def : InstRW<[ZnWritePCMPGTQYm], (instrs VPCMPGTQYrm)>;
11111111

1112-
//-- Logic instructions --//
1113-
1114-
// PSLL,PSRL,PSRA W/D/Q.
1115-
// x,x / v,v,x.
1116-
def ZnWritePShift : SchedWriteRes<[ZnFPU2]> ;
1117-
def ZnWritePShiftY : SchedWriteRes<[ZnFPU2]> {
1118-
let Latency = 2;
1119-
}
1120-
1121-
// PSLL,PSRL DQ.
1122-
def : InstRW<[ZnWritePShift], (instregex "(V?)PS(R|L)LDQri")>;
1123-
def : InstRW<[ZnWritePShiftY], (instregex "(V?)PS(R|L)LDQYri")>;
1124-
11251112
//=== Floating Point XMM and YMM Instructions ===//
11261113
//-- Move instructions --//
11271114

llvm/lib/Target/X86/X86ScheduleZnver2.td

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1127,21 +1127,6 @@ def Zn2WritePCMPGTQYm : SchedWriteRes<[Zn2AGU, Zn2FPU03]> {
11271127
def : InstRW<[Zn2WritePCMPGTQm], (instregex "(V?)PCMPGTQrm")>;
11281128
def : InstRW<[Zn2WritePCMPGTQYm], (instrs VPCMPGTQYrm)>;
11291129

1130-
//-- Logic instructions --//
1131-
1132-
// PSLL,PSRL,PSRA W/D/Q.
1133-
// x,x / v,v,x.
1134-
def Zn2WritePShift : SchedWriteRes<[Zn2FPU2]> {
1135-
let Latency = 3;
1136-
}
1137-
def Zn2WritePShiftY : SchedWriteRes<[Zn2FPU2]> {
1138-
let Latency = 3;
1139-
}
1140-
1141-
// PSLL,PSRL DQ.
1142-
def : InstRW<[Zn2WritePShift], (instregex "(V?)PS(R|L)LDQri")>;
1143-
def : InstRW<[Zn2WritePShiftY], (instregex "(V?)PS(R|L)LDQYri")>;
1144-
11451130
//=== Floating Point XMM and YMM Instructions ===//
11461131
//-- Move instructions --//
11471132

llvm/test/tools/llvm-mca/X86/Znver1/resources-avx1.s

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1565,7 +1565,7 @@ vzeroupper
15651565
# CHECK-NEXT: 1 1 1.00 vpslld $1, %xmm0, %xmm2
15661566
# CHECK-NEXT: 1 1 1.00 vpslld %xmm0, %xmm1, %xmm2
15671567
# CHECK-NEXT: 1 8 1.00 * vpslld (%rax), %xmm1, %xmm2
1568-
# CHECK-NEXT: 1 1 1.00 vpslldq $1, %xmm1, %xmm2
1568+
# CHECK-NEXT: 1 1 0.25 vpslldq $1, %xmm1, %xmm2
15691569
# CHECK-NEXT: 1 1 1.00 vpsllq $1, %xmm0, %xmm2
15701570
# CHECK-NEXT: 1 1 1.00 vpsllq %xmm0, %xmm1, %xmm2
15711571
# CHECK-NEXT: 1 8 1.00 * vpsllq (%rax), %xmm1, %xmm2
@@ -1581,7 +1581,7 @@ vzeroupper
15811581
# CHECK-NEXT: 1 1 1.00 vpsrld $1, %xmm0, %xmm2
15821582
# CHECK-NEXT: 1 1 1.00 vpsrld %xmm0, %xmm1, %xmm2
15831583
# CHECK-NEXT: 1 8 1.00 * vpsrld (%rax), %xmm1, %xmm2
1584-
# CHECK-NEXT: 1 1 1.00 vpsrldq $1, %xmm1, %xmm2
1584+
# CHECK-NEXT: 1 1 0.25 vpsrldq $1, %xmm1, %xmm2
15851585
# CHECK-NEXT: 1 1 1.00 vpsrlq $1, %xmm0, %xmm2
15861586
# CHECK-NEXT: 1 1 1.00 vpsrlq %xmm0, %xmm1, %xmm2
15871587
# CHECK-NEXT: 1 8 1.00 * vpsrlq (%rax), %xmm1, %xmm2
@@ -1738,7 +1738,7 @@ vzeroupper
17381738

17391739
# CHECK: Resource pressure per iteration:
17401740
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]
1741-
# CHECK-NEXT: 175.00 175.00 - - - - - 153.58 191.58 218.75 321.08 -
1741+
# CHECK-NEXT: 175.00 175.00 - - - - - 154.08 192.08 217.25 321.58 -
17421742

17431743
# CHECK: Resource pressure by instruction:
17441744
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions:
@@ -2277,7 +2277,7 @@ vzeroupper
22772277
# CHECK-NEXT: - - - - - - - - - 1.00 - - vpslld $1, %xmm0, %xmm2
22782278
# CHECK-NEXT: - - - - - - - - - 1.00 - - vpslld %xmm0, %xmm1, %xmm2
22792279
# CHECK-NEXT: 0.50 0.50 - - - - - - - 1.00 - - vpslld (%rax), %xmm1, %xmm2
2280-
# CHECK-NEXT: - - - - - - - - - 1.00 - - vpslldq $1, %xmm1, %xmm2
2280+
# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - vpslldq $1, %xmm1, %xmm2
22812281
# CHECK-NEXT: - - - - - - - - - 1.00 - - vpsllq $1, %xmm0, %xmm2
22822282
# CHECK-NEXT: - - - - - - - - - 1.00 - - vpsllq %xmm0, %xmm1, %xmm2
22832283
# CHECK-NEXT: 0.50 0.50 - - - - - - - 1.00 - - vpsllq (%rax), %xmm1, %xmm2
@@ -2293,7 +2293,7 @@ vzeroupper
22932293
# CHECK-NEXT: - - - - - - - - - 1.00 - - vpsrld $1, %xmm0, %xmm2
22942294
# CHECK-NEXT: - - - - - - - - - 1.00 - - vpsrld %xmm0, %xmm1, %xmm2
22952295
# CHECK-NEXT: 0.50 0.50 - - - - - - - 1.00 - - vpsrld (%rax), %xmm1, %xmm2
2296-
# CHECK-NEXT: - - - - - - - - - 1.00 - - vpsrldq $1, %xmm1, %xmm2
2296+
# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - vpsrldq $1, %xmm1, %xmm2
22972297
# CHECK-NEXT: - - - - - - - - - 1.00 - - vpsrlq $1, %xmm0, %xmm2
22982298
# CHECK-NEXT: - - - - - - - - - 1.00 - - vpsrlq %xmm0, %xmm1, %xmm2
22992299
# CHECK-NEXT: 0.50 0.50 - - - - - - - 1.00 - - vpsrlq (%rax), %xmm1, %xmm2

llvm/test/tools/llvm-mca/X86/Znver1/resources-avx2.s

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -684,7 +684,7 @@ vpxor (%rax), %ymm1, %ymm2
684684
# CHECK-NEXT: 2 1 2.00 vpslld $1, %ymm0, %ymm2
685685
# CHECK-NEXT: 2 1 2.00 vpslld %xmm0, %ymm1, %ymm2
686686
# CHECK-NEXT: 2 8 2.00 * vpslld (%rax), %ymm1, %ymm2
687-
# CHECK-NEXT: 1 2 1.00 vpslldq $1, %ymm1, %ymm2
687+
# CHECK-NEXT: 1 1 0.25 vpslldq $1, %ymm1, %ymm2
688688
# CHECK-NEXT: 2 1 2.00 vpsllq $1, %ymm0, %ymm2
689689
# CHECK-NEXT: 2 1 2.00 vpsllq %xmm0, %ymm1, %ymm2
690690
# CHECK-NEXT: 2 8 2.00 * vpsllq (%rax), %ymm1, %ymm2
@@ -712,7 +712,7 @@ vpxor (%rax), %ymm1, %ymm2
712712
# CHECK-NEXT: 2 1 2.00 vpsrld $1, %ymm0, %ymm2
713713
# CHECK-NEXT: 2 1 2.00 vpsrld %xmm0, %ymm1, %ymm2
714714
# CHECK-NEXT: 2 8 2.00 * vpsrld (%rax), %ymm1, %ymm2
715-
# CHECK-NEXT: 1 2 1.00 vpsrldq $1, %ymm1, %ymm2
715+
# CHECK-NEXT: 1 1 0.25 vpsrldq $1, %ymm1, %ymm2
716716
# CHECK-NEXT: 2 1 2.00 vpsrlq $1, %ymm0, %ymm2
717717
# CHECK-NEXT: 2 1 2.00 vpsrlq %xmm0, %ymm1, %ymm2
718718
# CHECK-NEXT: 2 8 2.00 * vpsrlq (%rax), %ymm1, %ymm2
@@ -778,7 +778,7 @@ vpxor (%rax), %ymm1, %ymm2
778778

779779
# CHECK: Resource pressure per iteration:
780780
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]
781-
# CHECK-NEXT: 67.00 67.00 - - - - - 116.67 183.17 164.50 64.67 -
781+
# CHECK-NEXT: 67.00 67.00 - - - - - 117.17 183.67 163.00 65.17 -
782782

783783
# CHECK: Resource pressure by instruction:
784784
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions:
@@ -1006,7 +1006,7 @@ vpxor (%rax), %ymm1, %ymm2
10061006
# CHECK-NEXT: - - - - - - - - - 2.00 - - vpslld $1, %ymm0, %ymm2
10071007
# CHECK-NEXT: - - - - - - - - - 2.00 - - vpslld %xmm0, %ymm1, %ymm2
10081008
# CHECK-NEXT: 0.50 0.50 - - - - - - - 2.00 - - vpslld (%rax), %ymm1, %ymm2
1009-
# CHECK-NEXT: - - - - - - - - - 1.00 - - vpslldq $1, %ymm1, %ymm2
1009+
# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - vpslldq $1, %ymm1, %ymm2
10101010
# CHECK-NEXT: - - - - - - - - - 2.00 - - vpsllq $1, %ymm0, %ymm2
10111011
# CHECK-NEXT: - - - - - - - - - 2.00 - - vpsllq %xmm0, %ymm1, %ymm2
10121012
# CHECK-NEXT: 0.50 0.50 - - - - - - - 2.00 - - vpsllq (%rax), %ymm1, %ymm2
@@ -1034,7 +1034,7 @@ vpxor (%rax), %ymm1, %ymm2
10341034
# CHECK-NEXT: - - - - - - - - - 2.00 - - vpsrld $1, %ymm0, %ymm2
10351035
# CHECK-NEXT: - - - - - - - - - 2.00 - - vpsrld %xmm0, %ymm1, %ymm2
10361036
# CHECK-NEXT: 0.50 0.50 - - - - - - - 2.00 - - vpsrld (%rax), %ymm1, %ymm2
1037-
# CHECK-NEXT: - - - - - - - - - 1.00 - - vpsrldq $1, %ymm1, %ymm2
1037+
# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - vpsrldq $1, %ymm1, %ymm2
10381038
# CHECK-NEXT: - - - - - - - - - 2.00 - - vpsrlq $1, %ymm0, %ymm2
10391039
# CHECK-NEXT: - - - - - - - - - 2.00 - - vpsrlq %xmm0, %ymm1, %ymm2
10401040
# CHECK-NEXT: 0.50 0.50 - - - - - - - 2.00 - - vpsrlq (%rax), %ymm1, %ymm2

llvm/test/tools/llvm-mca/X86/Znver1/resources-sse2.s

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -597,7 +597,7 @@ xorpd (%rax), %xmm2
597597
# CHECK-NEXT: 1 1 1.00 pslld $1, %xmm2
598598
# CHECK-NEXT: 1 1 1.00 pslld %xmm0, %xmm2
599599
# CHECK-NEXT: 1 8 1.00 * pslld (%rax), %xmm2
600-
# CHECK-NEXT: 1 1 1.00 pslldq $1, %xmm2
600+
# CHECK-NEXT: 1 1 0.25 pslldq $1, %xmm2
601601
# CHECK-NEXT: 1 1 1.00 psllq $1, %xmm2
602602
# CHECK-NEXT: 1 1 1.00 psllq %xmm0, %xmm2
603603
# CHECK-NEXT: 1 8 1.00 * psllq (%rax), %xmm2
@@ -613,7 +613,7 @@ xorpd (%rax), %xmm2
613613
# CHECK-NEXT: 1 1 1.00 psrld $1, %xmm2
614614
# CHECK-NEXT: 1 1 1.00 psrld %xmm0, %xmm2
615615
# CHECK-NEXT: 1 8 1.00 * psrld (%rax), %xmm2
616-
# CHECK-NEXT: 1 1 1.00 psrldq $1, %xmm2
616+
# CHECK-NEXT: 1 1 0.25 psrldq $1, %xmm2
617617
# CHECK-NEXT: 1 1 1.00 psrlq $1, %xmm2
618618
# CHECK-NEXT: 1 1 1.00 psrlq %xmm0, %xmm2
619619
# CHECK-NEXT: 1 8 1.00 * psrlq (%rax), %xmm2
@@ -691,7 +691,7 @@ xorpd (%rax), %xmm2
691691

692692
# CHECK: Resource pressure per iteration:
693693
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]
694-
# CHECK-NEXT: 66.50 66.50 - - - - - 54.92 46.42 85.75 123.92 -
694+
# CHECK-NEXT: 66.50 66.50 - - - - - 55.42 46.92 84.25 124.42 -
695695

696696
# CHECK: Resource pressure by instruction:
697697
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions:
@@ -885,7 +885,7 @@ xorpd (%rax), %xmm2
885885
# CHECK-NEXT: - - - - - - - - - 1.00 - - pslld $1, %xmm2
886886
# CHECK-NEXT: - - - - - - - - - 1.00 - - pslld %xmm0, %xmm2
887887
# CHECK-NEXT: 0.50 0.50 - - - - - - - 1.00 - - pslld (%rax), %xmm2
888-
# CHECK-NEXT: - - - - - - - - - 1.00 - - pslldq $1, %xmm2
888+
# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - pslldq $1, %xmm2
889889
# CHECK-NEXT: - - - - - - - - - 1.00 - - psllq $1, %xmm2
890890
# CHECK-NEXT: - - - - - - - - - 1.00 - - psllq %xmm0, %xmm2
891891
# CHECK-NEXT: 0.50 0.50 - - - - - - - 1.00 - - psllq (%rax), %xmm2
@@ -901,7 +901,7 @@ xorpd (%rax), %xmm2
901901
# CHECK-NEXT: - - - - - - - - - 1.00 - - psrld $1, %xmm2
902902
# CHECK-NEXT: - - - - - - - - - 1.00 - - psrld %xmm0, %xmm2
903903
# CHECK-NEXT: 0.50 0.50 - - - - - - - 1.00 - - psrld (%rax), %xmm2
904-
# CHECK-NEXT: - - - - - - - - - 1.00 - - psrldq $1, %xmm2
904+
# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - psrldq $1, %xmm2
905905
# CHECK-NEXT: - - - - - - - - - 1.00 - - psrlq $1, %xmm2
906906
# CHECK-NEXT: - - - - - - - - - 1.00 - - psrlq %xmm0, %xmm2
907907
# CHECK-NEXT: 0.50 0.50 - - - - - - - 1.00 - - psrlq (%rax), %xmm2

llvm/test/tools/llvm-mca/X86/Znver2/resources-avx1.s

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1565,7 +1565,7 @@ vzeroupper
15651565
# CHECK-NEXT: 1 1 1.00 vpslld $1, %xmm0, %xmm2
15661566
# CHECK-NEXT: 1 1 1.00 vpslld %xmm0, %xmm1, %xmm2
15671567
# CHECK-NEXT: 1 8 1.00 * vpslld (%rax), %xmm1, %xmm2
1568-
# CHECK-NEXT: 1 3 1.00 vpslldq $1, %xmm1, %xmm2
1568+
# CHECK-NEXT: 1 1 0.25 vpslldq $1, %xmm1, %xmm2
15691569
# CHECK-NEXT: 1 1 1.00 vpsllq $1, %xmm0, %xmm2
15701570
# CHECK-NEXT: 1 1 1.00 vpsllq %xmm0, %xmm1, %xmm2
15711571
# CHECK-NEXT: 1 8 1.00 * vpsllq (%rax), %xmm1, %xmm2
@@ -1581,7 +1581,7 @@ vzeroupper
15811581
# CHECK-NEXT: 1 1 1.00 vpsrld $1, %xmm0, %xmm2
15821582
# CHECK-NEXT: 1 1 1.00 vpsrld %xmm0, %xmm1, %xmm2
15831583
# CHECK-NEXT: 1 8 1.00 * vpsrld (%rax), %xmm1, %xmm2
1584-
# CHECK-NEXT: 1 3 1.00 vpsrldq $1, %xmm1, %xmm2
1584+
# CHECK-NEXT: 1 1 0.25 vpsrldq $1, %xmm1, %xmm2
15851585
# CHECK-NEXT: 1 1 1.00 vpsrlq $1, %xmm0, %xmm2
15861586
# CHECK-NEXT: 1 1 1.00 vpsrlq %xmm0, %xmm1, %xmm2
15871587
# CHECK-NEXT: 1 8 1.00 * vpsrlq (%rax), %xmm1, %xmm2
@@ -1739,7 +1739,7 @@ vzeroupper
17391739

17401740
# CHECK: Resource pressure per iteration:
17411741
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12]
1742-
# CHECK-NEXT: 117.00 117.00 117.00 0.25 0.25 0.25 0.25 - 134.92 169.92 204.75 311.42 -
1742+
# CHECK-NEXT: 117.00 117.00 117.00 0.25 0.25 0.25 0.25 - 135.42 170.42 203.25 311.92 -
17431743

17441744
# CHECK: Resource pressure by instruction:
17451745
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] Instructions:
@@ -2278,7 +2278,7 @@ vzeroupper
22782278
# CHECK-NEXT: - - - - - - - - - - 1.00 - - vpslld $1, %xmm0, %xmm2
22792279
# CHECK-NEXT: - - - - - - - - - - 1.00 - - vpslld %xmm0, %xmm1, %xmm2
22802280
# CHECK-NEXT: 0.33 0.33 0.33 - - - - - - - 1.00 - - vpslld (%rax), %xmm1, %xmm2
2281-
# CHECK-NEXT: - - - - - - - - - - 1.00 - - vpslldq $1, %xmm1, %xmm2
2281+
# CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - vpslldq $1, %xmm1, %xmm2
22822282
# CHECK-NEXT: - - - - - - - - - - 1.00 - - vpsllq $1, %xmm0, %xmm2
22832283
# CHECK-NEXT: - - - - - - - - - - 1.00 - - vpsllq %xmm0, %xmm1, %xmm2
22842284
# CHECK-NEXT: 0.33 0.33 0.33 - - - - - - - 1.00 - - vpsllq (%rax), %xmm1, %xmm2
@@ -2294,7 +2294,7 @@ vzeroupper
22942294
# CHECK-NEXT: - - - - - - - - - - 1.00 - - vpsrld $1, %xmm0, %xmm2
22952295
# CHECK-NEXT: - - - - - - - - - - 1.00 - - vpsrld %xmm0, %xmm1, %xmm2
22962296
# CHECK-NEXT: 0.33 0.33 0.33 - - - - - - - 1.00 - - vpsrld (%rax), %xmm1, %xmm2
2297-
# CHECK-NEXT: - - - - - - - - - - 1.00 - - vpsrldq $1, %xmm1, %xmm2
2297+
# CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - vpsrldq $1, %xmm1, %xmm2
22982298
# CHECK-NEXT: - - - - - - - - - - 1.00 - - vpsrlq $1, %xmm0, %xmm2
22992299
# CHECK-NEXT: - - - - - - - - - - 1.00 - - vpsrlq %xmm0, %xmm1, %xmm2
23002300
# CHECK-NEXT: 0.33 0.33 0.33 - - - - - - - 1.00 - - vpsrlq (%rax), %xmm1, %xmm2

0 commit comments

Comments
 (0)