aboutsummaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2012-11-09 11:48:20 -0800
committerEric Anholt <[email protected]>2012-12-04 16:58:46 -0800
commitf22a909a080d603db122ac8517a80bd8f4006fe2 (patch)
treef9bfb16691e52559e186a1d3fe6b58113f7d7a6e /src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp
parent9156d0cba1090c4bcc3a6c0c7b2ad8921a295be4 (diff)
i965/fs: Restrict optimization that would fail for gen7's SENDs from GRFs
v2: Fix SNB math bug in register_coalesce() where I was looking at the instruction to be removed, not the instruction to be copy propagated into.
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp')
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp b/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp
index d296e48c038..c9c90284eac 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp
@@ -216,9 +216,8 @@ fs_visitor::try_copy_propagate(fs_inst *inst, int arg, acp_entry *entry)
bool has_source_modifiers = entry->src.abs || entry->src.negate;
- if (intel->gen == 6 && inst->is_math() &&
- (has_source_modifiers || entry->src.file == UNIFORM ||
- entry->src.smear != -1))
+ if ((has_source_modifiers || entry->src.file == UNIFORM ||
+ entry->src.smear != -1) && !can_do_source_mods(inst))
return false;
inst->src[arg].file = entry->src.file;