Skip to content

Commit de55301

Browse files
aparshin-inteligcbot
authored andcommitted
minor code refactoring
1 parent 8a6cb57 commit de55301

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

IGC/VectorCompiler/lib/GenXCodeGen/GenXCisaBuilder.cpp

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -557,6 +557,7 @@ class GenXKernelBuilder {
557557
VISABuilder *CisaBuilder = nullptr;
558558

559559
private:
560+
bool allowI64Ops() const;
560561
void collectKernelInfo();
561562
void buildVariables();
562563
void buildInstructions();
@@ -3038,6 +3039,13 @@ void GenXKernelBuilder::AddGenVar(Register &Reg) {
30383039
(void *)(Attr.second.c_str())));
30393040
}
30403041
}
3042+
3043+
bool GenXKernelBuilder::allowI64Ops() const {
3044+
IGC_ASSERT(Subtarget);
3045+
if (!Subtarget->hasLongLong())
3046+
return false;
3047+
return true;
3048+
}
30413049
/**************************************************************************************************
30423050
* Scan ir to collect information about whether kernel has callable function or
30433051
* barrier.
@@ -4493,7 +4501,7 @@ void GenXKernelBuilder::buildAlloca(CallInst *CI, unsigned IntrinID,
44934501
LLVM_DEBUG(dbgs() << "Building alloca " << *CI << "\n");
44944502
VISA_GenVar *Sp = nullptr;
44954503
CISA_CALL(Kernel->GetPredefinedVar(Sp, PreDefined_Vars::PREDEFINED_FE_SP));
4496-
if (!Subtarget->hasLongLong())
4504+
if (!allowI64Ops())
44974505
CISA_CALL(Kernel->CreateVISAGenVar(Sp, "Sp", 1, ISA_TYPE_UD, ALIGN_DWORD, Sp));
44984506

44994507
Value *AllocaOff = CI->getOperand(0);
@@ -5539,7 +5547,7 @@ void GenXKernelBuilder::beginFunction(Function *Func) {
55395547
CISA_CALL(Kernel->GetPredefinedVar(Sp, PREDEFINED_FE_SP));
55405548
CISA_CALL(Kernel->GetPredefinedVar(Fp, PREDEFINED_FE_FP));
55415549
// TODO: consider removing the if for local stack
5542-
if (!Subtarget->hasLongLong()) {
5550+
if (!allowI64Ops()) {
55435551
CISA_CALL(Kernel->CreateVISAGenVar(Sp, "Sp", 1, ISA_TYPE_UD, ALIGN_DWORD, Sp));
55445552
CISA_CALL(Kernel->CreateVISAGenVar(Fp, "Fp", 1, ISA_TYPE_UD, ALIGN_DWORD, Fp));
55455553
}
@@ -5587,9 +5595,9 @@ void GenXKernelBuilder::beginFunction(Function *Func) {
55875595
EXEC_SIZE_1, SpOpDst, HwtidOp, Imm));
55885596
} else {
55895597
VISA_GenVar *Tmp = nullptr;
5598+
55905599
CISA_CALL(Kernel->CreateVISAGenVar(
5591-
Tmp, "SpOff", 1, Subtarget->hasLongLong() ? ISA_TYPE_UQ : ISA_TYPE_UD,
5592-
ALIGN_DWORD));
5600+
Tmp, "SpOff", 1, allowI64Ops() ? ISA_TYPE_UQ : ISA_TYPE_UD, ALIGN_DWORD));
55935601

55945602
VISA_VectorOpnd *OffOpDst = nullptr;
55955603
VISA_VectorOpnd *OffOpSrc = nullptr;
@@ -6055,10 +6063,14 @@ void GenXKernelBuilder::buildStackCall(CallInst *CI,
60556063
Kernel->CreateVISASrcOperand(SpOpSrc, Sp, MODIFIER_NONE, 0, 1, 0, 0, 0));
60566064
CISA_CALL(Kernel->CreateVISADstOperand(SpOpDst, Sp, 1, 0, 0));
60576065
uint64_t OffVal = -StackRetSz;
6058-
CISA_CALL(Kernel->CreateVISAImmediate(Imm, &OffVal, ISA_TYPE_UQ));
6059-
CISA_CALL(Kernel->AppendVISAArithmeticInst(
6066+
IGC_ASSERT(OffVal <= std::numeric_limits<uint32_t>::max());
6067+
6068+
if (OffVal) {
6069+
CISA_CALL(Kernel->CreateVISAImmediate(Imm, &OffVal, ISA_TYPE_UD));
6070+
CISA_CALL(Kernel->AppendVISAArithmeticInst(
60606071
ISA_ADD, nullptr, false, (NoMask ? vISA_EMASK_M1_NM : vISA_EMASK_M1),
60616072
EXEC_SIZE_1, SpOpDst, SpOpSrc, Imm));
6073+
}
60626074
}
60636075

60646076
namespace {

0 commit comments

Comments
 (0)