* config/arm/arm.c (output_move_neon): Handle REG explicitly.
authoramker <amker@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 5 Sep 2014 03:31:29 +0000 (03:31 +0000)
committeramker <amker@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 5 Sep 2014 03:31:29 +0000 (03:31 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214935 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/arm/arm.c

index 9fedacc..27169c2 100644 (file)
@@ -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
index 9ffdb3d..15c6341 100644 (file)
@@ -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");