From 29361e14df8e5e92df747d52303da2c454e2cacc Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Thu, 1 Sep 2011 16:43:38 -0700 Subject: i965/vs: Allow copy propagation on GRFs. Further reduces instruction count by 4.0% in 40.7% of the vertex shaders. --- src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp b/src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp index 7862d78ab33..c46735abfab 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp @@ -187,6 +187,7 @@ try_copy_propagation(struct intel_context *intel, value.swizzle = BRW_SWIZZLE4(s[0], s[1], s[2], s[3]); if (value.file != UNIFORM && + value.file != GRF && value.file != ATTR) return false; @@ -204,6 +205,10 @@ try_copy_propagation(struct intel_context *intel, if (intel->gen >= 6 && inst->is_math()) return false; + /* Don't report progress if this is a noop. */ + if (value.equals(&inst->src[arg])) + return false; + inst->src[arg] = value; return true; } @@ -307,7 +312,7 @@ vec4_visitor::opt_copy_propagation() cur_value[i][j] && cur_value[i][j]->file == GRF && cur_value[i][j]->reg == inst->dst.reg && - cur_value[i][j]->reg == inst->dst.reg) { + cur_value[i][j]->reg_offset == inst->dst.reg_offset) { cur_value[i][j] = NULL; } } -- cgit v1.2.3