shader: retain resource guards for 64-bit scalar comparisons

This commit is contained in:
nmzik
2026-10-18 20:22:54 +02:00
parent 8639e0de81
commit e9bcc77e0b
2 changed files with 67 additions and 0 deletions
@@ -159,9 +159,11 @@ bool IsRuntimeUniformOp(ValueOpcode op) {
case ValueOpcode::ULessThan32:
case ValueOpcode::ULessThanEqual32:
case ValueOpcode::IEqual32:
case ValueOpcode::IEqual64:
case ValueOpcode::UGreaterThan32:
case ValueOpcode::SGreaterThanEqual32:
case ValueOpcode::INotEqual32:
case ValueOpcode::INotEqual64:
case ValueOpcode::LogicalOr:
case ValueOpcode::LogicalAnd:
case ValueOpcode::LogicalXor:
@@ -1053,6 +1055,11 @@ bool SrtWalker::EvaluateInst(const Inst& inst, uint64_t& result) {
return true;
}
return false;
case ValueOpcode::IEqual64:
case ValueOpcode::INotEqual64:
if (!binary()) return false;
result = inst.GetOpcode() == ValueOpcode::IEqual64 ? a == b : a != b;
return true;
case ValueOpcode::ULessThan32:
// No U32 is below zero, including an unknown loop-carried value.
if (!Arg(inst, 1, b)) return false;