[Mesa-dev] [PATCH 1/6] i965: Only consider fixed_hw_reg in equals() if file is HW_REG/IMM.

Kenneth Graunke kenneth at whitecape.org
Thu Aug 27 22:33:16 PDT 2015


On Thursday, August 27, 2015 10:17:24 PM Matt Turner wrote:
> Noticed when debugging things that lead to the next patch.
> 
> On G45 (and presumably ILK) this helps register coalescing:
> 
> total instructions in shared programs: 4077373 -> 4077340 (-0.00%)
> instructions in affected programs:     43751 -> 43718 (-0.08%)
> helped:                                52
> HURT:                                  2
> ---
>  src/mesa/drivers/dri/i965/brw_fs.cpp   | 4 +++-
>  src/mesa/drivers/dri/i965/brw_vec4.cpp | 5 +++--
>  2 files changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
> index 81009a0..269914d 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
> @@ -427,7 +427,9 @@ fs_reg::equals(const fs_reg &r) const
>             negate == r.negate &&
>             abs == r.abs &&
>             !reladdr && !r.reladdr &&
> -           memcmp(&fixed_hw_reg, &r.fixed_hw_reg, sizeof(fixed_hw_reg)) == 0 &&
> +           ((file != HW_REG && file != IMM) ||
> +            memcmp(&fixed_hw_reg, &r.fixed_hw_reg,
> +                   sizeof(fixed_hw_reg)) == 0) &&
>             stride == r.stride);
>  }
>  
> diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp b/src/mesa/drivers/dri/i965/brw_vec4.cpp
> index f18915a..b97b6c1 100644
> --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp
> @@ -216,8 +216,9 @@ dst_reg::equals(const dst_reg &r) const
>             writemask == r.writemask &&
>             (reladdr == r.reladdr ||
>              (reladdr && r.reladdr && reladdr->equals(*r.reladdr))) &&
> -           memcmp(&fixed_hw_reg, &r.fixed_hw_reg,
> -                  sizeof(fixed_hw_reg)) == 0);
> +           ((file != HW_REG && file != IMM) ||
> +            memcmp(&fixed_hw_reg, &r.fixed_hw_reg,
> +                   sizeof(fixed_hw_reg)) == 0));
>  }
>  
>  bool
> 

Nice!  The updated live range handling makes a lot more sense - I always
thought the old stuff was bunk...nice to see it was just papering over bugs.

Series is:
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

Also, thank you for producing a series that, despite touching a complex
piece of code, I was able to review completely in 15 minutes!

-------------- 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/20150827/94fbc788/attachment.sig>


More information about the mesa-dev mailing list