re PR target/25706 (invalid asm: "mov")
authorHans-Peter Nilsson <hp@axis.com>
Wed, 11 Jan 2006 13:43:08 +0000 (13:43 +0000)
committerHans-Peter Nilsson <hp@gcc.gnu.org>
Wed, 11 Jan 2006 13:43:08 +0000 (13:43 +0000)
PR target/25706
* config/cris/cris.md ("*extopqihi_side", "*extop<mode>si_side")
("*extop<mode>si_swap_side_biap", "*extop<mode>si_swap_side",
("*extopqihi", "*extop<mode>si", "*extop<mode>si_swap"): Use %E
output pattern modifier, not %e.
* config/cris/cris.c (cris_op_str): Update comment about pattern
modifier.
(cris_print_operand) <case 'e'>: Clear cris_output_insn_is_bound
before falling through into...
<case 'E'>: Redefined from old 'e' case.

From-SVN: r109584

gcc/ChangeLog
gcc/config/cris/cris.c
gcc/config/cris/cris.md

index 3624d2fea59fba4db862e0573dedaec9e1cd416a..929e003f112ebfa6cdda88e61630d77b3f238872 100644 (file)
@@ -1,3 +1,16 @@
+2006-01-11  Hans-Peter Nilsson  <hp@axis.com>
+
+       PR target/25706
+       * config/cris/cris.md ("*extopqihi_side", "*extop<mode>si_side")
+       ("*extop<mode>si_swap_side_biap", "*extop<mode>si_swap_side",
+       ("*extopqihi", "*extop<mode>si", "*extop<mode>si_swap"): Use %E
+       output pattern modifier, not %e.
+       * config/cris/cris.c (cris_op_str): Update comment about pattern
+       modifier.
+       (cris_print_operand) <case 'e'>: Clear cris_output_insn_is_bound
+       before falling through into...
+       <case 'E'>: Redefined from old 'e' case.
+
 2006-01-11  Jan Hubicka  <jh@suse.cz>
 
        PR target/25042
index 63b5ba71d1f08e8ecd3fa91fa4177313e75f7750..8271a4ff4a18e5bbc1dc8212b6ae360d6dcd4174 100644 (file)
@@ -468,7 +468,7 @@ cris_op_str (rtx x)
       break;
 
     case UMIN:
-      /* Used to control the sign/zero-extend character for the 'e' modifier.
+      /* Used to control the sign/zero-extend character for the 'E' modifier.
         BOUND has none.  */
       cris_output_insn_is_bound = 1;
       return "bound";
@@ -872,6 +872,13 @@ cris_print_operand (FILE *file, rtx x, int code)
       break;
 
     case 'e':
+      /* Like 'E', but ignore state set by 'x'.  FIXME: Use code
+        iterators ("code macros") and attributes in cris.md to avoid
+        the need for %x and %E (and %e) and state passed between
+        those modifiers.  */
+      cris_output_insn_is_bound = 0;
+      /* FALL THROUGH.  */
+    case 'E':
       /* Print 's' if operand is SIGN_EXTEND or 'u' if ZERO_EXTEND unless
         cris_output_insn_is_bound is nonzero.  */
       if (GET_CODE (operand) != SIGN_EXTEND
index a6573195b44dc57d6fcfd834bc992a5555ff6a8e..9fcc4b01e4b6f8ab6dedb5a20eff240d959dcb57 100644 (file)
          || CONST_OK_FOR_LETTER_P (INTVAL (operands[3]), 'J')))
     return "#";
   if (which_alternative == 4)
-    return "%x5%e6.%m6 [%4=%3%S2],%0";
-  return "%x5%e6.%m6 [%4=%2%S3],%0";
+    return "%x5%E6.%m6 [%4=%3%S2],%0";
+  return "%x5%E6.%m6 [%4=%2%S3],%0";
 })
 
 (define_insn "*extop<mode>si_side"
          || CONST_OK_FOR_LETTER_P (INTVAL (operands[3]), 'J')))
     return "#";
   if (which_alternative == 4)
-    return "%x5%e6<m> [%4=%3%S2],%0";
-  return "%x5%e6<m> [%4=%2%S3],%0";
+    return "%x5%E6<m> [%4=%3%S2],%0";
+  return "%x5%E6<m> [%4=%2%S3],%0";
 })
 \f
 
    && cris_side_effect_mode_ok (MULT, operands, 5, 4, 2, 3, 0)"
   "@
    #
-   %x7%e6<m> [%5=%4+%2%T3],%0")
+   %x7%E6<m> [%5=%4+%2%T3],%0")
 \f
 ;; [rx=ry+i]
 ;; FIXME: GCC should widen.
          || CONST_OK_FOR_LETTER_P (INTVAL (operands[3]), 'J')))
     return "#";
   if (which_alternative == 4)
-    return \"%x6%e5.%m5 [%4=%3%S2],%0\";
-  return "%x6%e5<m> [%4=%2%S3],%0";
+    return \"%x6%E5.%m5 [%4=%3%S2],%0\";
+  return "%x6%E5<m> [%4=%2%S3],%0";
 })
 \f
 ;; Extend versions (zero/sign) of normal add/sub (no side-effects).
   "GET_MODE_SIZE (GET_MODE (operands[0])) <= UNITS_PER_WORD
    && (operands[1] != frame_pointer_rtx || GET_CODE (operands[3]) != PLUS)"
   "@
-   %x3%e4.%m4 %2,%0
-   %x3%e4.%m4 %2,%0
-   %x3%e4.%m4 %2,%0
-   %x3%e4.%m4 %2,%1,%0"
+   %x3%E4.%m4 %2,%0
+   %x3%E4.%m4 %2,%0
+   %x3%E4.%m4 %2,%0
+   %x3%E4.%m4 %2,%1,%0"
   [(set_attr "slottable" "yes,yes,no,no")
    (set_attr "cc" "clobber")])
 
    && GET_MODE_SIZE (GET_MODE (operands[0])) <= UNITS_PER_WORD
    && (operands[1] != frame_pointer_rtx || GET_CODE (operands[3]) != PLUS)"
   "@
-   %x3%e4<m> %2,%0
-   %x3%e4<m> %2,%0
-   %x3%e4<m> %2,%0
-   %x3%e4<m> %2,%1,%0"
+   %x3%E4<m> %2,%0
+   %x3%E4<m> %2,%0
+   %x3%E4<m> %2,%0
+   %x3%E4<m> %2,%1,%0"
   [(set_attr "slottable" "yes,yes,no,no")])
 \f
 
   "(GET_CODE (operands[4]) != UMIN || GET_CODE (operands[3]) == ZERO_EXTEND)
    && operands[1] != frame_pointer_rtx"
   "@
-   %x4%e3<m> %2,%0
-   %x4%e3<m> %2,%0
-   %x4%e3<m> %2,%0
-   %x4%e3<m> %2,%1,%0"
+   %x4%E3<m> %2,%0
+   %x4%E3<m> %2,%0
+   %x4%E3<m> %2,%0
+   %x4%E3<m> %2,%1,%0"
   [(set_attr "slottable" "yes,yes,no,no")])
 \f
 ;; This is the special case when we use what corresponds to the