diff options
author | Gavin Romig-Koch <gavin@cygnus.com> | 1999-11-25 04:44:27 +0000 |
---|---|---|
committer | Gavin Romig-Koch <gavin@gcc.gnu.org> | 1999-11-25 04:44:27 +0000 |
commit | 8f7f2b3d45bc7883d961517a2b88f268eedca3f6 (patch) | |
tree | 0df1fa284ef4f6eb495542b17e20307dec69e94e /gcc | |
parent | 10a11b75613b5fc2d7fb49cadea8825ab283d745 (diff) | |
download | gcc-8f7f2b3d45bc7883d961517a2b88f268eedca3f6.zip gcc-8f7f2b3d45bc7883d961517a2b88f268eedca3f6.tar.gz gcc-8f7f2b3d45bc7883d961517a2b88f268eedca3f6.tar.bz2 |
* config/mips/mips.md (call_value_multiple_interanal1): New.
From-SVN: r30660
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 c560118d..48ae9f0e98 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 8ef8a72..a1f28c6 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")) |