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] | |
As I discussed in my 2018 Cauldron talk, the PowerPC GCC compiler supported a subset of the original design for fusion in the power9 hardware using peepholes to fuse together ADDIS instructions and floating point load/store operations. However, while fusion was part of the original power9 design, by the time the machine came out, the fusion support was no longer part of the architecture. This patch removes all of the so-called power9 fusion support for the GCC compiler. It leaves -mpower9-fusion as a deprecated switch in case somebody used it (the switch was never documented). If you do -mcpu=power9, it will turn off the power8 fusion support. If you do -mcpu=power8 and -mtune=power9, it will also turn off the power8 fusion support. I have done a bootstrap on a power9 system and there were no regressions in the tests, other than the two tests for power9 fusion that are now deleted as part of this patch. I have also done runs of the Spec 2006 benchmark on the same machine with and without the patches. The CactusADM benchmark gets a slight bump (1.6%) if it doesn't do the power9 fusion. Can I check these changes into the GCC 9 trunk? [gcc] 2018-11-02 Michael Meissner <meissner@linux.ibm.com> * config/rs6000/constraints.md (wF constraint): Only document the wF constraint for power8 fusion. Remove documentation for power9 fusion. * config/rs6000/predicates.md (p9_fusion_reg_operand): Delete, the predicate only used for power9 fusion support. (fusion_gpr_addis): Drop support to allow fusing offsets where the top 11 bits weren't all 0 or all 1's. (fusion_gpr_mem_load): Add comment about not allowing SFmode or DFmode in power8 fusion. (fusion_addis_mem_combo_load): Drop power9 fusion support. Only support power8 fusion. Add comment about not allowing SFmode or DFmode in power8 fusion. (fusion_offsettable_mem_operand): Delete, the predicate only used for power9 fusion support. * config/rs6000/rs6000-cpus.def (ISA_2_7_MASKS_NO_FUSION): New option masks that is all of the ISA 2.07 bits except for fusion. (ISA_2_7_MASKS_SERVER): Add fusion bits back in. (ISA_3_0_MASKS_SERVER): Delete power9 fusion. Use ISA 2.07 bits without enabling power8 fusion. (POWERPC_MASKS): Delete power9 fusion option mask. * config/rs6000/rs6000-protos.h (emit_fusion_load_store): Delete function declarations used for power9 fusion. (fusion_p9_p): Likewise. (expand_fusion_p9_load): Likewise. (expand_fusion_p9_store): Likewise. (emit_fusion_p9_load): Likewise. (emit_fusion_p9_store): Likewise. * config/rs6000/rs6000.c (rs6000_debug_reg_global): Delete power9 fusion debug print. (rs6000_option_override_internal): Delete power9 fusion option support. If we do -mcpu=power8 -mtune=power9, turn off power8 fusion. (rs6000_opt_masks): Delete power9 fusion option. (emit_fusion_load): Rename function from emit_fusion_load_store. Make the function static. Delete support for fusing stores, since we are deleting power9 fusion. (fusion_p9_p): Delete power9 fusion support functions. (expand_fusion_p9_load): Likewise. (expand_fusion_p9_store): Likewise. (emit_fusion_p9_load): Likewise. (emit_fusion_p9_store): Likewise. * config/rs6000/rs6000.h: Delete comment about power9 fusion. * config/rs6000/rs6000.md (UNSPEC_FUSION_P9): Delete, no longer used since power9 fusion support has been deleted. (GPR_FUSION iterator): Likewise. (FPR_FUSION iterator): Likewise. (power9 fusion peephole2's): Likewise. (fusion_gpr_<P:mode>_<GPR_FUSION:mode>_load): Likewise. (fusion_gpr_<P:mode>_<GPR_FUSION:mode>_store): Likewise. (fusion_vsx_<P:mode>_<FPR_FUSION:mode>_load): Likewise. (fusion_vsx_<P:mode>_<FPR_FUSION:mode>_store): Likewise. (fusion_p9_<mode>_constant): Likewise. * config/rs6000/rs6000.opt (-mpower9-fusion): Mark as deprecated. * doc/md.texi (PowerPC constraints): Update wF documentation. [gcc/testsuite] 2018-11-02 Michael Meissner <meissner@linux.ibm.com> * gcc.target/powerpc/fusion3.c: Delete power9 fusion. * gcc.target/powerpc/fusion4.c: Likewise. -- Michael Meissner, IBM IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA email: meissner@linux.ibm.com, phone: +1 (978) 899-4797
Attachment:
gcc-power9.patch338b
Description: Text document
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |