aco: allow v_fma_mix with denorms for gfx9 chips where it's fused

Only unfused mad unconditionally flushes denorms.

Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38183>
This commit is contained in:
Georg Lehmann 2025-10-31 13:10:34 +01:00 committed by Marge Bot
parent 75e7fb03a5
commit 6610905b43

View file

@ -865,8 +865,8 @@ alu_opt_info_is_valid(opt_ctx& ctx, alu_opt_info& info)
if (ctx.program->gfx_level < GFX9)
return false;
/* GFX9 v_mad_mix* always flushes 16/32-bit denormal inputs/outputs */
if (ctx.program->gfx_level == GFX9 && ctx.fp_mode.denorm)
/* unfused v_mad_mix* always flushes 16/32-bit denormal inputs/outputs */
if (!ctx.program->dev.fused_mad_mix && ctx.fp_mode.denorm)
return false;
switch (info.opcode) {
@ -4357,8 +4357,8 @@ can_use_mad_mix(opt_ctx& ctx, aco_ptr<Instruction>& instr)
if (ctx.program->gfx_level < GFX9)
return false;
/* GFX9 v_mad_mix* always flushes 16/32-bit denormal inputs/outputs */
if (ctx.program->gfx_level == GFX9 && ctx.fp_mode.denorm)
/* unfused v_mad_mix* always flushes 16/32-bit denormal inputs/outputs */
if (!ctx.program->dev.fused_mad_mix && ctx.fp_mode.denorm)
return false;
if (instr->valu().omod)