From 216fc18661fd6e05053b4cc864396e6017e85b04 Mon Sep 17 00:00:00 2001 From: Yong He Date: Wed, 16 Aug 2023 22:47:35 -0700 Subject: Create storage types of different layouts for SPIRV emit. (#3116) * Create storage types of different layouts for SPIRV emit. * Fix. * Fix. * Fix. * Update expected failure list. --------- Co-authored-by: Yong He --- source/slang/slang-ir.cpp | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'source/slang/slang-ir.cpp') 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(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) -- cgit v1.2.3