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 \"\";
|
||||
}")
|
||||
|
||||
(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
|
||||
;;
|
||||
;; Turns
|
||||
|
Loading…
Reference in New Issue
Block a user