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.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/source/slang/slang-ir.cpp b/source/slang/slang-ir.cpp
index fb7d752d5..9c4cb98c0 100644
--- a/source/slang/slang-ir.cpp
+++ b/source/slang/slang-ir.cpp
@@ -314,6 +314,23 @@ IRIntegerValue getIntVal(IRInst* inst)
}
}
+IRIntegerValue getArraySizeVal(IRInst* inst)
+{
+ switch (inst->getOp())
+ {
+ case kIROp_IntLit:
+ return static_cast<IRConstant*>(inst)->value.intVal;
+ break;
+ default:
+ // Treat specialization constant array as the unsized array here.
+ if (isSpecConstRateType(inst->getFullType()))
+ return kUnsizedArrayMagicLength;
+
+ SLANG_UNEXPECTED("needed a known integer value");
+ UNREACHABLE_RETURN(0);
+ }
+}
+
// IRCapabilitySet
CapabilitySet IRCapabilitySet::getCaps()
@@ -3194,6 +3211,10 @@ IRActualGlobalRate* IRBuilder::getActualGlobalRate()
{
return (IRActualGlobalRate*)getType(kIROp_ActualGlobalRate);
}
+IRSpecConstRate* IRBuilder::getSpecConstRate()
+{
+ return (IRSpecConstRate*)getType(kIROp_SpecConstRate);
+}
IRRateQualifiedType* IRBuilder::getRateQualifiedType(IRRate* rate, IRType* dataType)
{