diff --git a/src/graphics/shader/recompiler/frontend/decode/VectorAluOps.cpp b/src/graphics/shader/recompiler/frontend/decode/VectorAluOps.cpp index 39bb7baf9..13b1222e2 100644 --- a/src/graphics/shader/recompiler/frontend/decode/VectorAluOps.cpp +++ b/src/graphics/shader/recompiler/frontend/decode/VectorAluOps.cpp @@ -1450,6 +1450,9 @@ bool SupportsNativeVop3ResultModifiers(Opcode opcode) { case Opcode::V_MAD_F32: case Opcode::V_FMA_F32: case Opcode::V_FMA_F16: + case Opcode::V_MIN3_F16: + case Opcode::V_MAX3_F16: + case Opcode::V_MED3_F16: case Opcode::V_CUBEID_F32: case Opcode::V_CVT_PKRTZ_F16_F32: case Opcode::V_LDEXP_F32: @@ -1480,7 +1483,8 @@ bool HasUnsupportedNativeVop3Modifiers(Opcode opcode, bool permlane, bool mad_mi return clamp != 0u || omod != 0u; } if (IsNativeVop3F16TernaryOpcode(opcode)) { - return opcode != Opcode::V_FMA_F16 && (clamp != 0u || omod != 0u); + // Clamp is applied by WriteF16 for every f16 ternary; omod only for V_FMA_F16. + return opcode != Opcode::V_FMA_F16 && omod != 0u; } if (IsNativeVop3I16TernaryOpcode(opcode)) { return abs != 0u || (clamp != 0u && !clamp_modifier) || omod != 0u || neg != 0u;