rs6000.c (offsettable_addr_operand): Delete.

* rs6000.c (offsettable_addr_operand): Delete.
	(offsettable_mem_operand): New function.
	* rs6000.h (PREDICATE_CODES): Reflect function change.
	(RS6000_SAVE_TOC): Represent address as MEM.
	* win-nt.h (RS6000_SAVE_TOC): Same.
	* rs6000.md (indirect calls): Change offsettable address parameter
	to offsettable memory parameter.

From-SVN: r24762
This commit is contained in:
David Edelsohn 1999-01-19 11:52:49 +00:00 committed by David Edelsohn
parent e2213efb9d
commit 97f6e72f22
5 changed files with 34 additions and 19 deletions

View File

@ -1,3 +1,13 @@
Tue Jan 19 14:51:36 1999 David Edelsohn <edelsohn@mhpcc.edu>
* rs6000.c (offsettable_addr_operand): Delete.
(offsettable_mem_operand): New function.
* rs6000.h (PREDICATE_CODES): Reflect function change.
(RS6000_SAVE_TOC): Represent address as MEM.
* win-nt.h (RS6000_SAVE_TOC): Same.
* rs6000.md (indirect calls): Change offsettable address parameter
to offsettable memory parameter.
Tue Jan 19 10:24:53 1999 Mark Mitchell <mark@markmitchell.com>
* rtl.h (rtx_def): Update documentation.

View File

@ -832,15 +832,16 @@ volatile_mem_operand (op, mode)
return memory_address_p (mode, XEXP (op, 0));
}
/* Return 1 if the operand is an offsettable memory address. */
/* Return 1 if the operand is an offsettable memory operand. */
int
offsettable_addr_operand (op, mode)
offsettable_mem_operand (op, mode)
register rtx op;
enum machine_mode mode;
{
return offsettable_address_p (reload_completed | reload_in_progress,
mode, op);
return ((GET_CODE (op) == MEM)
&& offsettable_address_p (reload_completed | reload_in_progress,
mode, XEXP (op, 0)));
}
/* Return 1 if the operand is either an easy FP constant (see above) or

View File

@ -1249,8 +1249,10 @@ typedef struct rs6000_stack {
/* Size of the fixed area on the stack */
#define RS6000_SAVE_AREA (TARGET_32BIT ? 24 : 48)
/* Address to save the TOC register */
#define RS6000_SAVE_TOC plus_constant (stack_pointer_rtx, (TARGET_32BIT ? 20 : 40))
/* MEM representing address to save the TOC register */
#define RS6000_SAVE_TOC gen_rtx_MEM (Pmode, \
plus_constant (stack_pointer_rtx, \
(TARGET_32BIT ? 20 : 40)))
/* Offset & size for fpmem stack locations used for converting between
float and integral types. */
@ -3204,7 +3206,7 @@ do { \
{"reg_or_mem_operand", {SUBREG, MEM, REG}}, \
{"lwa_operand", {SUBREG, MEM, REG}}, \
{"volatile_mem_operand", {MEM}}, \
{"offsettable_addr_operand", {REG, SUBREG, PLUS}}, \
{"offsettable_mem_operand", {MEM}}, \
{"mem_or_easy_const_operand", {SUBREG, MEM, CONST_DOUBLE}}, \
{"add_operand", {SUBREG, REG, CONST_INT}}, \
{"non_add_cint_operand", {CONST_INT}}, \

View File

@ -7356,14 +7356,14 @@
[(call (mem:SI (match_operand:SI 0 "register_operand" "b"))
(match_operand 1 "const_int_operand" "n"))
(use (match_operand 2 "const_int_operand" "n"))
(use (match_operand 3 "offsettable_addr_operand" "p"))
(use (match_operand 3 "offsettable_mem_operand" "o"))
(use (match_operand 4 "register_operand" "r"))
(clobber (match_operand 5 "register_operand" "=r"))
(clobber (match_scratch:SI 6 "=&r"))
(clobber (match_scratch:SI 7 "=l"))]
"DEFAULT_ABI == ABI_AIX
&& (INTVAL (operands[2]) == CALL_NORMAL || (INTVAL (operands[2]) & CALL_LONG) != 0)"
"{st|stw} %4,%a3\;{l|lwz} %6,0(%0)\;{l|lwz} %4,4(%0)\;mt%7 %6\;{l|lwz} %5,8(%0)\;{brl|blrl}\;{l|lwz} %4,%a3"
"{st|stw} %4,%3\;{l|lwz} %6,0(%0)\;{l|lwz} %4,4(%0)\;mt%7 %6\;{l|lwz} %5,8(%0)\;{brl|blrl}\;{l|lwz} %4,%3"
[(set_attr "type" "load")
(set_attr "length" "28")])
@ -7371,14 +7371,14 @@
[(call (mem:SI (match_operand:DI 0 "register_operand" "b"))
(match_operand 1 "const_int_operand" "n"))
(use (match_operand 2 "const_int_operand" "n"))
(use (match_operand 3 "offsettable_addr_operand" "p"))
(use (match_operand 3 "offsettable_mem_operand" "o"))
(use (match_operand 4 "register_operand" "r"))
(clobber (match_operand 5 "register_operand" "=r"))
(clobber (match_scratch:SI 6 "=&r"))
(clobber (match_scratch:SI 7 "=l"))]
"TARGET_64BIT && DEFAULT_ABI == ABI_AIX
&& (INTVAL (operands[2]) == CALL_NORMAL || (INTVAL (operands[2]) & CALL_LONG) != 0)"
"std %4,%a3\;ld %6,0(%0)\;ld %4,8(%0)\;mt%7 %6\;ld %5,16(%0)\;blrl\;ld %4,%a3"
"std %4,%3\;ld %6,0(%0)\;ld %4,8(%0)\;mt%7 %6\;ld %5,16(%0)\;blrl\;ld %4,%3"
[(set_attr "type" "load")
(set_attr "length" "28")])
@ -7387,14 +7387,14 @@
(call (mem:SI (match_operand:SI 1 "register_operand" "b"))
(match_operand 2 "const_int_operand" "n")))
(use (match_operand 3 "const_int_operand" "n"))
(use (match_operand 4 "offsettable_addr_operand" "p"))
(use (match_operand 4 "offsettable_mem_operand" "o"))
(use (match_operand 5 "register_operand" "r"))
(clobber (match_operand 6 "register_operand" "=r"))
(clobber (match_scratch:SI 7 "=&r"))
(clobber (match_scratch:SI 8 "=l"))]
"DEFAULT_ABI == ABI_AIX
&& (INTVAL (operands[3]) == CALL_NORMAL || (INTVAL (operands[3]) & CALL_LONG) != 0)"
"{st|stw} %5,%a4\;{l|lwz} %7,0(%1)\;{l|lwz} %5,4(%1)\;mt%8 %7\;{l|lwz} %6,8(%1)\;{brl|blrl}\;{l|lwz} %5,%a4"
"{st|stw} %5,%4\;{l|lwz} %7,0(%1)\;{l|lwz} %5,4(%1)\;mt%8 %7\;{l|lwz} %6,8(%1)\;{brl|blrl}\;{l|lwz} %5,%4"
[(set_attr "type" "load")
(set_attr "length" "28")])
@ -7403,14 +7403,14 @@
(call (mem:SI (match_operand:DI 1 "register_operand" "b"))
(match_operand 2 "const_int_operand" "n")))
(use (match_operand 3 "const_int_operand" "n"))
(use (match_operand 4 "offsettable_addr_operand" "p"))
(use (match_operand 4 "offsettable_mem_operand" "o"))
(use (match_operand 5 "register_operand" "r"))
(clobber (match_operand 6 "register_operand" "=r"))
(clobber (match_scratch:SI 7 "=&r"))
(clobber (match_scratch:SI 8 "=l"))]
"TARGET_64BIT && DEFAULT_ABI == ABI_AIX
&& (INTVAL (operands[3]) == CALL_NORMAL || (INTVAL (operands[3]) & CALL_LONG) != 0)"
"std %5,%a4\;ld %7,0(%1)\;ld %5,8(%1)\;mt%8 %7\;ld %6,16(%1)\;blrl\;ld %5,%a4"
"std %5,%4\;ld %7,0(%1)\;ld %5,8(%1)\;mt%8 %7\;ld %6,16(%1)\;blrl\;ld %5,%4"
[(set_attr "type" "load")
(set_attr "length" "28")])
@ -7432,7 +7432,7 @@
[(call (mem:SI (match_operand:SI 0 "register_operand" "b"))
(match_operand 1 "const_int_operand" "n"))
(use (match_operand 2 "const_int_operand" "n"))
(use (match_operand 3 "offsettable_addr_operand" "p"))
(use (match_operand 3 "offsettable_mem_operand" "o"))
(use (match_operand 4 "register_operand" "r"))
(clobber (match_scratch:SI 5 "=&r"))
(clobber (match_scratch:SI 6 "=l"))]
@ -7447,7 +7447,7 @@
(call (mem:SI (match_operand:SI 1 "register_operand" "b"))
(match_operand 2 "const_int_operand" "n")))
(use (match_operand 3 "const_int_operand" "n"))
(use (match_operand 4 "offsettable_addr_operand" "p"))
(use (match_operand 4 "offsettable_mem_operand" "o"))
(use (match_operand 5 "register_operand" "r"))
(clobber (match_scratch:SI 6 "=&r"))
(clobber (match_scratch:SI 7 "=l"))]

View File

@ -119,9 +119,11 @@ Boston, MA 02111-1307, USA. */
#undef TARGET_DEFAULT
#define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS | MASK_NO_FP_IN_TOC | MASK_NO_SUM_IN_TOC)
/* Address to save the TOC register */
/* MEM representing address to save the TOC register */
#undef RS6000_SAVE_TOC
#define RS6000_SAVE_TOC plus_constant (virtual_incoming_args_rtx, -RS6000_SAVE_AREA - 8)
#define RS6000_SAVE_TOC gen_rtx_MEM (Pmode, \
plus_constant (virtual_incoming_args_rtx,
-RS6000_SAVE_AREA - 8))
/* Windows NT specifies that r13 is reserved to the OS, so it is not available
to the normal user. */