diff options
author | amker <amker@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-07-21 12:10:34 +0000 |
---|---|---|
committer | amker <amker@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-07-21 12:10:34 +0000 |
commit | e435403948a45b0d3af954bda5be57df9ee90f38 (patch) | |
tree | 4a582e17694f1cc2e24784542f1116e649086319 /gcc/config/arm | |
parent | b984f90e3dfcc1d695423063496858e35c2e99d1 (diff) | |
download | gcc-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.c | 23 |
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"); |