Mesa (master): nir: Recognize mul(b2f(a), b2f(b)) as a logical AND.

Matt Turner mattst88 at kemper.freedesktop.org
Tue Mar 24 21:45:16 UTC 2015


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

Author: Matt Turner <mattst88 at gmail.com>
Date:   Tue Mar 17 23:30:32 2015 -0700

nir: Recognize mul(b2f(a), b2f(b)) as a logical AND.

Transform this into b2f(and(a, b)).

total instructions in shared programs: 6205448 -> 6204391 (-0.02%)
instructions in affected programs:     284030 -> 282973 (-0.37%)
helped:                                903
HURT:                                  6

Acked-by: Ian Romanick <ian.d.romanick at intel.com>
Reviewed-by: Connor Abbott <cwabbott0 at gmail.com>

---

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

diff --git a/src/glsl/nir/nir_opt_algebraic.py b/src/glsl/nir/nir_opt_algebraic.py
index ef855aa..f956edf 100644
--- a/src/glsl/nir/nir_opt_algebraic.py
+++ b/src/glsl/nir/nir_opt_algebraic.py
@@ -95,6 +95,8 @@ optimizations = [
    (('fsat', a), ('fmin', ('fmax', a, 0.0), 1.0), 'options->lower_fsat'),
    (('fsat', ('fsat', a)), ('fsat', a)),
    (('fmin', ('fmax', ('fmin', ('fmax', a, 0.0), 1.0), 0.0), 1.0), ('fmin', ('fmax', a, 0.0), 1.0)),
+   # Emulating booleans
+   (('fmul', ('b2f', a), ('b2f', b)), ('b2f', ('iand', a, b))),
    # Comparison with the same args.  Note that these are not done for
    # the float versions because NaN always returns false on float
    # inequalities.




More information about the mesa-commit mailing list