nir: Pull b2f out of bcsel
authorIan Romanick <ian.d.romanick@intel.com>
Thu, 1 Feb 2018 23:33:04 +0000 (15:33 -0800)
committerIan Romanick <ian.d.romanick@intel.com>
Tue, 6 Mar 2018 19:17:29 +0000 (11:17 -0800)
All platforms had similar results. (Skylake shown)
total instructions in shared programs: 14516592 -> 14516586 (<.01%)
instructions in affected programs: 500 -> 494 (-1.20%)
helped: 2
HURT: 0

total cycles in shared programs: 533167044 -> 533166998 (<.01%)
cycles in affected programs: 6988 -> 6942 (-0.66%)
helped: 2
HURT: 0

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
src/compiler/nir/nir_opt_algebraic.py

index 553f82065a1fa6cf2202289c6dc922bf11de6043..d94536439c8fb1cd7620fc4d7c4a313b56ccc6f5 100644 (file)
@@ -372,6 +372,7 @@ optimizations = [
    (('bcsel@32', a, -0.0, -1.0), ('fneg', ('b2f', ('inot', a)))),
    (('bcsel', True, b, c), b),
    (('bcsel', False, b, c), c),
+   (('bcsel', a, ('b2f(is_used_once)', b), ('b2f', c)), ('b2f', ('bcsel', a, b, c))),
    # The result of this should be hit by constant propagation and, in the
    # next round of opt_algebraic, get picked up by one of the above two.
    (('bcsel', '#a', b, c), ('bcsel', ('ine', 'a', 0), b, c)),