freedreno/ir3: use peephole select pass
authorRob Clark <robdclark@gmail.com>
Fri, 19 Jan 2018 21:13:09 +0000 (16:13 -0500)
committerRob Clark <robdclark@gmail.com>
Sat, 10 Feb 2018 19:54:58 +0000 (14:54 -0500)
commitec8bc54ad2ce4e05ff8e3679672a616b1984be80
treec0098b7ae77c386c4be80acaeb08ef266b5a087e
parenta7ea2b4eba003440e82626f025f783c8f250bd30
freedreno/ir3: use peephole select pass

Agressively lowering all if/else to selects in some extreme cases
results in much higher register pressure.  Using peephole select instead
with a modest threshold speeds up alu2 4x!

16 seems like a good limit, low enough to help alu2 but not too low that
it penalizes everything else.  With a bit better scheduling of the
instruction that moves a value into a predicate register, we might be
able to lower this limit a bit more in the future, but since we need 6
cycles from the move to predicate register to predicated branch, that
puts some sort of lower bound on how far we can lower this threshold.

Signed-off-by: Rob Clark <robdclark@gmail.com>
src/gallium/drivers/freedreno/ir3/ir3_nir.c