[Mesa-dev] [PATCH 1/2] i965/fs: Remove 'mul_arg' from try_emit_mad().

Kenneth Graunke kenneth at whitecape.org
Mon Apr 28 14:07:56 PDT 2014


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 <kenneth at whitecape.org>

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20140428/7feb5b92/attachment.sig>


More information about the mesa-dev mailing list