From 1a0a32959883d82bdea2091d375101e02ccb5404 Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Fri, 24 Apr 2026 17:12:27 +0200 Subject: [PATCH] lima: support nir_op_fmad Reviewed-by: Georg Lehmann Part-of: --- src/gallium/drivers/lima/ir/lima_nir_duplicate.c | 2 +- src/gallium/drivers/lima/ir/pp/nir.c | 1 + src/gallium/drivers/lima/lima_program.c | 3 +++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/lima/ir/lima_nir_duplicate.c b/src/gallium/drivers/lima/ir/lima_nir_duplicate.c index 9108152515a..dfc57ea871d 100644 --- a/src/gallium/drivers/lima/ir/lima_nir_duplicate.c +++ b/src/gallium/drivers/lima/ir/lima_nir_duplicate.c @@ -49,7 +49,7 @@ duplicate_def_at_use(nir_builder *b, nir_def *def, bool duplicate_for_ffma) if (duplicate_for_ffma && last_parent_instr->type == nir_instr_type_alu && - nir_instr_as_alu(last_parent_instr)->op == nir_op_ffma_old) { + nir_alu_instr_is_mul_add(nir_instr_as_alu(last_parent_instr))) { last_parent_instr = NULL; } } diff --git a/src/gallium/drivers/lima/ir/pp/nir.c b/src/gallium/drivers/lima/ir/pp/nir.c index 762314e2959..9281fc9b3f0 100644 --- a/src/gallium/drivers/lima/ir/pp/nir.c +++ b/src/gallium/drivers/lima/ir/pp/nir.c @@ -203,6 +203,7 @@ static int nir_to_ppir_opcodes[nir_num_opcodes] = { [nir_op_ftrunc] = ppir_op_trunc, [nir_op_fsat] = ppir_op_sat, [nir_op_fclamp_pos] = ppir_op_clamp_pos, + [nir_op_fmad] = ppir_op_fmad, [nir_op_ffma_old] = ppir_op_fmad, }; diff --git a/src/gallium/drivers/lima/lima_program.c b/src/gallium/drivers/lima/lima_program.c index 51eeff1d06e..946e67b46f0 100644 --- a/src/gallium/drivers/lima/lima_program.c +++ b/src/gallium/drivers/lima/lima_program.c @@ -71,6 +71,9 @@ static const nir_shader_compiler_options fs_nir_options = { .fuse_ffma16 = true, .fuse_ffma32 = true, .fuse_ffma64 = true, + .float_mul_add16 = nir_float_muladd_support_has_fmad | nir_float_muladd_support_fuse, + .float_mul_add32 = nir_float_muladd_support_has_fmad | nir_float_muladd_support_fuse, + .float_mul_add64 = nir_float_muladd_support_has_fmad | nir_float_muladd_support_fuse, .lower_fpow = true, .lower_fdiv = true, .lower_fmod = true,