[Mesa-dev] [PATCH] intel/fs: Get rid of fs_inst::equals

Iago Toral itoral at igalia.com
Mon Jan 28 07:39:04 UTC 2019


On Fri, 2019-01-25 at 15:47 -0600, Jason Ekstrand wrote:
> There are piles of fields that it doesn't check so using it is a lie.
> The only reason why it's not causing problem is because it has
> exactly
> one user which only uses it for MOV instructions (which aren't very
> interesting) and only on Sandy Bridge and earlier hardware.  Just get
> rid of it and inline it in the one place that it's actually used.
> 
> Cc: Iago Toral Quiroga <itoral at igalia.com>
> ---
>  src/intel/compiler/brw_fs.cpp  | 29 +++++++----------------------
>  src/intel/compiler/brw_ir_fs.h |  1 -
>  2 files changed, 7 insertions(+), 23 deletions(-)
> 
> diff --git a/src/intel/compiler/brw_fs.cpp
> b/src/intel/compiler/brw_fs.cpp
> index 0359eb079f7..6b66116f46b 100644
> --- a/src/intel/compiler/brw_fs.cpp
> +++ b/src/intel/compiler/brw_fs.cpp
> @@ -212,27 +212,6 @@ fs_visitor::DEP_RESOLVE_MOV(const fs_builder
> &bld, int grf)
>     ubld.MOV(ubld.null_reg_f(), fs_reg(VGRF, grf,
> BRW_REGISTER_TYPE_F));
>  }
>  
> -bool
> -fs_inst::equals(fs_inst *inst) const
> -{
> -   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]) &&
> -           saturate == inst->saturate &&
> -           predicate == inst->predicate &&
> -           conditional_mod == inst->conditional_mod &&
> -           mlen == inst->mlen &&
> -           base_mrf == inst->base_mrf &&
> -           target == inst->target &&
> -           eot == inst->eot &&
> -           header_size == inst->header_size &&
> -           shadow_compare == inst->shadow_compare &&
> -           exec_size == inst->exec_size &&
> -           offset == inst->offset);
> -}
> -
>  bool
>  fs_inst::is_send_from_grf() const
>  {
> @@ -3410,7 +3389,13 @@ fs_visitor::remove_duplicate_mrf_writes()
>        if (inst->opcode == BRW_OPCODE_MOV &&
>  	  inst->dst.file == MRF) {
>           fs_inst *prev_inst = last_mrf_move[inst->dst.nr];
> -	 if (prev_inst && inst->equals(prev_inst)) {
> +	 if (prev_inst && prev_inst->opcode == BRW_OPCODE_MOV &&
> +             inst->dst.equals(prev_inst->dst) &&
> +	     inst->src[0].equals(prev_inst->src[0]) &&

Wrong indentation. Otherwise:

Reviewed-by: Iago Toral Quiroga <itoral at igalia.com>


> +             inst->saturate == prev_inst->saturate &&
> +             inst->predicate == prev_inst->predicate &&
> +             inst->conditional_mod == prev_inst->conditional_mod &&
> +             inst->exec_size == prev_inst->exec_size) {
>  	    inst->remove(block);
>  	    progress = true;
>  	    continue;
> diff --git a/src/intel/compiler/brw_ir_fs.h
> b/src/intel/compiler/brw_ir_fs.h
> index 08e3d83d910..d05357e822e 100644
> --- a/src/intel/compiler/brw_ir_fs.h
> +++ b/src/intel/compiler/brw_ir_fs.h
> @@ -347,7 +347,6 @@ public:
>  
>     void resize_sources(uint8_t num_sources);
>  
> -   bool equals(fs_inst *inst) const;
>     bool is_send_from_grf() const;
>     bool is_partial_write() const;
>     bool is_copy_payload(const brw::simple_allocator &grf_alloc)
> const;



More information about the mesa-dev mailing list