diff options
| author | 2019-12-22 11:20:55 -0400 | |
|---|---|---|
| committer | 2019-12-22 11:20:55 -0400 | |
| commit | 27efcc15e94cb1b72e0f3ad3450e034d76b49780 (patch) | |
| tree | aa0b2285858f4e7af17eb204d70d6f2f798b5562 | |
| parent | Merge pull request #3235 from ReinUsesLisp/ldg-u8 (diff) | |
| parent | vk_shader_decompiler: Use Visit instead of reimplementing it (diff) | |
| download | yuzu-27efcc15e94cb1b72e0f3ad3450e034d76b49780.tar.gz yuzu-27efcc15e94cb1b72e0f3ad3450e034d76b49780.tar.xz yuzu-27efcc15e94cb1b72e0f3ad3450e034d76b49780.zip | |
Merge pull request #3240 from ReinUsesLisp/decomp-cond-code
vk_shader_decompiler: Use Visit instead of reimplementing it
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_shader_decompiler.cpp | 24 |
1 files changed, 1 insertions, 23 deletions
diff --git a/src/video_core/renderer_vulkan/vk_shader_decompiler.cpp b/src/video_core/renderer_vulkan/vk_shader_decompiler.cpp index 6227bc70b..fae8c95c8 100644 --- a/src/video_core/renderer_vulkan/vk_shader_decompiler.cpp +++ b/src/video_core/renderer_vulkan/vk_shader_decompiler.cpp | |||
| @@ -2552,29 +2552,7 @@ public: | |||
| 2552 | } | 2552 | } |
| 2553 | 2553 | ||
| 2554 | Id operator()(const ExprCondCode& expr) { | 2554 | Id operator()(const ExprCondCode& expr) { |
| 2555 | const Node cc = decomp.ir.GetConditionCode(expr.cc); | 2555 | return decomp.AsBool(decomp.Visit(decomp.ir.GetConditionCode(expr.cc))); |
| 2556 | Id target; | ||
| 2557 | |||
| 2558 | if (const auto pred = std::get_if<PredicateNode>(&*cc)) { | ||
| 2559 | const auto index = pred->GetIndex(); | ||
| 2560 | switch (index) { | ||
| 2561 | case Tegra::Shader::Pred::NeverExecute: | ||
| 2562 | target = decomp.v_false; | ||
| 2563 | break; | ||
| 2564 | case Tegra::Shader::Pred::UnusedIndex: | ||
| 2565 | target = decomp.v_true; | ||
| 2566 | break; | ||
| 2567 | default: | ||
| 2568 | target = decomp.predicates.at(index); | ||
| 2569 | break; | ||
| 2570 | } | ||
| 2571 | } else if (const auto flag = std::get_if<InternalFlagNode>(&*cc)) { | ||
| 2572 | target = decomp.internal_flags.at(static_cast<u32>(flag->GetFlag())); | ||
| 2573 | } else { | ||
| 2574 | UNREACHABLE(); | ||
| 2575 | } | ||
| 2576 | |||
| 2577 | return decomp.OpLoad(decomp.t_bool, target); | ||
| 2578 | } | 2556 | } |
| 2579 | 2557 | ||
| 2580 | Id operator()(const ExprVar& expr) { | 2558 | Id operator()(const ExprVar& expr) { |