Commit 9302e6e5 by Jeff Law

More formatting fixes.

From-SVN: r15476
parent 07f7a41a
...@@ -341,6 +341,8 @@ ...@@ -341,6 +341,8 @@
(set_attr "cc" "none_0hit") (set_attr "cc" "none_0hit")
(set_attr "type" "mult")]) (set_attr "type" "mult")])
;; ??? Sign extending constants isn't valid. Fix?
(define_insn "*mulhisi3_internal2" (define_insn "*mulhisi3_internal2"
[(set (match_operand:SI 0 "register_operand" "=r,r") [(set (match_operand:SI 0 "register_operand" "=r,r")
(mult:SI (mult:SI
...@@ -1083,356 +1085,25 @@ ...@@ -1083,356 +1085,25 @@
;; HELPER INSTRUCTIONS for saving the prologue and epilog registers ;; HELPER INSTRUCTIONS for saving the prologue and epilog registers
;; ---------------------------------------------------------------------- ;; ----------------------------------------------------------------------
;; Save r2, r20-r29, r31, and create 16 byte register call area ;; This pattern will match a stack adjust RTX followed by any number of push
(define_insn "save_r2_r31" ;; RTXs. These RTXs will then be turned into a suitable call to a worker
[(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int -64))) ;; function.
(set (mem:SI (plus:SI (reg:SI 3) (const_int -16))) (reg:SI 2))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -20))) (reg:SI 20)) (define_insn ""
(set (mem:SI (plus:SI (reg:SI 3) (const_int -24))) (reg:SI 21)) [(match_parallel 0 "pattern_is_ok_for_prologue"
(set (mem:SI (plus:SI (reg:SI 3) (const_int -28))) (reg:SI 22)) [(set (reg:SI 3)
(set (mem:SI (plus:SI (reg:SI 3) (const_int -32))) (reg:SI 23)) (plus:SI (reg:SI 3) (match_operand:SI 1 "immediate_operand" "i")))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -36))) (reg:SI 24)) (set (mem:SI
(set (mem:SI (plus:SI (reg:SI 3) (const_int -40))) (reg:SI 25)) (plus:SI (reg:SI 3) (match_operand:SI 2 "immediate_operand" "i")))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -44))) (reg:SI 26)) (match_operand:SI 3 "register_is_ok_for_epilogue" "r"))])]
(set (mem:SI (plus:SI (reg:SI 3) (const_int -48))) (reg:SI 27))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -52))) (reg:SI 28))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -56))) (reg:SI 29))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -60))) (reg:SI 31))
(clobber (reg:SI 10))]
"TARGET_PROLOG_FUNCTION"
"jarl __save_r2_r31,r10"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Save r20-r29, r31, and create 16 byte register call area
(define_insn "save_r20_r31"
[(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int -60)))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -16))) (reg:SI 20))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -20))) (reg:SI 21))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -24))) (reg:SI 22))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -28))) (reg:SI 23))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -32))) (reg:SI 24))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -36))) (reg:SI 25))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -40))) (reg:SI 26))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -44))) (reg:SI 27))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -48))) (reg:SI 28))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -52))) (reg:SI 29))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -56))) (reg:SI 31))
(clobber (reg:SI 10))]
"TARGET_PROLOG_FUNCTION"
"jarl __save_r20_r31,r10"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Save r21-r29, r31, and create 16 byte register call area
(define_insn "save_r21_r31"
[(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int -56)))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -16))) (reg:SI 21))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -20))) (reg:SI 22))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -24))) (reg:SI 23))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -28))) (reg:SI 24))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -32))) (reg:SI 25))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -36))) (reg:SI 26))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -40))) (reg:SI 27))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -44))) (reg:SI 28))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -48))) (reg:SI 29))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -52))) (reg:SI 31))
(clobber (reg:SI 10))]
"TARGET_PROLOG_FUNCTION"
"jarl __save_r21_r31,r10"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Save r22-r29, r31, and create 16 byte register call area
(define_insn "save_r22_r31"
[(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int -52)))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -16))) (reg:SI 22))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -20))) (reg:SI 23))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -24))) (reg:SI 24))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -28))) (reg:SI 25))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -32))) (reg:SI 26))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -36))) (reg:SI 27))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -40))) (reg:SI 28))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -44))) (reg:SI 29))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -48))) (reg:SI 31))
(clobber (reg:SI 10))]
"TARGET_PROLOG_FUNCTION"
"jarl __save_r22_r31,r10"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Save r23-r29, r31, and create 16 byte register call area
(define_insn "save_r23_r31"
[(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int -48)))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -16))) (reg:SI 23))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -20))) (reg:SI 24))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -24))) (reg:SI 25))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -28))) (reg:SI 26))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -32))) (reg:SI 27))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -36))) (reg:SI 28))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -40))) (reg:SI 29))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -44))) (reg:SI 31))
(clobber (reg:SI 10))]
"TARGET_PROLOG_FUNCTION"
"jarl __save_r23_r31,r10"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Save r24-r29, r31, and create 16 byte register call area
(define_insn "save_r24_r31"
[(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int -44)))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -16))) (reg:SI 24))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -20))) (reg:SI 25))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -24))) (reg:SI 26))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -28))) (reg:SI 27))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -32))) (reg:SI 28))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -36))) (reg:SI 29))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -40))) (reg:SI 31))
(clobber (reg:SI 10))]
"TARGET_PROLOG_FUNCTION"
"jarl __save_r24_r31,r10"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Save r25-r29, r31, and create 16 byte register call area
(define_insn "save_r25_r31"
[(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int -40)))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -16))) (reg:SI 25))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -20))) (reg:SI 26))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -24))) (reg:SI 27))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -28))) (reg:SI 28))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -32))) (reg:SI 29))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -36))) (reg:SI 31))
(clobber (reg:SI 10))]
"TARGET_PROLOG_FUNCTION"
"jarl __save_r25_r31,r10"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Save r26-r29, r31, and create 16 byte register call area
(define_insn "save_r26_r31"
[(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int -36)))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -16))) (reg:SI 26))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -20))) (reg:SI 27))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -24))) (reg:SI 28))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -28))) (reg:SI 29))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -32))) (reg:SI 31))
(clobber (reg:SI 10))]
"TARGET_PROLOG_FUNCTION"
"jarl __save_r26_r31,r10"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Save r27-r29, r31, and create 16 byte register call area
(define_insn "save_r27_r31"
[(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int -32)))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -16))) (reg:SI 27))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -20))) (reg:SI 28))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -24))) (reg:SI 29))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -28))) (reg:SI 31))
(clobber (reg:SI 10))]
"TARGET_PROLOG_FUNCTION"
"jarl __save_r27_r31,r10"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Save r28-r29, r31, and create 16 byte register call area
(define_insn "save_r28_r31"
[(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int -28)))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -16))) (reg:SI 28))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -20))) (reg:SI 29))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -24))) (reg:SI 31))
(clobber (reg:SI 10))]
"TARGET_PROLOG_FUNCTION"
"jarl __save_r28_r31,r10"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Save r29, r31, and create 16 byte register call area
(define_insn "save_r29_r31"
[(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int -24)))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -16))) (reg:SI 29))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -20))) (reg:SI 31))
(clobber (reg:SI 10))]
"TARGET_PROLOG_FUNCTION"
"jarl __save_r29_r31,r10"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Save r31, and create 16 byte register call area
(define_insn "save_r31"
[(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int -20)))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -16))) (reg:SI 31))
(clobber (reg:SI 10))]
"TARGET_PROLOG_FUNCTION" "TARGET_PROLOG_FUNCTION"
"jarl __save_r31,r10" "* return construct_save_jarl (operands[0]);
[(set_attr "length" "4") "
(set_attr "cc" "clobber")])
;; Save r2, r20-r29
(define_insn "save_r2_r29"
[(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int -44)))
(set (mem:SI (reg:SI 3)) (reg:SI 2))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -4))) (reg:SI 20))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -8))) (reg:SI 21))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -12))) (reg:SI 22))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -16))) (reg:SI 23))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -20))) (reg:SI 24))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -24))) (reg:SI 25))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -28))) (reg:SI 26))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -32))) (reg:SI 27))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -36))) (reg:SI 28))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -40))) (reg:SI 29))
(clobber (reg:SI 10))]
"TARGET_PROLOG_FUNCTION"
"jarl __save_r2_r29,r10"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Save r20-r29
(define_insn "save_r20_r29"
[(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int -40)))
(set (mem:SI (reg:SI 3)) (reg:SI 20))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -4))) (reg:SI 21))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -8))) (reg:SI 22))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -12))) (reg:SI 23))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -16))) (reg:SI 24))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -20))) (reg:SI 25))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -24))) (reg:SI 26))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -28))) (reg:SI 27))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -32))) (reg:SI 28))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -36))) (reg:SI 29))
(clobber (reg:SI 10))]
"TARGET_PROLOG_FUNCTION"
"jarl __save_r20_r29,r10"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Save r21-r29
(define_insn "save_r21_r29"
[(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int -36)))
(set (mem:SI (reg:SI 3)) (reg:SI 21))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -4))) (reg:SI 22))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -8))) (reg:SI 23))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -12))) (reg:SI 24))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -16))) (reg:SI 25))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -20))) (reg:SI 26))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -24))) (reg:SI 27))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -28))) (reg:SI 28))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -32))) (reg:SI 29))
(clobber (reg:SI 10))]
"TARGET_PROLOG_FUNCTION"
"jarl __save_r21_r29,r10"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Save r22-r29
(define_insn "save_r22_r29"
[(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int -32)))
(set (mem:SI (reg:SI 3)) (reg:SI 22))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -4))) (reg:SI 23))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -8))) (reg:SI 24))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -12))) (reg:SI 25))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -16))) (reg:SI 26))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -20))) (reg:SI 27))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -24))) (reg:SI 28))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -28))) (reg:SI 29))
(clobber (reg:SI 10))]
"TARGET_PROLOG_FUNCTION"
"jarl __save_r22_r29,r10"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Save r23-r29
(define_insn "save_r23_r29"
[(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int -28)))
(set (mem:SI (reg:SI 3)) (reg:SI 23))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -4))) (reg:SI 24))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -8))) (reg:SI 25))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -12))) (reg:SI 26))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -16))) (reg:SI 27))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -20))) (reg:SI 28))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -24))) (reg:SI 29))
(clobber (reg:SI 10))]
"TARGET_PROLOG_FUNCTION"
"jarl __save_r23_r29,r10"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Save r24-r29
(define_insn "save_r24_r29"
[(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int -24)))
(set (mem:SI (reg:SI 3)) (reg:SI 24))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -4))) (reg:SI 25))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -8))) (reg:SI 26))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -12))) (reg:SI 27))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -16))) (reg:SI 28))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -20))) (reg:SI 29))
(clobber (reg:SI 10))]
"TARGET_PROLOG_FUNCTION"
"jarl __save_r24_r29,r10"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Save r25-r29
(define_insn "save_r25_r29"
[(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int -20)))
(set (mem:SI (reg:SI 3)) (reg:SI 25))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -4))) (reg:SI 26))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -8))) (reg:SI 27))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -12))) (reg:SI 28))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -16))) (reg:SI 29))
(clobber (reg:SI 10))]
"TARGET_PROLOG_FUNCTION"
"jarl __save_r25_r29,r10"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Save r26-r29
(define_insn "save_r26_r29"
[(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int -16)))
(set (mem:SI (reg:SI 3)) (reg:SI 26))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -4))) (reg:SI 27))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -8))) (reg:SI 28))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -12))) (reg:SI 29))
(clobber (reg:SI 10))]
"TARGET_PROLOG_FUNCTION"
"jarl __save_r26_r29,r10"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Save r27-r29
(define_insn "save_r27_r29"
[(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int -12)))
(set (mem:SI (reg:SI 3)) (reg:SI 27))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -4))) (reg:SI 28))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -8))) (reg:SI 29))
(clobber (reg:SI 10))]
"TARGET_PROLOG_FUNCTION"
"jarl __save_r27_r29,r10"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Save r28-r29
(define_insn "save_r28_r29"
[(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int -8)))
(set (mem:SI (reg:SI 3)) (reg:SI 28))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -4))) (reg:SI 29))
(clobber (reg:SI 10))]
"TARGET_PROLOG_FUNCTION"
"jarl __save_r28_r29,r10"
[(set_attr "length" "4") [(set_attr "length" "4")
(set_attr "cc" "clobber")]) (set_attr "cc" "clobber")
]
)
;; Save r29
(define_insn "save_r29"
[(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int -4)))
(set (mem:SI (reg:SI 3)) (reg:SI 29))
(clobber (reg:SI 10))]
"TARGET_PROLOG_FUNCTION"
"jarl __save_r29,r10"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Initialize an interrupt function. Do not depend on TARGET_PROLOG_FUNCTION. ;; Initialize an interrupt function. Do not depend on TARGET_PROLOG_FUNCTION.
(define_insn "save_interrupt" (define_insn "save_interrupt"
...@@ -1446,6 +1117,7 @@ ...@@ -1446,6 +1117,7 @@
[(set_attr "length" "12") [(set_attr "length" "12")
(set_attr "cc" "clobber")]) (set_attr "cc" "clobber")])
;; Save all registers except for the registers saved in save_interrupt when ;; Save all registers except for the registers saved in save_interrupt when
;; an interrupt function makes a call. ;; an interrupt function makes a call.
;; UNSPEC_VOLATILE is considered to use and clobber all hard registers and ;; UNSPEC_VOLATILE is considered to use and clobber all hard registers and
...@@ -1460,356 +1132,28 @@ ...@@ -1460,356 +1132,28 @@
[(set_attr "length" "4") [(set_attr "length" "4")
(set_attr "cc" "clobber")]) (set_attr "cc" "clobber")])
;; Restore r2, r20-r29, r31, eliminate 16 byte register call area, and return to user
(define_insn "restore_r2_r31"
[(return)
(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int 64)))
(set (reg:SI 2) (mem:SI (plus:SI (reg:SI 3) (const_int 60))))
(set (reg:SI 20) (mem:SI (plus:SI (reg:SI 3) (const_int 56))))
(set (reg:SI 21) (mem:SI (plus:SI (reg:SI 3) (const_int 52))))
(set (reg:SI 22) (mem:SI (plus:SI (reg:SI 3) (const_int 48))))
(set (reg:SI 23) (mem:SI (plus:SI (reg:SI 3) (const_int 44))))
(set (reg:SI 24) (mem:SI (plus:SI (reg:SI 3) (const_int 40))))
(set (reg:SI 25) (mem:SI (plus:SI (reg:SI 3) (const_int 36))))
(set (reg:SI 26) (mem:SI (plus:SI (reg:SI 3) (const_int 32))))
(set (reg:SI 27) (mem:SI (plus:SI (reg:SI 3) (const_int 28))))
(set (reg:SI 28) (mem:SI (plus:SI (reg:SI 3) (const_int 24))))
(set (reg:SI 29) (mem:SI (plus:SI (reg:SI 3) (const_int 20))))
(set (reg:SI 31) (mem:SI (plus:SI (reg:SI 3) (const_int 16))))]
"TARGET_PROLOG_FUNCTION"
"jr __return_r2_r31"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Restore r20-r29, r31, eliminate 16 byte register call area, and return to user
(define_insn "restore_r20_r31"
[(return)
(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int 60)))
(set (reg:SI 20) (mem:SI (plus:SI (reg:SI 3) (const_int 56))))
(set (reg:SI 21) (mem:SI (plus:SI (reg:SI 3) (const_int 52))))
(set (reg:SI 22) (mem:SI (plus:SI (reg:SI 3) (const_int 48))))
(set (reg:SI 23) (mem:SI (plus:SI (reg:SI 3) (const_int 44))))
(set (reg:SI 24) (mem:SI (plus:SI (reg:SI 3) (const_int 40))))
(set (reg:SI 25) (mem:SI (plus:SI (reg:SI 3) (const_int 36))))
(set (reg:SI 26) (mem:SI (plus:SI (reg:SI 3) (const_int 32))))
(set (reg:SI 27) (mem:SI (plus:SI (reg:SI 3) (const_int 28))))
(set (reg:SI 28) (mem:SI (plus:SI (reg:SI 3) (const_int 24))))
(set (reg:SI 29) (mem:SI (plus:SI (reg:SI 3) (const_int 20))))
(set (reg:SI 31) (mem:SI (plus:SI (reg:SI 3) (const_int 16))))]
"TARGET_PROLOG_FUNCTION"
"jr __return_r20_r31"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Restore r21-r29, r31, eliminate 16 byte register call area, and return to user
(define_insn "restore_r21_r31"
[(return)
(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int 56)))
(set (reg:SI 21) (mem:SI (plus:SI (reg:SI 3) (const_int 52))))
(set (reg:SI 22) (mem:SI (plus:SI (reg:SI 3) (const_int 48))))
(set (reg:SI 23) (mem:SI (plus:SI (reg:SI 3) (const_int 44))))
(set (reg:SI 24) (mem:SI (plus:SI (reg:SI 3) (const_int 40))))
(set (reg:SI 25) (mem:SI (plus:SI (reg:SI 3) (const_int 36))))
(set (reg:SI 26) (mem:SI (plus:SI (reg:SI 3) (const_int 32))))
(set (reg:SI 27) (mem:SI (plus:SI (reg:SI 3) (const_int 28))))
(set (reg:SI 28) (mem:SI (plus:SI (reg:SI 3) (const_int 24))))
(set (reg:SI 29) (mem:SI (plus:SI (reg:SI 3) (const_int 20))))
(set (reg:SI 31) (mem:SI (plus:SI (reg:SI 3) (const_int 16))))]
"TARGET_PROLOG_FUNCTION"
"jr __return_r21_r31"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Restore r22-r29, r31, eliminate 16 byte register call area, and return to user ;; This pattern will match a return RTX followed by any number of pop RTXs
(define_insn "restore_r22_r31" ;; and possible a stack adjustment as well. These RTXs will be turned into
[(return) ;; a suitable call to a worker function.
(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int 52)))
(set (reg:SI 22) (mem:SI (plus:SI (reg:SI 3) (const_int 48))))
(set (reg:SI 23) (mem:SI (plus:SI (reg:SI 3) (const_int 44))))
(set (reg:SI 24) (mem:SI (plus:SI (reg:SI 3) (const_int 40))))
(set (reg:SI 25) (mem:SI (plus:SI (reg:SI 3) (const_int 36))))
(set (reg:SI 26) (mem:SI (plus:SI (reg:SI 3) (const_int 32))))
(set (reg:SI 27) (mem:SI (plus:SI (reg:SI 3) (const_int 28))))
(set (reg:SI 28) (mem:SI (plus:SI (reg:SI 3) (const_int 24))))
(set (reg:SI 29) (mem:SI (plus:SI (reg:SI 3) (const_int 20))))
(set (reg:SI 31) (mem:SI (plus:SI (reg:SI 3) (const_int 16))))]
"TARGET_PROLOG_FUNCTION"
"jr __return_r22_r31"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Restore r23-r29, r31, eliminate 16 byte register call area, and return to user
(define_insn "restore_r23_r31"
[(return)
(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int 48)))
(set (reg:SI 23) (mem:SI (plus:SI (reg:SI 3) (const_int 44))))
(set (reg:SI 24) (mem:SI (plus:SI (reg:SI 3) (const_int 40))))
(set (reg:SI 25) (mem:SI (plus:SI (reg:SI 3) (const_int 36))))
(set (reg:SI 26) (mem:SI (plus:SI (reg:SI 3) (const_int 32))))
(set (reg:SI 27) (mem:SI (plus:SI (reg:SI 3) (const_int 28))))
(set (reg:SI 28) (mem:SI (plus:SI (reg:SI 3) (const_int 24))))
(set (reg:SI 29) (mem:SI (plus:SI (reg:SI 3) (const_int 20))))
(set (reg:SI 31) (mem:SI (plus:SI (reg:SI 3) (const_int 16))))]
"TARGET_PROLOG_FUNCTION"
"jr __return_r23_r31"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Restore r24-r29, r31, eliminate 16 byte register call area, and return to user (define_insn ""
(define_insn "restore_r24_r31" [(match_parallel 0 "pattern_is_ok_for_epilogue"
[(return) [(return)
(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int 44))) (set (reg:SI 3)
(set (reg:SI 24) (mem:SI (plus:SI (reg:SI 3) (const_int 40)))) (plus:SI (reg:SI 3) (match_operand:SI 1 "immediate_operand" "i")))
(set (reg:SI 25) (mem:SI (plus:SI (reg:SI 3) (const_int 36)))) (set (match_operand:SI 2 "register_is_ok_for_epilogue" "r")
(set (reg:SI 26) (mem:SI (plus:SI (reg:SI 3) (const_int 32)))) (mem:SI (plus:SI (reg:SI 3)
(set (reg:SI 27) (mem:SI (plus:SI (reg:SI 3) (const_int 28)))) (match_operand:SI 3 "immediate_operand" "i"))))])]
(set (reg:SI 28) (mem:SI (plus:SI (reg:SI 3) (const_int 24)))) "TARGET_PROLOG_FUNCTION && TARGET_V850"
(set (reg:SI 29) (mem:SI (plus:SI (reg:SI 3) (const_int 20)))) "* return construct_restore_jr (operands[0]);
(set (reg:SI 31) (mem:SI (plus:SI (reg:SI 3) (const_int 16))))] "
"TARGET_PROLOG_FUNCTION"
"jr __return_r24_r31"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Restore r25-r29, r31, eliminate 16 byte register call area, and return to user
(define_insn "restore_r25_r31"
[(return)
(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int 40)))
(set (reg:SI 25) (mem:SI (plus:SI (reg:SI 3) (const_int 36))))
(set (reg:SI 26) (mem:SI (plus:SI (reg:SI 3) (const_int 32))))
(set (reg:SI 27) (mem:SI (plus:SI (reg:SI 3) (const_int 28))))
(set (reg:SI 28) (mem:SI (plus:SI (reg:SI 3) (const_int 24))))
(set (reg:SI 29) (mem:SI (plus:SI (reg:SI 3) (const_int 20))))
(set (reg:SI 31) (mem:SI (plus:SI (reg:SI 3) (const_int 16))))]
"TARGET_PROLOG_FUNCTION"
"jr __return_r25_r31"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Restore r26-r29, r31, eliminate 16 byte register call area, and return to user
(define_insn "restore_r26_r31"
[(return)
(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int 36)))
(set (reg:SI 26) (mem:SI (plus:SI (reg:SI 3) (const_int 32))))
(set (reg:SI 27) (mem:SI (plus:SI (reg:SI 3) (const_int 28))))
(set (reg:SI 28) (mem:SI (plus:SI (reg:SI 3) (const_int 24))))
(set (reg:SI 29) (mem:SI (plus:SI (reg:SI 3) (const_int 20))))
(set (reg:SI 31) (mem:SI (plus:SI (reg:SI 3) (const_int 16))))]
"TARGET_PROLOG_FUNCTION"
"jr __return_r26_r31"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Restore r27-r29, r31, eliminate 16 byte register call area, and return to user
(define_insn "restore_r27_r31"
[(return)
(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int 32)))
(set (reg:SI 27) (mem:SI (plus:SI (reg:SI 3) (const_int 28))))
(set (reg:SI 28) (mem:SI (plus:SI (reg:SI 3) (const_int 24))))
(set (reg:SI 29) (mem:SI (plus:SI (reg:SI 3) (const_int 20))))
(set (reg:SI 31) (mem:SI (plus:SI (reg:SI 3) (const_int 16))))]
"TARGET_PROLOG_FUNCTION"
"jr __return_r27_r31"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Restore r28-r29, r31, eliminate 16 byte register call area, and return to user
(define_insn "restore_r28_r31"
[(return)
(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int 28)))
(set (reg:SI 28) (mem:SI (plus:SI (reg:SI 3) (const_int 24))))
(set (reg:SI 29) (mem:SI (plus:SI (reg:SI 3) (const_int 20))))
(set (reg:SI 31) (mem:SI (plus:SI (reg:SI 3) (const_int 16))))]
"TARGET_PROLOG_FUNCTION"
"jr __return_r28_r31"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Restore r29, r31, eliminate 16 byte register call area, and return to user
(define_insn "restore_r29_r31"
[(return)
(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int 24)))
(set (reg:SI 29) (mem:SI (plus:SI (reg:SI 3) (const_int 20))))
(set (reg:SI 31) (mem:SI (plus:SI (reg:SI 3) (const_int 16))))]
"TARGET_PROLOG_FUNCTION"
"jr __return_r29_r31"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Restore r31, eliminate 16 byte register call area, and return to user
(define_insn "restore_r31"
[(return)
(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int 20)))
(set (reg:SI 31) (mem:SI (plus:SI (reg:SI 3) (const_int 16))))]
"TARGET_PROLOG_FUNCTION"
"jr __return_r31"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Restore r2, r20-r29, and return to user
(define_insn "restore_r2_r29"
[(return)
(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int 48)))
(set (reg:SI 2) (mem:SI (plus:SI (reg:SI 3) (const_int 44))))
(set (reg:SI 20) (mem:SI (plus:SI (reg:SI 3) (const_int 40))))
(set (reg:SI 21) (mem:SI (plus:SI (reg:SI 3) (const_int 36))))
(set (reg:SI 22) (mem:SI (plus:SI (reg:SI 3) (const_int 32))))
(set (reg:SI 23) (mem:SI (plus:SI (reg:SI 3) (const_int 28))))
(set (reg:SI 24) (mem:SI (plus:SI (reg:SI 3) (const_int 24))))
(set (reg:SI 25) (mem:SI (plus:SI (reg:SI 3) (const_int 20))))
(set (reg:SI 26) (mem:SI (plus:SI (reg:SI 3) (const_int 16))))
(set (reg:SI 27) (mem:SI (plus:SI (reg:SI 3) (const_int 12))))
(set (reg:SI 28) (mem:SI (plus:SI (reg:SI 3) (const_int 8))))
(set (reg:SI 29) (mem:SI (plus:SI (reg:SI 3) (const_int 4))))]
"TARGET_PROLOG_FUNCTION"
"jr __return_r2_r29"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Restore r20-r29, and return to user
(define_insn "restore_r20_r29"
[(return)
(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int 44)))
(set (reg:SI 20) (mem:SI (plus:SI (reg:SI 3) (const_int 40))))
(set (reg:SI 21) (mem:SI (plus:SI (reg:SI 3) (const_int 36))))
(set (reg:SI 22) (mem:SI (plus:SI (reg:SI 3) (const_int 32))))
(set (reg:SI 23) (mem:SI (plus:SI (reg:SI 3) (const_int 28))))
(set (reg:SI 24) (mem:SI (plus:SI (reg:SI 3) (const_int 24))))
(set (reg:SI 25) (mem:SI (plus:SI (reg:SI 3) (const_int 20))))
(set (reg:SI 26) (mem:SI (plus:SI (reg:SI 3) (const_int 16))))
(set (reg:SI 27) (mem:SI (plus:SI (reg:SI 3) (const_int 12))))
(set (reg:SI 28) (mem:SI (plus:SI (reg:SI 3) (const_int 8))))
(set (reg:SI 29) (mem:SI (plus:SI (reg:SI 3) (const_int 4))))]
"TARGET_PROLOG_FUNCTION"
"jr __return_r20_r29"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Restore r21-r29, and return to user
(define_insn "restore_r21_r29"
[(return)
(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int 40)))
(set (reg:SI 21) (mem:SI (plus:SI (reg:SI 3) (const_int 36))))
(set (reg:SI 22) (mem:SI (plus:SI (reg:SI 3) (const_int 32))))
(set (reg:SI 23) (mem:SI (plus:SI (reg:SI 3) (const_int 28))))
(set (reg:SI 24) (mem:SI (plus:SI (reg:SI 3) (const_int 24))))
(set (reg:SI 25) (mem:SI (plus:SI (reg:SI 3) (const_int 20))))
(set (reg:SI 26) (mem:SI (plus:SI (reg:SI 3) (const_int 16))))
(set (reg:SI 27) (mem:SI (plus:SI (reg:SI 3) (const_int 12))))
(set (reg:SI 28) (mem:SI (plus:SI (reg:SI 3) (const_int 8))))
(set (reg:SI 29) (mem:SI (plus:SI (reg:SI 3) (const_int 4))))]
"TARGET_PROLOG_FUNCTION"
"jr __return_r21_r29"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Restore r22-r29, and return to user
(define_insn "restore_r22_r29"
[(return)
(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int 36)))
(set (reg:SI 22) (mem:SI (plus:SI (reg:SI 3) (const_int 32))))
(set (reg:SI 23) (mem:SI (plus:SI (reg:SI 3) (const_int 28))))
(set (reg:SI 24) (mem:SI (plus:SI (reg:SI 3) (const_int 24))))
(set (reg:SI 25) (mem:SI (plus:SI (reg:SI 3) (const_int 20))))
(set (reg:SI 26) (mem:SI (plus:SI (reg:SI 3) (const_int 16))))
(set (reg:SI 27) (mem:SI (plus:SI (reg:SI 3) (const_int 12))))
(set (reg:SI 28) (mem:SI (plus:SI (reg:SI 3) (const_int 8))))
(set (reg:SI 29) (mem:SI (plus:SI (reg:SI 3) (const_int 4))))]
"TARGET_PROLOG_FUNCTION"
"jr __return_r22_r29"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Restore r23-r29, and return to user
(define_insn "restore_r23_r29"
[(return)
(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int 32)))
(set (reg:SI 23) (mem:SI (plus:SI (reg:SI 3) (const_int 28))))
(set (reg:SI 24) (mem:SI (plus:SI (reg:SI 3) (const_int 24))))
(set (reg:SI 25) (mem:SI (plus:SI (reg:SI 3) (const_int 20))))
(set (reg:SI 26) (mem:SI (plus:SI (reg:SI 3) (const_int 16))))
(set (reg:SI 27) (mem:SI (plus:SI (reg:SI 3) (const_int 12))))
(set (reg:SI 28) (mem:SI (plus:SI (reg:SI 3) (const_int 8))))
(set (reg:SI 29) (mem:SI (plus:SI (reg:SI 3) (const_int 4))))]
"TARGET_PROLOG_FUNCTION"
"jr __return_r23_r29"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Restore r24-r29, and return to user
(define_insn "restore_r24_r29"
[(return)
(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int 28)))
(set (reg:SI 24) (mem:SI (plus:SI (reg:SI 3) (const_int 24))))
(set (reg:SI 25) (mem:SI (plus:SI (reg:SI 3) (const_int 20))))
(set (reg:SI 26) (mem:SI (plus:SI (reg:SI 3) (const_int 16))))
(set (reg:SI 27) (mem:SI (plus:SI (reg:SI 3) (const_int 12))))
(set (reg:SI 28) (mem:SI (plus:SI (reg:SI 3) (const_int 8))))
(set (reg:SI 29) (mem:SI (plus:SI (reg:SI 3) (const_int 4))))]
"TARGET_PROLOG_FUNCTION"
"jr __return_r24_r29"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Restore r25-r29, and return to user
(define_insn "restore_r25_r29"
[(return)
(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int 24)))
(set (reg:SI 25) (mem:SI (plus:SI (reg:SI 3) (const_int 20))))
(set (reg:SI 26) (mem:SI (plus:SI (reg:SI 3) (const_int 16))))
(set (reg:SI 27) (mem:SI (plus:SI (reg:SI 3) (const_int 12))))
(set (reg:SI 28) (mem:SI (plus:SI (reg:SI 3) (const_int 8))))
(set (reg:SI 29) (mem:SI (plus:SI (reg:SI 3) (const_int 4))))]
"TARGET_PROLOG_FUNCTION"
"jr __return_r25_r29"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Restore r26-r29, and return to user
(define_insn "restore_r26_r29"
[(return)
(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int 20)))
(set (reg:SI 26) (mem:SI (plus:SI (reg:SI 3) (const_int 16))))
(set (reg:SI 27) (mem:SI (plus:SI (reg:SI 3) (const_int 12))))
(set (reg:SI 28) (mem:SI (plus:SI (reg:SI 3) (const_int 8))))
(set (reg:SI 29) (mem:SI (plus:SI (reg:SI 3) (const_int 4))))]
"TARGET_PROLOG_FUNCTION"
"jr __return_r26_r29"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Restore r27-r29, and return to user
(define_insn "restore_r27_r29"
[(return)
(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int 16)))
(set (reg:SI 27) (mem:SI (plus:SI (reg:SI 3) (const_int 12))))
(set (reg:SI 28) (mem:SI (plus:SI (reg:SI 3) (const_int 8))))
(set (reg:SI 29) (mem:SI (plus:SI (reg:SI 3) (const_int 4))))]
"TARGET_PROLOG_FUNCTION"
"jr __return_r27_r29"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Restore r28-r29, and return to user
(define_insn "restore_r28_r29"
[(return)
(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int 12)))
(set (reg:SI 28) (mem:SI (plus:SI (reg:SI 3) (const_int 8))))
(set (reg:SI 29) (mem:SI (plus:SI (reg:SI 3) (const_int 4))))]
"TARGET_PROLOG_FUNCTION"
"jr __return_r28_r29"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
;; Restore r29, and return to user
(define_insn "restore_r29"
[(return)
(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int 8)))
(set (reg:SI 29) (mem:SI (plus:SI (reg:SI 3) (const_int 4))))]
"TARGET_PROLOG_FUNCTION"
"jr __return_r29"
[(set_attr "length" "4") [(set_attr "length" "4")
(set_attr "cc" "clobber")]) (set_attr "cc" "clobber")
]
)
;; Restore r1, r5, r10, and return from the interrupt ;; Restore r1, r5, r10, and return from the interrupt
(define_insn "restore_interrupt" (define_insn "restore_interrupt"
...@@ -1848,3 +1192,4 @@ ...@@ -1848,3 +1192,4 @@
"jarl __save_r6_r9,r10" "jarl __save_r6_r9,r10"
[(set_attr "length" "4") [(set_attr "length" "4")
(set_attr "cc" "clobber")]) (set_attr "cc" "clobber")])
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