i965/fs: Do more register coalescing by using the interference graph.
authorEric Anholt <eric@anholt.net>
Tue, 8 May 2012 17:18:20 +0000 (10:18 -0700)
committerEric Anholt <eric@anholt.net>
Thu, 17 May 2012 17:05:23 +0000 (10:05 -0700)
commitf220f73b9c5aca16ca21ea8bbbbf8718703b12cf
tree029c81c6a5d42b30a11fc35c3c16e6339cbe60fc
parent1befacc7647f51344f5cfbfa86b62e53625a436f
i965/fs: Do more register coalescing by using the interference graph.

By using the live variables code for determining interference, we can
handle coalescing in the presence of control flow, which the other
register coalescing path couldn't.

Total instructions: 207184 -> 206990
74/1246 programs affected (5.9%)
33993 -> 33799 instructions in affected programs (0.6% reduction)

There is a newerth shader that loses out, because of some extra MOVs
that now get their dead-code nature obscured by coalescing.  This
should be fixed by doing better at dead code elimination.
src/mesa/drivers/dri/i965/brw_fs.cpp
src/mesa/drivers/dri/i965/brw_fs.h