radv: use nir_op_ffma_weak

Reviewed-by: Georg Lehmann <dadschoorse@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41165>
This commit is contained in:
Karol Herbst 2026-04-24 17:19:17 +02:00 committed by Marge Bot
parent 3e334ea0d3
commit 6cf3cba68c
2 changed files with 6 additions and 1 deletions

View file

@ -64,7 +64,7 @@ pass(nir_builder *b, nir_intrinsic_instr *intrin, void *data)
nir_def *mul = nir_bcsel(b, cond, nir_imm_float(b, 0.0625f), nir_imm_float(b, -0.0));
/* adjusted_frag_z = dFdxFine(frag_z) * 0.0625 + frag_z */
frag_z = nir_ffma_old(b, nir_ddx_fine(b, frag_z), mul, frag_z);
frag_z = nir_ffma_weak(b, nir_ddx_fine(b, frag_z), mul, frag_z);
nir_def_rewrite_uses_after(&intrin->def, frag_z);

View file

@ -63,6 +63,11 @@ get_nir_options_for_stage(struct radv_compiler_info *compiler_info, mesa_shader_
options->lower_ffma16 = split_fma || compiler_info->ac->gfx_level < GFX9;
options->lower_ffma32 = split_fma || compiler_info->ac->gfx_level < GFX10_3;
options->lower_ffma64 = split_fma;
if (split_fma) {
options->float_mul_add16 |= nir_float_muladd_support_prefers_split;
options->float_mul_add32 |= nir_float_muladd_support_prefers_split;
options->float_mul_add64 |= nir_float_muladd_support_prefers_split;
}
options->max_unroll_iterations = 32;
options->max_unroll_iterations_aggressive = 128;
options->lower_doubles_options = nir_lower_drcp | nir_lower_dsqrt | nir_lower_drsq | nir_lower_ddiv;