i965/vs: Try to emit more components of constant vectors at once.
authorEric Anholt <eric@anholt.net>
Fri, 6 Jan 2012 18:20:09 +0000 (10:20 -0800)
committerEric Anholt <eric@anholt.net>
Wed, 11 Jan 2012 20:06:34 +0000 (12:06 -0800)
commit2c623c2be529edc974ca293f3c71929c639ec0c9
tree4e3050156de1b4910c441cbb2d1775cbbc31c215
parentf1b33c74dc11b97a86a7f0e9cbe4cb168b2b9540
i965/vs: Try to emit more components of constant vectors at once.

We were naively emitting each component at a time, even if we were
emitting the same value to multiple channels.  Improves on a codegen
regression from the old VS to the new VS on some unigine shaders
(because we emit constant vecs/matrices as immediates instead of
loading them as push constants, so we had over 4x the instructions for
using them).

shader-db results:
Total instructions: 58594 -> 58540
11/870 programs affected (1.3%)
765 -> 711 instructions in affected programs (7.1% reduction)
src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp