Commit f28d8062 by Richard Sandiford Committed by Richard Sandiford

mips.md (load_call<mode>): Allow any general register.

gcc/
	* config/mips/mips.md (load_call<mode>): Allow any general register.
	destination.
	(sibcall_value_internal, sibcall_value_multiple_internal)
	(call_value_internal, call_value_split, call_value_multiple_internal)
	(call_value_multiple_split): Remove constraints from operand 0.

From-SVN: r123756
parent dc7750b1
2007-04-12 Richard Sandiford <richard@codesourcery.com> 2007-04-12 Richard Sandiford <richard@codesourcery.com>
* config/mips/mips.md (load_call<mode>): Allow any general register.
destination.
(sibcall_value_internal, sibcall_value_multiple_internal)
(call_value_internal, call_value_split, call_value_multiple_internal)
(call_value_multiple_split): Remove constraints from operand 0.
2007-04-12 Richard Sandiford <richard@codesourcery.com>
* config/mips/mips-protos.h: In comments, refer to loadgp_absolute * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
rather than loadgp_noshared. rather than loadgp_noshared.
* config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
......
...@@ -5139,7 +5139,7 @@ ...@@ -5139,7 +5139,7 @@
;; we tell the target-independent code that the address could be changed ;; we tell the target-independent code that the address could be changed
;; by any call insn. ;; by any call insn.
(define_insn "load_call<mode>" (define_insn "load_call<mode>"
[(set (match_operand:P 0 "register_operand" "=c") [(set (match_operand:P 0 "register_operand" "=d")
(unspec:P [(match_operand:P 1 "register_operand" "r") (unspec:P [(match_operand:P 1 "register_operand" "r")
(match_operand:P 2 "immediate_operand" "") (match_operand:P 2 "immediate_operand" "")
(reg:P FAKE_CALL_REGNO)] (reg:P FAKE_CALL_REGNO)]
...@@ -5194,7 +5194,7 @@ ...@@ -5194,7 +5194,7 @@
}) })
(define_insn "sibcall_value_internal" (define_insn "sibcall_value_internal"
[(set (match_operand 0 "register_operand" "=df,df") [(set (match_operand 0 "register_operand" "")
(call (mem:SI (match_operand 1 "call_insn_operand" "j,S")) (call (mem:SI (match_operand 1 "call_insn_operand" "j,S"))
(match_operand 2 "" "")))] (match_operand 2 "" "")))]
"TARGET_SIBCALLS && SIBLING_CALL_P (insn)" "TARGET_SIBCALLS && SIBLING_CALL_P (insn)"
...@@ -5202,10 +5202,10 @@ ...@@ -5202,10 +5202,10 @@
[(set_attr "type" "call")]) [(set_attr "type" "call")])
(define_insn "sibcall_value_multiple_internal" (define_insn "sibcall_value_multiple_internal"
[(set (match_operand 0 "register_operand" "=df,df") [(set (match_operand 0 "register_operand" "")
(call (mem:SI (match_operand 1 "call_insn_operand" "j,S")) (call (mem:SI (match_operand 1 "call_insn_operand" "j,S"))
(match_operand 2 "" ""))) (match_operand 2 "" "")))
(set (match_operand 3 "register_operand" "=df,df") (set (match_operand 3 "register_operand" "")
(call (mem:SI (match_dup 1)) (call (mem:SI (match_dup 1))
(match_dup 2)))] (match_dup 2)))]
"TARGET_SIBCALLS && SIBLING_CALL_P (insn)" "TARGET_SIBCALLS && SIBLING_CALL_P (insn)"
...@@ -5300,7 +5300,7 @@ ...@@ -5300,7 +5300,7 @@
;; See comment for call_internal. ;; See comment for call_internal.
(define_insn_and_split "call_value_internal" (define_insn_and_split "call_value_internal"
[(set (match_operand 0 "register_operand" "=df,df") [(set (match_operand 0 "register_operand" "")
(call (mem:SI (match_operand 1 "call_insn_operand" "c,S")) (call (mem:SI (match_operand 1 "call_insn_operand" "c,S"))
(match_operand 2 "" ""))) (match_operand 2 "" "")))
(clobber (reg:SI 31))] (clobber (reg:SI 31))]
...@@ -5319,7 +5319,7 @@ ...@@ -5319,7 +5319,7 @@
(set_attr "extended_mips16" "no,yes")]) (set_attr "extended_mips16" "no,yes")])
(define_insn "call_value_split" (define_insn "call_value_split"
[(set (match_operand 0 "register_operand" "=df") [(set (match_operand 0 "register_operand" "")
(call (mem:SI (match_operand 1 "call_insn_operand" "cS")) (call (mem:SI (match_operand 1 "call_insn_operand" "cS"))
(match_operand 2 "" ""))) (match_operand 2 "" "")))
(clobber (reg:SI 31)) (clobber (reg:SI 31))
...@@ -5330,10 +5330,10 @@ ...@@ -5330,10 +5330,10 @@
;; See comment for call_internal. ;; See comment for call_internal.
(define_insn_and_split "call_value_multiple_internal" (define_insn_and_split "call_value_multiple_internal"
[(set (match_operand 0 "register_operand" "=df,df") [(set (match_operand 0 "register_operand" "")
(call (mem:SI (match_operand 1 "call_insn_operand" "c,S")) (call (mem:SI (match_operand 1 "call_insn_operand" "c,S"))
(match_operand 2 "" ""))) (match_operand 2 "" "")))
(set (match_operand 3 "register_operand" "=df,df") (set (match_operand 3 "register_operand" "")
(call (mem:SI (match_dup 1)) (call (mem:SI (match_dup 1))
(match_dup 2))) (match_dup 2)))
(clobber (reg:SI 31))] (clobber (reg:SI 31))]
...@@ -5352,10 +5352,10 @@ ...@@ -5352,10 +5352,10 @@
(set_attr "extended_mips16" "no,yes")]) (set_attr "extended_mips16" "no,yes")])
(define_insn "call_value_multiple_split" (define_insn "call_value_multiple_split"
[(set (match_operand 0 "register_operand" "=df") [(set (match_operand 0 "register_operand" "")
(call (mem:SI (match_operand 1 "call_insn_operand" "cS")) (call (mem:SI (match_operand 1 "call_insn_operand" "cS"))
(match_operand 2 "" ""))) (match_operand 2 "" "")))
(set (match_operand 3 "register_operand" "=df") (set (match_operand 3 "register_operand" "")
(call (mem:SI (match_dup 1)) (call (mem:SI (match_dup 1))
(match_dup 2))) (match_dup 2)))
(clobber (reg:SI 31)) (clobber (reg:SI 31))
......
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