i965/vs: Add support for simple algebraic optimizations.
authorEric Anholt <eric@anholt.net>
Fri, 2 Sep 2011 22:18:29 +0000 (15:18 -0700)
committerEric Anholt <eric@anholt.net>
Tue, 20 Sep 2011 18:28:56 +0000 (11:28 -0700)
commitf0c04e6c22babf2aee2ad1ee85dbd6f996be3712
tree23cc17ad4b994b3e488d290e4aeb6adb4d1fbd8f
parent7288d010e0afeade5357502fdc018fc4928330f6
i965/vs: Add support for simple algebraic optimizations.

We generate silly code for array access, and it's easier to generally
support the cleanup than to specifically avoid the bad code in each
place we might generate it.

Removes 4.6% of instructions from 41.6% of shaders in shader-db,
particularly savage2/hon and unigine.

v2: Fixes by Ken: Make is_zero/one member functions, and fix a
    progress flag.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_vec4.cpp
src/mesa/drivers/dri/i965/brw_vec4.h
src/mesa/drivers/dri/i965/brw_vec4_emit.cpp