* config/h8300/h8300.c (output_logical_op): Use extu.w in more
authorkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 30 Dec 2002 21:08:42 +0000 (21:08 +0000)
committerkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 30 Dec 2002 21:08:42 +0000 (21:08 +0000)
cases.
(compute_logical_op_length): Update to reflect the change in
output_logical_op.
(compute_logical_op_cc): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@60649 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 7c091ed..8d8098f 100644 (file)
@@ -1,3 +1,11 @@
+2002-12-30  Kazu Hirata  <kazu@cs.umass.edu>
+
+       * config/h8300/h8300.c (output_logical_op): Use extu.w in more
+       cases.
+       (compute_logical_op_length): Update to reflect the change in
+       output_logical_op.
+       (compute_logical_op_cc): Likewise.
+
 2002-12-30  Joseph S. Myers  <jsm@polyomino.org.uk>
 
        * doc/service.texi: Uncomment and update FAQ link.
index e77edaf..baa50bb 100644 (file)
@@ -2152,8 +2152,10 @@ output_logical_op (mode, operands)
          && ((det & 0xffff0000) != 0)
          && (code == IOR || det != 0xffffff00)
          && (code == IOR || det != 0xffff00ff)
-         && (code != AND || det != 0xff00ff00)
-         && (code != AND || det != 0xff0000ff))
+         && !(code == AND
+              && (det == 0xff00ffff
+                  || (det & 0xffff00ff) == 0xff000000
+                  || (det & 0xffffff00) == 0xff000000)))
        {
          sprintf (insn_buf, "%s.l\t%%S2,%%S0", opname);
          output_asm_insn (insn_buf, operands);
@@ -2285,8 +2287,10 @@ compute_logical_op_length (mode, operands)
          && ((det & 0xffff0000) != 0)
          && (code == IOR || det != 0xffffff00)
          && (code == IOR || det != 0xffff00ff)
-         && (code != AND || det != 0xff00ff00)
-         && (code != AND || det != 0xff0000ff))
+         && !(code == AND
+              && (det == 0xff00ffff
+                  || (det & 0xffff00ff) == 0xff000000
+                  || (det & 0xffffff00) == 0xff000000)))
        {
          if (REG_P (operands[2]))
            length += 4;
@@ -2392,8 +2396,10 @@ compute_logical_op_cc (mode, operands)
          && ((det & 0xffff0000) != 0)
          && (code == IOR || det != 0xffffff00)
          && (code == IOR || det != 0xffff00ff)
-         && (code != AND || det != 0xff00ff00)
-         && (code != AND || det != 0xff0000ff))
+         && !(code == AND
+              && (det == 0xff00ffff
+                  || (det & 0xffff00ff) == 0xff000000
+                  || (det & 0xffffff00) == 0xff000000)))
        {
          cc = CC_SET_ZNV;
        }