|
@@ -2552,29 +2552,7 @@ public:
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
Id operator()(const ExprCondCode& expr) {
|
|
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) {
|
|
Id operator()(const ExprVar& expr) {
|