Line 24... |
Line 24... |
;;
|
;;
|
;; You should have received a copy of the GNU General Public License along
|
;; You should have received a copy of the GNU General Public License along
|
;; with this program. If not, see . */
|
;; with this program. If not, see . */
|
|
|
(define_constants [
|
(define_constants [
|
|
(SP_REG 1)
|
|
(FP_REG 2) ; hard frame pointer
|
(CC_REG 34)
|
(CC_REG 34)
|
|
|
|
;; unspec values
|
|
(UNSPEC_FRAME 0)
|
;; unspec_volatile values
|
;; unspec_volatile values
|
(UNSPECV_SIBCALL_EPILOGUE 0)
|
(UNSPECV_SIBCALL_EPILOGUE 0)
|
])
|
])
|
|
|
(include "predicates.md")
|
(include "predicates.md")
|
Line 102... |
Line 106... |
{
|
{
|
or32_expand_epilogue (curr_insn);
|
or32_expand_epilogue (curr_insn);
|
DONE;
|
DONE;
|
})
|
})
|
|
|
|
(define_insn "frame_dealloc_fp"
|
|
[(set (reg:SI SP_REG) (reg:SI FP_REG))
|
|
(clobber (mem:QI (plus:SI (reg:SI FP_REG)
|
|
(unspec:SI [(const_int FP_REG)] UNSPEC_FRAME))))]
|
|
""
|
|
"l.ori\tr1,r2,0\t# deallocate frame"
|
|
[(set_attr "type" "logic")
|
|
(set_attr "length" "1")])
|
|
|
|
(define_insn "frame_dealloc_sp"
|
|
[(set (reg:SI SP_REG)
|
|
(plus:SI (reg:SI SP_REG)
|
|
(match_operand:SI 0 "nonmemory_operand" "r,I")))
|
|
(clobber (mem:QI (plus:SI (reg:SI SP_REG)
|
|
(unspec:SI [(const_int SP_REG)] UNSPEC_FRAME))))]
|
|
""
|
|
"@
|
|
l.add\tr1,r1,%0
|
|
l.addi\tr1,r1,%0"
|
|
[(set_attr "type" "add")
|
|
(set_attr "length" "1")])
|
|
|
(define_insn "return_internal"
|
(define_insn "return_internal"
|
[(return)
|
[(return)
|
(use (match_operand 0 "pmode_register_operand" ""))]
|
(use (match_operand 0 "pmode_register_operand" ""))]
|
"TARGET_SCHED_LOGUE"
|
"TARGET_SCHED_LOGUE"
|
"l.jr \t%0%("
|
"l.jr \t%0%("
|