nir: add late opt to turn inot/b2f combos back to bcsel
authorTimothy Arceri <timothy.arceri@collabora.com>
Tue, 3 Jan 2017 11:54:48 +0000 (22:54 +1100)
committerTimothy Arceri <timothy.arceri@collabora.com>
Wed, 11 Jan 2017 22:47:29 +0000 (09:47 +1100)
commit7acc8652268205a266068ea4d059eccce43e1f78
tree856f2a3d0ab276f3fac769d582b50776a9be41bd
parent8f37fc70669024040c954f8a74e9d7b209c867d7
nir: add late opt to turn inot/b2f combos back to bcsel

We turn these from bcsel into inot/b2f combos in order for other
optimisation passes to get further. Once we have finished turn
the ones that remain and are used in more than a single expression
back into a bcsel.

On BDW:

total instructions in shared programs: 13060965 -> 13060297 (-0.01%)
instructions in affected programs: 835701 -> 835033 (-0.08%)
helped: 670
HURT: 2

total cycles in shared programs: 256599536 -> 256598006 (-0.00%)
cycles in affected programs: 114655488 -> 114653958 (-0.00%)
helped: 419
HURT: 240

LOST:   0
GAINED: 1

The 2 HURT is because inserting bcsel creates the only use of
const 1.0 in two shaders from tri-of-friendship-and-madness.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/compiler/nir/nir_opt_algebraic.py
src/compiler/nir/nir_search_helpers.h