[PATCH] D62653: [Mips][DSP] Fix physregs incorrectly marked as dead.
Eli Friedman via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 5 15:40:56 PDT 2019
efriedma added a comment.
I think fundamentally, the problem here is that the registers in question aren't being handled consistently.
Looking briefly, at the IR level, the DSPCtrl registers are implicit: it's equivalent to some unknown location in memory. Then, during isel, some instructions acquire explicit references to those registers. Then, after isel, some other instructions acquire explicit references to those registers. This is fundamentally broken; you have to transition from modeling DSPCtrl as unknown memory to modeling it as an explicit set of registers at exactly one point, for all operations which refer to DSPCtrl. Otherwise the dependencies are wrong. This doesn't just affect the dead/undef markings; this could also have implications for scheduling. For example, if we don't model the dependency between wrdsp and pick.qb, we could schedule them in the wrong order.
Not sure where the best place to convert from arbitrary "memory" to specific registers is. Probably the simplest is to do it all in post-isel hooks?
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D62653/new/
https://reviews.llvm.org/D62653
More information about the llvm-commits
mailing list