[Mesa-dev] [PATCH] nir: add min/max optimisation
Elie Tournier
tournier.elie at gmail.com
Wed Jan 18 11:23:22 UTC 2017
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 at gmail.com>
---
src/compiler/nir/nir_opt_algebraic.py | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py
index a557f7bf37..0dfa53fbf4 100644
--- a/src/compiler/nir/nir_opt_algebraic.py
+++ b/src/compiler/nir/nir_opt_algebraic.py
@@ -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'),
--
2.11.0
More information about the mesa-dev
mailing list