Skip to content

Commit de28131

Browse files
pratikasharigcbot
authored andcommitted
Fix outdated comment.
1 parent 1e4cf94 commit de28131

File tree

5 files changed

+27
-4
lines changed

5 files changed

+27
-4
lines changed

IGC/Compiler/CISACodeGen/DebugInfo.cpp

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ void DebugInfoPass::EmitDebugInfo(bool finalize, DbgDecoder* decodedDbg,
300300

301301

302302
// Mark privateBase aka ImplicitArg::PRIVATE_BASE as Output for debugging
303-
void DebugInfoData::markOutputPrivateBase(CShader* pShader)
303+
void DebugInfoData::markOutputPrivateBase(CShader* pShader, IDebugEmitter* pDebugEmitter)
304304
{
305305
IGC_ASSERT_MESSAGE(IGC_IS_FLAG_ENABLED(UseOffsetInLocation), "UseOffsetInLocation not enabled");
306306

@@ -309,6 +309,9 @@ void DebugInfoData::markOutputPrivateBase(CShader* pShader)
309309
CVariable* pVar = pShader->GetPrivateBase();
310310
if (pVar)
311311
{
312+
// cache privateBase as it may be destroyed if subroutine
313+
// is emitted.
314+
pDebugEmitter->getCurrentVISA()->setPrivateBaseReg(pVar);
312315
pShader->GetEncoder().GetVISAKernel()->AddAttributeToVar(pVar->visaGenVariable[0], "Output", 0, nullptr);
313316
if (pShader->m_dispatchSize == SIMDMode::SIMD32 && pVar->visaGenVariable[1])
314317
{
@@ -377,7 +380,14 @@ void DebugInfoData::markOutput(llvm::Function& F, CShader* pShader, IDebugEmitte
377380
// Per Thread Offset non-debug instruction must have 'Output' attribute
378381
// added in the function to be called.
379382
markOutputVar(pShader, pDebugEmitter, &pInst, "perThreadOffset");
380-
markOutputPrivateBase(pShader); // Mark privateBase aka ImplicitArg::PRIVATE_BASE as Output for debugging
383+
if (F.getCallingConv() == CallingConv::SPIR_KERNEL)
384+
{
385+
markOutputPrivateBase(pShader, pDebugEmitter); // Mark privateBase aka ImplicitArg::PRIVATE_BASE as Output for debugging
386+
}
387+
else
388+
{
389+
// TODO: Apply privateBase of kernel to SPIR_FUNC if its a subroutine
390+
}
381391
ScalarVisaModule* scVISAModule = (ScalarVisaModule*)visaModule;
382392
IGC_ASSERT_MESSAGE(scVISAModule->getPerThreadOffset()==nullptr, "setPerThreadOffset was set earlier");
383393
scVISAModule->setPerThreadOffset(&pInst);

IGC/Compiler/CISACodeGen/DebugInfo.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ namespace IGC
6464
CShader* m_pShader = nullptr;
6565
IDebugEmitter* m_pDebugEmitter = nullptr;
6666

67-
static void markOutputPrivateBase(CShader* pShader);
67+
static void markOutputPrivateBase(CShader* pShader, IDebugEmitter* pDebugEmitter);
6868
static void markOutputVar(CShader* pShader, IDebugEmitter* pDebugEmitter, llvm::Instruction* pInst, const char* pMetaDataName);
6969
static void markOutput(llvm::Function& F, CShader* pShader, IDebugEmitter* pDebugEmitter);
7070

IGC/Compiler/DebugInfo/ScalarVISAModule.h

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ class ScalarVisaModule final : public IGC::VISAModule {
6060
return isLineTableOnly(m_pShader);
6161
}
6262
unsigned getPrivateBaseReg() const override {
63-
auto pVar = m_pShader->GetPrivateBase();
63+
auto pVar = privateBase;
6464
unsigned privateBaseRegNum = m_pShader->GetEncoder().GetVISAKernel()->getDeclarationID(pVar->visaGenVariable[0]);
6565
return privateBaseRegNum;
6666
}
@@ -141,6 +141,13 @@ class ScalarVisaModule final : public IGC::VISAModule {
141141

142142
llvm::StringRef GetVISAFuncName(llvm::StringRef OldName) const override;
143143

144+
void setPrivateBaseReg(void* V) override
145+
{
146+
privateBase = (IGC::CVariable*)V;
147+
}
148+
149+
void* getPrivateBase() override { return privateBase; }
150+
144151
private:
145152
/// @brief Constructor.
146153
/// @param m_pShader holds the processed entry point function and generated VISA code.
@@ -155,6 +162,7 @@ class ScalarVisaModule final : public IGC::VISAModule {
155162
CShader* m_pShader;
156163
CVariable* m_framePtr = nullptr;
157164
llvm::Instruction* m_perThreadOffset = nullptr;
165+
CVariable* privateBase = nullptr;
158166
};
159167

160168
}

IGC/DebugInfo/VISAModule.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -500,6 +500,8 @@ namespace IGC
500500
virtual unsigned getNumGRFs() const = 0;
501501
virtual unsigned getPointerSize() const = 0;
502502

503+
virtual void* getPrivateBase() = 0;
504+
virtual void setPrivateBaseReg(void*) = 0;
503505
virtual bool hasPTO() const = 0;
504506
virtual int getPTOReg() const = 0;
505507
virtual int getFPReg() const = 0;

IGC/VectorCompiler/lib/GenXCodeGen/GenXDebugInfo.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,9 @@ class GenXFunction final : public IGC::VISAModule {
317317
}
318318
uint16_t GetSIMDSize() const override { return 1; }
319319

320+
void* getPrivateBase() override { return nullptr; };
321+
void setPrivateBaseReg(void*) override {};
322+
320323
bool hasPTO() const override { return false; }
321324
int getPTOReg() const override { return -1; }
322325
int getFPReg() const override { return -1; }

0 commit comments

Comments
 (0)