aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorBin Cheng <bin.cheng@arm.com>2014-07-21 12:10:34 +0000
committerBin Cheng <amker@gcc.gnu.org>2014-07-21 12:10:34 +0000
commit8cde4e713af3f47e8fe7fefaa64ba404d91efdd8 (patch)
tree4a582e17694f1cc2e24784542f1116e649086319 /gcc
parent38303b1a3de1583f8862848f6548873451de65e1 (diff)
downloadgcc-8cde4e713af3f47e8fe7fefaa64ba404d91efdd8.zip
gcc-8cde4e713af3f47e8fe7fefaa64ba404d91efdd8.tar.gz
gcc-8cde4e713af3f47e8fe7fefaa64ba404d91efdd8.tar.bz2
arm.c (output_move_neon): Handle REG explicitly.
* config/arm/arm.c (output_move_neon): Handle REG explicitly. From-SVN: r212892
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 7f12a75..fc71956c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2014-07-21 Bin Cheng <bin.cheng@arm.com>
+
+ * config/arm/arm.c (output_move_neon): Handle REG explicitly.
+
2014-07-21 Uros Bizjak <ubizjak@gmail.com>
PR target/61855
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 942df7d..777495e 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");