[Mesa-dev] [PATCH 0/6] An attempt to speed up register set creation
Jason Ekstrand
jason at jlekstrand.net
Sat Aug 15 11:31:21 PDT 2015
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.
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