|
|
|
@ -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) {
|
|
|
|
|