diff --git a/src/amd/compiler/aco_optimizer.cpp b/src/amd/compiler/aco_optimizer.cpp index c3d2d935246..a6bc1d85ec6 100644 --- a/src/amd/compiler/aco_optimizer.cpp +++ b/src/amd/compiler/aco_optimizer.cpp @@ -4308,7 +4308,7 @@ combine_instruction(opt_ctx& ctx, aco_ptr& instr) add_opt(v_mul_f32, v_fma_f32, 0x3, "120", create_fma_cb); add_opt(s_mul_f32, v_fma_f32, 0x3, "120", create_fma_cb); } - if (ctx.program->gfx_level >= GFX10_3) + if (ctx.program->gfx_level >= GFX10_3 && ctx.fp_mode.denorm32 == 0) add_opt(v_mul_legacy_f32, v_fma_legacy_f32, 0x3, "120", create_fma_cb); } else if (info.opcode == aco_opcode::v_add_f16) { if (ctx.program->gfx_level < GFX9 && ctx.fp_mode.denorm16_64 == 0) {