* config/mips/mips.md (call_value_multiple_interanal1): New.
authorgavin <gavin@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 25 Nov 1999 04:44:27 +0000 (04:44 +0000)
committergavin <gavin@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 25 Nov 1999 04:44:27 +0000 (04:44 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30660 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/mips/mips.md

index c560118..48ae9f0 100644 (file)
@@ -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.
index 8ef8a72..a1f28c6 100644 (file)
@@ -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"))