nir: add min/max optimisation
Add the following optimisations: min(x, -x) = -abs(x) min(x, -abs(x)) = -abs(x) min(x, abs(x)) = x max(x, -abs(x)) = x max(x, abs(x)) = abs(x) max(x, -x) = abs(x) shader-db: total instructions in shared programs: 13067779 -> 13067775 (-0.00%) instructions in affected programs: 249 -> 245 (-1.61%) helped: 4 HURT: 0 total cycles in shared programs: 252054838 -> 252054806 (-0.00%) cycles in affected programs: 504 -> 472 (-6.35%) helped: 2 HURT: 0 Signed-off-by: Elie Tournier <tournier.elie@gmail.com> Reviewed-by: Plamena Manolova <plamena.manolova@intel.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
parent
f22ee14644
commit
9fdaeb7776
|
@ -171,6 +171,18 @@ optimizations = [
|
|||
(('imax', a, a), a),
|
||||
(('umin', a, a), a),
|
||||
(('umax', a, a), a),
|
||||
(('fmin', a, ('fneg', a)), ('fneg', ('fabs', a))),
|
||||
(('imin', a, ('ineg', a)), ('ineg', ('iabs', a))),
|
||||
(('fmin', a, ('fneg', ('fabs', a))), ('fneg', ('fabs', a))),
|
||||
(('imin', a, ('ineg', ('iabs', a))), ('ineg', ('iabs', a))),
|
||||
(('fmin', a, ('fabs', a)), a),
|
||||
(('imin', a, ('iabs', a)), a),
|
||||
(('fmax', a, ('fneg', ('fabs', a))), a),
|
||||
(('imax', a, ('ineg', ('iabs', a))), a),
|
||||
(('fmax', a, ('fabs', a)), ('fabs', a)),
|
||||
(('imax', a, ('iabs', a)), ('iabs', a)),
|
||||
(('fmax', a, ('fneg', a)), ('fabs', a)),
|
||||
(('imax', a, ('ineg', a)), ('iabs', a)),
|
||||
(('~fmin', ('fmax', a, 0.0), 1.0), ('fsat', a), '!options->lower_fsat'),
|
||||
(('~fmax', ('fmin', a, 1.0), 0.0), ('fsat', a), '!options->lower_fsat'),
|
||||
(('fsat', a), ('fmin', ('fmax', a, 0.0), 1.0), 'options->lower_fsat'),
|
||||
|
|
Loading…
Reference in New Issue