[gcc]
commit80af00ad602d3a2468fd8ea4e74fe2ecb2211823
authormeissner <meissner@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 9 May 2017 21:25:23 +0000 (9 21:25 +0000)
committermeissner <meissner@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 9 May 2017 21:25:23 +0000 (9 21:25 +0000)
treedcf9f016d42dcaf7d0dd0f114db64376ab68f8e8
parent5c03ffae0ef631c0481b22f9da65266467858f55
[gcc]
2017-05-09  Michael Meissner  <meissner@linux.vnet.ibm.com>

PR target/68163
* config/rs6000/rs6000.md (f32_lr): Delete mode attributes that
are now unused after splitting mov{sf,sd}_hardfloat.
(f32_lr2): Likewise.
(f32_lm): Likewise.
(f32_lm2): Likewise.
(f32_li): Likewise.
(f32_li2): Likewise.
(f32_lv): Likewise.
(f32_sr): Likewise.
(f32_sr2): Likewise.
(f32_sm): Likewise.
(f32_sm2): Likewise.
(f32_si): Likewise.
(f32_si2): Likewise.
(f32_sv): Likewise.
(f32_dm): Likewise.
(f32_vsx): Likewise.
(f32_av): Likewise.
(mov<mode>_hardfloat): Split into separate movsf and movsd pieces.
For movsf, order stores so the VSX stores occur before the GPR
store which encourages the register allocator to use a traditional
FPR instead of a GPR.  For movsd, order the stores so that the GPR
store comes before the VSX stores to allow the power6 to work.
This is due to the power6 not having a 32-bit integer store
instruction from a FPR.
(movsf_hardfloat): Likewise.
(movsd_hardfloat): Likewise.

[gcc/testsuite]
2017-05-09  Michael Meissner  <meissner@linux.vnet.ibm.com>

PR target/68163
* gcc.target/powerpc/pr68163.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@247819 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/config/rs6000/rs6000.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/powerpc/pr68163.c [new file with mode: 0644]