[Mesa-dev] [PATCH 1/2] i965/fs: Use a const reference in fs_reg::equals instead of a pointer.

Ian Romanick idr at freedesktop.org
Fri May 11 14:25:45 PDT 2012


On 05/10/2012 04:10 PM, Kenneth Graunke wrote:
> This lets you omit some ampersands and is more idiomatic C++.  Using
> const also marks the function as not altering either register (which
> was obvious, but nice to enforce).

I'm increasingly *not* a fan of this sort of weird infix notation. 
Infix notation really only "reads" if operator symbols are used.  I'd 
much rather have a friend function.  Instead of

     if (foo.equals(bar)) {
     }

I'd much rather see

     if (equal(foo, bar)) {
     }

But that's just this programmers opinion.

Since you're keeping the style of the code as it existed,

Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

> Signed-off-by: Kenneth Graunke<kenneth at whitecape.org>
> ---
>   src/mesa/drivers/dri/i965/brw_fs.cpp         |    2 +-
>   src/mesa/drivers/dri/i965/brw_fs.h           |   28 +++++++++++++-------------
>   src/mesa/drivers/dri/i965/brw_fs_visitor.cpp |    2 +-
>   3 files changed, 16 insertions(+), 16 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
> index fd67318..bcdedf0 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
> @@ -1618,7 +1618,7 @@ fs_visitor::get_instruction_generating_reg(fs_inst *start,
>          end->predicated ||
>          end->force_uncompressed ||
>          end->force_sechalf ||
> -       !reg.equals(&end->dst)) {
> +       !reg.equals(end->dst)) {
>         return NULL;
>      } else {
>         return end;
> diff --git a/src/mesa/drivers/dri/i965/brw_fs.h b/src/mesa/drivers/dri/i965/brw_fs.h
> index 6b45c4e..d4473a2 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs.h
> +++ b/src/mesa/drivers/dri/i965/brw_fs.h
> @@ -126,18 +126,18 @@ public:
>      fs_reg(enum register_file file, int reg, uint32_t type);
>      fs_reg(class fs_visitor *v, const struct glsl_type *type);
>
> -   bool equals(fs_reg *r)
> +   bool equals(const fs_reg&r) const
>      {
> -      return (file == r->file&&
> -	      reg == r->reg&&
> -	      reg_offset == r->reg_offset&&
> -	      type == r->type&&
> -	      negate == r->negate&&
> -	      abs == r->abs&&
> -	      memcmp(&fixed_hw_reg,&r->fixed_hw_reg,
> +      return (file == r.file&&
> +	      reg == r.reg&&
> +	      reg_offset == r.reg_offset&&
> +	      type == r.type&&
> +	      negate == r.negate&&
> +	      abs == r.abs&&
> +	      memcmp(&fixed_hw_reg,&r.fixed_hw_reg,
>   		     sizeof(fixed_hw_reg)) == 0&&
> -	      smear == r->smear&&
> -	      imm.u == r->imm.u);
> +	      smear == r.smear&&
> +	      imm.u == r.imm.u);
>      }
>
>      /** Register file: ARF, GRF, MRF, IMM. */
> @@ -291,10 +291,10 @@ public:
>      bool equals(fs_inst *inst)
>      {
>         return (opcode == inst->opcode&&
> -	      dst.equals(&inst->dst)&&
> -	      src[0].equals(&inst->src[0])&&
> -	      src[1].equals(&inst->src[1])&&
> -	      src[2].equals(&inst->src[2])&&
> +	      dst.equals(inst->dst)&&
> +	      src[0].equals(inst->src[0])&&
> +	      src[1].equals(inst->src[1])&&
> +	      src[2].equals(inst->src[2])&&
>   	saturate == inst->saturate&&
>   	predicated == inst->predicated&&
>   	conditional_mod == inst->conditional_mod&&
> diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
> index 20d4c53..bb0c8bd 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
> @@ -569,7 +569,7 @@ fs_visitor::emit_assignment_writes(fs_reg&l, fs_reg&r,
>   	 l.type = brw_type_for_base_type(type);
>   	 r.type = brw_type_for_base_type(type);
>
> -	 if (predicated || !l.equals(&r)) {
> +	 if (predicated || !l.equals(r)) {
>   	    fs_inst *inst = emit(BRW_OPCODE_MOV, l, r);
>   	    inst->predicated = predicated;
>   	 }



More information about the mesa-dev mailing list