Arm: Fix NEON REG to REG reload failures. (PR/target 88850)
authorTamar Christina <tamar.christina@arm.com>
Thu, 7 Feb 2019 10:05:57 +0000 (10:05 +0000)
committerTamar Christina <tnfchris@gcc.gnu.org>
Thu, 7 Feb 2019 10:05:57 +0000 (10:05 +0000)
commit4fcb52c4ef09d1b0f9f7afeb60ccf040cfaa1262
tree55511b4681cc25c631e9558c463aad79842959e4
parent51e6029f6994e9185f6ba931402bd7f64f891237
Arm: Fix NEON REG to REG reload failures. (PR/target 88850)

We currently return cost 2 for NEON REG to REG moves, which would be incorrect
for 64 bit moves.  We currently don't have a pattern for this in the neon_move
alternatives because this is a bit of a special case.  We would almost never
want it to use this r -> r pattern unless it really has no choice.

As such we add a new neon r -> r move pattern but also hide it from being used
to determine register preferences and also disparage it during LRA.

gcc/ChangeLog:

PR/target 88850
* config/arm/neon.md (*neon_mov<mode>): Add r -> r case.

gcc/testsuite/ChangeLog:

PR/target 88850
* gcc.target/arm/pr88850.c: New test.

From-SVN: r268612
gcc/ChangeLog
gcc/config/arm/neon.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/arm/pr88850.c [new file with mode: 0644]