Skip to content

Commit 04f08bb

Browse files
Rishipal Singh Bhatiagfxbot
authored andcommitted
Moving the localID present information to the new metadata
framework.. With this change, we add the function pointer to the new framework. whenever we see localID present and set the bool localIDPresent = true. for that FunctionMetaData object.. Later, when we want to read the localIDPresent, we check if we had. populated the new framework with that function pointer or not.. If we had not, then that means local ID present was never set.. IF we had, then we check that localIDPresent was set or not. Change-Id: I2b524d264c073bd17ea698894485cf8101dbcd42
1 parent d02158d commit 04f08bb

File tree

6 files changed

+22
-70
lines changed

6 files changed

+22
-70
lines changed

IGC/Compiler/CISACodeGen/OpenCLKernelCodeGen.cpp

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1104,12 +1104,18 @@ void COpenCLKernel::CreateAnnotations(KernelArg* kernelArg, uint payloadPosition
11041104
break;
11051105

11061106
case KernelArg::ArgType::IMPLICIT_LOCAL_IDS:
1107-
m_kernelInfo.m_threadPayload.HasLocalIDx = true;
1108-
m_kernelInfo.m_threadPayload.HasLocalIDy = true;
1109-
m_kernelInfo.m_threadPayload.HasLocalIDz = true;
1110-
if (funcInfoMD->isLocalIDPresentHasValue() && funcInfoMD->getLocalIDPresent() == 1)
11111107
{
1112-
m_kernelInfo.m_threadPayload.HasLocalID = true;
1108+
m_kernelInfo.m_threadPayload.HasLocalIDx = true;
1109+
m_kernelInfo.m_threadPayload.HasLocalIDy = true;
1110+
m_kernelInfo.m_threadPayload.HasLocalIDz = true;
1111+
1112+
ModuleMetaData *modMD = m_Context->getModuleMetaData();
1113+
auto it = modMD->FuncMD.find(entry);
1114+
if (it != modMD->FuncMD.end())
1115+
{
1116+
if (it->second.localIDPresent == true)
1117+
m_kernelInfo.m_threadPayload.HasLocalID = true;
1118+
}
11131119
}
11141120
break;
11151121

IGC/Compiler/MetaDataApi/MetaDataApi.cpp

Lines changed: 2 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -2242,7 +2242,6 @@ FunctionInfoMetaData::FunctionInfoMetaData(const llvm::MDNode* pNode, bool hasId
22422242
m_ThreadGroupSizeHint(ThreadGroupSizeMetaData::get(getThreadGroupSizeHintNode(pNode), true)),
22432243
m_SubGroupSize(SubGroupSizeMetaData::get(getSubGroupSizeNode(pNode), true)),
22442244
m_WorkgroupWalkOrder(WorkgroupWalkOrderMetaData::get(getWorkgroupWalkOrderNode(pNode), true)),
2245-
m_LocalIDPresent(getLocalIDPresentNode(pNode)),
22462245
m_GroupIDPresent(getGroupIDPresentNode(pNode)),
22472246
m_GlobalOffsetPresent(getGlobalOffsetPresentNode(pNode)),
22482247
m_LocalOffsets(getLocalOffsetsNode(pNode), true),
@@ -2270,7 +2269,6 @@ FunctionInfoMetaData::FunctionInfoMetaData(): m_Type("function_type"),
22702269
m_ThreadGroupSizeHint(ThreadGroupSizeMetaDataHandle::ObjectType::get("thread_group_size_hint")),
22712270
m_SubGroupSize(SubGroupSizeMetaDataHandle::ObjectType::get("sub_group_size")),
22722271
m_WorkgroupWalkOrder(WorkgroupWalkOrderMetaDataHandle::ObjectType::get("intel_reqd_workgroup_walk_order")),
2273-
m_LocalIDPresent("local_id_present"),
22742272
m_GroupIDPresent("group_id_present"),
22752273
m_GlobalOffsetPresent("global_offset_present"),
22762274
m_LocalOffsets("local_offsets"),
@@ -2300,7 +2298,6 @@ FunctionInfoMetaData::FunctionInfoMetaData(const char* name):
23002298
m_ThreadGroupSizeHint(ThreadGroupSizeMetaDataHandle::ObjectType::get("thread_group_size_hint")),
23012299
m_SubGroupSize(SubGroupSizeMetaDataHandle::ObjectType::get("sub_group_size")),
23022300
m_WorkgroupWalkOrder(WorkgroupWalkOrderMetaDataHandle::ObjectType::get("intel_reqd_workgroup_walk_order")),
2303-
m_LocalIDPresent("local_id_present"),
23042301
m_GroupIDPresent("group_id_present"),
23052302
m_GlobalOffsetPresent("global_offset_present"),
23062303
m_LocalOffsets("local_offsets"),
@@ -2361,14 +2358,7 @@ bool FunctionInfoMetaData::hasValue() const
23612358
{
23622359
return true;
23632360
}
2364-
2365-
2366-
if (m_LocalIDPresent.hasValue())
2367-
{
2368-
return true;
2369-
}
2370-
2371-
2361+
23722362
if (m_GroupIDPresent.hasValue())
23732363
{
23742364
return true;
@@ -2485,11 +2475,7 @@ bool FunctionInfoMetaData::dirty() const
24852475
if (m_WorkgroupWalkOrder.dirty())
24862476
{
24872477
return true;
2488-
}
2489-
if( m_LocalIDPresent.dirty() )
2490-
{
2491-
return true;
2492-
}
2478+
}
24932479
if( m_GroupIDPresent.dirty() )
24942480
{
24952481
return true;
@@ -2560,7 +2546,6 @@ void FunctionInfoMetaData::discardChanges()
25602546
m_ThreadGroupSizeHint.discardChanges();
25612547
m_SubGroupSize.discardChanges();
25622548
m_WorkgroupWalkOrder.discardChanges();
2563-
m_LocalIDPresent.discardChanges();
25642549
m_GroupIDPresent.discardChanges();
25652550
m_GlobalOffsetPresent.discardChanges();
25662551
m_LocalOffsets.discardChanges();
@@ -2621,11 +2606,6 @@ llvm::Metadata* FunctionInfoMetaData::generateNode(llvm::LLVMContext& context) c
26212606
args.push_back(m_WorkgroupWalkOrder.generateNode(context));
26222607
}
26232608

2624-
if (isLocalIDPresentHasValue())
2625-
{
2626-
args.push_back(m_LocalIDPresent.generateNode(context));
2627-
}
2628-
26292609
if (isGroupIDPresentHasValue())
26302610
{
26312611
args.push_back(m_GroupIDPresent.generateNode(context));
@@ -2731,7 +2711,6 @@ void FunctionInfoMetaData::save(llvm::LLVMContext& context, llvm::MDNode* pNode)
27312711
m_ThreadGroupSizeHint.save(context, llvm::cast<llvm::MDNode>(getThreadGroupSizeHintNode(pNode)));
27322712
m_SubGroupSize.save(context, llvm::cast<llvm::MDNode>(getSubGroupSizeNode(pNode)));
27332713
m_WorkgroupWalkOrder.save(context, llvm::cast<llvm::MDNode>(getSubGroupSizeNode(pNode)));
2734-
m_LocalIDPresent.save(context, llvm::cast<llvm::MDNode>(getLocalIDPresentNode(pNode)));
27352714
m_GroupIDPresent.save(context, llvm::cast<llvm::MDNode>(getGroupIDPresentNode(pNode)));
27362715
m_GlobalOffsetPresent.save(context, llvm::cast<llvm::MDNode>(getGlobalOffsetPresentNode(pNode)));
27372716
m_LocalOffsets.save(context, llvm::cast<llvm::MDNode>(getLocalOffsetsNode(pNode)));
@@ -2875,24 +2854,6 @@ llvm::MDNode* FunctionInfoMetaData::getWorkgroupWalkOrderNode(const llvm::MDNode
28752854
return NULL;
28762855
}
28772856

2878-
llvm::Metadata* FunctionInfoMetaData::getLocalIDPresentNode( const llvm::MDNode* pParentNode) const
2879-
{
2880-
if( !pParentNode )
2881-
{
2882-
return NULL;
2883-
}
2884-
2885-
unsigned int offset = _Mybase::getStartIndex();
2886-
for(NodeIterator i = NodeIterator(pParentNode, 0+offset), e = NodeIterator(pParentNode); i != e; ++i )
2887-
{
2888-
if( isNamedNode(i.get(), "local_id_present") )
2889-
{
2890-
return i.get();
2891-
}
2892-
}
2893-
return NULL;
2894-
}
2895-
28962857
llvm::Metadata* FunctionInfoMetaData::getGroupIDPresentNode( const llvm::MDNode* pParentNode) const
28972858
{
28982859
if( !pParentNode )

IGC/Compiler/MetaDataApi/MetaDataApi.h

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1939,7 +1939,6 @@ class FunctionInfoMetaData:public IMetaDataObject
19391939

19401940

19411941

1942-
typedef NamedMetaDataValue<int32_t>::value_type LocalIDPresentType;
19431942
typedef NamedMetaDataValue<int32_t>::value_type GroupIDPresentType;
19441943
typedef NamedMetaDataValue<int32_t>::value_type GlobalOffsetPresentType;
19451944
typedef MetaDataList<LocalOffsetMetaDataHandle> LocalOffsetsList;
@@ -2159,23 +2158,7 @@ class FunctionInfoMetaData:public IMetaDataObject
21592158
{
21602159
return m_WorkgroupWalkOrder;
21612160
}
2162-
2163-
2164-
/// LocalIDPresent related methods
2165-
LocalIDPresentType getLocalIDPresent() const
2166-
{
2167-
return m_LocalIDPresent.get();
2168-
}
2169-
void setLocalIDPresent( const LocalIDPresentType& val)
2170-
{
2171-
m_LocalIDPresent.set(val);
2172-
}
2173-
bool isLocalIDPresentHasValue() const
2174-
{
2175-
return m_LocalIDPresent.hasValue();
2176-
}
2177-
2178-
2161+
21792162
/// GroupIDPresent related methods
21802163
GroupIDPresentType getGroupIDPresent() const
21812164
{
@@ -2874,7 +2857,6 @@ class FunctionInfoMetaData:public IMetaDataObject
28742857
llvm::MDNode* getThreadGroupSizeHintNode( const llvm::MDNode* pParentNode) const;
28752858
llvm::MDNode* getSubGroupSizeNode( const llvm::MDNode* pParentNode) const;
28762859
llvm::MDNode* getWorkgroupWalkOrderNode(const llvm::MDNode* pParentNode) const;
2877-
llvm::Metadata* getLocalIDPresentNode( const llvm::MDNode* pParentNode) const;
28782860
llvm::Metadata* getGroupIDPresentNode( const llvm::MDNode* pParentNode) const;
28792861
llvm::Metadata* getGlobalOffsetPresentNode( const llvm::MDNode* pParentNode) const;
28802862
llvm::Metadata* getLocalSizeNode( const llvm::MDNode* pParentNode) const;
@@ -2901,7 +2883,6 @@ class FunctionInfoMetaData:public IMetaDataObject
29012883
ThreadGroupSizeMetaDataHandle m_ThreadGroupSizeHint;
29022884
SubGroupSizeMetaDataHandle m_SubGroupSize;
29032885
WorkgroupWalkOrderMetaDataHandle m_WorkgroupWalkOrder;
2904-
NamedMetaDataValue<int32_t> m_LocalIDPresent;
29052886
NamedMetaDataValue<int32_t> m_GroupIDPresent;
29062887
NamedMetaDataValue<int32_t> m_GlobalOffsetPresent;
29072888
MetaDataList<LocalOffsetMetaDataHandle> m_LocalOffsets;

IGC/Compiler/Optimizer/BuiltInFuncImport.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -859,9 +859,8 @@ bool PreBIImportAnalysis::runOnModule(Module &M)
859859
funcName == OCL_GET_GROUP_ID)
860860
{
861861
MetaDataUtils *pMdUtil = getAnalysis<MetaDataUtilsWrapper>().getMetaDataUtils();
862-
863-
864-
862+
ModuleMetaData *modMD = getAnalysis<MetaDataUtilsWrapper>().getModuleMetaData();
863+
865864
// Breadth-first search
866865

867866
std::set<llvm::Function*> visited;
@@ -919,7 +918,9 @@ bool PreBIImportAnalysis::runOnModule(Module &M)
919918
}
920919
else if (funcName == OCL_GET_LOCAL_ID)
921920
{
922-
pMdUtil->getFunctionsInfoItem(f)->setLocalIDPresent(1);
921+
//localIDPresent info will be added to new framework here
922+
//and extracted from new framework later
923+
modMD->FuncMD[f].localIDPresent = true;
923924
}
924925
else if (funcName == OCL_GET_GROUP_ID)
925926
{

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1670,6 +1670,8 @@ namespace //Anonymous
16701670
//link dispatchMd to dispatch kernel
16711671
IGC::IGCMD::FunctionInfoMetaDataHandle dispatchMd = _pMdUtils->getOrInsertFunctionsInfoItem(const_cast<llvm::Function*>(kernelFunc));
16721672

1673+
1674+
16731675
//set function type for dispatch
16741676
dispatchMd->setType(IGC::IGCMD::FunctionTypeEnum::EntryFunctionType);
16751677

IGC/common/MDFrameWork.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ namespace IGC
5757
bool isCloned = false;
5858
bool hasInlineVmeSamplers = false;
5959
int localSize = 0;
60+
bool localIDPresent = false;
6061
};
6162

6263
// isCloned member is added to mark whether a function is clone

0 commit comments

Comments
 (0)