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