[llvm] [CodeGen][MachinePipeliner] Limit register pressure when scheduling (PR #74807)
Ryotaro Kasuga via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 4 03:52:39 PST 2024
================
@@ -2044,6 +2457,16 @@ bool SwingSchedulerDAG::schedulePipeline(SMSchedule &Schedule) {
// If a schedule is found, check if it is a valid schedule too.
if (scheduleFound)
scheduleFound = Schedule.isValidSchedule(this);
+
+ // If a schedule found and the option is enabled, check if the schedule
+ // might generate additional register spill/fill
+ if (scheduleFound && LimitRegPressure) {
+ std::vector<MachineInstr *> OrderedInsts;
+ DenseMap<MachineInstr *, unsigned> Stages;
+ computeScheduledInsts(this, Schedule, OrderedInsts, Stages);
+ scheduleFound = !HRPDetector->detect(OrderedInsts, Stages,
+ Schedule.getMaxStageCount());
----------------
kasuga-fj wrote:
It seems better. Thanks.
https://github.com/llvm/llvm-project/pull/74807
More information about the llvm-commits
mailing list