For now, we didn't set any scheduling information for pseudo instructions. However, many pseudo instruction(i.e. LDtocL etc) should have the scheduling information. Create a new class for those pseudo instruction that require the scheduling information to improve the scheduler.
This basically LGTM.
However, I'd like us to add more tests before we land it.
The change might not change the final schedule for existing codegen testcases ,
but the information during scheduling should change,
so I think it shouldn't be too hard to come up with a few MIR tests that show the impact,
especially for toc related Pseudoes and floating point load/store psedudoes (eg: DFSTOREf32, DFLOADf32).
We did have SchedInfo in P9InstrResources.td before, so are they ignored? and always using the default latency?
If we didn't clear the hasNoSchedulingInfo for instructions, it didn't need to provide the scheduling information even we mark the model as complete. And that will result in some instructions scheduling info missing. I.e. for the pseudo load(LDtocL), it will use the default latency specified in the SchedModel, that is 5 cycles. And now, it is correct to 4 cycles.
No, it will still use the latency that we specify in the resources.td. The bit here affect the checker.
I think this is a good change. My only question is with the test case. If we can get the necessary information out of MIR, then I think it's better to write an MIR test case instead of relying on the debug output from the machine scheduler.
Could this be done as an MIR test instead of relying on the debug output from the machine scheduler?