On 04/28/2014 01:36 PM, Matt Turner wrote: > --- > src/mesa/drivers/dri/i965/brw_fs.h | 2 +- > src/mesa/drivers/dri/i965/brw_fs_visitor.cpp | 17 +++++++++++------ > 2 files changed, 12 insertions(+), 7 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_fs.h > b/src/mesa/drivers/dri/i965/brw_fs.h > index 2a1a81d..24d995b 100644 > --- a/src/mesa/drivers/dri/i965/brw_fs.h > +++ b/src/mesa/drivers/dri/i965/brw_fs.h > @@ -422,7 +422,7 @@ public: > void emit_minmax(uint32_t conditionalmod, const fs_reg &dst, > const fs_reg &src0, const fs_reg &src1); > bool try_emit_saturate(ir_expression *ir); > - bool try_emit_mad(ir_expression *ir, int mul_arg); > + bool try_emit_mad(ir_expression *ir); > void try_replace_with_sel(); > bool opt_peephole_sel(); > bool opt_peephole_predicated_break(); > diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp > b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp > index 2aa3acd..aa177cb 100644 > --- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp > +++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp > @@ -291,7 +291,7 @@ fs_visitor::try_emit_saturate(ir_expression *ir) > } > > bool > -fs_visitor::try_emit_mad(ir_expression *ir, int mul_arg) > +fs_visitor::try_emit_mad(ir_expression *ir) > { > /* 3-src instructions were introduced in gen6. */ > if (brw->gen < 6) > @@ -301,11 +301,16 @@ fs_visitor::try_emit_mad(ir_expression *ir, int mul_arg) > if (ir->type != glsl_type::float_type) > return false; > > - ir_rvalue *nonmul = ir->operands[1 - mul_arg]; > - ir_expression *mul = ir->operands[mul_arg]->as_expression(); > + ir_rvalue *nonmul = ir->operands[1]; > + ir_expression *mul = ir->operands[0]->as_expression(); > > - if (!mul || mul->operation != ir_binop_mul) > - return false; > + if (!mul || mul->operation != ir_binop_mul) { > + nonmul = ir->operands[0]; > + mul = ir->operands[1]->as_expression(); > + > + if (!mul || mul->operation != ir_binop_mul) > + return false; > + } > > if (nonmul->as_constant() || > mul->operands[0]->as_constant() || > @@ -339,7 +344,7 @@ fs_visitor::visit(ir_expression *ir) > if (try_emit_saturate(ir)) > return; > if (ir->operation == ir_binop_add) { > - if (try_emit_mad(ir, 0) || try_emit_mad(ir, 1)) > + if (try_emit_mad(ir)) > return; > } > >
Both patches are: Reviewed-by: Kenneth Graunke <kenn...@whitecape.org>
signature.asc
Description: OpenPGP digital signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev