summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2011-03-25 11:19:53 -0700
committerEric Anholt <eric@anholt.net>2011-04-26 12:20:16 -0700
commit0834607a891f7c2529d1f2cdeca28b6e98899f8b (patch)
tree3d3be30ec8aba3f101de2ad4f8ecda66d6221e6d
parent91d1a141589441b203a2270417ae665f0616ea3c (diff)
i965/fs: Enable constant propagation in 16-wide.
All that needed fixing was skipping the newly-possible uncompressed/sechalf partial GRF constant writes. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs.cpp8
1 files changed, 3 insertions, 5 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
index b0fe0c7c8e..7d1be5c008 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
@@ -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