diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1c45346a7dbbf22347870f3c9651bfae98ab785e..4bdc74556453cc902ec1acd05b7088b45e12dcf3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2001-03-21  Kazu Hirata  <kazu@hxi.com>
+
+	* config/h8300/h8300.md (movsi_h8300hs): Split the 2nd alternative
+	into two parts.
+
 2001-03-20  Jason Merrill  <jason@redhat.com>
 
 	* collect2.c (is_ctor_dtor): Always use '_' in the file fn names,
diff --git a/gcc/config/h8300/h8300.md b/gcc/config/h8300/h8300.md
index 770d737852482f2ef4e5905ffb09f1bdfedfce9b..6daa40047682154589e40f8e168fa8f2700fe07b 100644
--- a/gcc/config/h8300/h8300.md
+++ b/gcc/config/h8300/h8300.md
@@ -399,8 +399,8 @@
    (set_attr "cc" "clobber")])
 
 (define_insn "movsi_h8300hs"
-  [(set (match_operand:SI 0 "general_operand_dst" "=r,r,r,m,<,r,*a,*a,r")
-	(match_operand:SI 1 "general_operand_src" "I,r,im,r,r,>,I,r,*a"))]
+  [(set (match_operand:SI 0 "general_operand_dst" "=r,r,r,r,m,<,r,*a,*a,r")
+	(match_operand:SI 1 "general_operand_src" "I,r,i,m,r,r,>,I,r,*a"))]
   "(TARGET_H8300S || TARGET_H8300H)
    && (register_operand (operands[0], SImode)
        || register_operand (operands[1], SImode))"
@@ -410,11 +410,11 @@
     {
     case 0:
       return \"sub.l	%S0,%S0\";
-    case 6:
-      return \"clrmac\";
     case 7:
-      return \"clrmac\;ldmac %1,macl\";
+      return \"clrmac\";
     case 8:
+      return \"clrmac\;ldmac %1,macl\";
+    case 9:
       return \"stmac	macl,%0\";
     default:
       if (GET_CODE (operands[1]) == CONST_INT)
@@ -446,8 +446,8 @@
     }
    return \"mov.l	%S1,%S0\";
 }"
-  [(set_attr "length" "2,2,10,10,4,4,2,6,4")
-   (set_attr "cc" "set_zn,set_znv,set_znv,set_znv,set_znv,set_znv,none_0hit,none_0hit,set_znv")])
+  [(set_attr "length" "2,2,10,10,10,4,4,2,6,4")
+   (set_attr "cc" "set_zn,set_znv,clobber,set_znv,set_znv,set_znv,set_znv,none_0hit,none_0hit,set_znv")])
 
 (define_insn "movsf_h8300h"
   [(set (match_operand:SF 0 "general_operand_dst" "=r,r,r,m,<,r")