nir: Add identities for the exponential function.
authorMatt Turner <mattst88@gmail.com>
Thu, 26 Mar 2015 17:16:24 +0000 (10:16 -0700)
committerMatt Turner <mattst88@gmail.com>
Wed, 1 Apr 2015 20:43:57 +0000 (13:43 -0700)
No changes in shader-db.

Reviewed-by: Eric Anholt <eric@anholt.net>
src/glsl/nir/nir_opt_algebraic.py

index 5b84a4e1cd874cc55414e179d48ef102962fd1f0..db2fe0372062cd4e1dc720ddf72a86272cee3ed2 100644 (file)
@@ -139,6 +139,12 @@ optimizations = [
    (('fpow', a, 1.0), a),
    (('fpow', a, 2.0), ('fmul', a, a)),
    (('fpow', 2.0, a), ('fexp2', a)),
+   (('fsqrt', ('fexp2', a)), ('fexp2', ('fmul', 0.5, a))),
+   (('fsqrt', ('fexp', a)), ('fexp', ('fmul', 0.5, a))),
+   (('frcp', ('fexp2', a)), ('fexp2', ('fneg', a))),
+   (('frcp', ('fexp', a)), ('fexp', ('fneg', a))),
+   (('frsq', ('fexp2', a)), ('fexp2', ('fmul', -0.5, a))),
+   (('frsq', ('fexp', a)), ('fexp', ('fmul', -0.5, a))),
    # Division and reciprocal
    (('fdiv', 1.0, a), ('frcp', a)),
    (('frcp', ('frcp', a)), a),