summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2013-02-15 21:55:30 -0800
committerIan Romanick <ian.d.romanick@intel.com>2013-03-05 14:57:09 -0800
commit6d60f8cfc4a922eeb8196281ec4baee47dc17fbf (patch)
treee3a3471b1ceb5342e1ea96402bb4865089a2cecc
parent808e01236bd2e12a4ca4beb82a828e5776e38f90 (diff)
i965/fs: Only do CSE when the dst types match.
We could potentially do some CSE even when the dst types aren't the same on gen6 where there is no implicit dst type conversion iirc, or in the case of uniform pull constant loads where the dst type doesn't impact what's stored. But it's not worth worrying about. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> NOTE: This is a candidate for the 9.1 branch. (cherry picked from commit c2a6e529c3bc9e62ad93beb1f5ae427dbbba8a38)
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_cse.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs_cse.cpp b/src/mesa/drivers/dri/i965/brw_fs_cse.cpp
index 70c143af90e..a13ca362699 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_cse.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_cse.cpp
@@ -105,7 +105,8 @@ fs_visitor::opt_cse_local(bblock_t *block, exec_list *aeb)
/* Match current instruction's expression against those in AEB. */
if (inst->opcode == entry->generator->opcode &&
inst->saturate == entry->generator->saturate &&
- operands_match(entry->generator->src, inst->src)) {
+ inst->dst.type == entry->generator->dst.type &&
+ operands_match(entry->generator->src, inst->src)) {
found = true;
progress = true;