+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
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";
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
|| 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