i965/fs: Optimize SEL with the same sources into a MOV.

instructions in affected programs:     474 -> 462 (-2.53%)

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
Matt Turner 2014-04-18 10:01:41 -07:00
parent 35bc02dee8
commit fab92fa1cb

View file

@ -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: