* mips.md (call_value_internal3c): New pattern for -mips16 -mlong-calls.
authorStan Cox <scox@cygnus.com>
Tue, 12 Jan 1999 10:46:58 +0000 (10:46 +0000)
committerStan Cox <scox@gcc.gnu.org>
Tue, 12 Jan 1999 10:46:58 +0000 (10:46 +0000)
From-SVN: r24639

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

index f2140106ed62ab3555b3ac890f83ccb0b2e2ddcf..914da5e1072f597f8aa97493da4a221037ac702f 100644 (file)
@@ -1,3 +1,7 @@
+Tue Jan 12 10:23:24 1999  Stan Cox  <scox@cygnus.com>
+
+       * mips.md (call_value_internal3c): New pattern for -mips16 -mlong-calls.
+
 1999-01-12  Manfred Hollstein  <manfred@s-direktnet.de>
 
        * m68k/mot3300.h (ADD_MISSING_POSIX, ADD_MISSING_XOPEN): Define to
index 8640ebbf5b267e53683a7ae904ed294a143d5b2b..56bb8934246b586ffb6dbad8dfcb4f78696f3df7 100644 (file)
@@ -9776,7 +9776,8 @@ move\\t%0,%z4\\n\\
         (call (mem:SI (match_operand:SI 1 "register_operand" "r"))
              (match_operand 2 "" "i")))
    (clobber (match_operand:SI 3 "register_operand" "=d"))]
-  "!(Pmode == DImode) && !TARGET_ABICALLS && TARGET_LONG_CALLS"
+  "!TARGET_MIPS16 
+   && !(Pmode == DImode) && !TARGET_ABICALLS && TARGET_LONG_CALLS"
   "%*jal\\t%3,%1"
   [(set_attr "type"    "call")
    (set_attr "mode"    "none")
@@ -9787,7 +9788,20 @@ move\\t%0,%z4\\n\\
         (call (mem:DI (match_operand:DI 1 "se_register_operand" "r"))
              (match_operand 2 "" "i")))
    (clobber (match_operand:SI 3 "register_operand" "=d"))]
-  "Pmode == DImode && !TARGET_ABICALLS && TARGET_LONG_CALLS"
+  "!TARGET_MIPS16 
+   && Pmode == DImode && !TARGET_ABICALLS && TARGET_LONG_CALLS"
+  "%*jal\\t%3,%1"
+  [(set_attr "type"    "call")
+   (set_attr "mode"    "none")
+   (set_attr "length"  "1")])
+
+(define_insn "call_value_internal3c"
+  [(set (match_operand 0 "register_operand" "=df")
+        (call (mem:SI (match_operand:SI 1 "register_operand" "e"))
+             (match_operand 2 "" "i")))
+   (clobber (match_operand:SI 3 "register_operand" "=y"))]
+  "TARGET_MIPS16 && !(Pmode == DImode) && !TARGET_ABICALLS && TARGET_LONG_CALLS
+   && GET_CODE (operands[3]) == REG && REGNO (operands[3]) == 31"
   "%*jal\\t%3,%1"
   [(set_attr "type"    "call")
    (set_attr "mode"    "none")