This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
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). Thanks, Gr. Steven
Attachment:
hookize_SMALL_REGISTER_CLASSES.diff.txt
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |