}
}")
+;; Call to function in current module. No TOC pointer reload needed.
+
+(define_insn ""
+ [(call (mem:SI (match_operand:SI 0 "current_file_function_operand" "s"))
+ (match_operand 1 "" "g"))
+ (clobber (match_scratch:SI 2 "=l"))]
+ ""
+ "bl %z0")
+
+;; Call to function which may be in another module. Restore the TOC
+;; pointer (r2) after the call.
+
(define_insn ""
[(call (mem:SI (match_operand:SI 0 "call_operand" "l,s"))
(match_operand 1 "" "fg,fg"))
brl\;l 2,20(1)
bl %z0\;cror %.,%.,%.")
+(define_insn ""
+ [(set (match_operand 0 "" "=fg")
+ (call (mem:SI (match_operand:SI 1 "current_file_function_operand" "s"))
+ (match_operand 2 "" "g")))
+ (clobber (match_scratch:SI 3 "=l"))]
+ ""
+ "bl %z1")
+
(define_insn ""
[(set (match_operand 0 "" "=fg,fg")
(call (mem:SI (match_operand:SI 1 "call_operand" "l,s"))