re PR target/78101 (PowerPC 64-bit little endian fusion failure with -O3 -mcpu=power9)
commitc80620fcfa577f25449c727758627f47224cfaf9
authorMichael Meissner <meissner@linux.vnet.ibm.com>
Thu, 17 Nov 2016 21:42:13 +0000 (17 21:42 +0000)
committerMichael Meissner <meissner@gcc.gnu.org>
Thu, 17 Nov 2016 21:42:13 +0000 (17 21:42 +0000)
tree036e8f9e6cf13af843d4f8cf0ec5b27bf17122af
parentf8691e98180da3205b8a19ff34f6656c46c4c92a
re PR target/78101 (PowerPC 64-bit little endian fusion failure with -O3 -mcpu=power9)

[gcc]
2016-11-17  Michael Meissner  <meissner@linux.vnet.ibm.com>

PR target/78101
* config/rs6000/predicates.md (fusion_addis_mem_combo_load): Add
the appropriate checks for SFmode/DFmode load/stores in GPR
registers.
(fusion_addis_mem_combo_store): Likewise.
* config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Rename
fusion_fpr_* to fusion_vsx_* and add in support for ISA 3.0 scalar
d-form instructions for traditional Altivec registers.
(emit_fusion_p9_load): Likewise.
(emit_fusion_p9_store): Likewise.
* config/rs6000/rs6000.md (p9 fusion store peephole2): Remove
early clobber from scratch register.  Do not match if the register
being stored is the scratch register.
(fusion_vsx_<P:mode>_<FPR_FUSION:mode>_load): Rename fusion_fpr_*
to fusion_vsx_* and add in support for ISA 3.0 scalar d-form
instructions for traditional Altivec registers.
(fusion_fpr_<P:mode>_<FPR_FUSION:mode>_load): Likewise.
(fusion_vsx_<P:mode>_<FPR_FUSION:mode>_store): Likewise.
(fusion_fpr_<P:mode>_<FPR_FUSION:mode>_store): Likewise.

[gcc/testsuite]
2016-11-17  Michael Meissner  <meissner@linux.vnet.ibm.com>

PR target/78101
* gcc.target/powerpc/fusion4.c: New test.

From-SVN: r242564
gcc/ChangeLog
gcc/config/rs6000/predicates.md
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/rs6000.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/powerpc/fusion4.c [new file with mode: 0644]