i965/fs: Allow CSE on pre-gen7 varying-index uniform loads
authorEric Anholt <eric@anholt.net>
Wed, 20 Mar 2013 00:45:02 +0000 (17:45 -0700)
committerEric Anholt <eric@anholt.net>
Mon, 1 Apr 2013 23:17:26 +0000 (16:17 -0700)
All the other expression types allowed here have inst->mlen == 0, and this
one has implied MRF writes for all of its payload, so nothing else in the
implementation should need to change.

Reduces SEND messages for loading from pull constants in kwin's Lanczos
shader from 16 to 6.  (Due to a deficiency in constant propagation, I
can't use the hack I did in the previous commit to test the performance
change)

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=61554
NOTE: This is a candidate for the 9.1 branch.

src/mesa/drivers/dri/i965/brw_fs_cse.cpp

index 79169669e6ab18eaa246ec4d2ceb7d287c53a3a2..2a8fd0be2e7d6a4e79d5d6659d6c51beb5cfde04 100644 (file)
@@ -97,7 +97,7 @@ fs_visitor::opt_cse_local(bblock_t *block, exec_list *aeb)
        inst = (fs_inst *) inst->next) {
 
       /* Skip some cases. */
-      if (is_expression(inst) && !inst->predicate && inst->mlen == 0 &&
+      if (is_expression(inst) && !inst->predicate &&
           !inst->force_uncompressed && !inst->force_sechalf &&
           !inst->conditional_mod)
       {