summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMatt Turner <[email protected]>2016-02-22 15:16:49 -0800
committerMatt Turner <[email protected]>2016-03-30 13:12:34 -0700
commit6702f1acde9e93e41783fd2f4a7999fed8d9cb75 (patch)
tree7e12aee6b93345560ddcae23d518a07d5edfc423 /src
parenta74fc3fe8ada87e1fedeea86f2d93f736a1217bc (diff)
nir: Propagate negates up multiplication chains.
total instructions in shared programs: 7112159 -> 7088092 (-0.34%) instructions in affected programs: 1374915 -> 1350848 (-1.75%) helped: 7392 HURT: 621 GAINED: 2 LOST: 2
Diffstat (limited to 'src')
-rw-r--r--src/compiler/nir/nir_opt_algebraic.py4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py
index 53633233f2b..c2e56e71734 100644
--- a/src/compiler/nir/nir_opt_algebraic.py
+++ b/src/compiler/nir/nir_opt_algebraic.py
@@ -269,6 +269,10 @@ optimizations = [
(('fabs', ('fsub', 0.0, a)), ('fabs', a)),
(('iabs', ('isub', 0, a)), ('iabs', a)),
+ # Propagate negation up multiplication chains
+ (('fmul', ('fneg', a), b), ('fneg', ('fmul', a, b))),
+ (('imul', ('ineg', a), b), ('ineg', ('fmul', a, b))),
+
# Misc. lowering
(('fmod', a, b), ('fsub', a, ('fmul', b, ('ffloor', ('fdiv', a, b)))), 'options->lower_fmod'),
(('uadd_carry', a, b), ('b2i', ('ult', ('iadd', a, b), a)), 'options->lower_uadd_carry'),