summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Turner <mattst88@gmail.com>2014-09-08 12:06:49 -0700
committerMatt Turner <mattst88@gmail.com>2014-09-27 12:18:37 -0700
commitb9689c6bda8bbebccf8d070646406ab82913f8c0 (patch)
tree6bdf01ab722e2934af7ea141ebdc3f7e24879d3f
parent82bdb559a160129774d2e2f235cb2b18c907d713 (diff)
downloadexternal_mesa3d-b9689c6bda8bbebccf8d070646406ab82913f8c0.zip
external_mesa3d-b9689c6bda8bbebccf8d070646406ab82913f8c0.tar.gz
external_mesa3d-b9689c6bda8bbebccf8d070646406ab82913f8c0.tar.bz2
i965/fs: Ignore mov.sat instructions in interference check in sat prop.
When an instruction's result was consumed by multiple mov.sat instructions, we would decide that we couldn't move the saturate modifier because something else was using the result, even though it was just another mov.sat! total instructions in shared programs: 4275598 -> 4274842 (-0.02%) instructions in affected programs: 75634 -> 74878 (-1.00%) Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_saturate_propagation.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs_saturate_propagation.cpp b/src/mesa/drivers/dri/i965/brw_fs_saturate_propagation.cpp
index 6f8f8d0..6f7fb6c 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_saturate_propagation.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_saturate_propagation.cpp
@@ -67,7 +67,8 @@ opt_saturate_propagation_local(fs_visitor *v, bblock_t *block)
break;
}
for (int i = 0; i < scan_inst->sources; i++) {
- if (scan_inst->src[i].file == GRF &&
+ if ((scan_inst->opcode != BRW_OPCODE_MOV || !scan_inst->saturate) &&
+ scan_inst->src[i].file == GRF &&
scan_inst->src[i].reg == inst->src[0].reg &&
scan_inst->src[i].reg_offset == inst->src[0].reg_offset) {
interfered = true;