OSDN Git Service

i965/fs: Enable constant propagation in 16-wide.
authorEric Anholt <eric@anholt.net>
Fri, 25 Mar 2011 18:19:53 +0000 (11:19 -0700)
committerEric Anholt <eric@anholt.net>
Tue, 26 Apr 2011 19:20:16 +0000 (12:20 -0700)
All that needed fixing was skipping the newly-possible
uncompressed/sechalf partial GRF constant writes.

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

index b0fe0c7..7d1be5c 100644 (file)
@@ -3107,10 +3107,6 @@ fs_visitor::propagate_constants()
 {
    bool progress = false;
 
-   /* Need to update the MRF tracking for compressed instructions. */
-   if (c->dispatch_width == 16)
-      return false;
-
    calculate_live_intervals();
 
    foreach_iter(exec_list_iterator, iter, this->instructions) {
@@ -3119,7 +3115,9 @@ fs_visitor::propagate_constants()
       if (inst->opcode != BRW_OPCODE_MOV ||
          inst->predicated ||
          inst->dst.file != GRF || inst->src[0].file != IMM ||
-         inst->dst.type != inst->src[0].type)
+         inst->dst.type != inst->src[0].type ||
+         (c->dispatch_width == 16 &&
+          (inst->force_uncompressed || inst->force_sechalf)))
         continue;
 
       /* Don't bother with cases where we should have had the