|
|
@ -882,6 +882,9 @@ private: |
|
|
case PredCondition::Equal: |
|
|
case PredCondition::Equal: |
|
|
SetPredicate(instr.fsetp.pred3, '(' + op_a + ") == (" + op_b + ')'); |
|
|
SetPredicate(instr.fsetp.pred3, '(' + op_a + ") == (" + op_b + ')'); |
|
|
break; |
|
|
break; |
|
|
|
|
|
case PredCondition::LessEqual: |
|
|
|
|
|
SetPredicate(instr.fsetp.pred3, '(' + op_a + ") <= (" + op_b + ')'); |
|
|
|
|
|
break; |
|
|
default: |
|
|
default: |
|
|
NGLOG_CRITICAL(HW_GPU, "Unhandled predicate condition: {} (a: {}, b: {})", |
|
|
NGLOG_CRITICAL(HW_GPU, "Unhandled predicate condition: {} (a: {}, b: {})", |
|
|
static_cast<unsigned>(instr.fsetp.cond.Value()), op_a, op_b); |
|
|
static_cast<unsigned>(instr.fsetp.cond.Value()), op_a, op_b); |
|
|
@ -933,6 +936,10 @@ private: |
|
|
regs.SetRegisterToFloat(instr.gpr0, 0, |
|
|
regs.SetRegisterToFloat(instr.gpr0, 0, |
|
|
"((" + op_a + ") == (" + op_b + ")) ? 1.0 : 0", 1, 1); |
|
|
"((" + op_a + ") == (" + op_b + ")) ? 1.0 : 0", 1, 1); |
|
|
break; |
|
|
break; |
|
|
|
|
|
case PredCondition::LessEqual: |
|
|
|
|
|
regs.SetRegisterToFloat(instr.gpr0, 0, |
|
|
|
|
|
"((" + op_a + ") <= (" + op_b + ")) ? 1.0 : 0", 1, 1); |
|
|
|
|
|
break; |
|
|
case PredCondition::GreaterThan: |
|
|
case PredCondition::GreaterThan: |
|
|
regs.SetRegisterToFloat(instr.gpr0, 0, |
|
|
regs.SetRegisterToFloat(instr.gpr0, 0, |
|
|
"((" + op_a + ") > (" + op_b + ")) ? 1.0 : 0", 1, 1); |
|
|
"((" + op_a + ") > (" + op_b + ")) ? 1.0 : 0", 1, 1); |
|
|
|