]> git.ipfire.org Git - thirdparty/gcc.git/commit
Arm: Fix NEON REG to REG reload failures. (PR/target 88850)
authortnfchris <tnfchris@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 7 Feb 2019 10:05:57 +0000 (10:05 +0000)
committertnfchris <tnfchris@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 7 Feb 2019 10:05:57 +0000 (10:05 +0000)
commitd54f2f3643d812c0cb5107ee33ca8a14882aa432
tree55511b4681cc25c631e9558c463aad79842959e4
parentf87ebcbc466cf15f58db28d36c54dfab2a3e4e59
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.

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