mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-04 00:49:02 -06:00 
			
		
		
		
	Shaders: Implemented predicate condition 3 (LessEqual) in the fset and fsetp instructions.
This commit is contained in:
		@@ -882,6 +882,9 @@ private:
 | 
			
		||||
            case PredCondition::Equal:
 | 
			
		||||
                SetPredicate(instr.fsetp.pred3, '(' + op_a + ") == (" + op_b + ')');
 | 
			
		||||
                break;
 | 
			
		||||
            case PredCondition::LessEqual:
 | 
			
		||||
                SetPredicate(instr.fsetp.pred3, '(' + op_a + ") <= (" + op_b + ')');
 | 
			
		||||
                break;
 | 
			
		||||
            default:
 | 
			
		||||
                NGLOG_CRITICAL(HW_GPU, "Unhandled predicate condition: {} (a: {}, b: {})",
 | 
			
		||||
                               static_cast<unsigned>(instr.fsetp.cond.Value()), op_a, op_b);
 | 
			
		||||
@@ -933,6 +936,10 @@ private:
 | 
			
		||||
                regs.SetRegisterToFloat(instr.gpr0, 0,
 | 
			
		||||
                                        "((" + op_a + ") == (" + op_b + ")) ? 1.0 : 0", 1, 1);
 | 
			
		||||
                break;
 | 
			
		||||
            case PredCondition::LessEqual:
 | 
			
		||||
                regs.SetRegisterToFloat(instr.gpr0, 0,
 | 
			
		||||
                                        "((" + op_a + ") <= (" + op_b + ")) ? 1.0 : 0", 1, 1);
 | 
			
		||||
                break;
 | 
			
		||||
            case PredCondition::GreaterThan:
 | 
			
		||||
                regs.SetRegisterToFloat(instr.gpr0, 0,
 | 
			
		||||
                                        "((" + op_a + ") > (" + op_b + ")) ? 1.0 : 0", 1, 1);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user