From: Matt Turner Date: Fri, 18 Apr 2014 17:01:41 +0000 (-0700) Subject: i965/fs: Optimize SEL with the same sources into a MOV. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=fab92fa1cba4196a4947731e7105bd1494dfffc4;p=mesa.git i965/fs: Optimize SEL with the same sources into a MOV. instructions in affected programs: 474 -> 462 (-2.53%) Reviewed-by: Kenneth Graunke --- 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: