mn10300.md (movqi_internal): Add alternatives to handle MDR <-> data register transfers.
authorNick Clifton <nickc@redhat.com>
Thu, 7 Apr 2011 14:02:37 +0000 (14:02 +0000)
committerNick Clifton <nickc@gcc.gnu.org>
Thu, 7 Apr 2011 14:02:37 +0000 (14:02 +0000)
* config/mn10300/mn10300.md (movqi_internal): Add alternatives
to handle MDR <-> data register transfers.
(movhi_internal): Likewise.

From-SVN: r172099

gcc/ChangeLog
gcc/config/mn10300/mn10300.md

index 7cbbbfb12254a88d7dd8f027de59c01407f4fc01..503fbadf5f5b2712fdf3fa766f54705f6b9aa59e 100644 (file)
@@ -1,3 +1,9 @@
+2011-04-05  Nick Clifton  <nickc@redhat.com>
+
+       * config/mn10300/mn10300.md (movqi_internal): Add alternatives
+       to handle MDR <-> data register transfers.
+       (movhi_internal): Likewise.
+
 2011-04-07  Alan Modra  <amodra@gmail.com>
 
        * config/rs6000/rs6000.c (rs6000_stack_info): Don't compare against
index 3d8e914705250514b23179c7d08f33200cc23e1e..f3f23e7fa3770fafb61b138edc3634ba66780baa 100644 (file)
 })
 
 (define_insn "*movqi_internal"
-  [(set (match_operand:QI 0 "nonimmediate_operand" "=*r,D*r,D*r,D,m")
-       (match_operand:QI 1 "general_operand"      "  0,D*r,  i,m,D"))]
+  [(set (match_operand:QI 0 "nonimmediate_operand" "=*r,D*r,D*r,D,m,*z,d")
+       (match_operand:QI 1 "general_operand"      "  0,D*r,  i,m,D,d,*z"))]
   "(register_operand (operands[0], QImode)
     || register_operand (operands[1], QImode))"
 {
       return "";
     case 1:
     case 2:
+    case 5:
+    case 6:
       return "mov %1,%0";
     case 3:
     case 4:
                        (const_int 13) (const_int 24))
          (if_then_else (eq_attr "cpu" "am34")
                        (const_int 11) (const_int 22))
+         (const_int 11)
+         (const_int 11)
         ])]
 )
 
 })
 
 (define_insn "*movhi_internal"
-  [(set (match_operand:HI 0 "nonimmediate_operand" "=*r,D*r,D*r,D,m")
-       (match_operand:HI 1 "general_operand"      "  0,  i,D*r,m,D"))]
+  [(set (match_operand:HI 0 "nonimmediate_operand" "=*r,D*r,D*r,D,m,*z,d")
+       (match_operand:HI 1 "general_operand"      "  0,  i,D*r,m,D,d,*z"))]
   "(register_operand (operands[0], HImode)
     || register_operand (operands[1], HImode))"
 {
          && REGNO_EXTENDED_P (REGNO (operands[0]), 1))
        return "movu %1,%0";
       /* FALLTHRU */
+    case 5:
+    case 6:
     case 2:
       return "mov %1,%0";
     case 3:
                        (const_int 13) (const_int 24))
          (if_then_else (eq_attr "cpu" "am34")
                        (const_int 11) (const_int 22))
+         (if_then_else (eq_attr "cpu" "am34")
+                       (const_int 11) (const_int 22))
+         (if_then_else (eq_attr "cpu" "am34")
+                       (const_int 11) (const_int 22))
         ])]
 )