On Thu, Feb 12, 2015 at 03:36:37PM -0800, Matt Turner wrote: > instructions in affected programs: 968 -> 942 (-2.69%) > helped: 4 > --- > src/mesa/drivers/dri/i965/brw_fs.cpp | 9 +++++++++ > src/mesa/drivers/dri/i965/brw_vec4.cpp | 5 +++++ > 2 files changed, 14 insertions(+) > > diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp > b/src/mesa/drivers/dri/i965/brw_fs.cpp > index e74a22e..988e36a 100644 > --- a/src/mesa/drivers/dri/i965/brw_fs.cpp > +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp > @@ -2335,6 +2335,15 @@ fs_visitor::opt_algebraic() > break; > } > > + /* a * -1.0 = -a */ > + if (inst->src[1].is_negative_one()) { > + inst->opcode = BRW_OPCODE_MOV; > + inst->src[0].negate = !inst->src[0].negate;
The indentation looks wrong here. > + inst->src[1] = reg_undef; > + progress = true; > + break; > + } > + > /* a * 0.0 = 0.0 */ > if (inst->src[1].is_zero()) { > inst->opcode = BRW_OPCODE_MOV; > diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp > b/src/mesa/drivers/dri/i965/brw_vec4.cpp > index ee74052..7868465 100644 > --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp > +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp > @@ -725,6 +725,11 @@ vec4_visitor::opt_algebraic() > inst->opcode = BRW_OPCODE_MOV; > inst->src[1] = src_reg(); > progress = true; > + } else if (inst->src[1].is_negative_one()) { > + inst->opcode = BRW_OPCODE_MOV; > + inst->src[0].negate = !inst->src[0].negate; Here too. Also, is this transformation valid when a is INF or NAN? -Tom > + inst->src[1] = src_reg(); > + progress = true; > } > break; > case BRW_OPCODE_CMP: > -- > 2.0.5 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev