diff --git a/src/asahi/compiler/agx_compile.c b/src/asahi/compiler/agx_compile.c index a92ca11111d..255e480aa63 100644 --- a/src/asahi/compiler/agx_compile.c +++ b/src/asahi/compiler/agx_compile.c @@ -1379,10 +1379,16 @@ agx_emit_alu(agx_builder *b, nir_alu_instr *instr) case nir_op_fneg: return agx_fmov_to(b, dst, agx_neg(s0)); - case nir_op_fmin: - return agx_fcmpsel_to(b, dst, s0, s1, s0, s1, AGX_FCOND_LTN); - case nir_op_fmax: - return agx_fcmpsel_to(b, dst, s0, s1, s0, s1, AGX_FCOND_GTN); + case nir_op_fmin: { + agx_index tmp = agx_fcmpsel(b, s0, s1, s0, s1, AGX_FCOND_LTN); + /* flush denorms */ + return agx_fadd_to(b, dst, tmp, agx_negzero()); + } + case nir_op_fmax: { + agx_index tmp = agx_fcmpsel(b, s0, s1, s0, s1, AGX_FCOND_GTN); + /* flush denorms */ + return agx_fadd_to(b, dst, tmp, agx_negzero()); + } case nir_op_imin: return agx_icmpsel_to(b, dst, s0, s1, s0, s1, AGX_ICOND_SLT); case nir_op_imax: