[llvm] [AMDGPU][Scheduler] Make `finalizeGCNRegion` an overridable hook (NFC) (PR #177199)
Lucas Ramirez via llvm-commits
llvm-commits at lists.llvm.org
Wed Jan 21 08:50:45 PST 2026
https://github.com/lucas-rami created https://github.com/llvm/llvm-project/pull/177199
This allows individual stages to make decisions after re-scheduling individual regions.
>From ef9597bb85699c45e4f103d525ea81fdd447647c Mon Sep 17 00:00:00 2001
From: Lucas Ramirez <lucas.rami at proton.me>
Date: Mon, 19 Jan 2026 21:22:33 +0000
Subject: [PATCH] [AMDGPU][Scheduler] Make `finalizeGCNRegion` an overridable
hook (NFC)
This allows individual stages to make decisions after re-scheduling
individual regions.
---
llvm/lib/Target/AMDGPU/GCNSchedStrategy.cpp | 6 ++----
llvm/lib/Target/AMDGPU/GCNSchedStrategy.h | 6 +++---
2 files changed, 5 insertions(+), 7 deletions(-)
diff --git a/llvm/lib/Target/AMDGPU/GCNSchedStrategy.cpp b/llvm/lib/Target/AMDGPU/GCNSchedStrategy.cpp
index cabf759762a72..876adddcfbbaa 100644
--- a/llvm/lib/Target/AMDGPU/GCNSchedStrategy.cpp
+++ b/llvm/lib/Target/AMDGPU/GCNSchedStrategy.cpp
@@ -145,7 +145,6 @@ void GCNSchedStrategy::initialize(ScheduleDAGMI *DAG) {
VGPRCriticalLimit -= std::min(VGPRLimitBias + ErrorMargin, VGPRCriticalLimit);
SGPRExcessLimit -= std::min(SGPRLimitBias + ErrorMargin, SGPRExcessLimit);
VGPRExcessLimit -= std::min(VGPRLimitBias + ErrorMargin, VGPRExcessLimit);
-
LLVM_DEBUG(dbgs() << "VGPRCriticalLimit = " << VGPRCriticalLimit
<< ", VGPRExcessLimit = " << VGPRExcessLimit
<< ", SGPRCriticalLimit = " << SGPRCriticalLimit
@@ -1163,6 +1162,8 @@ void GCNScheduleDAGMILive::runSchedStages() {
ScheduleDAGMILive::schedule();
Stage->finalizeGCNRegion();
+ Stage->advanceRegion();
+ exitRegion();
}
Stage->finalizeGCNSchedStage();
@@ -1473,9 +1474,6 @@ void GCNSchedStage::finalizeGCNRegion() {
if (DAG.RegionsWithIGLPInstrs[RegionIdx] &&
StageID != GCNSchedStageID::UnclusteredHighRPReschedule)
SavedMutations.swap(DAG.Mutations);
-
- DAG.exitRegion();
- advanceRegion();
}
void GCNSchedStage::checkScheduling() {
diff --git a/llvm/lib/Target/AMDGPU/GCNSchedStrategy.h b/llvm/lib/Target/AMDGPU/GCNSchedStrategy.h
index 95a931b9beb2a..6563c8d050ff9 100644
--- a/llvm/lib/Target/AMDGPU/GCNSchedStrategy.h
+++ b/llvm/lib/Target/AMDGPU/GCNSchedStrategy.h
@@ -367,12 +367,12 @@ class GCNSchedStage {
// be skipped.
virtual bool initGCNRegion();
+ // Finalize state after scheduling a region.
+ virtual void finalizeGCNRegion();
+
// Track whether a new region is also a new MBB.
void setupNewBlock();
- // Finalize state after scheudling a region.
- void finalizeGCNRegion();
-
// Check result of scheduling.
void checkScheduling();
More information about the llvm-commits
mailing list