summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2024-05-08 10:41:52 -0700
committerGitHub <noreply@github.com>2024-05-08 10:41:52 -0700
commit6d917a02bb307300ac14c8b028c47fcdcc07100b (patch)
tree1eefd2e6249fe73d7164de5d2aca6bd1c3b6da73 /source
parent7514d0b608eeebf5e5fa81ad0ff1961643120ad0 (diff)
Fix NonUniformResourceIndex legalization for SPIRV. (#4133)
* Fix NonUniformResourceIndex legalization for SPIRV. * Update gh-4131.slang
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)