diff options
author | Matt Turner <[email protected]> | 2014-09-08 12:06:49 -0700 |
---|---|---|
committer | Matt Turner <[email protected]> | 2014-09-27 12:18:37 -0700 |
commit | b9689c6bda8bbebccf8d070646406ab82913f8c0 (patch) | |
tree | 6bdf01ab722e2934af7ea141ebdc3f7e24879d3f | |
parent | 82bdb559a160129774d2e2f235cb2b18c907d713 (diff) |
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 <[email protected]>
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_fs_saturate_propagation.cpp | 3 |
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 6f8f8d05c0c..6f7fb6c4e2c 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; |