arm.c (output_move_neon): Handle REG explicitly.
authorBin Cheng <bin.cheng@arm.com>
Fri, 5 Sep 2014 03:31:29 +0000 (03:31 +0000)
committerBin Cheng <amker@gcc.gnu.org>
Fri, 5 Sep 2014 03:31:29 +0000 (03:31 +0000)
* config/arm/arm.c (output_move_neon): Handle REG explicitly.

From-SVN: r214935

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

index 9fedacc45564ff2d2c9e3c64e785f9be55df2e27..27169c22119289070826371396a428b4f21ccabf 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 9ffdb3d8ea15e15f6f43cf864cb7f4e8478950e5..15c634196a069f8ee3995af18b1449010b662adc 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");