summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gallium/drivers/swr/rasterizer/jitter/builder.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/gallium/drivers/swr/rasterizer/jitter/builder.h b/src/gallium/drivers/swr/rasterizer/jitter/builder.h
index 6ca128d38f1..08a3a6e4734 100644
--- a/src/gallium/drivers/swr/rasterizer/jitter/builder.h
+++ b/src/gallium/drivers/swr/rasterizer/jitter/builder.h
@@ -124,6 +124,34 @@ namespace SwrJit
bool SetTexelMaskEvaluate(Instruction* inst);
bool IsTexelMaskEvaluate(Instruction* inst);
Type* GetVectorType(Type* pType);
+ void SetMetadata(StringRef s, uint32_t val)
+ {
+ llvm::NamedMDNode *metaData = mpJitMgr->mpCurrentModule->getOrInsertNamedMetadata(s);
+ Constant* cval = mpIRBuilder->getInt32(val);
+ llvm::MDNode *mdNode = llvm::MDNode::get(mpJitMgr->mpCurrentModule->getContext(), llvm::ConstantAsMetadata::get(cval));
+ if (metaData->getNumOperands())
+ {
+ metaData->setOperand(0, mdNode);
+ }
+ else
+ {
+ metaData->addOperand(mdNode);
+ }
+ }
+ uint32_t GetMetadata(StringRef s)
+ {
+ NamedMDNode* metaData = mpJitMgr->mpCurrentModule->getNamedMetadata(s);
+ if (metaData)
+ {
+ MDNode* mdNode = metaData->getOperand(0);
+ Metadata* val = mdNode->getOperand(0);
+ return mdconst::dyn_extract<ConstantInt>(val)->getZExtValue();
+ }
+ else
+ {
+ return 0;
+ }
+ }
#include "gen_builder.hpp"
#include "gen_builder_meta.hpp"