Writelane was missing. Additionally, since we emit the final encoded
instructions, this wasn't really matching readlane either.
Details
Diff Detail
Event Timeline
Adding writelane absolutely makes sense to me, but:
Additionally, since we emit the final encoded instructions, this wasn't really matching readlane either.
:(
We have a bunch of places where we _always_ use real instructions, and presumably those are fine. But if we let real instructions creep into places where we usually use pseudos, we end up making the backend less efficient because over time, everybody will have to check for pseudos and reals (like in this particular case here). Can we instead add some sort of check that those real instructions aren't used during CodeGen? (The MI verifier should be able to check for this, for example.)
There is some reason we use the encoded versions for readlane/writelane that I never remember what it is
Would be good to understand that? A quick hack to replace the use of TII->getMCOpcodeFromPseudo from SIRegisterInfo.cpp shows a whole bunch of lit test changes, but so far the ones I've looked at are just scheduling changes that ought to be benign.