[patch][rfc] Hookize SMALL_REGISTER_CLASSES, make SSE register classes not small

Steven Bosscher stevenb.gcc@gmail.com
Tue Dec 9 22:36:00 GMT 2008


Attached is a patch to hookize the SMALL_REGISTER_CLASSES target
macro.  But the actual purpose of the few hours I've spent on this,
was to make it possible to have SMALL_REGISTER_CLASSES be false for
some register classes but not for all.

In the current situation, SMALL_REGISTER_CLASSES is true or false, but
targets are not black and white.  For x86-64, I've noticed we often
get better results with floating point code if I disable
SMALL_REGISTER_CLASSES, but it also results in lots of trouble with
INTEGRAL_MODE_P modes (similar to what happens if you enable
scheduling for x86-64).

With the patch, a target can choose to allow more optimizations when
it has good reason to believe that registers in some machine modes
will not be allocated to small register classes.  I didn't test this
with a recent trunk, but before the IRA merge this gave me a ~1.3%
bonus (average) for the Fortran Polyhedron benchmarks.

As with the code-size aware PRE patch, I'm looking for opinions on
this approach.  Does this look like a reasonable approach?  Would it
be useful for other targets? (I've now simply converted the existing
SMALL_REGISTER_CLASSES definitions to hooks).


-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: hookize_SMALL_REGISTER_CLASSES.diff.txt
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20081209/b852c575/attachment.txt>

More information about the Gcc-patches mailing list