From 3749a6ecd282cf8c801cda948260fd6d521b92ac Mon Sep 17 00:00:00 2001 From: Gert Wollny Date: Sun, 8 May 2022 08:07:36 +0200 Subject: [PATCH] nir: honor lower_double options for ffloor and ffract v2: Don't lower ffloor@64 to ffract@64 when both ops are to be lowered. Settle on ffloor in opt_algebraic because in can be lowered to other ops in lower_double_ops. Signed-off-by: Gert Wollny Reviewed-by: Ian Romanick (v1) Jason Ekstrand (v1) Reviewed-by: Emma Anholt (v1) Part-of: --- src/compiler/nir/nir_opt_algebraic.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py index e7f21ad0b7f..e42443ef025 100644 --- a/src/compiler/nir/nir_opt_algebraic.py +++ b/src/compiler/nir/nir_opt_algebraic.py @@ -358,9 +358,15 @@ optimizations.extend([ (('~flrp', a, 0.0, c), ('fadd', ('fmul', ('fneg', a), c), a)), (('ftrunc', a), ('bcsel', ('flt', a, 0.0), ('fneg', ('ffloor', ('fabs', a))), ('ffloor', ('fabs', a))), 'options->lower_ftrunc'), - (('ffloor', a), ('fsub', a, ('ffract', a)), 'options->lower_ffloor'), - (('fadd', a, ('fneg', ('ffract', a))), ('ffloor', a), '!options->lower_ffloor'), - (('ffract', a), ('fsub', a, ('ffloor', a)), 'options->lower_ffract'), + (('ffloor@16', a), ('fsub', a, ('ffract', a)), 'options->lower_ffloor'), + (('ffloor@32', a), ('fsub', a, ('ffract', a)), 'options->lower_ffloor'), + (('ffloor@64', a), ('fsub', a, ('ffract', a)), 'options->lower_ffloor || ((options->lower_doubles_options & nir_lower_dfloor) && !(options->lower_doubles_options & nir_lower_dfloor))'), + (('fadd@16', a, ('fneg', ('ffract', a))), ('ffloor', a), '!options->lower_ffloor'), + (('fadd@32', a, ('fneg', ('ffract', a))), ('ffloor', a), '!options->lower_ffloor'), + (('fadd@64', a, ('fneg', ('ffract', a))), ('ffloor', a), '!options->lower_ffloor && !(options->lower_doubles_options & nir_lower_dfloor)'), + (('ffract@16', a), ('fsub', a, ('ffloor', a)), 'options->lower_ffract'), + (('ffract@32', a), ('fsub', a, ('ffloor', a)), 'options->lower_ffract'), + (('ffract@64', a), ('fsub', a, ('ffloor', a)), 'options->lower_ffract || (options->lower_doubles_options & nir_lower_dfract)'), (('fceil', a), ('fneg', ('ffloor', ('fneg', a))), 'options->lower_fceil'), (('ffma@16', a, b, c), ('fadd', ('fmul', a, b), c), 'options->lower_ffma16'), (('ffma@32', a, b, c), ('fadd', ('fmul', a, b), c), 'options->lower_ffma32'),