h8300.c (output_logical_op): Use sub.w to clear a half of an SImode register on H8...
authorKazu Hirata <kazu@hxi.com>
Sat, 9 Feb 2002 21:49:23 +0000 (21:49 +0000)
committerKazu Hirata <kazu@gcc.gnu.org>
Sat, 9 Feb 2002 21:49:23 +0000 (21:49 +0000)
* config/h8300/h8300.c (output_logical_op): Use sub.w to clear
a half of an SImode register on H8/300.

From-SVN: r49648

gcc/ChangeLog
gcc/config/h8300/h8300.c

index eddba93d20918a942d094aec0030f1db2f2a950c..2a6fbe9fe628ddada1f076d1fe0172ac40cefc3d 100644 (file)
@@ -1,3 +1,8 @@
+2002-02-09  Kazu Hirata  <kazu@hxi.com>
+
+       * config/h8300/h8300.c (output_logical_op): Use sub.w to clear
+       a half of an SImode register on H8/300.
+
 Sat Feb  9 18:28:02 CET 2002  Jan Hubicka  <jh@suse.cz>
 
        * i386.md (movdi_2): Add missing '!'.
index f861290e25ac1f7182b9494b4b8e84f0c1e66a1d..517176d84ff60d1637705b4b88d9ec324586b1b3 100644 (file)
@@ -1567,9 +1567,8 @@ output_logical_op (mode, code, operands)
             1) the special insn (in case of AND or XOR),
             2) the word-wise insn, and
             3) The byte-wise insn.  */
-         if ((TARGET_H8300H || TARGET_H8300S)
-             && ((det & 0x0000ffff) == 0x0000ffff)
-             && code != IOR)
+         if ((det & 0x0000ffff) == 0x0000ffff
+             && (TARGET_H8300 ? (code == AND) : (code != IOR)))
            output_asm_insn ((code == AND)
                             ? "sub.w\t%f0,%f0" : "not.w\t%f0",
                             operands);
@@ -1594,9 +1593,8 @@ output_logical_op (mode, code, operands)
                }
            }
 
-         if ((TARGET_H8300H || TARGET_H8300S)
-             && ((det & 0xffff0000) == 0xffff0000)
-             && code != IOR)
+         if ((det & 0xffff0000) == 0xffff0000
+             && (TARGET_H8300 ? (code == AND) : (code != IOR)))
            output_asm_insn ((code == AND)
                             ? "sub.w\t%e0,%e0" : "not.w\t%e0",
                             operands);