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.cpp25
1 files changed, 24 insertions, 1 deletions
diff --git a/source/slang/slang-ir.cpp b/source/slang/slang-ir.cpp
index 1a499842d..c666ccc08 100644
--- a/source/slang/slang-ir.cpp
+++ b/source/slang/slang-ir.cpp
@@ -317,7 +317,7 @@ namespace Slang
IRInst* IRArrayTypeBase::getElementCount()
{
if (auto arrayType = as<IRArrayType>(this))
- return arrayType->getElementCount();
+ return arrayType->getOperand(1);
return nullptr;
}
@@ -2809,6 +2809,29 @@ namespace Slang
operands);
}
+ IRArrayType* IRBuilder::getArrayType(
+ IRType* elementType,
+ IRInst* elementCount,
+ IRInst* stride)
+ {
+ IRInst* operands[] = { elementType, elementCount, stride };
+ return (IRArrayType*)getType(
+ kIROp_ArrayType,
+ sizeof(operands) / sizeof(operands[0]),
+ operands);
+ }
+
+ IRUnsizedArrayType* IRBuilder::getUnsizedArrayType(
+ IRType* elementType,
+ IRInst* stride)
+ {
+ IRInst* operands[] = { elementType, stride };
+ return (IRUnsizedArrayType*)getType(
+ kIROp_UnsizedArrayType,
+ sizeof(operands) / sizeof(operands[0]),
+ operands);
+ }
+
IRVectorType* IRBuilder::getVectorType(
IRType* elementType,
IRInst* elementCount)