aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2011-04-07 14:02:37 +0000
committerNick Clifton <nickc@gcc.gnu.org>2011-04-07 14:02:37 +0000
commit5a10b0a943a1e7d7a1d0169d7d1c69f128783ca3 (patch)
tree7a59917fe5037aea60cc9ac116105d7513978fa8
parent20c033673b645e883b34e2695f7af287bf839fa9 (diff)
downloadgcc-5a10b0a943a1e7d7a1d0169d7d1c69f128783ca3.zip
gcc-5a10b0a943a1e7d7a1d0169d7d1c69f128783ca3.tar.gz
gcc-5a10b0a943a1e7d7a1d0169d7d1c69f128783ca3.tar.bz2
mn10300.md (movqi_internal): Add alternatives to handle MDR <-> data register transfers.
* config/mn10300/mn10300.md (movqi_internal): Add alternatives to handle MDR <-> data register transfers. (movhi_internal): Likewise. From-SVN: r172099
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/mn10300/mn10300.md18
2 files changed, 20 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7cbbbfb..503fbad 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/mn10300/mn10300.md b/gcc/config/mn10300/mn10300.md
index 3d8e914..f3f23e7 100644
--- a/gcc/config/mn10300/mn10300.md
+++ b/gcc/config/mn10300/mn10300.md
@@ -239,8 +239,8 @@
})
(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))"
{
@@ -250,6 +250,8 @@
return "";
case 1:
case 2:
+ case 5:
+ case 6:
return "mov %1,%0";
case 3:
case 4:
@@ -266,6 +268,8 @@
(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)
])]
)
@@ -283,8 +287,8 @@
})
(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))"
{
@@ -302,6 +306,8 @@
&& REGNO_EXTENDED_P (REGNO (operands[0]), 1))
return "movu %1,%0";
/* FALLTHRU */
+ case 5:
+ case 6:
case 2:
return "mov %1,%0";
case 3:
@@ -320,6 +326,10 @@
(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))
])]
)