[gcc]
commita081294b7b3ce64e316d538ab966feec530e8db5
authormeissner <meissner@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 31 Jul 2013 20:04:07 +0000 (31 20:04 +0000)
committermeissner <meissner@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 31 Jul 2013 20:04:07 +0000 (31 20:04 +0000)
tree8fca80180a443821ea64db1f6fcab18e36937b55
parentdfed47f2506654c607fb5098aced0600c5996797
[gcc]
2013-07-31  Michael Meissner  <meissner@linux.vnet.ibm.com>

* config/rs6000/predicates.md (fusion_gpr_addis): New predicates
to support power8 load fusion.
(fusion_gpr_mem_load): Likewise.

* config/rs6000/rs6000-modes.def (PTImode): Update a comment.

* config/rs6000/rs6000-protos.h (fusion_gpr_load_p): New
declarations for power8 load fusion.
(emit_fusion_gpr_load): Likewise.

* config/rs6000/rs6000.c (rs6000_option_override_internal): If
tuning for power8, turn on fusion mode by default.  Turn on sign
extending fusion mode if normal fusion mode is on, and we are at
-O2 or -O3.
(fusion_gpr_load_p): New function, return true if we can fuse an
addis instruction with a dependent load to a GPR.
(emit_fusion_gpr_load): Emit the instructions for power8 load
fusion to GPRs.

* config/rs6000/vsx.md (VSX_M2): New iterator for fusion
peepholes.
(VSX load fusion peepholes): New peepholes to fuse together an
addi instruction with a VSX load instruction.

* config/rs6000/rs6000.md (GPR load fusion peepholes): New
peepholes to fuse an addis instruction with a load to a GPR base
register.  If we are supporting sign extending fusions, convert
sign extending loads to zero extending loads and add an explicit
sign extension.

[gcc/testsuite]
2013-07-31  Michael Meissner  <meissner@linux.vnet.ibm.com>

* gcc.target/powerpc/fusion.c: New file, test power8 fusion
support.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@201385 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/config/rs6000/predicates.md
gcc/config/rs6000/rs6000-modes.def
gcc/config/rs6000/rs6000-protos.h
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/rs6000.md
gcc/config/rs6000/vsx.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/powerpc/fusion.c [new file with mode: 0644]