[Mesa-dev] [PATCH] i965/vec4: Detect and delete useless MOVs.

Kenneth Graunke kenneth at whitecape.org
Mon Sep 21 14:16:30 PDT 2015


On Monday, September 21, 2015 02:04:00 PM Matt Turner wrote:
> With NIR:
> 
> instructions in affected programs:     111508 -> 109193 (-2.08%)
> helped:                                507
> 
> Without NIR:
> 
> instructions in affected programs:     28763 -> 28474 (-1.00%)
> helped:                                186
> ---
>  src/mesa/drivers/dri/i965/brw_vec4.cpp | 21 +++++++++++++++++++++
>  1 file changed, 21 insertions(+)
> 
> diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp b/src/mesa/drivers/dri/i965/brw_vec4.cpp
> index ed49cd3..d09a8dd 100644
> --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp
> @@ -1021,6 +1021,27 @@ vec4_visitor::opt_register_coalesce()
>  	  inst->src[0].abs || inst->src[0].negate || inst->src[0].reladdr)
>  	 continue;
>  
> +      if (inst->dst.file == inst->src[0].file &&
> +          inst->dst.reg == inst->src[0].reg &&
> +          inst->dst.reg_offset == inst->src[0].reg_offset) {
> +         bool is_nop_mov = true;
> +
> +         for (unsigned c = 0; c < 4; c++) {
> +            if ((inst->dst.writemask & (1 << c)) == 0)
> +               continue;
> +
> +            if (BRW_GET_SWZ(inst->src[0].swizzle, c) != c) {
> +               is_nop_mov = false;
> +               break;
> +            }
> +         }
> +
> +         if (is_nop_mov) {
> +            inst->remove(block);
> +            continue;
> +         }
> +      }
> +
>        bool to_mrf = (inst->dst.file == MRF);
>  
>        /* Can't coalesce this GRF if someone else was going to
> 

Seems like this would break for:

   mov(8) g2<1>F g2.xyzw<4,4,1>D

or

   mov(8) g2<1>F -|g2.xyzw|<4,4,1>F

Did I miss something?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150921/6ce956b8/attachment.sig>


More information about the mesa-dev mailing list