cris.md ("*andsi_movu", [...]): For size-changed operand where memory is allowed...

* config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
	("*andhi_clear", andu (casesi+45)): For size-changed operand where
	memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.

From-SVN: r121612
This commit is contained in:
Hans-Peter Nilsson 2007-02-05 21:21:50 +00:00 committed by Hans-Peter Nilsson
parent b81aec1b9d
commit c3e786e725
2 changed files with 13 additions and 7 deletions

View File

@ -1,3 +1,9 @@
2007-02-05 Hans-Peter Nilsson <hp@axis.com>
* config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
("*andhi_clear", andu (casesi+45)): For size-changed operand where
memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
2007-02-05 Roger Sayle <roger@eyesopen.com>
* fold-const.c (fold_unary) <REAL_PART>: Test for availability of

View File

@ -1,5 +1,5 @@
;; GCC machine description for CRIS cpu cores.
;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
;; Free Software Foundation, Inc.
;; Contributed by Axis Communications.
@ -2229,7 +2229,7 @@
(and:SI (match_operand:SI 1 "nonimmediate_operand" "%r,Q,To")
(match_operand:SI 2 "const_int_operand" "n,n,n")))]
"(INTVAL (operands[2]) == 255 || INTVAL (operands[2]) == 65535)
&& (GET_CODE (operands[1]) != MEM || ! MEM_VOLATILE_P (operands[1]))"
&& !side_effects_p (operands[1])"
"movu.%z2 %1,%0"
[(set_attr "slottable" "yes,yes,no")])
@ -2238,7 +2238,7 @@
(and:SI (match_operand:SI 1 "nonimmediate_operand" "%0,0,0,0,0,0")
(match_operand:SI 2 "const_int_operand" "P,n,P,n,P,n")))]
"(INTVAL (operands[2]) == -65536 || INTVAL (operands[2]) == -256)
&& (GET_CODE (operands[0]) != MEM || ! MEM_VOLATILE_P (operands[0]))"
&& !side_effects_p (operands[0])"
"@
cLear.b %0
cLear.w %0
@ -2317,7 +2317,7 @@
[(set (match_operand:HI 0 "register_operand" "=r,r,r")
(and:HI (match_operand:HI 1 "nonimmediate_operand" "r,Q,To")
(const_int 255)))]
"GET_CODE (operands[1]) != MEM || ! MEM_VOLATILE_P (operands[1])"
"!side_effects_p (operands[1])"
"mOvu.b %1,%0"
[(set_attr "slottable" "yes,yes,no")])
@ -2325,7 +2325,7 @@
[(set (match_operand:HI 0 "nonimmediate_operand" "=r,Q,To")
(and:HI (match_operand:HI 1 "nonimmediate_operand" "0,0,0")
(const_int -256)))]
"GET_CODE (operands[0]) != MEM || ! MEM_VOLATILE_P (operands[0])"
"!side_effects_p (operands[0])"
"cLear.b %0"
[(set_attr "slottable" "yes,yes,no")
(set_attr "cc" "none")])
@ -4043,8 +4043,8 @@
;; don't do this for a mem-volatile access.
"REGNO (operands[2]) == REGNO (operands[0])
&& INTVAL (operands[3]) <= 65535 && INTVAL (operands[3]) >= 0
&& ! CONST_OK_FOR_LETTER_P (INTVAL (operands[3]), 'I')
&& (GET_CODE (operands[1]) != MEM || ! MEM_VOLATILE_P (operands[1]))"
&& !CONST_OK_FOR_LETTER_P (INTVAL (operands[3]), 'I')
&& !side_effects_p (operands[1])"
;; FIXME: CC0 valid except for M (i.e. CC_NOT_NEGATIVE).
[(set (match_dup 0) (match_dup 4))
(set (match_dup 5) (match_dup 6))]