[Mesa-dev] [PATCH 2/6] nir: Turn bcsel of +/- 1.0 and 0.0 into b2f sequences.

Kenneth Graunke kenneth at whitecape.org
Wed Aug 10 02:30:15 UTC 2016


On Haswell (GL 3.3):

total instructions in shared programs: 6208759 -> 6203860 (-0.08%)
instructions in affected programs: 856541 -> 851642 (-0.57%)
helped: 3157
HURT: 113
LOST:   7
GAINED: 15

On Broadwell (GL 4.4):

total instructions in shared programs: 11637854 -> 11632016 (-0.05%)
instructions in affected programs: 1055693 -> 1049855 (-0.55%)
helped: 3900
HURT: 176
LOST:   1
GAINED: 18

Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
---
 src/compiler/nir/nir_opt_algebraic.py | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py
index 1cf614c..4e9896f 100644
--- a/src/compiler/nir/nir_opt_algebraic.py
+++ b/src/compiler/nir/nir_opt_algebraic.py
@@ -251,6 +251,10 @@ optimizations = [
    (('ieq', 'a at bool', False), ('inot', 'a')),
    (('bcsel', a, True, False), ('ine', a, 0)),
    (('bcsel', a, False, True), ('ieq', a, 0)),
+   (('bcsel at 32', a, 1.0, 0.0), ('b2f', ('ine', a, 0))),
+   (('bcsel at 32', a, 0.0, 1.0), ('b2f', ('ieq', a, 0))),
+   (('bcsel at 32', a, -1.0, -0.0), ('fneg', ('b2f', ('ine', a, 0)))),
+   (('bcsel at 32', a, -0.0, -1.0), ('fneg', ('b2f', ('ieq', a, 0)))),
    (('bcsel', True, b, c), b),
    (('bcsel', False, b, c), c),
    # The result of this should be hit by constant propagation and, in the
-- 
2.9.0



More information about the mesa-dev mailing list