|
|
|
@ -2552,29 +2552,7 @@ public: |
|
|
|
} |
|
|
|
|
|
|
|
Id operator()(const ExprCondCode& expr) { |
|
|
|
const Node cc = decomp.ir.GetConditionCode(expr.cc); |
|
|
|
Id target; |
|
|
|
|
|
|
|
if (const auto pred = std::get_if<PredicateNode>(&*cc)) { |
|
|
|
const auto index = pred->GetIndex(); |
|
|
|
switch (index) { |
|
|
|
case Tegra::Shader::Pred::NeverExecute: |
|
|
|
target = decomp.v_false; |
|
|
|
break; |
|
|
|
case Tegra::Shader::Pred::UnusedIndex: |
|
|
|
target = decomp.v_true; |
|
|
|
break; |
|
|
|
default: |
|
|
|
target = decomp.predicates.at(index); |
|
|
|
break; |
|
|
|
} |
|
|
|
} else if (const auto flag = std::get_if<InternalFlagNode>(&*cc)) { |
|
|
|
target = decomp.internal_flags.at(static_cast<u32>(flag->GetFlag())); |
|
|
|
} else { |
|
|
|
UNREACHABLE(); |
|
|
|
} |
|
|
|
|
|
|
|
return decomp.OpLoad(decomp.t_bool, target); |
|
|
|
return decomp.AsBool(decomp.Visit(decomp.ir.GetConditionCode(expr.cc))); |
|
|
|
} |
|
|
|
|
|
|
|
Id operator()(const ExprVar& expr) { |
|
|
|
|