Commit 8da665d5 by Stan Cox Committed by Stan Cox

mips.h (GO_IF_LEGITIMATE_ADDRESS): Don't accept large register offsets; let…

mips.h (GO_IF_LEGITIMATE_ADDRESS): Don't accept large register offsets; let LEGITIMIZE_ADDRESS load it into a register.

* mips.h (GO_IF_LEGITIMATE_ADDRESS): Don't accept large
register offsets; let LEGITIMIZE_ADDRESS load it into a register.
(LEGITIMIZE_ADDRESS): Use plus_constant to avoid (plus (reg) (const_int 0))
* mips.md (call_internal3c): New pattern for -mips16 -mlong-calls.

From-SVN: r29608
parent f38b27c7
Wed Sep 22 17:58:01 1999 Stan Cox <scox@cygnus.com>
* mips.h (GO_IF_LEGITIMATE_ADDRESS): Don't accept large
register offsets; let LEGITIMIZE_ADDRESS load it into a register.
(LEGITIMIZE_ADDRESS): Use plus_constant to avoid
(plus (reg) (const_int 0))
* mips.md (call_internal3c): New pattern for -mips16 -mlong-calls.
Wed Sep 22 17:55:31 1999 David Edelsohn <edelsohn@gnu.org>
* rs6000.c (expand_block_move): DImode loads and stores require
......
......@@ -2966,6 +2966,7 @@ extern struct rtx_def *mips_va_arg ();
&& (!TARGET_EMBEDDED_PIC \
|| code1 != CONST \
|| GET_CODE (XEXP (xplus1, 0)) != MINUS) \
&& ! (code1 == CONST_INT && ! SMALL_INT (xplus1)) \
&& !TARGET_MIPS16) \
goto ADDR; \
} \
......@@ -3125,8 +3126,7 @@ extern struct rtx_def *mips_va_arg ();
ptr_reg, \
gen_rtx_PLUS (Pmode, xplus0, int_reg))); \
\
X = gen_rtx_PLUS (Pmode, ptr_reg, \
GEN_INT (INTVAL (xplus1) & 0x7fff)); \
X = plus_constant (ptr_reg, INTVAL (xplus1) & 0x7fff); \
goto WIN; \
} \
} \
......
......@@ -9591,7 +9591,8 @@ move\\t%0,%z4\\n\\
[(call (mem:SI (match_operand:SI 0 "register_operand" "r"))
(match_operand 1 "" "i"))
(clobber (match_operand:SI 2 "register_operand" "=d"))]
"!(Pmode == DImode) && !TARGET_ABICALLS && TARGET_LONG_CALLS"
"!TARGET_MIPS16
&& !(Pmode == DImode) && !TARGET_ABICALLS && TARGET_LONG_CALLS"
"%*jal\\t%2,%0"
[(set_attr "type" "call")
(set_attr "mode" "none")])
......@@ -9600,7 +9601,19 @@ move\\t%0,%z4\\n\\
[(call (mem:DI (match_operand:DI 0 "se_register_operand" "r"))
(match_operand 1 "" "i"))
(clobber (match_operand:SI 2 "register_operand" "=d"))]
"Pmode == DImode && !TARGET_ABICALLS && TARGET_LONG_CALLS"
"!TARGET_MIPS16
&& Pmode == DImode && !TARGET_ABICALLS && TARGET_LONG_CALLS"
"%*jal\\t%2,%0"
[(set_attr "type" "call")
(set_attr "mode" "none")
(set_attr "length" "1")])
(define_insn "call_internal3c"
[(call (mem:SI (match_operand:SI 0 "register_operand" "e"))
(match_operand 1 "" "i"))
(clobber (match_operand:SI 2 "register_operand" "=y"))]
"TARGET_MIPS16 && !(Pmode == DImode) && !TARGET_ABICALLS && TARGET_LONG_CALLS
&& GET_CODE (operands[2]) == REG && REGNO (operands[2]) == 31"
"%*jal\\t%2,%0"
[(set_attr "type" "call")
(set_attr "mode" "none")])
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment