]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
arm.c (output_move_neon): Handle REG explicitly.
authorBin Cheng <bin.cheng@arm.com>
Mon, 21 Jul 2014 12:10:34 +0000 (12:10 +0000)
committerBin Cheng <amker@gcc.gnu.org>
Mon, 21 Jul 2014 12:10:34 +0000 (12:10 +0000)
* config/arm/arm.c (output_move_neon): Handle REG explicitly.

From-SVN: r212892

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

index 7f12a75c572b8103fd5cd4ad2a5825976af34600..fc71956c4a8ed4b715c490dde866c3a4760e387d 100644 (file)
@@ -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
index 942df7d3c13dc11435048bf2cebeeea5cbe8dca2..777495ec17ef6ec69dfc10edc79ff16ae80f253a 100644 (file)
@@ -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");