mesa/src/util
Francisco Jerez f80af89d48 ra: Disable round-robin strategy for optimistically colorable nodes.
The round-robin allocation strategy is expected to decrease the amount
of false dependencies created by the register allocator and give the
post-RA scheduling pass more freedom to move instructions around.  On
the other hand it has the disadvantage of increasing fragmentation and
decreasing the number of equally-colored nearby nodes, what increases
the likelihood of failure in presence of optimistically colorable
nodes.

This patch disables the round-robin strategy for optimistically
colorable nodes.  These typically arise in situations of high register
pressure or for registers with large live intervals, in both cases the
task of the instruction scheduler shouldn't be constrained excessively
by the dense packing of those nodes, and a spill (or on Intel hardware
a fall-back to SIMD8 mode) is invariably worse than a slightly less
optimal scheduling.

Shader-db results on the i965 driver:

total instructions in shared programs: 5488539 -> 5488489 (-0.00%)
instructions in affected programs:     1121 -> 1071 (-4.46%)
helped:                                1
HURT:                                  0
GAINED:                                49
LOST:                                  5

v2: Re-enable round-robin already for the lowest one of the nodes
    pushed optimistically onto the sack (Connor).
v3: Use UINT_MAX instead of ~0, open-code MIN2 (Jason, Connor).

Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
2015-02-23 20:55:40 +02:00
..
tests/hash_table util/hash: Silence comparison between signed and unsigned integer warnings in tests 2015-02-17 12:29:58 -08:00
.gitignore util: add u_atomic_test to .gitignore 2014-12-16 13:50:59 +02:00
Android.mk util: Include in Android builds 2014-10-03 01:25:28 +01:00
bitset.h util: Move Mesa's bitset.h to util/. 2015-02-20 11:36:34 -08:00
format_srgb.h util: include c99_compat.h in format_srgb.h to get 'inline' definition 2014-08-04 14:06:13 -06:00
format_srgb.py gallium: Move sRGB <-> RGB handling to libmesautil 2014-08-04 11:07:15 -07:00
hash_table.c util/hash_table: Do a full search when adding new items 2015-02-07 17:01:05 -08:00
hash_table.h hash_table: Rename insert_with_hash to insert_pre_hashed 2015-01-15 13:21:27 -08:00
macros.h Revert "util: Move the alternate fpclassify implementation to util" 2015-01-28 13:20:26 -08:00
Makefile.am mesa: Add gallium include dirs to more parts of the tree. 2015-02-20 11:36:34 -08:00
Makefile.sources util: Move Mesa's bitset.h to util/. 2015-02-20 11:36:34 -08:00
mesa-sha1.c Rename sha1.c and sha1.h to mesa-sha1.c and mesa-sha1.h 2015-01-19 10:53:07 -08:00
mesa-sha1.h Rename sha1.c and sha1.h to mesa-sha1.c and mesa-sha1.h 2015-01-19 10:53:07 -08:00
ralloc.c util: Move ralloc to a new src/util directory. 2014-08-04 11:06:58 -07:00
ralloc.h ralloc: Mark ralloc functions with gcc's malloc attribute. 2014-09-25 13:52:55 -07:00
register_allocate.c ra: Disable round-robin strategy for optimistically colorable nodes. 2015-02-23 20:55:40 +02:00
register_allocate.h mesa: Move register_allocate.c to util. 2014-09-23 13:40:10 -07:00
rgtc.c util: move shared rgtc code to util (v2) 2014-09-17 11:27:25 +10:00
rgtc.h util: move shared rgtc code to util (v2) 2014-09-17 11:27:25 +10:00
SConscript mesa: Add gallium include dirs to more parts of the tree. 2015-02-20 11:36:34 -08:00
set.c util/set: Do a full search when adding new items 2015-02-07 17:01:05 -08:00
set.h util/hash_set: Rework the API to know about hashing 2015-01-15 13:21:27 -08:00
simple_list.h mesa: Port a variant of 68afbe89c7 to util/ 2015-01-28 16:33:34 -08:00
strtod.cpp util: initialize locale_t with a static object 2014-10-30 02:26:19 -07:00
strtod.h util: add _mesa_strtod and _mesa_strtof 2014-10-30 02:26:19 -07:00
texcompress_rgtc_tmp.h util: move shared rgtc code to util (v2) 2014-09-17 11:27:25 +10:00
u_atomic.h Use __typeof instead of typeof with Solaris Studio compilers 2015-02-17 18:16:33 -08:00
u_atomic_test.c uti/u_atomic: Don't test p_atomic_add with booleans. 2015-02-13 19:39:27 +00:00