This patch refactors the logic that expands predicates of a variant scheduling class.
The idea is to improve the readability of the auto-generated code by removing redundant parentheses around predicate expressions, and by removing redundant if(true) statements.
This patch replaces the definition of NoSchedPred in TargetSchedule.td with an instance of MCSchedPredicate. The new definition is sematically equivalent to the previous one. The main difference is that now SubtargetEmitter knows that it represents predicate "true".
Before this patch, we always generated an if (true) for the default transition of a variant scheduling class.
Example (taken from AArch64GenSubtargetInfo.inc) :
if (SchedModel->getProcessorID() == 3) { // CycloneModel if ((TII->isScaledAddr(*MI))) return 927; // (WriteIS_WriteLD)_ReadBaseRS if ((true)) return 928; // WriteLD_ReadDefault }
Extra parentheses were also generated around the predicate expressions.
With this patch, we get this:
if (SchedModel->getProcessorID() == 3) { // CycloneModel if (TII->isScaledAddr(*MI)) return 927; // (WriteIS_WriteLD)_ReadBaseRS return 928; // WriteLD_ReadDefault }
The new auto-generated code behaves exactly the same as before. So, technically this is a NFC(I).
Please let me know if okay to commit.
-Andrea