Commit 161eb4fc by Richard Henderson Committed by Richard Henderson

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

From-SVN: r51736
parent 501e321e
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> 2002-04-01 Richard Henderson <rth@redhat.com>
PR target/1538 PR target/1538
......
...@@ -7653,6 +7653,53 @@ ...@@ -7653,6 +7653,53 @@
;; ;;
;; Which moves the jCC condition outside the inner loop for free. ;; 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)])
(label_ref (match_operand 2 "" ""))
(pc)))
(parallel
[(set (pc)
(if_then_else
(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 (define_peephole
[(set (pc) (if_then_else (match_operator 3 "valid_dbcc_comparison_p" [(set (pc) (if_then_else (match_operator 3 "valid_dbcc_comparison_p"
[(cc0) (const_int 0)]) [(cc0) (const_int 0)])
...@@ -7661,7 +7708,7 @@ ...@@ -7661,7 +7708,7 @@
(parallel (parallel
[(set (pc) [(set (pc)
(if_then_else (if_then_else
(ge (plus:HI (match_operand:HI 0 "register_operand" "+d") (ge (plus:HI (match_operand:HI 0 "register_operand" "")
(const_int -1)) (const_int -1))
(const_int 0)) (const_int 0))
(label_ref (match_operand 1 "" "")) (label_ref (match_operand 1 "" ""))
...@@ -7685,7 +7732,7 @@ ...@@ -7685,7 +7732,7 @@
(parallel (parallel
[(set (pc) [(set (pc)
(if_then_else (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 -1))
(const_int 0)) (const_int 0))
(label_ref (match_operand 1 "" "")) (label_ref (match_operand 1 "" ""))
......
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