diff options
author | gavin <gavin@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-11-25 04:44:27 +0000 |
---|---|---|
committer | gavin <gavin@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-11-25 04:44:27 +0000 |
commit | 02d6aad867e45e6c51843256b4df857e14e72a03 (patch) | |
tree | 0df1fa284ef4f6eb495542b17e20307dec69e94e /gcc | |
parent | e7b3c55cb8a5b152bb20362c37e40579b007ed44 (diff) | |
download | gcc-02d6aad867e45e6c51843256b4df857e14e72a03.tar.gz |
* config/mips/mips.md (call_value_multiple_interanal1): New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30660 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/config/mips/mips.md | 23 |
2 files changed, 27 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c560118de56..48ae9f0e988 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +1999-11-24 Gavin Romig-Koch <gavin@cygnus.com> + + * config/mips/mips.md (call_value_multiple_interanal1): New. + 1999-11-24 Jason Merrill <jason@casey.cygnus.com> * dwarf2out.c (free_AT, free_die): New fns. diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md index 8ef8a72a05a..a1f28c6e891 100644 --- a/gcc/config/mips/mips.md +++ b/gcc/config/mips/mips.md @@ -9838,6 +9838,29 @@ ld\\t%2,%1-%S1(%2)\;daddu\\t%2,%2,$31\;j\\t%2" ;; ??? May eventually need all 6 versions of the call patterns with multiple ;; return values. +(define_insn "call_value_multiple_internal1" + [(set (match_operand 0 "register_operand" "=df") + (call (mem (match_operand 1 "call_insn_operand" "ri")) + (match_operand 2 "" "i"))) + (set (match_operand 3 "register_operand" "=df") + (call (mem (match_dup 1)) + (match_dup 2))) + (clobber (match_operand:SI 4 "register_operand" "=d"))] + "!TARGET_ABICALLS && !TARGET_LONG_CALLS" + "* +{ + register rtx target = operands[1]; + + if (GET_CODE (target) == SYMBOL_REF) + return \"%*jal\\t%1\"; + else if (GET_CODE (target) == CONST_INT) + return \"%[li\\t%@,%1\\n\\t%*jal\\t%4,%@%]\"; + else + return \"%*jal\\t%4,%1\"; +}" + [(set_attr "type" "call") + (set_attr "mode" "none")]) + (define_insn "call_value_multiple_internal2" [(set (match_operand 0 "register_operand" "=df") (call (mem (match_operand 1 "call_insn_operand" "ri")) |