Skip to content

Commit 862787d

Browse files
bcheng0127gfxbot
authored andcommitted
Internal feature
Change-Id: Id132f81bc43b3256df27e2caeab1c8e308397d2d
1 parent 98611ca commit 862787d

24 files changed

+50
-31
lines changed

IGC/AdaptorCommon/AddImplicitArgs.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ bool AddImplicitArgs::runOnModule(Module &M)
9595
ImplicitArgs::addBufferOffsetArgs(*pFunc, m_pMdUtils, ctx->getModuleMetaData());
9696
}
9797

98-
ImplicitArgs implicitArgs(*pFunc, m_pMdUtils);
98+
ImplicitArgs implicitArgs(*pFunc, m_pMdUtils, ctx->platform.getGRFSize());
9999

100100
// If enabling indirect call, only R0, PayloadHeader and PrivateBase are allowed!
101101
if (IGC_IS_FLAG_ENABLED(EnableFunctionPointer))
@@ -522,7 +522,8 @@ void AddImplicitArgs::FixIndirectCalls(Module& M)
522522
}
523523

524524
Function* pFunc = call->getParent()->getParent();
525-
ImplicitArgs implicitArgs(*pFunc, m_pMdUtils);
525+
CodeGenContext* ctx = getAnalysis<CodeGenContextWrapper>().getCodeGenContext();
526+
ImplicitArgs implicitArgs(*pFunc, m_pMdUtils, ctx->platform.getGRFSize());
526527
args.push_back(implicitArgs.getImplicitArg(*pFunc, ImplicitArg::ArgType::R0));
527528
args.push_back(implicitArgs.getImplicitArg(*pFunc, ImplicitArg::ArgType::PAYLOAD_HEADER));
528529
args.push_back(implicitArgs.getImplicitArg(*pFunc, ImplicitArg::ArgType::PRIVATE_BASE));

IGC/AdaptorCommon/ImplicitArgs.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ bool ImplicitArg::isConstantBuf() const {
228228
return m_isConstantBuf;
229229
}
230230

231-
ImplicitArgs::ImplicitArgs(const llvm::Function& func , const MetaDataUtils* pMdUtils)
231+
ImplicitArgs::ImplicitArgs(const llvm::Function& func , const MetaDataUtils* pMdUtils, unsigned int GRFSize)
232232
{
233233
if (IMPLICIT_ARGS.size() == 0)
234234
{
@@ -242,9 +242,9 @@ ImplicitArgs::ImplicitArgs(const llvm::Function& func , const MetaDataUtils* pMd
242242
IMPLICIT_ARGS.push_back(ImplicitArg(ImplicitArg::LOCAL_SIZE, "localSize", ImplicitArg::INT, WIAnalysis::UNIFORM, 3, ImplicitArg::ALIGN_DWORD, true));
243243
IMPLICIT_ARGS.push_back(ImplicitArg(ImplicitArg::ENQUEUED_LOCAL_WORK_SIZE, "enqueuedLocalSize", ImplicitArg::INT, WIAnalysis::UNIFORM, 3, ImplicitArg::ALIGN_DWORD, true));
244244

245-
IMPLICIT_ARGS.push_back(ImplicitArg(ImplicitArg::LOCAL_ID_X, "localIdX", ImplicitArg::SHORT, WIAnalysis::RANDOM, 16, ImplicitArg::ALIGN_GRF, false));
246-
IMPLICIT_ARGS.push_back(ImplicitArg(ImplicitArg::LOCAL_ID_Y, "localIdY", ImplicitArg::SHORT, WIAnalysis::RANDOM, 16, ImplicitArg::ALIGN_GRF, false));
247-
IMPLICIT_ARGS.push_back(ImplicitArg(ImplicitArg::LOCAL_ID_Z, "localIdZ", ImplicitArg::SHORT, WIAnalysis::RANDOM, 16, ImplicitArg::ALIGN_GRF, false));
245+
IMPLICIT_ARGS.push_back(ImplicitArg(ImplicitArg::LOCAL_ID_X, "localIdX", ImplicitArg::SHORT, WIAnalysis::RANDOM, GRFSize/2, ImplicitArg::ALIGN_GRF, false));
246+
IMPLICIT_ARGS.push_back(ImplicitArg(ImplicitArg::LOCAL_ID_Y, "localIdY", ImplicitArg::SHORT, WIAnalysis::RANDOM, GRFSize/2, ImplicitArg::ALIGN_GRF, false));
247+
IMPLICIT_ARGS.push_back(ImplicitArg(ImplicitArg::LOCAL_ID_Z, "localIdZ", ImplicitArg::SHORT, WIAnalysis::RANDOM, GRFSize/2, ImplicitArg::ALIGN_GRF, false));
248248

249249
IMPLICIT_ARGS.push_back(ImplicitArg(ImplicitArg::CONSTANT_BASE, "constBase", ImplicitArg::CONSTPTR, WIAnalysis::UNIFORM, 1, ImplicitArg::ALIGN_PTR, true));
250250
IMPLICIT_ARGS.push_back(ImplicitArg(ImplicitArg::GLOBAL_BASE, "globalBase", ImplicitArg::GLOBALPTR, WIAnalysis::UNIFORM, 1, ImplicitArg::ALIGN_PTR, true));

IGC/AdaptorCommon/ImplicitArgs.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ namespace IGC
200200
/// It actually constructs a mapping to a subset of IMPLICIT_ARGS
201201
/// @param func the function to get impilcit args for.
202202
/// @param the metadata utils object
203-
ImplicitArgs(const llvm::Function& func, const IGCMD::MetaDataUtils* pMdUtils);
203+
ImplicitArgs(const llvm::Function& func, const IGCMD::MetaDataUtils* pMdUtils, unsigned int GRFSize = 32);
204204

205205
/// @brief Returns the number of implicit arguments that are passed from the runtime
206206
/// @return The number of implicit arguments

IGC/Compiler/CISACodeGen/CShader.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ CVariable* CShader::CreateSP(bool ptr64bits)
250250
void CShader::InitKernelStack(bool ptr64bits)
251251
{
252252
CreateSP(ptr64bits);
253-
ImplicitArgs implicitArgs(*entry, m_pMdUtils);
253+
ImplicitArgs implicitArgs(*entry, m_pMdUtils, getGRFSize());
254254
unsigned numPushArgs = m_ModuleMetadata->pushInfo.pushAnalysisWIInfos.size();
255255
unsigned numImplicitArgs = implicitArgs.size();
256256
unsigned numFuncArgs = IGCLLVM::GetFuncArgSize(entry) - numImplicitArgs - numPushArgs;
@@ -323,7 +323,7 @@ void CShader::CreateImplicitArgs()
323323
encoder.GetVISAPredefinedVar(m_R0, PREDEFINED_R0);
324324

325325
// create variables for implicit args
326-
ImplicitArgs implicitArgs(*entry, m_pMdUtils);
326+
ImplicitArgs implicitArgs(*entry, m_pMdUtils, getGRFSize());
327327
unsigned numImplicitArgs = implicitArgs.size();
328328

329329
// Push Args are only for entry function
@@ -1888,7 +1888,7 @@ CVariable* CShader::getOrCreateArgumentSymbol(llvm::Argument *Arg, bool useStack
18881888
// An explicit argument is not uniform, and for an implicit argument, it
18891889
// is predefined. Note that it is not necessarily uniform.
18901890
Function *F = Arg->getParent();
1891-
ImplicitArgs implicitArgs(*F, m_pMdUtils);
1891+
ImplicitArgs implicitArgs(*F, m_pMdUtils, getGRFSize());
18921892
unsigned numImplicitArgs = implicitArgs.size();
18931893
unsigned numPushArgsEntry = m_ModuleMetadata->pushInfo.pushAnalysisWIInfos.size();
18941894
unsigned numPushArgs = (isEntryFunc(m_pMdUtils, F) ? numPushArgsEntry : 0);
@@ -2010,7 +2010,7 @@ CVariable* CShader::getOrCreateArgSymbolForIndirectCall(llvm::CallInst* cInst, u
20102010
{
20112011
// Can be mapped to the parent's implicit arg
20122012
Function* parentFunc = cInst->getParent()->getParent();
2013-
ImplicitArgs implicitArgs(*parentFunc, m_pMdUtils);
2013+
ImplicitArgs implicitArgs(*parentFunc, m_pMdUtils, getGRFSize());
20142014
for (unsigned i = 0; i < implicitArgs.size(); i++)
20152015
{
20162016
ImplicitArg implictArg = implicitArgs[i];

IGC/Compiler/CISACodeGen/OpenCLKernelCodeGen.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1440,7 +1440,7 @@ void COpenCLKernel::AllocatePayload()
14401440
KernelArgsOrder::InputType::INDIRECT :
14411441
KernelArgsOrder::InputType::CURBE;
14421442

1443-
KernelArgs kernelArgs(*entry, m_DL, m_pMdUtils, m_ModuleMetadata, layout);
1443+
KernelArgs kernelArgs(*entry, m_DL, m_pMdUtils, m_ModuleMetadata, getGRFSize(), layout);
14441444

14451445
if (layout == KernelArgsOrder::InputType::INDIRECT && !loadThreadPayload)
14461446
{
@@ -2012,7 +2012,7 @@ bool COpenCLKernel::hasReadWriteImage(llvm::Function &F)
20122012
return false;
20132013
}
20142014

2015-
KernelArgs kernelArgs(F, m_DL, m_pMdUtils, m_ModuleMetadata, KernelArgsOrder::InputType::INDEPENDENT);
2015+
KernelArgs kernelArgs(F, m_DL, m_pMdUtils, m_ModuleMetadata, getGRFSize(), KernelArgsOrder::InputType::INDEPENDENT);
20162016
for (auto KA : kernelArgs)
20172017
{
20182018
// RenderScript annotation sets "read_write" qualifier

IGC/Compiler/CISACodeGen/WIAnalysis.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -408,7 +408,7 @@ void WIAnalysis::updateArgsDependency(llvm::Function *pF)
408408
bool IsSubroutine = !isEntryFunc(m_pMdUtils, pF);
409409

410410
ModuleMetaData *modMD = getAnalysis<MetaDataUtilsWrapper>().getModuleMetaData();
411-
ImplicitArgs implicitArgs(*pF, m_pMdUtils);
411+
ImplicitArgs implicitArgs(*pF, m_pMdUtils, getAnalysis<CodeGenContextWrapper>().getCodeGenContext()->platform.getGRFSize());
412412
unsigned implicitArgStart = (unsigned)(IGCLLVM::GetFuncArgSize(pF)
413413
- implicitArgs.size()
414414
- (IsSubroutine ? 0 : modMD->pushInfo.pushAnalysisWIInfos.size()));

IGC/Compiler/Optimizer/OpenCLPasses/AggregateArguments/AggregateArguments.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ using namespace IGC::IGCMD;
4242
#define PASS_ANALYSIS1 false
4343
IGC_INITIALIZE_PASS_BEGIN(AggregateArgumentsAnalysis, PASS_FLAG1, PASS_DESCRIPTION1, PASS_CFG_ONLY1, PASS_ANALYSIS1)
4444
IGC_INITIALIZE_PASS_DEPENDENCY(MetaDataUtilsWrapper)
45+
IGC_INITIALIZE_PASS_DEPENDENCY(CodeGenContextWrapper)
4546
IGC_INITIALIZE_PASS_END(AggregateArgumentsAnalysis, PASS_FLAG1, PASS_DESCRIPTION1, PASS_CFG_ONLY1, PASS_ANALYSIS1)
4647

4748
// Register pass to igc-opt
@@ -51,6 +52,7 @@ IGC_INITIALIZE_PASS_END(AggregateArgumentsAnalysis, PASS_FLAG1, PASS_DESCRIPTION
5152
#define PASS_ANALYSIS2 false
5253
IGC_INITIALIZE_PASS_BEGIN(ResolveAggregateArguments, PASS_FLAG2, PASS_DESCRIPTION2, PASS_CFG_ONLY2, PASS_ANALYSIS2)
5354
IGC_INITIALIZE_PASS_DEPENDENCY(MetaDataUtilsWrapper)
55+
IGC_INITIALIZE_PASS_DEPENDENCY(CodeGenContextWrapper)
5456
IGC_INITIALIZE_PASS_END(ResolveAggregateArguments, PASS_FLAG2, PASS_DESCRIPTION2, PASS_CFG_ONLY2, PASS_ANALYSIS2)
5557

5658
char AggregateArgumentsAnalysis::ID = 0;
@@ -218,7 +220,7 @@ bool ResolveAggregateArguments::runOnFunction(Function &F)
218220
return false;
219221
}
220222

221-
m_implicitArgs = ImplicitArgs(F, getAnalysis<MetaDataUtilsWrapper>().getMetaDataUtils());
223+
m_implicitArgs = ImplicitArgs(F, getAnalysis<MetaDataUtilsWrapper>().getMetaDataUtils(), getAnalysis<CodeGenContextWrapper>().getCodeGenContext()->platform.getGRFSize());
222224

223225
m_pFunction = &F;
224226

IGC/Compiler/Optimizer/OpenCLPasses/AggregateArguments/AggregateArguments.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ namespace IGC
8989
{
9090
AU.setPreservesCFG();
9191
AU.addRequired<MetaDataUtilsWrapper>();
92+
AU.addRequired<CodeGenContextWrapper>();
9293
}
9394

9495
virtual bool runOnFunction(llvm::Function &F) override;
@@ -104,4 +105,4 @@ namespace IGC
104105
ImplicitArgs m_implicitArgs;
105106
};
106107

107-
} // namespace IGC
108+
} // namespace IGC

IGC/Compiler/Optimizer/OpenCLPasses/DeviceEnqueueFuncs/DeviceEnqueue.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ using namespace IGC;
4040
#define PASS_ANALYSIS false
4141
IGC_INITIALIZE_PASS_BEGIN(DeviceEnqueueFuncsAnalysis, PASS_FLAG, PASS_DESCRIPTION, PASS_CFG_ONLY, PASS_ANALYSIS)
4242
IGC_INITIALIZE_PASS_DEPENDENCY(MetaDataUtilsWrapper)
43+
IGC_INITIALIZE_PASS_DEPENDENCY(CodeGenContextWrapper)
4344
IGC_INITIALIZE_PASS_END(DeviceEnqueueFuncsAnalysis, PASS_FLAG, PASS_DESCRIPTION, PASS_CFG_ONLY, PASS_ANALYSIS)
4445

4546

@@ -50,6 +51,7 @@ IGC_INITIALIZE_PASS_END(DeviceEnqueueFuncsAnalysis, PASS_FLAG, PASS_DESCRIPTION,
5051
#define PASS_ANALYSIS2 false
5152
IGC_INITIALIZE_PASS_BEGIN(DeviceEnqueueFuncsResolution, PASS_FLAG2, PASS_DESCRIPTION2, PASS_CFG_ONLY2, PASS_ANALYSIS2)
5253
IGC_INITIALIZE_PASS_DEPENDENCY(MetaDataUtilsWrapper)
54+
IGC_INITIALIZE_PASS_DEPENDENCY(CodeGenContextWrapper)
5355
IGC_INITIALIZE_PASS_END(DeviceEnqueueFuncsResolution, PASS_FLAG2, PASS_DESCRIPTION2, PASS_CFG_ONLY2, PASS_ANALYSIS2)
5456

5557

@@ -188,7 +190,7 @@ bool DeviceEnqueueFuncsResolution::runOnFunction(Function &F)
188190
{
189191
m_Changed = false;
190192

191-
m_implicitArgs = ImplicitArgs(F, getAnalysis<MetaDataUtilsWrapper>().getMetaDataUtils());
193+
m_implicitArgs = ImplicitArgs(F, getAnalysis<MetaDataUtilsWrapper>().getMetaDataUtils(), getAnalysis<CodeGenContextWrapper>().getCodeGenContext()->platform.getGRFSize());
192194

193195
visit(F);
194196

IGC/Compiler/Optimizer/OpenCLPasses/DeviceEnqueueFuncs/DeviceEnqueue.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ class DeviceEnqueueFuncsAnalysis : public llvm::ModulePass, public llvm::InstVis
5454
{
5555
AU.setPreservesCFG();
5656
AU.addRequired<MetaDataUtilsWrapper>();
57+
AU.addRequired<CodeGenContextWrapper>();
5758
}
5859

5960

@@ -93,6 +94,7 @@ class DeviceEnqueueFuncsResolution : public llvm::FunctionPass, public llvm::Ins
9394
{
9495
AU.setPreservesCFG();
9596
AU.addRequired<MetaDataUtilsWrapper>();
97+
AU.addRequired<CodeGenContextWrapper>();
9698
}
9799

98100
virtual bool runOnFunction(llvm::Function &F) override;

0 commit comments

Comments
 (0)