Skip to content

Commit a932f9c

Browse files
jfuentesigcbot
authored andcommitted
Remove unneeded condition
1 parent 57589be commit a932f9c

File tree

3 files changed

+30
-9
lines changed

3 files changed

+30
-9
lines changed

visa/G4_Kernel.cpp

+21-6
Original file line numberDiff line numberDiff line change
@@ -2118,7 +2118,8 @@ unsigned G4_Kernel::getSRFInWords() {
21182118

21192119
// GRF modes supported by HW
21202120
// There must be at least one Config that is VRTEnable for each platform
2121-
GRFMode::GRFMode(const TARGET_PLATFORM platform, Options *op) : options(op) {
2121+
GRFMode::GRFMode(const TARGET_PLATFORM plat, Options *op)
2122+
: platform(plat), options(op) {
21222123
switch (platform) {
21232124
case Xe_XeHPSDV:
21242125
case Xe_DG2:
@@ -2179,7 +2180,7 @@ GRFMode::GRFMode(const TARGET_PLATFORM platform, Options *op) : options(op) {
21792180
unsigned GRFMode::setModeByRegPressure(unsigned maxRP, unsigned largestInputReg,
21802181
bool forceGRFModeUp) {
21812182
unsigned size = configs.size(), i = 0;
2182-
bool spillAllowed = options->getuInt32Option(vISA_SpillAllowed) > 256;
2183+
bool spillAllowed = getSpillThreshold() > 0;
21832184
// find appropiate GRF based on reg pressure
21842185
for (; i < size; i++) {
21852186
if (configs[i].VRTEnable && configs[i].numGRF >= lowerBoundGRF &&
@@ -2197,10 +2198,22 @@ unsigned GRFMode::setModeByRegPressure(unsigned maxRP, unsigned largestInputReg,
21972198
currentMode = newGRFMode < maxGRFMode ? newGRFMode : maxGRFMode;
21982199
}
21992200

2200-
if (spillAllowed && currentMode > 0)
2201-
return configs[--currentMode].numGRF;
2202-
else
2203-
return configs[currentMode].numGRF;
2201+
if (spillAllowed && currentMode > 0) {
2202+
unsigned lowerGRFNum = configs[currentMode - 1].numGRF;
2203+
// Select a lower GRF number in PreRA in case the register
2204+
// pressure computed is a bit higher (e.g. 5%) than the lower GRF
2205+
// config. If spills are detected, RA will still bump up the GRF
2206+
// number to avoid them.
2207+
// For example, if reg pressure is 167, we select 160GRF since
2208+
// we have spill threshold enabled and the diff between 167 and 160
2209+
// is less than 5%.
2210+
if ((lowerGRFNum * 1.05 >= maxRP ||
2211+
configs[currentMode].numGRF == getMaxGRF()) &&
2212+
lowerGRFNum >= (largestInputReg + 8) &&
2213+
lowerGRFNum >= lowerBoundGRF)
2214+
return configs[--currentMode].numGRF;
2215+
}
2216+
return configs[currentMode].numGRF;
22042217
}
22052218
}
22062219
}
@@ -2220,6 +2233,8 @@ bool GRFMode::hasLargerGRFSameThreads() const {
22202233

22212234
// Get spill threshold for current GRF mode
22222235
unsigned GRFMode::getSpillThreshold() const {
2236+
if (platform < Xe3)
2237+
return 0;
22232238
if (configs[currentMode].numGRF == 256 &&
22242239
options->getuInt32Option(vISA_SpillAllowed256GRF) > 0)
22252240
return options->getuInt32Option(vISA_SpillAllowed256GRF);

visa/G4_Kernel.hpp

+1
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,7 @@ class GRFMode {
266266
unsigned lowerBoundGRF;
267267
unsigned upperBoundGRF;
268268
unsigned GRFModeUpValue;
269+
const TARGET_PLATFORM platform;
269270
Options *options;
270271
};
271272

visa/GraphColor.cpp

+8-3
Original file line numberDiff line numberDiff line change
@@ -11299,15 +11299,20 @@ GlobalRA::abortOnSpill(unsigned int GRFSpillFillCount,
1129911299

1130011300
// vISA_AbortOnSpillThreshold is defined as [0..200]
1130111301
// where 0 means abort on any spill and 200 means never abort
11302-
auto underSpillThreshold = [this](int numSpill, int asmCount) {
11302+
auto underSpillThreshold = [this](int numSpill, int asmCount,
11303+
GraphColor &coloring) {
1130311304
int threshold = std::min(
1130411305
builder.getOptions()->getuInt32Option(vISA_AbortOnSpillThreshold),
1130511306
200u);
11306-
return (numSpill * 200) < (threshold * asmCount);
11307+
unsigned spillSize = computeSpillSize(coloring.getSpilledLiveRanges());
11308+
11309+
return (numSpill * 200) < (threshold * asmCount) ||
11310+
spillSize < kernel.grfMode.getSpillThreshold();
1130711311
};
1130811312

1130911313
unsigned int instNum = instCount();
11310-
bool isUnderThreshold = underSpillThreshold(GRFSpillFillCount, instNum);
11314+
bool isUnderThreshold =
11315+
underSpillThreshold(GRFSpillFillCount, instNum, coloring);
1131111316
isUnderThreshold = builder.getFreqInfoManager().underFreqSpillThreshold(
1131211317
coloring.getSpilledLiveRanges(), instNum, GRFSpillFillCount,
1131311318
isUnderThreshold);

0 commit comments

Comments
 (0)