summaryrefslogtreecommitdiff
path: root/gcc/config/arm
diff options
context:
space:
mode:
authoramker <amker@138bc75d-0d04-0410-961f-82ee72b054a4>2014-07-21 12:10:34 +0000
committeramker <amker@138bc75d-0d04-0410-961f-82ee72b054a4>2014-07-21 12:10:34 +0000
commite435403948a45b0d3af954bda5be57df9ee90f38 (patch)
tree4a582e17694f1cc2e24784542f1116e649086319 /gcc/config/arm
parentb984f90e3dfcc1d695423063496858e35c2e99d1 (diff)
downloadgcc-e435403948a45b0d3af954bda5be57df9ee90f38.tar.gz
* config/arm/arm.c (output_move_neon): Handle REG explicitly.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212892 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/arm')
-rw-r--r--gcc/config/arm/arm.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 942df7d3c13..777495ec17e 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -18551,6 +18551,20 @@ output_move_neon (rtx *operands)
/* FIXME: Not currently enabled in neon_vector_mem_operand. */
gcc_unreachable ();
+ case REG:
+ /* We have to use vldm / vstm for too-large modes. */
+ if (nregs > 1)
+ {
+ if (nregs > 4)
+ templ = "v%smia%%?\t%%m0, %%h1";
+ else
+ templ = "v%s1.64\t%%h1, %%A0";
+
+ ops[0] = mem;
+ ops[1] = reg;
+ break;
+ }
+ /* Fall through. */
case LABEL_REF:
case PLUS:
{
@@ -18584,14 +18598,7 @@ output_move_neon (rtx *operands)
}
default:
- /* We have to use vldm / vstm for too-large modes. */
- if (nregs > 4)
- templ = "v%smia%%?\t%%m0, %%h1";
- else
- templ = "v%s1.64\t%%h1, %%A0";
-
- ops[0] = mem;
- ops[1] = reg;
+ gcc_unreachable ();
}
sprintf (buff, templ, load ? "ld" : "st");