Skip to content

Commit 7d0145c

Browse files
committed
[AMDGPU] Use more consistemt way to avoid overflow in the scheduler
Use more consistent way to avoid overflow when calculating SGPR and VGPR pressure limits. Differential Revision: https://reviews.llvm.org/D142262
1 parent 7d3306f commit 7d0145c

File tree

1 file changed

+4
-12
lines changed

1 file changed

+4
-12
lines changed

llvm/lib/Target/AMDGPU/GCNSchedStrategy.cpp

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -89,18 +89,10 @@ void GCNSchedStrategy::initialize(ScheduleDAGMI *DAG) {
8989
}
9090

9191
// Subtract error margin and bias from register limits and avoid overflow.
92-
SGPRCriticalLimit =
93-
std::min(SGPRCriticalLimit - SGPRLimitBias, SGPRCriticalLimit);
94-
SGPRCriticalLimit =
95-
std::min(SGPRCriticalLimit - ErrorMargin, SGPRCriticalLimit);
96-
VGPRCriticalLimit =
97-
std::min(VGPRCriticalLimit - VGPRLimitBias, VGPRCriticalLimit);
98-
VGPRCriticalLimit =
99-
std::min(VGPRCriticalLimit - ErrorMargin, VGPRCriticalLimit);
100-
SGPRExcessLimit = std::min(SGPRExcessLimit - SGPRLimitBias, SGPRExcessLimit);
101-
SGPRExcessLimit = std::min(SGPRExcessLimit - ErrorMargin, SGPRExcessLimit);
102-
VGPRExcessLimit = std::min(VGPRExcessLimit - VGPRLimitBias, VGPRExcessLimit);
103-
VGPRExcessLimit = std::min(VGPRExcessLimit - ErrorMargin, VGPRExcessLimit);
92+
SGPRCriticalLimit -= std::min(SGPRLimitBias + ErrorMargin, SGPRCriticalLimit);
93+
VGPRCriticalLimit -= std::min(VGPRLimitBias + ErrorMargin, VGPRCriticalLimit);
94+
SGPRExcessLimit -= std::min(SGPRLimitBias + ErrorMargin, SGPRExcessLimit);
95+
VGPRExcessLimit -= std::min(VGPRLimitBias + ErrorMargin, VGPRExcessLimit);
10496

10597
LLVM_DEBUG(dbgs() << "VGPRCriticalLimit = " << VGPRCriticalLimit
10698
<< ", VGPRExcessLimit = " << VGPRExcessLimit

0 commit comments

Comments
 (0)