Mesa (master): nir: Separate a weird compare with zero to two compares with zero

Ian Romanick idr at kemper.freedesktop.org
Tue Jan 30 23:40:26 UTC 2018


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

Author: Ian Romanick <ian.d.romanick at intel.com>
Date:   Thu Jan 11 14:14:25 2018 -0800

nir: Separate a weird compare with zero to two compares with zero

min(a+b, c+d) >= 0 becomes (a+b >= 0 && c+d >= 0).

No shader-db changes, but it does prevent 6 to 12 instruction
regressions in the next patch on all measured Intel platforms.

Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
Reviewed-by: Samuel Iglesias Gonsálvez <siglesias at igalia.com>
Reviewed-by: Elie Tournier <elie.tournier at collabora.com>

---

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

diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py
index c097f12832..bee135c235 100644
--- a/src/compiler/nir/nir_opt_algebraic.py
+++ b/src/compiler/nir/nir_opt_algebraic.py
@@ -596,6 +596,8 @@ late_optimizations = [
    (('~feq', ('fadd', a, b), 0.0), ('feq', a, ('fneg', b))),
    (('~fne', ('fadd', a, b), 0.0), ('fne', a, ('fneg', b))),
 
+   (('~fge', ('fmin(is_used_once)', ('fadd(is_used_once)', a, b), ('fadd', c, d)), 0.0), ('iand', ('fge', a, ('fneg', b)), ('fge', c, ('fneg', d)))),
+
    (('fdot2', a, b), ('fdot_replicated2', a, b), 'options->fdot_replicates'),
    (('fdot3', a, b), ('fdot_replicated3', a, b), 'options->fdot_replicates'),
    (('fdot4', a, b), ('fdot_replicated4', a, b), 'options->fdot_replicates'),




More information about the mesa-commit mailing list