Skip to content

Commit fadc97f

Browse files
pratikasharsys_zuul
authored andcommitted
Fix for gtpin when stackcall is enabled. rera pass is off, free GRFs are
not computed. Change-Id: I210e3de74838b90bdedbfa96612a9639755ae62e
1 parent 24e349d commit fadc97f

File tree

3 files changed

+16
-4
lines changed

3 files changed

+16
-4
lines changed

visa/FlowGraph.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6900,19 +6900,24 @@ void* gtPinData::getGTPinInfoBuffer(unsigned int &bufferSize)
69006900
gtpin::igc::igc_init_t t;
69016901
std::vector<unsigned char> buffer;
69026902
unsigned int numTokens = 0;
6903+
auto stackABI = kernel.fg.getIsStackCallFunc() || kernel.fg.getHasStackCalls();
69036904
bufferSize = 0;
69046905

69056906
memset(&t, 0, sizeof(t));
69066907

69076908
t.version = gtpin::igc::GTPIN_IGC_INTERFACE_VERSION;
69086909
if (gtpin_init->grf_info)
69096910
{
6910-
t.grf_info = 1;
6911+
if (!stackABI)
6912+
t.grf_info = 1;
69116913
numTokens++;
69126914
}
69136915

69146916
if (gtpin_init->re_ra)
6915-
t.re_ra = 1;
6917+
{
6918+
if(!stackABI)
6919+
t.re_ra = 1;
6920+
}
69166921

69176922
if (gtpin_init->srcline_mapping && kernel.getOptions()->getOption(vISA_GenerateDebugInfo))
69186923
t.srcline_mapping = 1;

visa/GraphColor.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9540,14 +9540,17 @@ int GlobalRA::coloringRegAlloc()
95409540
jitInfo->spillMemUsed =
95419541
(builder.kernel.fg.paramOverflowAreaOffset +
95429542
builder.kernel.fg.paramOverflowAreaSize) * 16 - globalScratchOffset;
9543+
9544+
// reserve spillMemUsed #bytes before 8kb boundary
9545+
kernel.getGTPinData()->setScratchNextFree(8*1024 - (kernel.getGTPinData()->getGTPinInit() ?
9546+
kernel.getGTPinData()->getGTPinInit()->scratch_area_size : 0));
95439547
} else {
95449548
jitInfo->spillMemUsed = spillMemUsed;
9549+
kernel.getGTPinData()->setScratchNextFree(spillMemUsed);
95459550
}
95469551
jitInfo->numGRFSpillFill = GRFSpillFillCount;
95479552
}
95489553

9549-
kernel.getGTPinData()->setScratchNextFree(spillMemUsed);
9550-
95519554
if (builder.getOption(vISA_LocalDeclareSplitInGlobalRA))
95529555
{
95539556
removeSplitDecl();

visa/Optimizer.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -858,6 +858,10 @@ bool Optimizer::isCopyPropProfitable(G4_INST* movInst) const
858858

859859
void Optimizer::reRAPostSchedule()
860860
{
861+
// No rera for stackcall functions
862+
if (kernel.fg.getHasStackCalls() || kernel.fg.getIsStackCallFunc())
863+
return;
864+
861865
std::vector<Assignment> assignments;
862866
auto finalizerInfo = *builder.getJitInfo();
863867
auto oldRAType = kernel.getRAType();

0 commit comments

Comments
 (0)