diff options
Diffstat (limited to 'source/slang/slang-ir.cpp')
| -rw-r--r-- | source/slang/slang-ir.cpp | 21 |
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) { |
