summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/slang/slang-ir-spirv-legalize.cpp8
1 files changed, 3 insertions, 5 deletions
diff --git a/source/slang/slang-ir-spirv-legalize.cpp b/source/slang/slang-ir-spirv-legalize.cpp
index 311ff0e89..48a46f962 100644
--- a/source/slang/slang-ir-spirv-legalize.cpp
+++ b/source/slang/slang-ir-spirv-legalize.cpp
@@ -1215,7 +1215,7 @@ struct SPIRVLegalizationContext : public SourceEmitterBase
break;
case kIROp_GetElementPtr:
// Ignore when `NonUniformResourceIndex` is not on the index
- if (user->getOperand(0)->getOp() != kIROp_NonUniformResourceIndex)
+ if (user->getOperand(1) == inst)
{
// Replace gep(pArray, nonUniformRes(x)), into nonUniformRes(gep(pArray, x))
newUser = builder.emitElementAddress(user->getFullType(), user->getOperand(0), inst->getOperand(0));
@@ -1282,12 +1282,10 @@ struct SPIRVLegalizationContext : public SourceEmitterBase
{
IRBuilder builder(operand);
builder.addSPIRVNonUniformResourceDecoration(operand);
- inst->replaceUsesWith(operand);
- inst->removeAndDeallocate();
}
+ inst->replaceUsesWith(operand);
+ inst->removeAndDeallocate();
}
- nonUniformResourceIndexInst->removeFromParent();
- m_instsToRemove.add(nonUniformResourceIndexInst);
}
void processImageSubscript(IRImageSubscript* subscript)