aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorBin Cheng <bin.cheng@arm.com>2014-09-05 03:31:29 +0000
committerBin Cheng <amker@gcc.gnu.org>2014-09-05 03:31:29 +0000
commited5f78b8e940ee05d6ee9230e2d525a31e417d17 (patch)
tree537faea3c3c6b813294aab02cfdbea541635ca32 /gcc
parentf38a26e543f438bebb8bff29abeeace15e08b2e5 (diff)
downloadgcc-ed5f78b8e940ee05d6ee9230e2d525a31e417d17.zip
gcc-ed5f78b8e940ee05d6ee9230e2d525a31e417d17.tar.gz
gcc-ed5f78b8e940ee05d6ee9230e2d525a31e417d17.tar.bz2
arm.c (output_move_neon): Handle REG explicitly.
* config/arm/arm.c (output_move_neon): Handle REG explicitly. From-SVN: r214935
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/config/arm/arm.c23
2 files changed, 19 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9fedacc..27169c2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2014-09-05 Bin Cheng <bin.cheng@arm.com>
+
+ * config/arm/arm.c (output_move_neon): Handle REG explicitly.
+
2014-09-04 Trevor Saunders <tsaunders@mozilla.com>
* valtrack.c (dead_debug_insert_temp): Take an rtx_insn * instead of
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 9ffdb3d..15c6341 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -18555,6 +18555,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:
{
@@ -18588,14 +18602,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");