summaryrefslogtreecommitdiff
path: root/gcc/config/v850/v850.md
diff options
context:
space:
mode:
authorJeff Law <law@gcc.gnu.org>1997-09-16 00:03:16 -0600
committerJeff Law <law@gcc.gnu.org>1997-09-16 00:03:16 -0600
commit9302e6e54c6bdbe354924f249ce1edac6847b467 (patch)
tree7abad4a6a5c88574536d22b1e68e1c8ac8f56cb1 /gcc/config/v850/v850.md
parent07f7a41accaa355bda5ce5cf5e90a16a0c6607a6 (diff)
downloadgcc-9302e6e54c6bdbe354924f249ce1edac6847b467.tar.gz
More formatting fixes.
From-SVN: r15476
Diffstat (limited to 'gcc/config/v850/v850.md')
-rw-r--r--gcc/config/v850/v850.md735
1 files changed, 40 insertions, 695 deletions
diff --git a/gcc/config/v850/v850.md b/gcc/config/v850/v850.md
index c71210854b5..4107661a99c 100644
--- a/gcc/config/v850/v850.md
+++ b/gcc/config/v850/v850.md
@@ -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))]
- "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")])
+;; 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"
+ "* return construct_save_jarl (operands[0]);
+ "
+ [(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 "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")])
-
-;; Restore r24-r29, r31, eliminate 16 byte register call area, and return to user
-(define_insn "restore_r24_r31"
- [(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")])
+;; 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 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 "cc" "clobber")])
+(define_insn ""
+[(match_parallel 0 "pattern_is_ok_for_epilogue"
+ [(return)
+ (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")
+ ]
+)
;; 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")])
+