[PATCH] D98628: [MCA] Disable RCU for InOrderIssueStage
Andrew Savonichev via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Mar 22 08:50:14 PDT 2021
asavonic added inline comments.
================
Comment at: llvm/test/tools/llvm-mca/ARM/m7-negative-readadvance.s:63
+# CHECK-NEXT: [0,1] .DE . add.w r1, r1, #2
+# CHECK-NEXT: [0,2] . DeE vldr d0, [r1]
----------------
andreadb wrote:
> I am assuming that this change is correct.
> Not sure if we have already enough load/store tests. If not, then it may be worthy to add some tests (maybe as a follow-up. But only if you think that it is required).
No, I think the change is incorrect. Thank you very much for spotting this! VLDR is issued 1 cycle earlier, and it does not obey to -1 `ReadAdvance` anymore.
This happens because we check `ReadAdvance` only for current `WriteState` objects. Since we now retire instructions in the same cycle as they're executed, the corresponding `WriteState` objects are also invalidated in the same cycle. A subsequent instruction cannot check for a negative `ReadAdvance` because the `WriteState` objects are invalidated at this point.
I'm thinking on how to fix this. Can we free registers when an instruction is retired, but keep `WriteState` objects for N cycles more?
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D98628/new/
https://reviews.llvm.org/D98628
More information about the llvm-commits
mailing list