Merge pull request #3240 from ReinUsesLisp/decomp-cond-code
vk_shader_decompiler: Use Visit instead of reimplementing it
This commit is contained in:
commit
27efcc15e9
|
@ -2552,29 +2552,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
Id operator()(const ExprCondCode& expr) {
|
Id operator()(const ExprCondCode& expr) {
|
||||||
const Node cc = decomp.ir.GetConditionCode(expr.cc);
|
return decomp.AsBool(decomp.Visit(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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Id operator()(const ExprVar& expr) {
|
Id operator()(const ExprVar& expr) {
|
||||||
|
|
Reference in New Issue