Commit f1ba94dd by Richard Henderson Committed by Richard Henderson

mips.md (can_delay): Split out of existing define_delays.

        * config/mips/mips.md (can_delay): Split out of existing define_delays.
        (HILO_delay): Set can_delay false.

From-SVN: r52387
parent 3bb6f070
2002-04-16 Richard Henderson <rth@redhat.com>
PR 6202
* config/mips/mips.md (can_delay): Split out of existing define_delays.
(HILO_delay): Set can_delay false.
2002-04-16 Dale Johannesen <dalej@apple.com> 2002-04-16 Dale Johannesen <dalej@apple.com>
* config/rs6000/rs6000.c (rs6000_output_function_prologue): Compute * config/rs6000/rs6000.c (rs6000_output_function_prologue): Compute
......
...@@ -135,6 +135,18 @@ ...@@ -135,6 +135,18 @@
(const_string "yes") (const_string "yes")
(const_string "no"))) (const_string "no")))
;; Can the instruction be put into a delay slot?
(define_attr "can_delay" "no,yes"
(if_then_else (and (eq_attr "dslot" "no")
; ADJUST_INSN_LENGTH divides length by 2 on mips16,
; so cope with it here.
(ior (and (eq (symbol_ref "mips16") (const_int 0))
(eq_attr "length" "4"))
(and (ne (symbol_ref "mips16") (const_int 0))
(eq_attr "length" "2"))))
(const_string "yes")
(const_string "no")))
;; Attribute defining whether or not we can use the branch-likely instructions ;; Attribute defining whether or not we can use the branch-likely instructions
(define_attr "branch_likely" "no,yes" (define_attr "branch_likely" "no,yes"
...@@ -162,30 +174,19 @@ ...@@ -162,30 +174,19 @@
(define_delay (and (eq_attr "type" "branch") (define_delay (and (eq_attr "type" "branch")
(eq (symbol_ref "mips16") (const_int 0))) (eq (symbol_ref "mips16") (const_int 0)))
[(and (eq_attr "dslot" "no") (eq_attr "length" "4")) [(eq_attr "can_delay" "yes")
(nil) (nil)
(and (eq_attr "branch_likely" "yes") (and (eq_attr "branch_likely" "yes")
(and (eq_attr "dslot" "no") (and (eq_attr "dslot" "no")
(eq_attr "length" "4")))]) (eq_attr "length" "4")))])
(define_delay (eq_attr "type" "jump") (define_delay (eq_attr "type" "jump")
[(and (eq_attr "dslot" "no") [(eq_attr "can_delay" "yes")
;; ADJUST_INSN_LENGTH divides length by 2 on mips16, so cope
;; with it here. It doesn't matter for branches above,
;; because mips16 branches don't have delay slots anyway.
(ior (and (eq (symbol_ref "mips16") (const_int 0))
(eq_attr "length" "4"))
(and (ne (symbol_ref "mips16") (const_int 0))
(eq_attr "length" "2"))))
(nil) (nil)
(nil)]) (nil)])
(define_delay (and (eq_attr "type" "call") (eq_attr "abicalls" "no")) (define_delay (and (eq_attr "type" "call") (eq_attr "abicalls" "no"))
[(and (eq_attr "dslot" "no") [(eq_attr "can_delay" "yes")
(ior (and (eq (symbol_ref "mips16") (const_int 0))
(eq_attr "length" "4"))
(and (ne (symbol_ref "mips16") (const_int 0))
(eq_attr "length" "2"))))
(nil) (nil)
(nil)]) (nil)])
...@@ -5823,7 +5824,8 @@ move\\t%0,%z4\\n\\ ...@@ -5823,7 +5824,8 @@ move\\t%0,%z4\\n\\
"" ""
"" ""
[(set_attr "type" "nop") [(set_attr "type" "nop")
(set_attr "mode" "none")]) (set_attr "mode" "none")
(set_attr "can_delay" "no")])
;; This insn handles moving CCmode values. It's really just a ;; This insn handles moving CCmode values. It's really just a
;; slightly simplified copy of movsi_internal2, with additional cases ;; slightly simplified copy of movsi_internal2, with additional cases
......
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