diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2d32d85660b7ebac9338facb8f6061c32b78fe40..e1180ac75fafa2a7520f14c712834755798bca22 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2002-01-23  Kazu Hirata  <kazu@hxi.com>
+
+	* config/h8300/h8300.md (*andorhi3): Accept 0x8000 as an
+	operand[3].
+
 2002-01-23  Jason Merrill  <jason@redhat.com>
 
 	* tree.c (build1): Don't set TREE_READONLY on INDIRECT_REF.
diff --git a/gcc/config/h8300/h8300.md b/gcc/config/h8300/h8300.md
index e6229a2b94458d54de0dac017dea6085a1bc09dc..ab05d4966cb7e62210d6da5f3a660d1f8320bc86 100644
--- a/gcc/config/h8300/h8300.md
+++ b/gcc/config/h8300/h8300.md
@@ -1061,11 +1061,12 @@
 (define_insn "*andorhi3"
   [(set (match_operand:HI 0 "register_operand" "=r")
 	(ior:HI (and:HI (match_operand:HI 2 "register_operand" "r")
-			(match_operand:HI 3 "p_operand" "P"))
+			(match_operand:HI 3 "const_int_operand" "n"))
 	(match_operand:HI 1 "register_operand" "0")))]
-  ""
+  "exact_log2 (INTVAL (operands[3]) & 0xffff) != -1"
   "*
 {
+  operands[3] = GEN_INT (INTVAL (operands[3]) & 0xffff);
   if (INTVAL (operands[3]) > 128)
     {
       operands[3] = GEN_INT (INTVAL (operands[3]) >> 8);