]> git.ipfire.org Git - thirdparty/gcc.git/commit
[RS6000] PowerPC64 soft-float
authoramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 30 Nov 2018 13:35:25 +0000 (13:35 +0000)
committeramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 30 Nov 2018 13:35:25 +0000 (13:35 +0000)
commit9e622efe71adfa646da1e7bc3c78010fd9fc9626
treed3cba1d26194ebe465ba3abbdc1bc4b7e64133af
parentd75dd45b378dc4d28daa4ea7fa74f1b3d8d9b1f1
[RS6000] PowerPC64 soft-float

This patch aims to prevent long sequences loading soft-float
constants.  For 32-bit, it makes sense to load values inline to a gpr
with lis, addi, but not so much for 64-bit where a 5 insn sequence
might be needed for each gpr.  For TFmode in particular, a 10 insn
sequence is reduced to 2 loads from memory plus 1 or 2 address setup
insns.

* config/rs6000/predicates.md (easy_fp_constant): Avoid long
dependent insn sequences.
* config/rs6000/rs6000.c (num_insns_constant): Support long
double constants.
* config/rs6000/rs6000.md (mov<mode>_softfloat <FMOVE128>): Adjust
length attribute.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266663 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/config/rs6000/predicates.md
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/rs6000.md