Skip to content

Commit d485e73

Browse files
zuban32sys_zuul
authored andcommitted
Trunc local SP/FP to 32-bit for LP targets
Change-Id: Ia495a971241be2be798959fd9094a67fa09dbe09
1 parent 4089249 commit d485e73

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

IGC/VectorCompiler/lib/GenXCodeGen/GenXCisaBuilder.cpp

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4202,6 +4202,8 @@ void GenXKernelBuilder::buildAlloca(CallInst *CI, unsigned IntrinID,
42024202
unsigned Mod, const DstOpndDesc &DstDesc) {
42034203
VISA_GenVar *Sp = nullptr;
42044204
CISA_CALL(Kernel->GetPredefinedVar(Sp, PreDefined_Vars::PREDEFINED_FE_SP));
4205+
if (!Subtarget->hasLongLong())
4206+
CISA_CALL(Kernel->CreateVISAGenVar(Sp, "Sp", 1, ISA_TYPE_UD, ALIGN_DWORD, Sp));
42054207

42064208
VISA_VectorOpnd *SpSrc = nullptr;
42074209
CISA_CALL(
@@ -5208,6 +5210,11 @@ void GenXKernelBuilder::beginFunction(Function *Func) {
52085210
VISA_GenVar *Sp = nullptr, *Fp = nullptr, *Hwtid = nullptr;
52095211
CISA_CALL(Kernel->GetPredefinedVar(Sp, PREDEFINED_FE_SP));
52105212
CISA_CALL(Kernel->GetPredefinedVar(Fp, PREDEFINED_FE_FP));
5213+
// TODO: consider removing the if for local stack
5214+
if (!Subtarget->hasLongLong()) {
5215+
CISA_CALL(Kernel->CreateVISAGenVar(Sp, "Sp", 1, ISA_TYPE_UD, ALIGN_DWORD, Sp));
5216+
CISA_CALL(Kernel->CreateVISAGenVar(Fp, "Fp", 1, ISA_TYPE_UD, ALIGN_DWORD, Fp));
5217+
}
52115218
CISA_CALL(Kernel->GetPredefinedVar(Hwtid, PREDEFINED_HW_TID));
52125219

52135220
VISA_VectorOpnd *SpOpSrc = nullptr;
@@ -5248,8 +5255,9 @@ void GenXKernelBuilder::beginFunction(Function *Func) {
52485255
EXEC_SIZE_1, SpOpDst, HwtidOp, Imm));
52495256
} else {
52505257
VISA_GenVar *Tmp = nullptr;
5251-
CISA_CALL(
5252-
Kernel->CreateVISAGenVar(Tmp, "SpOff", 1, ISA_TYPE_UQ, ALIGN_DWORD));
5258+
CISA_CALL(Kernel->CreateVISAGenVar(
5259+
Tmp, "SpOff", 1, Subtarget->hasLongLong() ? ISA_TYPE_UQ : ISA_TYPE_UD,
5260+
ALIGN_DWORD));
52535261

52545262
VISA_VectorOpnd *OffOpDst = nullptr;
52555263
VISA_VectorOpnd *OffOpSrc = nullptr;
@@ -5300,7 +5308,7 @@ void GenXKernelBuilder::beginFunction(Function *Func) {
53005308

53015309
if (FPMap.count(Func) == 0) {
53025310
CISA_CALL(
5303-
Kernel->CreateVISAGenVar(FpTmp, "tmp", 1, ISA_TYPE_UD, ALIGN_DWORD));
5311+
Kernel->CreateVISAGenVar(FpTmp, "tmp", 1, ISA_TYPE_UQ, ALIGN_DWORD));
53045312
FPMap.insert(std::pair<Function *, VISA_GenVar *>(Func, FpTmp));
53055313
} else
53065314
FpTmp = FPMap[Func];

0 commit comments

Comments
 (0)