Skip to content

Commit 9a23d30

Browse files
scottp101sys_zuul
authored and
sys_zuul
committed
Add handling of StructType in metadata.
Change-Id: Ib73c3ff9d8992dc489129dd70dba5e19e99e7106
1 parent 647e373 commit 9a23d30

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

IGC/common/MDFrameWork.cpp

+20
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ MDNode* CreateNode(const std::vector<val> &vec, Module* module, StringRef name);
2424
template<typename val, size_t s>
2525
MDNode* CreateNode(const std::array<val, s> &arr, Module* module, StringRef name);
2626
MDNode* CreateNode(Value* val, Module* module, StringRef name);
27+
MDNode* CreateNode(StructType* Ty, Module* module, StringRef name);
2728
template<typename Key, typename Value>
2829
MDNode* CreateNode(const std::map < Key, Value> &FuncMD, Module* module, StringRef name);
2930
MDNode* CreateNode(const std::string &s, Module* module, StringRef name);
@@ -44,6 +45,7 @@ template<typename T, size_t s>
4445
void readNode(std::array<T, s> &arr, MDNode* node);
4546
void readNode(Function* &funcPtr, MDNode* node);
4647
void readNode(GlobalVariable* &globalVar, MDNode* node);
48+
void readNode(StructType* &Ty, MDNode* node);
4749

4850
template<typename Key, typename Value>
4951
void readNode(std::map<Key, Value> &funcMD, MDNode* node);
@@ -184,6 +186,17 @@ MDNode* CreateNode(Value* val, Module* module, StringRef name)
184186
return node;
185187
}
186188

189+
MDNode* CreateNode(StructType* Ty, Module* module, StringRef name)
190+
{
191+
Metadata* v[] =
192+
{
193+
MDString::get(module->getContext(), name),
194+
ValueAsMetadata::get(UndefValue::get(Ty))
195+
};
196+
MDNode* node = MDNode::get(module->getContext(), v);
197+
return node;
198+
}
199+
187200
template<typename Key, typename Value>
188201
MDNode* CreateNode(const std::map < Key, Value> &FuncMD, Module* module, StringRef name)
189202
{
@@ -298,6 +311,13 @@ void readNode(GlobalVariable* &globalVar, MDNode* node)
298311
globalVar = cast<GlobalVariable>(v);
299312
}
300313

314+
void readNode(StructType*& Ty, MDNode* node)
315+
{
316+
ValueAsMetadata* pVal = cast<ValueAsMetadata>(node->getOperand(1));
317+
Value* v = pVal->getValue();
318+
Ty = cast<StructType>(v->getType());
319+
}
320+
301321
template<typename Key, typename Value>
302322
void readNode(std::map<Key, Value> &keyMD, MDNode* node)
303323
{

IGC/common/MDFrameWork.h

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ namespace llvm
1313
class Function;
1414
class Value;
1515
class GlobalVariable;
16+
class StructType;
1617
}
1718

1819
const unsigned int INPUT_RESOURCE_SLOT_COUNT = 128;

0 commit comments

Comments
 (0)