Mesa (master): nir: Add algebraic optimizations for division and reciprocal.

Kenneth Graunke kwg at kemper.freedesktop.org
Fri Jan 23 22:55:23 UTC 2015


Module: Mesa
Branch: master
Commit: 15063d2ad0945004ef387511d0c805bbe734bc5f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=15063d2ad0945004ef387511d0c805bbe734bc5f

Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Wed Jan 21 23:52:17 2015 -0800

nir: Add algebraic optimizations for division and reciprocal.

These also exist in opt_algebraic.cpp.

total NIR instructions in shared programs: 2011430 -> 2011211 (-0.01%)
NIR instructions in affected programs:     42221 -> 42002 (-0.52%)
helped:                                    198

total i965 instructions in shared programs: 6020553 -> 6020116 (-0.01%)
i965 instructions in affected programs:     84322 -> 83885 (-0.52%)
helped:                                     394
HURT:                                       1 (by 1 instruction)

Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
Reviewed-by: Jason Ekstrand <jason.ekstrand at intel.com>
Reviewed-by: Matt Turner <mattst88 at gmail.com>

---

 src/glsl/nir/nir_opt_algebraic.py |    5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/glsl/nir/nir_opt_algebraic.py b/src/glsl/nir/nir_opt_algebraic.py
index 42846e1..9c62b28 100644
--- a/src/glsl/nir/nir_opt_algebraic.py
+++ b/src/glsl/nir/nir_opt_algebraic.py
@@ -106,6 +106,11 @@ optimizations = [
    (('fpow', a, 1.0), a),
    (('fpow', a, 2.0), ('fmul', a, a)),
    (('fpow', 2.0, a), ('fexp2', a)),
+   # Division and reciprocal
+   (('fdiv', 1.0, a), ('frcp', a)),
+   (('frcp', ('frcp', a)), a),
+   (('frcp', ('fsqrt', a)), ('frsq', a)),
+   (('frcp', ('frsq', a)), ('fsqrt', a)),
 
 # This one may not be exact
    (('feq', ('fadd', a, b), 0.0), ('feq', a, ('fneg', b))),




More information about the mesa-commit mailing list