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

Richard Guenther rguenther@suse.de
Tue Dec 9 23:18:00 GMT 2008


On Tue, 9 Dec 2008, Steven Bosscher wrote:

> Hi,
> 
> 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).

I think this makes sense at least for x86_64, it also would make
the register-pressure aware PRE patch less controversical.

Thanks,
Richard.



More information about the Gcc-patches mailing list