Skip to content

Commit aa95b5c

Browse files
committed
[X86] Fix Skylake/Icelake port usage for MMX PACK instructions
Matches uops.info + Agner
1 parent 83de8c2 commit aa95b5c

File tree

6 files changed

+33
-33
lines changed

6 files changed

+33
-33
lines changed

llvm/lib/Target/X86/X86SchedIceLake.td

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -900,10 +900,10 @@ def ICXWriteResGroup38 : SchedWriteRes<[ICXPort15,ICXPort01]> {
900900
}
901901
def: InstRW<[ICXWriteResGroup38], (instregex "(V?)PH(ADD|SUB)SW(Y?)rr")>;
902902

903-
def ICXWriteResGroup41 : SchedWriteRes<[ICXPort5,ICXPort0156]> {
904-
let Latency = 3;
905-
let NumMicroOps = 3;
906-
let ReleaseAtCycles = [2,1];
903+
def ICXWriteResGroup41 : SchedWriteRes<[ICXPort5]> {
904+
let Latency = 4;
905+
let NumMicroOps = 2;
906+
let ReleaseAtCycles = [2];
907907
}
908908
def: InstRW<[ICXWriteResGroup41], (instrs MMX_PACKSSDWrr,
909909
MMX_PACKSSWBrr,

llvm/lib/Target/X86/X86SchedSkylakeClient.td

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -818,10 +818,10 @@ def SKLWriteResGroup36 : SchedWriteRes<[SKLPort5,SKLPort01]> {
818818
def: InstRW<[SKLWriteResGroup36], (instregex "(V?)PHADDSW(Y?)rr",
819819
"(V?)PHSUBSW(Y?)rr")>;
820820

821-
def SKLWriteResGroup39 : SchedWriteRes<[SKLPort5,SKLPort0156]> {
822-
let Latency = 3;
823-
let NumMicroOps = 3;
824-
let ReleaseAtCycles = [2,1];
821+
def SKLWriteResGroup39 : SchedWriteRes<[SKLPort5]> {
822+
let Latency = 2;
823+
let NumMicroOps = 2;
824+
let ReleaseAtCycles = [2];
825825
}
826826
def: InstRW<[SKLWriteResGroup39], (instrs MMX_PACKSSDWrr,
827827
MMX_PACKSSWBrr,

llvm/lib/Target/X86/X86SchedSkylakeServer.td

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -878,10 +878,10 @@ def SKXWriteResGroup38 : SchedWriteRes<[SKXPort5,SKXPort01]> {
878878
}
879879
def: InstRW<[SKXWriteResGroup38], (instregex "(V?)PH(ADD|SUB)SW(Y?)rr")>;
880880

881-
def SKXWriteResGroup41 : SchedWriteRes<[SKXPort5,SKXPort0156]> {
882-
let Latency = 3;
883-
let NumMicroOps = 3;
884-
let ReleaseAtCycles = [2,1];
881+
def SKXWriteResGroup41 : SchedWriteRes<[SKXPort5]> {
882+
let Latency = 2;
883+
let NumMicroOps = 2;
884+
let ReleaseAtCycles = [2];
885885
}
886886
def: InstRW<[SKXWriteResGroup41], (instrs MMX_PACKSSDWrr,
887887
MMX_PACKSSWBrr,

llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-mmx.s

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -173,11 +173,11 @@ pxor (%rax), %mm2
173173
# CHECK-NEXT: 1 5 0.50 * movq (%rax), %mm2
174174
# CHECK-NEXT: 1 2 1.00 movq %mm0, %rcx
175175
# CHECK-NEXT: 2 1 0.50 * movq %mm0, (%rax)
176-
# CHECK-NEXT: 3 3 2.00 packsswb %mm0, %mm2
176+
# CHECK-NEXT: 2 4 2.00 packsswb %mm0, %mm2
177177
# CHECK-NEXT: 3 7 2.00 * packsswb (%rax), %mm2
178-
# CHECK-NEXT: 3 3 2.00 packssdw %mm0, %mm2
178+
# CHECK-NEXT: 2 4 2.00 packssdw %mm0, %mm2
179179
# CHECK-NEXT: 3 7 2.00 * packssdw (%rax), %mm2
180-
# CHECK-NEXT: 3 3 2.00 packuswb %mm0, %mm2
180+
# CHECK-NEXT: 2 4 2.00 packuswb %mm0, %mm2
181181
# CHECK-NEXT: 3 7 2.00 * packuswb (%rax), %mm2
182182
# CHECK-NEXT: 1 1 0.50 paddb %mm0, %mm2
183183
# CHECK-NEXT: 2 6 0.50 * paddb (%rax), %mm2
@@ -286,7 +286,7 @@ pxor (%rax), %mm2
286286

287287
# CHECK: Resource pressure per iteration:
288288
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]
289-
# CHECK-NEXT: - - 75.50 1.00 23.00 23.00 1.00 41.50 1.00 1.00 1.00 1.00
289+
# CHECK-NEXT: - - 74.75 0.25 23.00 23.00 1.00 40.75 0.25 1.00 1.00 1.00
290290

291291
# CHECK: Resource pressure by instruction:
292292
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions:
@@ -299,11 +299,11 @@ pxor (%rax), %mm2
299299
# CHECK-NEXT: - - - - 0.50 0.50 - - - - - - movq (%rax), %mm2
300300
# CHECK-NEXT: - - 1.00 - - - - - - - - - movq %mm0, %rcx
301301
# CHECK-NEXT: - - - - - - 0.50 - - 0.50 0.50 0.50 movq %mm0, (%rax)
302-
# CHECK-NEXT: - - 0.25 0.25 - - - 2.25 0.25 - - - packsswb %mm0, %mm2
302+
# CHECK-NEXT: - - - - - - - 2.00 - - - - packsswb %mm0, %mm2
303303
# CHECK-NEXT: - - - - 0.50 0.50 - 2.00 - - - - packsswb (%rax), %mm2
304-
# CHECK-NEXT: - - 0.25 0.25 - - - 2.25 0.25 - - - packssdw %mm0, %mm2
304+
# CHECK-NEXT: - - - - - - - 2.00 - - - - packssdw %mm0, %mm2
305305
# CHECK-NEXT: - - - - 0.50 0.50 - 2.00 - - - - packssdw (%rax), %mm2
306-
# CHECK-NEXT: - - 0.25 0.25 - - - 2.25 0.25 - - - packuswb %mm0, %mm2
306+
# CHECK-NEXT: - - - - - - - 2.00 - - - - packuswb %mm0, %mm2
307307
# CHECK-NEXT: - - - - 0.50 0.50 - 2.00 - - - - packuswb (%rax), %mm2
308308
# CHECK-NEXT: - - 0.50 - - - - 0.50 - - - - paddb %mm0, %mm2
309309
# CHECK-NEXT: - - 0.50 - 0.50 0.50 - 0.50 - - - - paddb (%rax), %mm2

llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-mmx.s

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -173,11 +173,11 @@ pxor (%rax), %mm2
173173
# CHECK-NEXT: 1 5 0.50 * movq (%rax), %mm2
174174
# CHECK-NEXT: 1 2 1.00 movq %mm0, %rcx
175175
# CHECK-NEXT: 2 1 1.00 * movq %mm0, (%rax)
176-
# CHECK-NEXT: 3 3 2.00 packsswb %mm0, %mm2
176+
# CHECK-NEXT: 2 2 2.00 packsswb %mm0, %mm2
177177
# CHECK-NEXT: 3 7 2.00 * packsswb (%rax), %mm2
178-
# CHECK-NEXT: 3 3 2.00 packssdw %mm0, %mm2
178+
# CHECK-NEXT: 2 2 2.00 packssdw %mm0, %mm2
179179
# CHECK-NEXT: 3 7 2.00 * packssdw (%rax), %mm2
180-
# CHECK-NEXT: 3 3 2.00 packuswb %mm0, %mm2
180+
# CHECK-NEXT: 2 2 2.00 packuswb %mm0, %mm2
181181
# CHECK-NEXT: 3 7 2.00 * packuswb (%rax), %mm2
182182
# CHECK-NEXT: 1 1 0.50 paddb %mm0, %mm2
183183
# CHECK-NEXT: 2 6 0.50 * paddb (%rax), %mm2
@@ -284,7 +284,7 @@ pxor (%rax), %mm2
284284

285285
# CHECK: Resource pressure per iteration:
286286
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
287-
# CHECK-NEXT: - - 75.50 1.00 23.67 23.67 2.00 41.50 1.00 0.67
287+
# CHECK-NEXT: - - 74.75 0.25 23.67 23.67 2.00 40.75 0.25 0.67
288288

289289
# CHECK: Resource pressure by instruction:
290290
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions:
@@ -297,11 +297,11 @@ pxor (%rax), %mm2
297297
# CHECK-NEXT: - - - - 0.50 0.50 - - - - movq (%rax), %mm2
298298
# CHECK-NEXT: - - 1.00 - - - - - - - movq %mm0, %rcx
299299
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 movq %mm0, (%rax)
300-
# CHECK-NEXT: - - 0.25 0.25 - - - 2.25 0.25 - packsswb %mm0, %mm2
300+
# CHECK-NEXT: - - - - - - - 2.00 - - packsswb %mm0, %mm2
301301
# CHECK-NEXT: - - - - 0.50 0.50 - 2.00 - - packsswb (%rax), %mm2
302-
# CHECK-NEXT: - - 0.25 0.25 - - - 2.25 0.25 - packssdw %mm0, %mm2
302+
# CHECK-NEXT: - - - - - - - 2.00 - - packssdw %mm0, %mm2
303303
# CHECK-NEXT: - - - - 0.50 0.50 - 2.00 - - packssdw (%rax), %mm2
304-
# CHECK-NEXT: - - 0.25 0.25 - - - 2.25 0.25 - packuswb %mm0, %mm2
304+
# CHECK-NEXT: - - - - - - - 2.00 - - packuswb %mm0, %mm2
305305
# CHECK-NEXT: - - - - 0.50 0.50 - 2.00 - - packuswb (%rax), %mm2
306306
# CHECK-NEXT: - - 0.50 - - - - 0.50 - - paddb %mm0, %mm2
307307
# CHECK-NEXT: - - 0.50 - 0.50 0.50 - 0.50 - - paddb (%rax), %mm2

llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-mmx.s

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -173,11 +173,11 @@ pxor (%rax), %mm2
173173
# CHECK-NEXT: 1 5 0.50 * movq (%rax), %mm2
174174
# CHECK-NEXT: 1 2 1.00 movq %mm0, %rcx
175175
# CHECK-NEXT: 2 1 1.00 * movq %mm0, (%rax)
176-
# CHECK-NEXT: 3 3 2.00 packsswb %mm0, %mm2
176+
# CHECK-NEXT: 2 2 2.00 packsswb %mm0, %mm2
177177
# CHECK-NEXT: 3 7 2.00 * packsswb (%rax), %mm2
178-
# CHECK-NEXT: 3 3 2.00 packssdw %mm0, %mm2
178+
# CHECK-NEXT: 2 2 2.00 packssdw %mm0, %mm2
179179
# CHECK-NEXT: 3 7 2.00 * packssdw (%rax), %mm2
180-
# CHECK-NEXT: 3 3 2.00 packuswb %mm0, %mm2
180+
# CHECK-NEXT: 2 2 2.00 packuswb %mm0, %mm2
181181
# CHECK-NEXT: 3 7 2.00 * packuswb (%rax), %mm2
182182
# CHECK-NEXT: 1 1 0.50 paddb %mm0, %mm2
183183
# CHECK-NEXT: 2 6 0.50 * paddb (%rax), %mm2
@@ -284,7 +284,7 @@ pxor (%rax), %mm2
284284

285285
# CHECK: Resource pressure per iteration:
286286
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
287-
# CHECK-NEXT: - - 75.50 1.00 23.67 23.67 2.00 41.50 1.00 0.67
287+
# CHECK-NEXT: - - 74.75 0.25 23.67 23.67 2.00 40.75 0.25 0.67
288288

289289
# CHECK: Resource pressure by instruction:
290290
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions:
@@ -297,11 +297,11 @@ pxor (%rax), %mm2
297297
# CHECK-NEXT: - - - - 0.50 0.50 - - - - movq (%rax), %mm2
298298
# CHECK-NEXT: - - 1.00 - - - - - - - movq %mm0, %rcx
299299
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 movq %mm0, (%rax)
300-
# CHECK-NEXT: - - 0.25 0.25 - - - 2.25 0.25 - packsswb %mm0, %mm2
300+
# CHECK-NEXT: - - - - - - - 2.00 - - packsswb %mm0, %mm2
301301
# CHECK-NEXT: - - - - 0.50 0.50 - 2.00 - - packsswb (%rax), %mm2
302-
# CHECK-NEXT: - - 0.25 0.25 - - - 2.25 0.25 - packssdw %mm0, %mm2
302+
# CHECK-NEXT: - - - - - - - 2.00 - - packssdw %mm0, %mm2
303303
# CHECK-NEXT: - - - - 0.50 0.50 - 2.00 - - packssdw (%rax), %mm2
304-
# CHECK-NEXT: - - 0.25 0.25 - - - 2.25 0.25 - packuswb %mm0, %mm2
304+
# CHECK-NEXT: - - - - - - - 2.00 - - packuswb %mm0, %mm2
305305
# CHECK-NEXT: - - - - 0.50 0.50 - 2.00 - - packuswb (%rax), %mm2
306306
# CHECK-NEXT: - - 0.50 - - - - 0.50 - - paddb %mm0, %mm2
307307
# CHECK-NEXT: - - 0.50 - 0.50 0.50 - 0.50 - - paddb (%rax), %mm2

0 commit comments

Comments
 (0)