nir: Optimize out stores of undefs.
authorKenneth Graunke <kenneth@whitecape.org>
Wed, 20 Apr 2016 09:38:57 +0000 (02:38 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 5 May 2016 21:24:00 +0000 (14:24 -0700)
commitbc0062c54abeab6ee2848315990066fde2ca4d97
treecf7206196bff05c0ab56728b2de99b45e785437e
parentc7a8b3270058a8831ee811494f722d278074b0f1
nir: Optimize out stores of undefs.

There are a couple of cycle count changes in shader-db, but it's
basically a wash.

However, with the Broadwell scalar TCS backend enabled, many
Shadow of Mordor shaders benefit from this patch.  Because we don't
batch up output writes for TCS, vec4 outputs might not have all
components defined.  Many output writes have a value of undef,
which is useless.

With scalar TCS, stats for tessellation shaders on Broadwell:

total instructions in shared programs: 1283000 -> 1280444 (-0.20%)
instructions in affected programs: 34302 -> 31746 (-7.45%)
helped: 71
HURT: 0

total cycles in shared programs: 10798768 -> 10780682 (-0.17%)
cycles in affected programs: 158004 -> 139918 (-11.45%)
helped: 71
HURT: 0

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
src/compiler/nir/nir_opt_undef.c