aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorStan Cox <scox@cygnus.com>1999-01-12 10:46:58 +0000
committerStan Cox <scox@gcc.gnu.org>1999-01-12 10:46:58 +0000
commit6d4503c3100cdf9e9c38cf0889f4c118a7c1cb76 (patch)
treef7cc852d514528366b7587ae9dece4a1ed81a9ab /gcc
parenteb69139212f8dc6b3e63403a4060479644b6a8b8 (diff)
downloadgcc-6d4503c3100cdf9e9c38cf0889f4c118a7c1cb76.zip
gcc-6d4503c3100cdf9e9c38cf0889f4c118a7c1cb76.tar.gz
gcc-6d4503c3100cdf9e9c38cf0889f4c118a7c1cb76.tar.bz2
* mips.md (call_value_internal3c): New pattern for -mips16 -mlong-calls.
From-SVN: r24639
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/config/mips/mips.md18
2 files changed, 20 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f214010..914da5e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md
index 8640ebb..56bb893 100644
--- a/gcc/config/mips/mips.md
+++ b/gcc/config/mips/mips.md
@@ -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")