summaryrefslogtreecommitdiff
path: root/source/slang/slang-emit-spirv.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2023-10-04 11:20:35 -0700
committerGitHub <noreply@github.com>2023-10-04 11:20:35 -0700
commitac886fd3e329a9599ed1ac7a6d8b26ca5821046c (patch)
tree87bcafb3985775f9d90303d6a4239eb743164407 /source/slang/slang-emit-spirv.cpp
parentd87493a46c00be37b820a473c0827bbb865eb222 (diff)
SPIRV compiler performance fixes. (#3258)
* SPIRV compiler performance fixes. * Cleanup. * update project files * Cleanup debug code. * Make redundancy removal non-recursive. --------- Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'source/slang/slang-emit-spirv.cpp')
-rw-r--r--source/slang/slang-emit-spirv.cpp28
1 files changed, 6 insertions, 22 deletions
diff --git a/source/slang/slang-emit-spirv.cpp b/source/slang/slang-emit-spirv.cpp
index 62e7d428b..0ba637978 100644
--- a/source/slang/slang-emit-spirv.cpp
+++ b/source/slang/slang-emit-spirv.cpp
@@ -3310,7 +3310,12 @@ struct SPIRVEmitContext
// Find phi arguments from incoming branch instructions that target `block`.
for (auto use = block->firstUse; use; use = use->nextUse)
{
- auto branchInst = use->getUser();
+ auto branchInst = as<IRUnconditionalBranch>(use->getUser());
+ if (!branchInst)
+ continue;
+ if (branchInst->getTargetBlock() != inst->getParent())
+ continue;
+
UInt argStartIndex = 0;
switch (branchInst->getOp())
{
@@ -4742,27 +4747,6 @@ struct SPIRVEmitContext
}
}
- void handleRequiredCapabilitiesImpl(IRInst* inst)
- {
- for (auto decoration : inst->getDecorations())
- {
- switch (decoration->getOp())
- {
- default:
- break;
- case kIROp_RequireSPIRVCapabilityDecoration:
- requireSPIRVCapability((SpvCapability)getIntVal(decoration->getOperand(0)));
- if (decoration->getOperandCount() == 2)
- {
- auto stringLit = as<IRStringLit>(decoration->getOperand(1));
- if (stringLit->getStringSlice().getLength())
- ensureExtensionDeclaration(stringLit->getStringSlice());
- }
- break;
- }
- }
- }
-
SPIRVEmitContext(IRModule* module, TargetRequest* target, DiagnosticSink* sink)
: SPIRVEmitSharedContext(module, target, sink)
, m_irModule(module)