Skip to content

Commit 8e58fdd

Browse files
committed
[X86] Fix masked store scheduler ports for skylake models
Only uses port2+3 for agen, and was missing port4 for the actual store Noticed while investigating the skylake vs icelake diffs for Issue #62602
1 parent e5aa6ee commit 8e58fdd

File tree

6 files changed

+36
-36
lines changed

6 files changed

+36
-36
lines changed

llvm/lib/Target/X86/X86SchedSkylakeClient.td

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -236,10 +236,10 @@ defm : X86WriteRes<WriteFStoreNT, [SKLPort237,SKLPort4], 1, [1,1], 2>;
236236
defm : X86WriteRes<WriteFStoreNTX, [SKLPort237,SKLPort4], 1, [1,1], 2>;
237237
defm : X86WriteRes<WriteFStoreNTY, [SKLPort237,SKLPort4], 1, [1,1], 2>;
238238

239-
defm : X86WriteRes<WriteFMaskedStore32, [SKLPort237,SKLPort0], 2, [1,1], 2>;
240-
defm : X86WriteRes<WriteFMaskedStore32Y, [SKLPort237,SKLPort0], 2, [1,1], 2>;
241-
defm : X86WriteRes<WriteFMaskedStore64, [SKLPort237,SKLPort0], 2, [1,1], 2>;
242-
defm : X86WriteRes<WriteFMaskedStore64Y, [SKLPort237,SKLPort0], 2, [1,1], 2>;
239+
defm : X86WriteRes<WriteFMaskedStore32, [SKLPort23,SKLPort0,SKLPort4], 2, [1,1,1], 2>;
240+
defm : X86WriteRes<WriteFMaskedStore32Y, [SKLPort23,SKLPort0,SKLPort4], 2, [1,1,1], 2>;
241+
defm : X86WriteRes<WriteFMaskedStore64, [SKLPort23,SKLPort0,SKLPort4], 2, [1,1,1], 2>;
242+
defm : X86WriteRes<WriteFMaskedStore64Y, [SKLPort23,SKLPort0,SKLPort4], 2, [1,1,1], 2>;
243243

244244
defm : X86WriteRes<WriteFMove, [SKLPort015], 1, [1], 1>;
245245
defm : X86WriteRes<WriteFMoveX, [SKLPort015], 1, [1], 1>;
@@ -352,10 +352,10 @@ defm : X86WriteRes<WriteVecStoreX, [SKLPort237,SKLPort4], 1, [1,1], 2>;
352352
defm : X86WriteRes<WriteVecStoreY, [SKLPort237,SKLPort4], 1, [1,1], 2>;
353353
defm : X86WriteRes<WriteVecStoreNT, [SKLPort237,SKLPort4], 1, [1,1], 2>;
354354
defm : X86WriteRes<WriteVecStoreNTY, [SKLPort237,SKLPort4], 1, [1,1], 2>;
355-
defm : X86WriteRes<WriteVecMaskedStore32, [SKLPort237,SKLPort0], 2, [1,1], 2>;
356-
defm : X86WriteRes<WriteVecMaskedStore32Y, [SKLPort237,SKLPort0], 2, [1,1], 2>;
357-
defm : X86WriteRes<WriteVecMaskedStore64, [SKLPort237,SKLPort0], 2, [1,1], 2>;
358-
defm : X86WriteRes<WriteVecMaskedStore64Y, [SKLPort237,SKLPort0], 2, [1,1], 2>;
355+
defm : X86WriteRes<WriteVecMaskedStore32, [SKLPort23,SKLPort0,SKLPort4], 2, [1,1,1], 2>;
356+
defm : X86WriteRes<WriteVecMaskedStore32Y, [SKLPort23,SKLPort0,SKLPort4], 2, [1,1,1], 2>;
357+
defm : X86WriteRes<WriteVecMaskedStore64, [SKLPort23,SKLPort0,SKLPort4], 2, [1,1,1], 2>;
358+
defm : X86WriteRes<WriteVecMaskedStore64Y, [SKLPort23,SKLPort0,SKLPort4], 2, [1,1,1], 2>;
359359
defm : X86WriteRes<WriteVecMove, [SKLPort05], 1, [1], 1>;
360360
defm : X86WriteRes<WriteVecMoveX, [SKLPort015], 1, [1], 1>;
361361
defm : X86WriteRes<WriteVecMoveY, [SKLPort015], 1, [1], 1>;

llvm/lib/Target/X86/X86SchedSkylakeServer.td

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -236,10 +236,10 @@ defm : X86WriteRes<WriteFStoreNT, [SKXPort237,SKXPort4], 1, [1,1], 2>;
236236
defm : X86WriteRes<WriteFStoreNTX, [SKXPort237,SKXPort4], 1, [1,1], 2>;
237237
defm : X86WriteRes<WriteFStoreNTY, [SKXPort237,SKXPort4], 1, [1,1], 2>;
238238

239-
defm : X86WriteRes<WriteFMaskedStore32, [SKXPort237,SKXPort0], 2, [1,1], 2>;
240-
defm : X86WriteRes<WriteFMaskedStore32Y, [SKXPort237,SKXPort0], 2, [1,1], 2>;
241-
defm : X86WriteRes<WriteFMaskedStore64, [SKXPort237,SKXPort0], 2, [1,1], 2>;
242-
defm : X86WriteRes<WriteFMaskedStore64Y, [SKXPort237,SKXPort0], 2, [1,1], 2>;
239+
defm : X86WriteRes<WriteFMaskedStore32, [SKXPort23,SKXPort0,SKXPort4], 2, [1,1,1], 2>;
240+
defm : X86WriteRes<WriteFMaskedStore32Y, [SKXPort23,SKXPort0,SKXPort4], 2, [1,1,1], 2>;
241+
defm : X86WriteRes<WriteFMaskedStore64, [SKXPort23,SKXPort0,SKXPort4], 2, [1,1,1], 2>;
242+
defm : X86WriteRes<WriteFMaskedStore64Y, [SKXPort23,SKXPort0,SKXPort4], 2, [1,1,1], 2>;
243243

244244
defm : X86WriteRes<WriteFMove, [SKXPort015], 1, [1], 1>;
245245
defm : X86WriteRes<WriteFMoveX, [SKXPort015], 1, [1], 1>;
@@ -352,10 +352,10 @@ defm : X86WriteRes<WriteVecStoreX, [SKXPort237,SKXPort4], 1, [1,1], 2>;
352352
defm : X86WriteRes<WriteVecStoreY, [SKXPort237,SKXPort4], 1, [1,1], 2>;
353353
defm : X86WriteRes<WriteVecStoreNT, [SKXPort237,SKXPort4], 1, [1,1], 2>;
354354
defm : X86WriteRes<WriteVecStoreNTY, [SKXPort237,SKXPort4], 1, [1,1], 2>;
355-
defm : X86WriteRes<WriteVecMaskedStore32, [SKXPort237,SKXPort0], 2, [1,1], 2>;
356-
defm : X86WriteRes<WriteVecMaskedStore32Y, [SKXPort237,SKXPort0], 2, [1,1], 2>;
357-
defm : X86WriteRes<WriteVecMaskedStore64, [SKXPort237,SKXPort0], 2, [1,1], 2>;
358-
defm : X86WriteRes<WriteVecMaskedStore64Y, [SKXPort237,SKXPort0], 2, [1,1], 2>;
355+
defm : X86WriteRes<WriteVecMaskedStore32, [SKXPort23,SKXPort0,SKXPort4], 2, [1,1,1], 2>;
356+
defm : X86WriteRes<WriteVecMaskedStore32Y, [SKXPort23,SKXPort0,SKXPort4], 2, [1,1,1], 2>;
357+
defm : X86WriteRes<WriteVecMaskedStore64, [SKXPort23,SKXPort0,SKXPort4], 2, [1,1,1], 2>;
358+
defm : X86WriteRes<WriteVecMaskedStore64Y, [SKXPort23,SKXPort0,SKXPort4], 2, [1,1,1], 2>;
359359
defm : X86WriteRes<WriteVecMove, [SKXPort05], 1, [1], 1>;
360360
defm : X86WriteRes<WriteVecMoveX, [SKXPort015], 1, [1], 1>;
361361
defm : X86WriteRes<WriteVecMoveY, [SKXPort015], 1, [1], 1>;

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1736,7 +1736,7 @@ vzeroupper
17361736

17371737
# CHECK: Resource pressure per iteration:
17381738
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
1739-
# CHECK-NEXT: - 126.00 338.58 199.58 173.17 173.17 34.00 326.58 5.25 12.67
1739+
# CHECK-NEXT: - 126.00 338.58 199.58 173.83 173.83 38.00 326.58 5.25 11.33
17401740

17411741
# CHECK: Resource pressure by instruction:
17421742
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions:
@@ -1932,12 +1932,12 @@ vzeroupper
19321932
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 vmaskmovdqu %xmm0, %xmm1
19331933
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmaskmovpd (%rax), %xmm0, %xmm2
19341934
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmaskmovpd (%rax), %ymm0, %ymm2
1935-
# CHECK-NEXT: - - 1.00 - 0.33 0.33 - - - 0.33 vmaskmovpd %xmm0, %xmm1, (%rax)
1936-
# CHECK-NEXT: - - 1.00 - 0.33 0.33 - - - 0.33 vmaskmovpd %ymm0, %ymm1, (%rax)
1935+
# CHECK-NEXT: - - 1.00 - 0.50 0.50 1.00 - - - vmaskmovpd %xmm0, %xmm1, (%rax)
1936+
# CHECK-NEXT: - - 1.00 - 0.50 0.50 1.00 - - - vmaskmovpd %ymm0, %ymm1, (%rax)
19371937
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmaskmovps (%rax), %xmm0, %xmm2
19381938
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmaskmovps (%rax), %ymm0, %ymm2
1939-
# CHECK-NEXT: - - 1.00 - 0.33 0.33 - - - 0.33 vmaskmovps %xmm0, %xmm1, (%rax)
1940-
# CHECK-NEXT: - - 1.00 - 0.33 0.33 - - - 0.33 vmaskmovps %ymm0, %ymm1, (%rax)
1939+
# CHECK-NEXT: - - 1.00 - 0.50 0.50 1.00 - - - vmaskmovps %xmm0, %xmm1, (%rax)
1940+
# CHECK-NEXT: - - 1.00 - 0.50 0.50 1.00 - - - vmaskmovps %ymm0, %ymm1, (%rax)
19411941
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vmaxpd %xmm0, %xmm1, %xmm2
19421942
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vmaxpd (%rax), %xmm1, %xmm2
19431943
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vmaxpd %ymm0, %ymm1, %ymm2

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -776,7 +776,7 @@ vpxor (%rax), %ymm1, %ymm2
776776

777777
# CHECK: Resource pressure per iteration:
778778
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
779-
# CHECK-NEXT: - - 110.33 89.33 99.67 99.67 1.00 164.33 - 1.67
779+
# CHECK-NEXT: - - 110.33 89.33 100.33 100.33 5.00 164.33 - 0.33
780780

781781
# CHECK: Resource pressure by instruction:
782782
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions:
@@ -914,12 +914,12 @@ vpxor (%rax), %ymm1, %ymm2
914914
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vpmaddwd (%rax), %ymm1, %ymm2
915915
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpmaskmovd (%rax), %xmm0, %xmm2
916916
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpmaskmovd (%rax), %ymm0, %ymm2
917-
# CHECK-NEXT: - - 1.00 - 0.33 0.33 - - - 0.33 vpmaskmovd %xmm0, %xmm1, (%rax)
918-
# CHECK-NEXT: - - 1.00 - 0.33 0.33 - - - 0.33 vpmaskmovd %ymm0, %ymm1, (%rax)
917+
# CHECK-NEXT: - - 1.00 - 0.50 0.50 1.00 - - - vpmaskmovd %xmm0, %xmm1, (%rax)
918+
# CHECK-NEXT: - - 1.00 - 0.50 0.50 1.00 - - - vpmaskmovd %ymm0, %ymm1, (%rax)
919919
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpmaskmovq (%rax), %xmm0, %xmm2
920920
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpmaskmovq (%rax), %ymm0, %ymm2
921-
# CHECK-NEXT: - - 1.00 - 0.33 0.33 - - - 0.33 vpmaskmovq %xmm0, %xmm1, (%rax)
922-
# CHECK-NEXT: - - 1.00 - 0.33 0.33 - - - 0.33 vpmaskmovq %ymm0, %ymm1, (%rax)
921+
# CHECK-NEXT: - - 1.00 - 0.50 0.50 1.00 - - - vpmaskmovq %xmm0, %xmm1, (%rax)
922+
# CHECK-NEXT: - - 1.00 - 0.50 0.50 1.00 - - - vpmaskmovq %ymm0, %ymm1, (%rax)
923923
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vpmaxsb %ymm0, %ymm1, %ymm2
924924
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vpmaxsb (%rax), %ymm1, %ymm2
925925
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vpmaxsd %ymm0, %ymm1, %ymm2

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1736,7 +1736,7 @@ vzeroupper
17361736

17371737
# CHECK: Resource pressure per iteration:
17381738
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
1739-
# CHECK-NEXT: - 126.00 322.25 200.25 173.17 173.17 34.00 330.25 6.25 12.67
1739+
# CHECK-NEXT: - 126.00 322.25 200.25 173.83 173.83 38.00 330.25 6.25 11.33
17401740

17411741
# CHECK: Resource pressure by instruction:
17421742
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions:
@@ -1932,12 +1932,12 @@ vzeroupper
19321932
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 vmaskmovdqu %xmm0, %xmm1
19331933
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmaskmovpd (%rax), %xmm0, %xmm2
19341934
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmaskmovpd (%rax), %ymm0, %ymm2
1935-
# CHECK-NEXT: - - 1.00 - 0.33 0.33 - - - 0.33 vmaskmovpd %xmm0, %xmm1, (%rax)
1936-
# CHECK-NEXT: - - 1.00 - 0.33 0.33 - - - 0.33 vmaskmovpd %ymm0, %ymm1, (%rax)
1935+
# CHECK-NEXT: - - 1.00 - 0.50 0.50 1.00 - - - vmaskmovpd %xmm0, %xmm1, (%rax)
1936+
# CHECK-NEXT: - - 1.00 - 0.50 0.50 1.00 - - - vmaskmovpd %ymm0, %ymm1, (%rax)
19371937
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmaskmovps (%rax), %xmm0, %xmm2
19381938
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vmaskmovps (%rax), %ymm0, %ymm2
1939-
# CHECK-NEXT: - - 1.00 - 0.33 0.33 - - - 0.33 vmaskmovps %xmm0, %xmm1, (%rax)
1940-
# CHECK-NEXT: - - 1.00 - 0.33 0.33 - - - 0.33 vmaskmovps %ymm0, %ymm1, (%rax)
1939+
# CHECK-NEXT: - - 1.00 - 0.50 0.50 1.00 - - - vmaskmovps %xmm0, %xmm1, (%rax)
1940+
# CHECK-NEXT: - - 1.00 - 0.50 0.50 1.00 - - - vmaskmovps %ymm0, %ymm1, (%rax)
19411941
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vmaxpd %xmm0, %xmm1, %xmm2
19421942
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vmaxpd (%rax), %xmm1, %xmm2
19431943
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vmaxpd %ymm0, %ymm1, %ymm2

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -776,7 +776,7 @@ vpxor (%rax), %ymm1, %ymm2
776776

777777
# CHECK: Resource pressure per iteration:
778778
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
779-
# CHECK-NEXT: - - 110.33 89.33 99.67 99.67 1.00 164.33 - 1.67
779+
# CHECK-NEXT: - - 110.33 89.33 100.33 100.33 5.00 164.33 - 0.33
780780

781781
# CHECK: Resource pressure by instruction:
782782
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions:
@@ -914,12 +914,12 @@ vpxor (%rax), %ymm1, %ymm2
914914
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vpmaddwd (%rax), %ymm1, %ymm2
915915
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpmaskmovd (%rax), %xmm0, %xmm2
916916
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpmaskmovd (%rax), %ymm0, %ymm2
917-
# CHECK-NEXT: - - 1.00 - 0.33 0.33 - - - 0.33 vpmaskmovd %xmm0, %xmm1, (%rax)
918-
# CHECK-NEXT: - - 1.00 - 0.33 0.33 - - - 0.33 vpmaskmovd %ymm0, %ymm1, (%rax)
917+
# CHECK-NEXT: - - 1.00 - 0.50 0.50 1.00 - - - vpmaskmovd %xmm0, %xmm1, (%rax)
918+
# CHECK-NEXT: - - 1.00 - 0.50 0.50 1.00 - - - vpmaskmovd %ymm0, %ymm1, (%rax)
919919
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpmaskmovq (%rax), %xmm0, %xmm2
920920
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpmaskmovq (%rax), %ymm0, %ymm2
921-
# CHECK-NEXT: - - 1.00 - 0.33 0.33 - - - 0.33 vpmaskmovq %xmm0, %xmm1, (%rax)
922-
# CHECK-NEXT: - - 1.00 - 0.33 0.33 - - - 0.33 vpmaskmovq %ymm0, %ymm1, (%rax)
921+
# CHECK-NEXT: - - 1.00 - 0.50 0.50 1.00 - - - vpmaskmovq %xmm0, %xmm1, (%rax)
922+
# CHECK-NEXT: - - 1.00 - 0.50 0.50 1.00 - - - vpmaskmovq %ymm0, %ymm1, (%rax)
923923
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vpmaxsb %ymm0, %ymm1, %ymm2
924924
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vpmaxsb (%rax), %ymm1, %ymm2
925925
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vpmaxsd %ymm0, %ymm1, %ymm2

0 commit comments

Comments
 (0)