* config/m68k/m68k.md (dbcc peepholes): Match four forms of dbra.

From-SVN: r51735
This commit is contained in:
Richard Henderson 2002-04-02 00:14:14 -08:00 committed by Richard Henderson
parent ad9dd8fadf
commit 5ac462c355
2 changed files with 54 additions and 2 deletions

View File

@ -1,3 +1,8 @@
2002-04-02 Richard Henderson <rth@redhat.com>
PR opt/420
* config/m68k/m68k.md (dbcc peepholes): Match four forms of dbra.
2002-04-01 Richard Henderson <rth@redhat.com>
PR target/1538

View File

@ -7653,6 +7653,7 @@
;;
;; Which moves the jCC condition outside the inner loop for free.
;;
(define_peephole
[(set (pc) (if_then_else (match_operator 3 "valid_dbcc_comparison_p"
[(cc0) (const_int 0)])
@ -7661,7 +7662,53 @@
(parallel
[(set (pc)
(if_then_else
(ge (plus:HI (match_operand:HI 0 "register_operand" "+d")
(ne (match_operand:HI 0 "register_operand" "")
(const_int 0))
(label_ref (match_operand 1 "" ""))
(pc)))
(set (match_dup 0)
(plus:HI (match_dup 0)
(const_int -1)))])]
"!TARGET_5200 && DATA_REG_P (operands[0]) && ! flags_in_68881 ()"
"*
{
CC_STATUS_INIT;
output_dbcc_and_branch (operands);
return \"\";
}")
(define_peephole
[(set (pc) (if_then_else (match_operator 3 "valid_dbcc_comparison_p"
[(cc0) (const_int 0)])
(label_ref (match_operand 2 "" ""))
(pc)))
(parallel
[(set (pc)
(if_then_else
(ne (match_operand:SI 0 "register_operand" "")
(const_int 0))
(label_ref (match_operand 1 "" ""))
(pc)))
(set (match_dup 0)
(plus:SI (match_dup 0)
(const_int -1)))])]
"!TARGET_5200 && DATA_REG_P (operands[0]) && ! flags_in_68881 ()"
"*
{
CC_STATUS_INIT;
output_dbcc_and_branch (operands);
return \"\";
}")
(define_peephole
[(set (pc) (if_then_else (match_operator 3 "valid_dbcc_comparison_p"
[(cc0) (const_int 0)])
(label_ref (match_operand 2 "" ""))
(pc)))
(parallel
[(set (pc)
(if_then_else
(ge (plus:HI (match_operand:HI 0 "register_operand" "")
(const_int -1))
(const_int 0))
(label_ref (match_operand 1 "" ""))
@ -7685,7 +7732,7 @@
(parallel
[(set (pc)
(if_then_else
(ge (plus:SI (match_operand:SI 0 "register_operand" "+d")
(ge (plus:SI (match_operand:SI 0 "register_operand" "")
(const_int -1))
(const_int 0))
(label_ref (match_operand 1 "" ""))