nir/algebraic: avoid double lowering of some fp64 operations
The ffloor@64 case, which lowers to use ffract, is already ignored if nir_lower_dfract is set. Do the same thing for ftrunc@64 and ffract@64 and let nir_lower_doubles take care of them directly instead. Reviewed-by: Caio Oliveira <caio.oliveira@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28702>
This commit is contained in:
@@ -381,7 +381,8 @@ optimizations.extend([
|
||||
|
||||
(('ftrunc@16', a), ('bcsel', ('flt', a, 0.0), ('fneg', ('ffloor', ('fabs', a))), ('ffloor', ('fabs', a))), 'options->lower_ftrunc'),
|
||||
(('ftrunc@32', a), ('bcsel', ('flt', a, 0.0), ('fneg', ('ffloor', ('fabs', a))), ('ffloor', ('fabs', a))), 'options->lower_ftrunc'),
|
||||
(('ftrunc@64', a), ('bcsel', ('flt', a, 0.0), ('fneg', ('ffloor', ('fabs', a))), ('ffloor', ('fabs', a))), 'options->lower_ftrunc || (options->lower_doubles_options & nir_lower_dtrunc)'),
|
||||
(('ftrunc@64', a), ('bcsel', ('flt', a, 0.0), ('fneg', ('ffloor', ('fabs', a))), ('ffloor', ('fabs', a))),
|
||||
'(options->lower_ftrunc || (options->lower_doubles_options & nir_lower_dtrunc)) && !(options->lower_doubles_options & nir_lower_dfloor)'),
|
||||
|
||||
(('ffloor@16', a), ('fsub', a, ('ffract', a)), 'options->lower_ffloor'),
|
||||
(('ffloor@32', a), ('fsub', a, ('ffract', a)), 'options->lower_ffloor'),
|
||||
@@ -394,7 +395,8 @@ optimizations.extend([
|
||||
(('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)'),
|
||||
(('ffract@64', a), ('fsub', a, ('ffloor', a)),
|
||||
'(options->lower_ffract || (options->lower_doubles_options & nir_lower_dfract)) && !(options->lower_doubles_options & nir_lower_dfloor)'),
|
||||
(('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'),
|
||||
|
||||
Reference in New Issue
Block a user