diff options
| author | Yong He <yonghe@outlook.com> | 2024-05-08 10:41:52 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-05-08 10:41:52 -0700 |
| commit | 6d917a02bb307300ac14c8b028c47fcdcc07100b (patch) | |
| tree | 1eefd2e6249fe73d7164de5d2aca6bd1c3b6da73 /source | |
| parent | 7514d0b608eeebf5e5fa81ad0ff1961643120ad0 (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.cpp | 8 |
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) |
