summaryrefslogtreecommitdiff
path: root/source/slang/slang-ir.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-ir.cpp')
-rw-r--r--source/slang/slang-ir.cpp30
1 files changed, 29 insertions, 1 deletions
diff --git a/source/slang/slang-ir.cpp b/source/slang/slang-ir.cpp
index a718470ff..ed86e4d6d 100644
--- a/source/slang/slang-ir.cpp
+++ b/source/slang/slang-ir.cpp
@@ -2955,6 +2955,30 @@ namespace Slang
return inst;
}
+ IRGlobalConstant* IRBuilder::emitGlobalConstant(
+ IRType* type)
+ {
+ auto inst = createInst<IRGlobalConstant>(
+ this,
+ kIROp_GlobalConstant,
+ type);
+ addInst(inst);
+ return inst;
+ }
+
+ IRGlobalConstant* IRBuilder::emitGlobalConstant(
+ IRType* type,
+ IRInst* val)
+ {
+ auto inst = createInst<IRGlobalConstant>(
+ this,
+ kIROp_GlobalConstant,
+ type,
+ val);
+ addInst(inst);
+ return inst;
+ }
+
//
// Decorations
//
@@ -4284,7 +4308,8 @@ namespace Slang
case kIROp_StructField:
case kIROp_Func:
case kIROp_Generic:
- case kIROp_GlobalVar:
+ case kIROp_GlobalVar: // Note: the IRGlobalVar represents the *address*, so only a load/store would have side effects
+ case kIROp_GlobalConstant:
case kIROp_GlobalParam:
case kIROp_StructKey:
case kIROp_GlobalGenericParam:
@@ -4459,6 +4484,9 @@ namespace Slang
case kIROp_Generic:
return val->getFirstChild() != nullptr;
+ case kIROp_GlobalConstant:
+ return cast<IRGlobalConstant>(val)->getValue() != nullptr;
+
case kIROp_StructType:
case kIROp_GlobalVar:
case kIROp_GlobalParam: