[llvm] [AMDGPU][MachineScheduler] Alternative way to control excess RP. (PR #68004)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 12 00:08:26 PST 2024
================
@@ -1127,16 +1128,23 @@ bool OccInitialScheduleStage::shouldRevertScheduling(unsigned WavesAfter) {
bool UnclusteredHighRPStage::shouldRevertScheduling(unsigned WavesAfter) {
// If RP is not reduced in the unclustered reschedule stage, revert to the
// old schedule.
- if ((WavesAfter <= PressureBefore.getOccupancy(ST) &&
- mayCauseSpilling(WavesAfter)) ||
- GCNSchedStage::shouldRevertScheduling(WavesAfter)) {
- LLVM_DEBUG(dbgs() << "Unclustered reschedule did not help.\n");
- return true;
- }
+ if (DAG.RegionsWithExcessRP[RegionIdx]) {
+ unsigned NewVGPRRP = PressureAfter.getVGPRNum(false);
+ unsigned NewAGPRRP = PressureAfter.getAGPRNum();
+ unsigned NewSGPRRP = PressureAfter.getSGPRNum();
- // Do not attempt to relax schedule even more if we are already spilling.
- if (isRegionWithExcessRP())
+ unsigned OldVGPRRP = PressureBefore.getVGPRNum(false);
+ unsigned OldAGPRRP = PressureBefore.getAGPRNum();
+ unsigned OldSGPRRP = PressureBefore.getSGPRNum();
+
+ if (NewVGPRRP > S.VGPRExcessLimit && NewVGPRRP >= OldVGPRRP)
+ return true;
+ if (NewAGPRRP > S.VGPRExcessLimit && NewAGPRRP >= OldAGPRRP)
----------------
arsenm wrote:
ditto?
https://github.com/llvm/llvm-project/pull/68004
More information about the llvm-commits
mailing list