From fab92fa1cba4196a4947731e7105bd1494dfffc4 Mon Sep 17 00:00:00 2001 From: Matt Turner Date: Fri, 18 Apr 2014 10:01:41 -0700 Subject: [PATCH] i965/fs: Optimize SEL with the same sources into a MOV. instructions in affected programs: 474 -> 462 (-2.53%) Reviewed-by: Kenneth Graunke --- src/mesa/drivers/dri/i965/brw_fs.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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: -- 2.30.2