aco: fix v_mad_mix denorm behavior

It also flushes fp32 denorms, just like v_mad_f32.

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 12:11:46 +01:00 committed by Marge Bot
parent 95b9801ad2
commit 75e7fb03a5

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;
/* v_mad_mix* on GFX9 always flushes denormals for 16-bit inputs/outputs */
if (ctx.program->gfx_level == GFX9 && ctx.fp_mode.denorm16_64)
/* GFX9 v_mad_mix* always flushes 16/32-bit denormal inputs/outputs */
if (ctx.program->gfx_level == GFX9 && 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;
/* v_mad_mix* on GFX9 always flushes denormals for 16-bit inputs/outputs */
if (ctx.program->gfx_level == GFX9 && ctx.fp_mode.denorm16_64)
/* GFX9 v_mad_mix* always flushes 16/32-bit denormal inputs/outputs */
if (ctx.program->gfx_level == GFX9 && ctx.fp_mode.denorm)
return false;
if (instr->valu().omod)