Commit 9c514326 by Hans-Peter Nilsson Committed by Hans-Peter Nilsson

re PR target/25706 (invalid asm: "mov")

	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
parent f749178d
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> 2006-01-11 Jan Hubicka <jh@suse.cz>
PR target/25042 PR target/25042
......
...@@ -468,7 +468,7 @@ cris_op_str (rtx x) ...@@ -468,7 +468,7 @@ cris_op_str (rtx x)
break; break;
case UMIN: 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. */ BOUND has none. */
cris_output_insn_is_bound = 1; cris_output_insn_is_bound = 1;
return "bound"; return "bound";
...@@ -872,6 +872,13 @@ cris_print_operand (FILE *file, rtx x, int code) ...@@ -872,6 +872,13 @@ cris_print_operand (FILE *file, rtx x, int code)
break; break;
case 'e': 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 /* Print 's' if operand is SIGN_EXTEND or 'u' if ZERO_EXTEND unless
cris_output_insn_is_bound is nonzero. */ cris_output_insn_is_bound is nonzero. */
if (GET_CODE (operand) != SIGN_EXTEND if (GET_CODE (operand) != SIGN_EXTEND
......
...@@ -1686,8 +1686,8 @@ ...@@ -1686,8 +1686,8 @@
|| CONST_OK_FOR_LETTER_P (INTVAL (operands[3]), 'J'))) || CONST_OK_FOR_LETTER_P (INTVAL (operands[3]), 'J')))
return "#"; return "#";
if (which_alternative == 4) if (which_alternative == 4)
return "%x5%e6.%m6 [%4=%3%S2],%0"; return "%x5%E6.%m6 [%4=%3%S2],%0";
return "%x5%e6.%m6 [%4=%2%S3],%0"; return "%x5%E6.%m6 [%4=%2%S3],%0";
}) })
(define_insn "*extop<mode>si_side" (define_insn "*extop<mode>si_side"
...@@ -1715,8 +1715,8 @@ ...@@ -1715,8 +1715,8 @@
|| CONST_OK_FOR_LETTER_P (INTVAL (operands[3]), 'J'))) || CONST_OK_FOR_LETTER_P (INTVAL (operands[3]), 'J')))
return "#"; return "#";
if (which_alternative == 4) if (which_alternative == 4)
return "%x5%e6<m> [%4=%3%S2],%0"; return "%x5%E6<m> [%4=%3%S2],%0";
return "%x5%e6<m> [%4=%2%S3],%0"; return "%x5%E6<m> [%4=%2%S3],%0";
}) })
...@@ -1766,7 +1766,7 @@ ...@@ -1766,7 +1766,7 @@
&& cris_side_effect_mode_ok (MULT, operands, 5, 4, 2, 3, 0)" && 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")
;; [rx=ry+i] ;; [rx=ry+i]
;; FIXME: GCC should widen. ;; FIXME: GCC should widen.
...@@ -1823,8 +1823,8 @@ ...@@ -1823,8 +1823,8 @@
|| CONST_OK_FOR_LETTER_P (INTVAL (operands[3]), 'J'))) || CONST_OK_FOR_LETTER_P (INTVAL (operands[3]), 'J')))
return "#"; return "#";
if (which_alternative == 4) if (which_alternative == 4)
return \"%x6%e5.%m5 [%4=%3%S2],%0\"; return \"%x6%E5.%m5 [%4=%3%S2],%0\";
return "%x6%e5<m> [%4=%2%S3],%0"; return "%x6%E5<m> [%4=%2%S3],%0";
}) })
;; Extend versions (zero/sign) of normal add/sub (no side-effects). ;; Extend versions (zero/sign) of normal add/sub (no side-effects).
...@@ -1843,10 +1843,10 @@ ...@@ -1843,10 +1843,10 @@
"GET_MODE_SIZE (GET_MODE (operands[0])) <= UNITS_PER_WORD "GET_MODE_SIZE (GET_MODE (operands[0])) <= UNITS_PER_WORD
&& (operands[1] != frame_pointer_rtx || GET_CODE (operands[3]) != PLUS)" && (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,%0
%x3%e4.%m4 %2,%0 %x3%E4.%m4 %2,%0
%x3%e4.%m4 %2,%1,%0" %x3%E4.%m4 %2,%1,%0"
[(set_attr "slottable" "yes,yes,no,no") [(set_attr "slottable" "yes,yes,no,no")
(set_attr "cc" "clobber")]) (set_attr "cc" "clobber")])
...@@ -1864,10 +1864,10 @@ ...@@ -1864,10 +1864,10 @@
&& GET_MODE_SIZE (GET_MODE (operands[0])) <= UNITS_PER_WORD && GET_MODE_SIZE (GET_MODE (operands[0])) <= UNITS_PER_WORD
&& (operands[1] != frame_pointer_rtx || GET_CODE (operands[3]) != PLUS)" && (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,%0
%x3%e4<m> %2,%0 %x3%E4<m> %2,%0
%x3%e4<m> %2,%1,%0" %x3%E4<m> %2,%1,%0"
[(set_attr "slottable" "yes,yes,no,no")]) [(set_attr "slottable" "yes,yes,no,no")])
...@@ -1903,10 +1903,10 @@ ...@@ -1903,10 +1903,10 @@
"(GET_CODE (operands[4]) != UMIN || GET_CODE (operands[3]) == ZERO_EXTEND) "(GET_CODE (operands[4]) != UMIN || GET_CODE (operands[3]) == ZERO_EXTEND)
&& operands[1] != frame_pointer_rtx" && operands[1] != frame_pointer_rtx"
"@ "@
%x4%e3<m> %2,%0 %x4%E3<m> %2,%0
%x4%e3<m> %2,%0 %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,%1,%0"
[(set_attr "slottable" "yes,yes,no,no")]) [(set_attr "slottable" "yes,yes,no,no")])
;; This is the special case when we use what corresponds to the ;; This is the special case when we use what corresponds to the
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment