Add peephole to eliminate unecessary clear instructions
in strict_low_part insn sequences. From-SVN: r3015
This commit is contained in:
parent
483404b6dc
commit
ed359ebc31
@ -4884,6 +4884,29 @@
|
|||||||
return \"\";
|
return \"\";
|
||||||
}")
|
}")
|
||||||
|
|
||||||
|
(define_peephole
|
||||||
|
[(set (match_operand:SI 0 "register_operand" "=d")
|
||||||
|
(const_int 0))
|
||||||
|
(set (strict_low_part (subreg:HI (match_dup 0) 0))
|
||||||
|
(match_operand:HI 1 "general_operand" "rmn"))]
|
||||||
|
"strict_low_part_peephole_ok (HImode, prev_nonnote_insn (insn), operands[0])"
|
||||||
|
"*
|
||||||
|
{
|
||||||
|
if (GET_CODE (operands[1]) == CONST_INT)
|
||||||
|
{
|
||||||
|
if (operands[1] == const0_rtx
|
||||||
|
&& (DATA_REG_P (operands[0])
|
||||||
|
|| GET_CODE (operands[0]) == MEM)
|
||||||
|
/* clr insns on 68000 read before writing.
|
||||||
|
This isn't so on the 68010, but we have no alternative for it. */
|
||||||
|
&& (TARGET_68020
|
||||||
|
|| !(GET_CODE (operands[0]) == MEM
|
||||||
|
&& MEM_VOLATILE_P (operands[0]))))
|
||||||
|
return \"clr%.w %0\";
|
||||||
|
}
|
||||||
|
return \"move%.w %1,%0\";
|
||||||
|
}")
|
||||||
|
|
||||||
;; dbCC peepholes
|
;; dbCC peepholes
|
||||||
;;
|
;;
|
||||||
;; Turns
|
;; Turns
|
||||||
|
Loading…
Reference in New Issue
Block a user