[Mesa-dev] [PATCH 0/6] An attempt to speed up register set creation

Jason Ekstrand jason at jlekstrand.net
Sat Aug 15 12:44:24 PDT 2015


On Sat, Aug 15, 2015 at 11:31 AM, Jason Ekstrand <jason at jlekstrand.net> wrote:
> This series was inspired by a patch from Chris Willson entitled
> "util/register_allocate: Compute transitive conflicts using 2-passes"
>
> The basic idea is the same: Instead of marking transitive conflicts as you
> go, just mark conflicts with the base register up-front and apply
> transitivity later.  One nice result of this is that with this and
> pre-calculated q-values, we can get rid of the expensive conflict lists
> that we build inside the allocator.  This takes a full piglit run on 32-bit
> baytrail from about 28 minutes to 22 due to the reduction in screen
> creation time.
>
> The last patch makes BITSET_WORD a 64-bit value on 64-bit systems.  I don't
> actually have perf numbers for that, but it should help ra setup as well as
> liveness analysis and a whole host of other compiler tasks.

Scratch the last two.  It turns out they hurt *a lot*.  Screen
creation takes 2.5x as long with the last patch.  I have no idea why
yet.

> Cc: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Eric Anholt <eric at anholt.net>
>
> Jason Ekstrand (6):
>   util/bitset: Add a BITSET_FOREACH_SET macro
>   util/ra: Add a function for making all conflicts on a register
>     transitive
>   i965/reg_allocate: Use make_reg_conflicts_transitive
>   util/ra: Make allocating conflict lists optional
>   gallium/util: Add an implementation of ffsl
>   util/bitset: Use a long for bitset words
>
>  src/gallium/auxiliary/util/u_math.h                | 12 ++++++
>  src/gallium/drivers/freedreno/ir3/ir3_ra.c         |  2 +-
>  .../drivers/r300/compiler/radeon_pair_regalloc.c   |  3 +-
>  src/gallium/drivers/vc4/vc4_register_allocate.c    |  2 +-
>  src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp  | 12 ++++--
>  .../drivers/dri/i965/brw_vec4_reg_allocate.cpp     |  7 +++-
>  src/util/bitset.h                                  | 37 +++++++++++++++-
>  src/util/register_allocate.c                       | 49 ++++++++++++++++++----
>  src/util/register_allocate.h                       |  4 +-
>  9 files changed, 109 insertions(+), 19 deletions(-)
>
> --
> 2.4.3
>


More information about the mesa-dev mailing list