aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorGavin Romig-Koch <gavin@cygnus.com>1999-11-25 04:44:27 +0000
committerGavin Romig-Koch <gavin@gcc.gnu.org>1999-11-25 04:44:27 +0000
commit8f7f2b3d45bc7883d961517a2b88f268eedca3f6 (patch)
tree0df1fa284ef4f6eb495542b17e20307dec69e94e /gcc
parent10a11b75613b5fc2d7fb49cadea8825ab283d745 (diff)
downloadgcc-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/ChangeLog4
-rw-r--r--gcc/config/mips/mips.md23
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"))