diff options
Diffstat (limited to 'source/slang/slang-ir.cpp')
| -rw-r--r-- | source/slang/slang-ir.cpp | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/source/slang/slang-ir.cpp b/source/slang/slang-ir.cpp index ff6c8c39e..5fa558e15 100644 --- a/source/slang/slang-ir.cpp +++ b/source/slang/slang-ir.cpp @@ -4708,7 +4708,12 @@ namespace Slang IRInst* base, IRInst* index) { - auto inst = createInst<IRFieldAddress>( + if (auto vectorFromScalar = as<IRMakeVectorFromScalar>(base)) + return vectorFromScalar->getOperand(0); + if (base->getOp() == kIROp_MakeArrayFromElement) + return base->getOperand(0); + + auto inst = createInst<IRGetElement>( this, kIROp_GetElement, type, @@ -4737,15 +4742,8 @@ namespace Slang type = getVectorType(matrixType->getElementType(), matrixType->getColumnCount()); } SLANG_RELEASE_ASSERT(type); - auto inst = createInst<IRGetElement>( - this, - kIROp_GetElement, - type, - base, - index); - addInst(inst); - return inst; + return emitElementExtract(type, base, index); } IRInst* IRBuilder::emitElementExtract( |
