diff options
| author | Yong He <yonghe@outlook.com> | 2024-03-08 16:33:04 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-08 16:33:04 -0800 |
| commit | 21502874666c282a3c5fa1f802deff27fab4e93b (patch) | |
| tree | 7fdfb184872f77c6aaaa3c738b651cd908e97b54 /source/slang/slang-ir-uniformity.cpp | |
| parent | bc3dc0e82d52faa45ffe73448e86208f137b8536 (diff) | |
Add documentation for uniformity analysis. (#3721)
Diffstat (limited to 'source/slang/slang-ir-uniformity.cpp')
| -rw-r--r-- | source/slang/slang-ir-uniformity.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/source/slang/slang-ir-uniformity.cpp b/source/slang/slang-ir-uniformity.cpp index 9c463f530..d29c0735a 100644 --- a/source/slang/slang-ir-uniformity.cpp +++ b/source/slang/slang-ir-uniformity.cpp @@ -310,6 +310,9 @@ namespace Slang auto ifElse = as<IRIfElse>(user); visitControlDependentBlock(ifElse->getTrueBlock()); visitControlDependentBlock(ifElse->getFalseBlock()); + // Mark phi nodes as non-uniform if any of its incoming values are non-uniform. + for (auto param : ifElse->getAfterBlock()->getParams()) + addToWorkList(param); break; } case kIROp_Switch: @@ -318,6 +321,9 @@ namespace Slang for (UInt c = 0; c < switchInst->getCaseCount(); c++) visitControlDependentBlock(switchInst->getCaseLabel(c)); visitControlDependentBlock(switchInst->getDefaultLabel()); + // Mark phi nodes as non-uniform if any of its incoming values are non-uniform. + for (auto param : switchInst->getBreakLabel()->getParams()) + addToWorkList(param); break; } case kIROp_Call: |
