|
|
|
@ -25,27 +25,44 @@ struct Condition {
|
|
|
|
|
bool IsUnconditional() const {
|
|
|
|
|
return predicate == Pred::UnusedIndex && cc == ConditionCode::T;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool operator==(const Condition& other) const {
|
|
|
|
|
return std::tie(predicate, cc) == std::tie(other.predicate, other.cc);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool operator!=(const Condition& other) const {
|
|
|
|
|
return !operator==(other);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct ShaderBlock {
|
|
|
|
|
u32 start{};
|
|
|
|
|
u32 end{};
|
|
|
|
|
bool ignore_branch{};
|
|
|
|
|
struct Branch {
|
|
|
|
|
Condition cond{};
|
|
|
|
|
bool kills{};
|
|
|
|
|
s32 address{};
|
|
|
|
|
|
|
|
|
|
bool operator==(const Branch& b) const {
|
|
|
|
|
return std::tie(cond, kills, address) == std::tie(b.cond, b.kills, b.address);
|
|
|
|
|
}
|
|
|
|
|
} branch{};
|
|
|
|
|
|
|
|
|
|
bool operator!=(const Branch& b) const {
|
|
|
|
|
return !operator==(b);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
u32 start{};
|
|
|
|
|
u32 end{};
|
|
|
|
|
bool ignore_branch{};
|
|
|
|
|
Branch branch{};
|
|
|
|
|
|
|
|
|
|
bool operator==(const ShaderBlock& sb) const {
|
|
|
|
|
return std::tie(start, end, ignore_branch, branch) ==
|
|
|
|
|
std::tie(sb.start, sb.end, sb.ignore_branch, sb.branch);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool operator!=(const ShaderBlock& sb) const {
|
|
|
|
|
return !operator==(sb);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct ShaderCharacteristics {
|
|
|
|
|