Skip to content

Commit f51170b

Browse files
committed
[X86] Fix SLM ldmxcsr/stmxcsr schedule classes
Fix a long standing FIXME comment using a mixture of llvm-exegesis and Agner numbers
1 parent d620bae commit f51170b

File tree

2 files changed

+7
-8
lines changed

2 files changed

+7
-8
lines changed

llvm/lib/Target/X86/X86ScheduleSLM.td

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,9 +91,8 @@ def : WriteRes<WriteZero, []>;
9191
defm : X86WriteResUnsupported<WriteVecMaskedGatherWriteback>;
9292

9393
// Load/store MXCSR.
94-
// FIXME: These are probably wrong. They are copy pasted from WriteStore/Load.
95-
def : WriteRes<WriteSTMXCSR, [SLM_IEC_RSV01, SLM_MEC_RSV]>;
96-
def : WriteRes<WriteLDMXCSR, [SLM_MEC_RSV]> { let Latency = 3; }
94+
defm : X86WriteRes<WriteSTMXCSR, [SLM_MEC_RSV], 12,[11], 4>;
95+
defm : X86WriteRes<WriteLDMXCSR, [SLM_MEC_RSV], 10, [8], 5>;
9796

9897
// Treat misc copies as a move.
9998
def : InstRW<[WriteMove], (instrs COPY)>;

llvm/test/tools/llvm-mca/X86/SLM/resources-sse1.s

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ xorps (%rax), %xmm2
230230
# CHECK-NEXT: 7 42 39.00 * divps (%rax), %xmm2
231231
# CHECK-NEXT: 1 19 17.00 divss %xmm0, %xmm2
232232
# CHECK-NEXT: 1 22 17.00 * divss (%rax), %xmm2
233-
# CHECK-NEXT: 1 3 1.00 * * U ldmxcsr (%rax)
233+
# CHECK-NEXT: 5 10 8.00 * * U ldmxcsr (%rax)
234234
# CHECK-NEXT: 1 1 1.00 * * U maskmovq %mm0, %mm1
235235
# CHECK-NEXT: 1 3 1.00 maxps %xmm0, %xmm2
236236
# CHECK-NEXT: 1 6 1.00 * maxps (%rax), %xmm2
@@ -305,7 +305,7 @@ xorps (%rax), %xmm2
305305
# CHECK-NEXT: 6 44 40.00 * sqrtps (%rax), %xmm2
306306
# CHECK-NEXT: 1 20 20.00 sqrtss %xmm0, %xmm2
307307
# CHECK-NEXT: 1 23 20.00 * sqrtss (%rax), %xmm2
308-
# CHECK-NEXT: 1 1 1.00 * U stmxcsr (%rax)
308+
# CHECK-NEXT: 4 12 11.00 * U stmxcsr (%rax)
309309
# CHECK-NEXT: 1 3 1.00 subps %xmm0, %xmm2
310310
# CHECK-NEXT: 1 6 1.00 * subps (%rax), %xmm2
311311
# CHECK-NEXT: 1 3 1.00 subss %xmm0, %xmm2
@@ -331,7 +331,7 @@ xorps (%rax), %xmm2
331331

332332
# CHECK: Resource pressure per iteration:
333333
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7]
334-
# CHECK-NEXT: - 232.00 8.00 108.00 37.00 0.50 0.50 67.00
334+
# CHECK-NEXT: - 232.00 8.00 108.00 37.00 - - 84.00
335335

336336
# CHECK: Resource pressure by instruction:
337337
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] Instructions:
@@ -371,7 +371,7 @@ xorps (%rax), %xmm2
371371
# CHECK-NEXT: - 39.00 - 1.00 - - - 1.00 divps (%rax), %xmm2
372372
# CHECK-NEXT: - 17.00 - 1.00 - - - - divss %xmm0, %xmm2
373373
# CHECK-NEXT: - 17.00 - 1.00 - - - 1.00 divss (%rax), %xmm2
374-
# CHECK-NEXT: - - - - - - - 1.00 ldmxcsr (%rax)
374+
# CHECK-NEXT: - - - - - - - 8.00 ldmxcsr (%rax)
375375
# CHECK-NEXT: - - - 1.00 - - - - maskmovq %mm0, %mm1
376376
# CHECK-NEXT: - - - - 1.00 - - - maxps %xmm0, %xmm2
377377
# CHECK-NEXT: - - - - 1.00 - - 1.00 maxps (%rax), %xmm2
@@ -446,7 +446,7 @@ xorps (%rax), %xmm2
446446
# CHECK-NEXT: - 40.00 - 1.00 - - - 1.00 sqrtps (%rax), %xmm2
447447
# CHECK-NEXT: - 20.00 - 1.00 - - - - sqrtss %xmm0, %xmm2
448448
# CHECK-NEXT: - 20.00 - 1.00 - - - 1.00 sqrtss (%rax), %xmm2
449-
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 stmxcsr (%rax)
449+
# CHECK-NEXT: - - - - - - - 11.00 stmxcsr (%rax)
450450
# CHECK-NEXT: - - - - 1.00 - - - subps %xmm0, %xmm2
451451
# CHECK-NEXT: - - - - 1.00 - - 1.00 subps (%rax), %xmm2
452452
# CHECK-NEXT: - - - - 1.00 - - - subss %xmm0, %xmm2

0 commit comments

Comments
 (0)