diff options
author | Matt Turner <[email protected]> | 2014-04-18 10:01:41 -0700 |
---|---|---|
committer | Matt Turner <[email protected]> | 2014-06-17 09:40:31 -0700 |
commit | fab92fa1cba4196a4947731e7105bd1494dfffc4 (patch) | |
tree | cc1867fdb54ef177ff44c7bcab241e76a3661d8f | |
parent | 35bc02dee8402bf9090b3e21efe2832828919b4f (diff) |
i965/fs: Optimize SEL with the same sources into a MOV.
instructions in affected programs: 474 -> 462 (-2.53%)
Reviewed-by: Kenneth Graunke <[email protected]>
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_fs.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp index 62868d11245..d7b969e46c5 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp @@ -2021,7 +2021,13 @@ fs_visitor::opt_algebraic() } break; case BRW_OPCODE_SEL: - if (inst->saturate && inst->src[1].file == IMM) { + if (inst->src[0].equals(inst->src[1])) { + inst->opcode = BRW_OPCODE_MOV; + inst->src[1] = reg_undef; + inst->predicate = BRW_PREDICATE_NONE; + inst->predicate_inverse = false; + progress = true; + } else if (inst->saturate && inst->src[1].file == IMM) { switch (inst->conditional_mod) { case BRW_CONDITIONAL_LE: case BRW_CONDITIONAL_L: |