Commit 9302e6e5 by Jeff Law

More formatting fixes.

From-SVN: r15476
parent 07f7a41a
......@@ -341,6 +341,8 @@
(set_attr "cc" "none_0hit")
(set_attr "type" "mult")])
;; ??? Sign extending constants isn't valid. Fix?
(define_insn "*mulhisi3_internal2"
[(set (match_operand:SI 0 "register_operand" "=r,r")
(mult:SI
......@@ -1083,356 +1085,25 @@
;; HELPER INSTRUCTIONS for saving the prologue and epilog registers
;; ----------------------------------------------------------------------
;; Save r2, r20-r29, r31, and create 16 byte register call area
(define_insn "save_r2_r31"
[(set (reg:SI 3) (plus:SI (reg:SI 3) (const_int -64)))
(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))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -24))) (reg:SI 21))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -28))) (reg:SI 22))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -32))) (reg:SI 23))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -36))) (reg:SI 24))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -40))) (reg:SI 25))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -44))) (reg:SI 26))
(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))]
;; This pattern will match a stack adjust RTX followed by any number of push
;; RTXs. These RTXs will then be turned into a suitable call to a worker
;; function.
(define_insn ""
[(match_parallel 0 "pattern_is_ok_for_prologue"
[(set (reg:SI 3)
(plus:SI (reg:SI 3) (match_operand:SI 1 "immediate_operand" "i")))
(set (mem:SI
(plus:SI (reg:SI 3) (match_operand:SI 2 "immediate_operand" "i")))
(match_operand:SI 3 "register_is_ok_for_epilogue" "r"))])]
"TARGET_PROLOG_FUNCTION"
"jarl __save_r31,r10"
[(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"
"* return construct_save_jarl (operands[0]);
"
[(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.
(define_insn "save_interrupt"
......@@ -1446,6 +1117,7 @@
[(set_attr "length" "12")
(set_attr "cc" "clobber")])
;; Save all registers except for the registers saved in save_interrupt when
;; an interrupt function makes a call.
;; UNSPEC_VOLATILE is considered to use and clobber all hard registers and
......@@ -1460,356 +1132,28 @@
[(set_attr "length" "4")
(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
(define_insn "restore_r22_r31"
[(return)
(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")])
;; This pattern will match a return RTX followed by any number of pop RTXs
;; and possible a stack adjustment as well. These RTXs will be turned into
;; a suitable call to a worker function.
;; Restore r24-r29, r31, eliminate 16 byte register call area, and return to user
(define_insn "restore_r24_r31"
(define_insn ""
[(match_parallel 0 "pattern_is_ok_for_epilogue"
[(return)
(set (reg:SI 3) (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_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 (reg:SI 3)
(plus:SI (reg:SI 3) (match_operand:SI 1 "immediate_operand" "i")))
(set (match_operand:SI 2 "register_is_ok_for_epilogue" "r")
(mem:SI (plus:SI (reg:SI 3)
(match_operand:SI 3 "immediate_operand" "i"))))])]
"TARGET_PROLOG_FUNCTION && TARGET_V850"
"* return construct_restore_jr (operands[0]);
"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
(set_attr "cc" "clobber")
]
)
;; Restore r1, r5, r10, and return from the interrupt
(define_insn "restore_interrupt"
......@@ -1848,3 +1192,4 @@
"jarl __save_r6_r9,r10"
[(set_attr "length" "4")
(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