Commit 5f59ecb7 by David Edelsohn

[multiple changes]

Mon Aug  2 16:15:57 1999  David Edelsohn  <edelsohn@gnu.org>

	* rs6000/aix43.h (SUBTARGET_SWITCHES): Use -m64 and -m32 instead of
	-maix64 and -maix32.
	(ASM_SPEC, ASM_CPU_SPEC, CPP_SPEC, CPP_CPU_SPEC, LIB_SPEC,
	LINK_SPEC): Change appropriately.
	* rs6000/rs6000.c (short_cint_operand): Use CONST_OK_FOR_LETTER_P.
	(u_short_cint_operand): Likewise.
	* rs6000/rs6000.md (movdi splitters): Add TARGET_POWERPC64 support
	for 64-bit hosts.
	* rs6000/t-aix43 (MULTILIB): Change to -m64.

	* invoke.texi (RS/6000 Submodel): Document 64-bit processor options.

Mon Aug  2 16:15:57 1999  Geoff Keating  <geoffk@cygnus.com>

	* rs6000/rs6000.c (num_insns_constant_wide): Correct
	for type promotion.
	(add_operand): Get test correct for 64-bit HOST_WIDE_INT.
	(non_add_cint_operand): Likewise.
	(logical_operand): Likewise.
	(non_logical_cint_operand): Likewise.
	(print_operand): Correct printf()s for 64-bit HOST_WIDE_INT.
	(print_operand_address): Correct printf() for 64-bit HOST_WIDE_INT.
	(rs6000_select_rtx_section): Suppress warning.
	(small_data_operand): Suppress warning.
	(rs6000_got_register): Suppress warning.
	* rs6000/rs6000.md (andsi3): HOST_WIDE_INT is a signed
	type, so `J' is generally the wrong constraint for a SImode value;
	use `L' instead.
	(andsi3_internal2): Likewise.
	(andsi3_internal3): Likewise.
	(iorsi3_internal1): Likewise.
	(xorsi3_internal1): Likewise.
	(movsi): Likewise.
	(movsf_softfloat): Likewise.
	(scc insns): Likewise.
	(movsi+2): Preserve sign bits of SImode constant.
	(floatsidf2_internal+1): Sign-extend SImode constant correctly.
	(movdf+1): Sign-extend properly.
	(movdi_32+1): Sign-extend properly.
	(scc insns): Sign-extend properly.

	* md.texi (RS/6000 EXTRA_CONSTRAINTS): Update documentation for J,
	K, L, and T.

From-SVN: r28406
parent 981a828e
Mon Aug 2 16:15:57 1999 David Edelsohn <edelsohn@gnu.org>
* rs6000/aix43.h (SUBTARGET_SWITCHES): Use -m64 and -m32 instead of
-maix64 and -maix32.
(ASM_SPEC, ASM_CPU_SPEC, CPP_SPEC, CPP_CPU_SPEC, LIB_SPEC,
LINK_SPEC): Change appropriately.
* rs6000/rs6000.c (short_cint_operand): Use CONST_OK_FOR_LETTER_P.
(u_short_cint_operand): Likewise.
* rs6000/rs6000.md (movdi splitters): Add TARGET_POWERPC64 support
for 64-bit hosts.
* rs6000/t-aix43 (MULTILIB): Change to -m64.
* invoke.texi (RS/6000 Submodel): Document 64-bit processor options.
Mon Aug 2 16:15:57 1999 Geoff Keating <geoffk@cygnus.com>
* rs6000/rs6000.c (num_insns_constant_wide): Correct
for type promotion.
(add_operand): Get test correct for 64-bit HOST_WIDE_INT.
(non_add_cint_operand): Likewise.
(logical_operand): Likewise.
(non_logical_cint_operand): Likewise.
(print_operand): Correct printf()s for 64-bit HOST_WIDE_INT.
(print_operand_address): Correct printf() for 64-bit HOST_WIDE_INT.
(rs6000_select_rtx_section): Suppress warning.
(small_data_operand): Suppress warning.
(rs6000_got_register): Suppress warning.
* rs6000/rs6000.md (andsi3): HOST_WIDE_INT is a signed
type, so `J' is generally the wrong constraint for a SImode value;
use `L' instead.
(andsi3_internal2): Likewise.
(andsi3_internal3): Likewise.
(iorsi3_internal1): Likewise.
(xorsi3_internal1): Likewise.
(movsi): Likewise.
(movsf_softfloat): Likewise.
(scc insns): Likewise.
(movsi+2): Preserve sign bits of SImode constant.
(floatsidf2_internal+1): Sign-extend SImode constant correctly.
(movdf+1): Sign-extend properly.
(movdi_32+1): Sign-extend properly.
(scc insns): Sign-extend properly.
* md.texi (RS/6000 EXTRA_CONSTRAINTS): Update documentation for J,
K, L, and T.
1999-08-02 Richard Henderson <rth@cygnus.com> 1999-08-02 Richard Henderson <rth@cygnus.com>
* alpha.c (override_options): Move ev6 alpha_tp frobbing out of * alpha.c (override_options): Move ev6 alpha_tp frobbing out of
......
...@@ -26,8 +26,8 @@ Boston, MA 02111-1307, USA. */ ...@@ -26,8 +26,8 @@ Boston, MA 02111-1307, USA. */
#define TARGET_XL_CALL (target_flags & MASK_XL_CALL) #define TARGET_XL_CALL (target_flags & MASK_XL_CALL)
#undef SUBTARGET_SWITCHES #undef SUBTARGET_SWITCHES
#define SUBTARGET_SWITCHES \ #define SUBTARGET_SWITCHES \
{"aix64", MASK_64BIT | MASK_POWERPC64 | MASK_POWERPC}, \ {"64", MASK_64BIT | MASK_POWERPC64 | MASK_POWERPC}, \
{"aix32", - (MASK_64BIT | MASK_POWERPC64)}, \ {"32", - (MASK_64BIT | MASK_POWERPC64)}, \
{"xl-call", MASK_XL_CALL}, \ {"xl-call", MASK_XL_CALL}, \
{"no-xl-call", - MASK_XL_CALL}, \ {"no-xl-call", - MASK_XL_CALL}, \
{"threads", 0}, \ {"threads", 0}, \
...@@ -48,25 +48,25 @@ do { \ ...@@ -48,25 +48,25 @@ do { \
if (TARGET_64BIT && (target_flags & NON_POWERPC_MASKS)) \ if (TARGET_64BIT && (target_flags & NON_POWERPC_MASKS)) \
{ \ { \
target_flags &= ~NON_POWERPC_MASKS; \ target_flags &= ~NON_POWERPC_MASKS; \
warning ("-maix64 and POWER architecture are incompatible."); \ warning ("-m64 and POWER architecture are incompatible."); \
} \ } \
if (TARGET_64BIT && ! (target_flags & MASK_POWERPC64)) \ if (TARGET_64BIT && ! (target_flags & MASK_POWERPC64)) \
{ \ { \
target_flags |= MASK_POWERPC64; \ target_flags |= MASK_POWERPC64; \
warning ("-maix64 requires PowerPC64 architecture remain enabled."); \ warning ("-m64 requires PowerPC64 architecture remain enabled."); \
} \ } \
} while (0); } while (0);
#include "rs6000/rs6000.h" #include "rs6000/rs6000.h"
#undef ASM_SPEC #undef ASM_SPEC
#define ASM_SPEC "-u %{maix64:-a64 -mppc64} %(asm_cpu)" #define ASM_SPEC "-u %{m64:-a64 -mppc64} %(asm_cpu)"
/* Common ASM definitions used by ASM_SPEC amonst the various targets /* Common ASM definitions used by ASM_SPEC amonst the various targets
for handling -mcpu=xxx switches. */ for handling -mcpu=xxx switches. */
#undef ASM_CPU_SPEC #undef ASM_CPU_SPEC
#define ASM_CPU_SPEC \ #define ASM_CPU_SPEC \
"%{!mcpu*: %{!maix64: \ "%{!mcpu*: %{!m64: \
%{mpower: %{!mpower2: -mpwr}} \ %{mpower: %{!mpower2: -mpwr}} \
%{mpower2: -mpwr2} \ %{mpower2: -mpwr2} \
%{mpowerpc*: %{!mpowerpc64: -mppc}} \ %{mpowerpc*: %{!mpowerpc64: -mppc}} \
...@@ -104,7 +104,7 @@ do { \ ...@@ -104,7 +104,7 @@ do { \
#undef CPP_SPEC #undef CPP_SPEC
#define CPP_SPEC "%{posix: -D_POSIX_SOURCE}\ #define CPP_SPEC "%{posix: -D_POSIX_SOURCE}\
%{maix64: -D__64BIT__ -D_ARCH_PPC}\ %{m64: -D__64BIT__ -D_ARCH_PPC}\
%{mpe: -I/usr/lpp/ppe.poe/include}\ %{mpe: -I/usr/lpp/ppe.poe/include}\
%{mthreads: -D_THREAD_SAFE}\ %{mthreads: -D_THREAD_SAFE}\
%(cpp_cpu)" %(cpp_cpu)"
...@@ -113,7 +113,7 @@ do { \ ...@@ -113,7 +113,7 @@ do { \
for handling -mcpu=xxx switches. */ for handling -mcpu=xxx switches. */
#undef CPP_CPU_SPEC #undef CPP_CPU_SPEC
#define CPP_CPU_SPEC \ #define CPP_CPU_SPEC \
"%{!mcpu*: %{!maix64: \ "%{!mcpu*: %{!m64: \
%{mpower: %{!mpower2: -D_ARCH_PWR}} \ %{mpower: %{!mpower2: -D_ARCH_PWR}} \
%{mpower2: -D_ARCH_PWR2} \ %{mpower2: -D_ARCH_PWR2} \
%{mpowerpc*: -D_ARCH_PPC} \ %{mpowerpc*: -D_ARCH_PPC} \
...@@ -182,15 +182,15 @@ do { \ ...@@ -182,15 +182,15 @@ do { \
#undef LIB_SPEC #undef LIB_SPEC
#define LIB_SPEC "%{pg:-L/lib/profiled -L/usr/lib/profiled}\ #define LIB_SPEC "%{pg:-L/lib/profiled -L/usr/lib/profiled}\
%{p:-L/lib/profiled -L/usr/lib/profiled}\ %{p:-L/lib/profiled -L/usr/lib/profiled}\
%{!maix64:%{!shared:%{g*:-lg}}}\ %{!m64:%{!shared:%{g*:-lg}}}\
%{mpe:-L/usr/lpp/ppe.poe/lib -lmpi -lvtd}\ %{mpe:-L/usr/lpp/ppe.poe/lib -lmpi -lvtd}\
%{mthreads:-L/usr/lib/threads -lpthreads -lc_r /usr/lib/libc.a}\ %{mthreads:-L/usr/lib/threads -lpthreads -lc_r /usr/lib/libc.a}\
%{!mthreads:-lc}" %{!mthreads:-lc}"
#undef LINK_SPEC #undef LINK_SPEC
#define LINK_SPEC "-bpT:0x10000000 -bpD:0x20000000 %{!r:-btextro} -bnodelcsect\ #define LINK_SPEC "-bpT:0x10000000 -bpD:0x20000000 %{!r:-btextro} -bnodelcsect\
%{static:-bnso %(link_syscalls) } %{!maix64:%{!shared:%{g*: %(link_libg) }}}\ %{static:-bnso %(link_syscalls) } %{!m64:%{!shared:%{g*: %(link_libg) }}}\
%{shared:-bM:SRE %{!e:-bnoentry}} %{maix64:-b64}" %{shared:-bM:SRE %{!e:-bnoentry}} %{m64:-b64}"
#undef STARTFILE_SPEC #undef STARTFILE_SPEC
#define STARTFILE_SPEC "%{!shared:\ #define STARTFILE_SPEC "%{!shared:\
...@@ -198,8 +198,8 @@ do { \ ...@@ -198,8 +198,8 @@ do { \
%{!pg:%{p:/usr/lpp/ppe.poe/lib/mcrt0.o}\ %{!pg:%{p:/usr/lpp/ppe.poe/lib/mcrt0.o}\
%{!p:/usr/lpp/ppe.poe/lib/crt0.o}}}\ %{!p:/usr/lpp/ppe.poe/lib/crt0.o}}}\
%{!mpe:\ %{!mpe:\
%{maix64:%{pg:gcrt0_64%O%s}%{!pg:%{p:mcrt0_64%O%s}%{!p:crt0_64%O%s}}}\ %{m64:%{pg:gcrt0_64%O%s}%{!pg:%{p:mcrt0_64%O%s}%{!p:crt0_64%O%s}}}\
%{!maix64:\ %{!m64:\
%{mthreads:%{pg:gcrt0_r%O%s}%{!pg:%{p:mcrt0_r%O%s}%{!p:crt0_r%O%s}}}\ %{mthreads:%{pg:gcrt0_r%O%s}%{!pg:%{p:mcrt0_r%O%s}%{!p:crt0_r%O%s}}}\
%{!mthreads:%{pg:gcrt0%O%s}%{!pg:%{p:mcrt0%O%s}%{!p:crt0%O%s}}}}}}" %{!mthreads:%{pg:gcrt0%O%s}%{!pg:%{p:mcrt0%O%s}%{!p:crt0%O%s}}}}}}"
......
...@@ -515,8 +515,8 @@ short_cint_operand (op, mode) ...@@ -515,8 +515,8 @@ short_cint_operand (op, mode)
register rtx op; register rtx op;
enum machine_mode mode ATTRIBUTE_UNUSED; enum machine_mode mode ATTRIBUTE_UNUSED;
{ {
return ((GET_CODE (op) == CONST_INT return (GET_CODE (op) == CONST_INT
&& (unsigned HOST_WIDE_INT) (INTVAL (op) + 0x8000) < 0x10000)); && CONST_OK_FOR_LETTER_P (INTVAL (op), 'I'));
} }
/* Similar for a unsigned D field. */ /* Similar for a unsigned D field. */
...@@ -527,7 +527,7 @@ u_short_cint_operand (op, mode) ...@@ -527,7 +527,7 @@ u_short_cint_operand (op, mode)
enum machine_mode mode ATTRIBUTE_UNUSED; enum machine_mode mode ATTRIBUTE_UNUSED;
{ {
return (GET_CODE (op) == CONST_INT return (GET_CODE (op) == CONST_INT
&& (INTVAL (op) & (~ (HOST_WIDE_INT) 0xffff)) == 0); && CONST_OK_FOR_LETTER_P (INTVAL (op), 'K'));
} }
/* Return 1 if OP is a CONST_INT that cannot fit in a signed D field. */ /* Return 1 if OP is a CONST_INT that cannot fit in a signed D field. */
...@@ -663,19 +663,14 @@ num_insns_constant_wide (value) ...@@ -663,19 +663,14 @@ num_insns_constant_wide (value)
HOST_WIDE_INT value; HOST_WIDE_INT value;
{ {
/* signed constant loadable with {cal|addi} */ /* signed constant loadable with {cal|addi} */
if (((unsigned HOST_WIDE_INT)value + 0x8000) < 0x10000) if (CONST_OK_FOR_LETTER_P (value, 'I'))
return 1;
#if HOST_BITS_PER_WIDE_INT == 32
/* constant loadable with {cau|addis} */
else if ((value & 0xffff) == 0)
return 1; return 1;
#else
/* constant loadable with {cau|addis} */ /* constant loadable with {cau|addis} */
else if ((value & 0xffff) == 0 && (value & ~0xffffffff) == 0) else if (CONST_OK_FOR_LETTER_P (value, 'L'))
return 1; return 1;
#if HOST_BITS_PER_WIDE_INT == 64
else if (TARGET_64BIT) else if (TARGET_64BIT)
{ {
HOST_WIDE_INT low = value & 0xffffffff; HOST_WIDE_INT low = value & 0xffffffff;
...@@ -880,7 +875,7 @@ mem_or_easy_const_operand (op, mode) ...@@ -880,7 +875,7 @@ mem_or_easy_const_operand (op, mode)
} }
/* Return 1 if the operand is either a non-special register or an item /* Return 1 if the operand is either a non-special register or an item
that can be used as the operand of an SI add insn. */ that can be used as the operand of a `mode' add insn. */
int int
add_operand (op, mode) add_operand (op, mode)
...@@ -889,7 +884,7 @@ add_operand (op, mode) ...@@ -889,7 +884,7 @@ add_operand (op, mode)
{ {
return (reg_or_short_operand (op, mode) return (reg_or_short_operand (op, mode)
|| (GET_CODE (op) == CONST_INT || (GET_CODE (op) == CONST_INT
&& (INTVAL (op) & (~ (HOST_WIDE_INT) 0xffff0000)) == 0)); && CONST_OK_FOR_LETTER_P (INTVAL(op), 'L')));
} }
/* Return 1 if OP is a constant but not a valid add_operand. */ /* Return 1 if OP is a constant but not a valid add_operand. */
...@@ -901,7 +896,7 @@ non_add_cint_operand (op, mode) ...@@ -901,7 +896,7 @@ non_add_cint_operand (op, mode)
{ {
return (GET_CODE (op) == CONST_INT return (GET_CODE (op) == CONST_INT
&& (unsigned HOST_WIDE_INT) (INTVAL (op) + 0x8000) >= 0x10000 && (unsigned HOST_WIDE_INT) (INTVAL (op) + 0x8000) >= 0x10000
&& (INTVAL (op) & (~ (HOST_WIDE_INT) 0xffff0000)) != 0); && ! CONST_OK_FOR_LETTER_P (INTVAL(op), 'L'));
} }
/* Return 1 if the operand is a non-special register or a constant that /* Return 1 if the operand is a non-special register or a constant that
...@@ -914,8 +909,10 @@ logical_operand (op, mode) ...@@ -914,8 +909,10 @@ logical_operand (op, mode)
{ {
return (gpc_reg_operand (op, mode) return (gpc_reg_operand (op, mode)
|| (GET_CODE (op) == CONST_INT || (GET_CODE (op) == CONST_INT
&& ((INTVAL (op) & (~ (HOST_WIDE_INT) 0xffff)) == 0 && ((INTVAL (op) & GET_MODE_MASK (mode)
|| (INTVAL (op) & (~ (HOST_WIDE_INT) 0xffff0000)) == 0))); & (~ (HOST_WIDE_INT) 0xffff)) == 0
|| (INTVAL (op) & GET_MODE_MASK (mode)
& (~ (HOST_WIDE_INT) 0xffff0000)) == 0)));
} }
/* Return 1 if C is a constant that is not a logical operand (as /* Return 1 if C is a constant that is not a logical operand (as
...@@ -924,11 +921,13 @@ logical_operand (op, mode) ...@@ -924,11 +921,13 @@ logical_operand (op, mode)
int int
non_logical_cint_operand (op, mode) non_logical_cint_operand (op, mode)
register rtx op; register rtx op;
enum machine_mode mode ATTRIBUTE_UNUSED; enum machine_mode mode;
{ {
return (GET_CODE (op) == CONST_INT return (GET_CODE (op) == CONST_INT
&& (INTVAL (op) & (~ (HOST_WIDE_INT) 0xffff)) != 0 && (INTVAL (op) & GET_MODE_MASK (mode) &
&& (INTVAL (op) & (~ (HOST_WIDE_INT) 0xffff0000)) != 0); (~ (HOST_WIDE_INT) 0xffff)) != 0
&& (INTVAL (op) & GET_MODE_MASK (mode) &
(~ (HOST_WIDE_INT) 0xffff0000)) != 0);
} }
/* Return 1 if C is a constant that can be encoded in a 32-bit mask on the /* Return 1 if C is a constant that can be encoded in a 32-bit mask on the
...@@ -1198,7 +1197,7 @@ small_data_operand (op, mode) ...@@ -1198,7 +1197,7 @@ small_data_operand (op, mode)
enum machine_mode mode ATTRIBUTE_UNUSED; enum machine_mode mode ATTRIBUTE_UNUSED;
{ {
#if TARGET_ELF #if TARGET_ELF
rtx sym_ref, const_part; rtx sym_ref;
if (rs6000_sdata == SDATA_NONE || rs6000_sdata == SDATA_DATA) if (rs6000_sdata == SDATA_NONE || rs6000_sdata == SDATA_DATA)
return 0; return 0;
...@@ -2474,7 +2473,7 @@ ccr_bit (op, scc_p) ...@@ -2474,7 +2473,7 @@ ccr_bit (op, scc_p)
struct rtx_def * struct rtx_def *
rs6000_got_register (value) rs6000_got_register (value)
rtx value; rtx value ATTRIBUTE_UNUSED;
{ {
/* The second flow pass currently (June 1999) can't update regs_ever_live /* The second flow pass currently (June 1999) can't update regs_ever_live
without disturbing other parts of the compiler, so update it here to without disturbing other parts of the compiler, so update it here to
...@@ -2627,7 +2626,7 @@ print_operand (file, x, code) ...@@ -2627,7 +2626,7 @@ print_operand (file, x, code)
if (! INT_P (x)) if (! INT_P (x))
output_operand_lossage ("invalid %%b value"); output_operand_lossage ("invalid %%b value");
fprintf (file, "%d", INT_LOWPART (x) & 0xffff); fprintf (file, HOST_WIDE_INT_PRINT_DEC, INT_LOWPART (x) & 0xffff);
return; return;
case 'B': case 'B':
...@@ -2713,7 +2712,7 @@ print_operand (file, x, code) ...@@ -2713,7 +2712,7 @@ print_operand (file, x, code)
/* If constant, output low-order five bits. Otherwise, /* If constant, output low-order five bits. Otherwise,
write normally. */ write normally. */
if (INT_P (x)) if (INT_P (x))
fprintf (file, "%d", INT_LOWPART (x) & 31); fprintf (file, HOST_WIDE_INT_PRINT_DEC, INT_LOWPART (x) & 31);
else else
print_operand (file, x, 0); print_operand (file, x, 0);
return; return;
...@@ -2722,7 +2721,7 @@ print_operand (file, x, code) ...@@ -2722,7 +2721,7 @@ print_operand (file, x, code)
/* If constant, output low-order six bits. Otherwise, /* If constant, output low-order six bits. Otherwise,
write normally. */ write normally. */
if (INT_P (x)) if (INT_P (x))
fprintf (file, "%d", INT_LOWPART (x) & 63); fprintf (file, HOST_WIDE_INT_PRINT_DEC, INT_LOWPART (x) & 63);
else else
print_operand (file, x, 0); print_operand (file, x, 0);
return; return;
...@@ -2759,7 +2758,7 @@ print_operand (file, x, code) ...@@ -2759,7 +2758,7 @@ print_operand (file, x, code)
if (! INT_P (x)) if (! INT_P (x))
output_operand_lossage ("invalid %%k value"); output_operand_lossage ("invalid %%k value");
fprintf (file, "%d", ~ INT_LOWPART (x)); fprintf (file, HOST_WIDE_INT_PRINT_DEC, ~ INT_LOWPART (x));
return; return;
case 'L': case 'L':
...@@ -2903,7 +2902,7 @@ print_operand (file, x, code) ...@@ -2903,7 +2902,7 @@ print_operand (file, x, code)
if (! INT_P (x)) if (! INT_P (x))
output_operand_lossage ("invalid %%s value"); output_operand_lossage ("invalid %%s value");
fprintf (file, "%d", (32 - INT_LOWPART (x)) & 31); fprintf (file, HOST_WIDE_INT_PRINT_DEC, (32 - INT_LOWPART (x)) & 31);
return; return;
case 'S': case 'S':
...@@ -3006,7 +3005,8 @@ print_operand (file, x, code) ...@@ -3006,7 +3005,8 @@ print_operand (file, x, code)
if (! INT_P (x)) if (! INT_P (x))
output_operand_lossage ("invalid %%u value"); output_operand_lossage ("invalid %%u value");
fprintf (file, "0x%x", (INT_LOWPART (x) >> 16) & 0xffff); fprintf (file, HOST_WIDE_INT_PRINT_HEX,
(INT_LOWPART (x) >> 16) & 0xffff);
return; return;
case 'v': case 'v':
...@@ -3076,7 +3076,8 @@ print_operand (file, x, code) ...@@ -3076,7 +3076,8 @@ print_operand (file, x, code)
/* If constant, low-order 16 bits of constant, signed. Otherwise, write /* If constant, low-order 16 bits of constant, signed. Otherwise, write
normally. */ normally. */
if (INT_P (x)) if (INT_P (x))
fprintf (file, "%d", ((INT_LOWPART (x) & 0xffff) ^ 0x8000) - 0x8000); fprintf (file, HOST_WIDE_INT_PRINT_DEC,
((INT_LOWPART (x) & 0xffff) ^ 0x8000) - 0x8000);
else else
print_operand (file, x, 0); print_operand (file, x, 0);
return; return;
...@@ -3085,7 +3086,7 @@ print_operand (file, x, code) ...@@ -3085,7 +3086,7 @@ print_operand (file, x, code)
/* If constant, low-order 16 bits of constant, unsigned. /* If constant, low-order 16 bits of constant, unsigned.
Otherwise, write normally. */ Otherwise, write normally. */
if (INT_P (x)) if (INT_P (x))
fprintf (file, "%d", INT_LOWPART (x) & 0xffff); fprintf (file, HOST_WIDE_INT_PRINT_DEC, INT_LOWPART (x) & 0xffff);
else else
print_operand (file, x, 0); print_operand (file, x, 0);
return; return;
...@@ -3221,7 +3222,10 @@ print_operand_address (file, x) ...@@ -3221,7 +3222,10 @@ print_operand_address (file, x)
reg_names[ REGNO (XEXP (x, 1)) ]); reg_names[ REGNO (XEXP (x, 1)) ]);
} }
else if (GET_CODE (x) == PLUS && GET_CODE (XEXP (x, 1)) == CONST_INT) else if (GET_CODE (x) == PLUS && GET_CODE (XEXP (x, 1)) == CONST_INT)
fprintf (file, "%d(%s)", INTVAL (XEXP (x, 1)), reg_names[ REGNO (XEXP (x, 0)) ]); {
fprintf (file, HOST_WIDE_INT_PRINT_DEC, INTVAL (XEXP (x, 1)));
fprintf (file, "(%s)", reg_names[ REGNO (XEXP (x, 0)) ]);
}
#if TARGET_ELF #if TARGET_ELF
else if (GET_CODE (x) == LO_SUM && GET_CODE (XEXP (x, 0)) == REG else if (GET_CODE (x) == LO_SUM && GET_CODE (XEXP (x, 0)) == REG
&& CONSTANT_P (XEXP (x, 1))) && CONSTANT_P (XEXP (x, 1)))
...@@ -5649,7 +5653,7 @@ rs6000_longcall_ref (call_ref) ...@@ -5649,7 +5653,7 @@ rs6000_longcall_ref (call_ref)
void void
rs6000_select_rtx_section (mode, x) rs6000_select_rtx_section (mode, x)
enum machine_mode mode; enum machine_mode mode ATTRIBUTE_UNUSED;
rtx x; rtx x;
{ {
if (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P (x)) if (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P (x))
...@@ -5761,17 +5765,17 @@ rs6000_encode_section_info (decl) ...@@ -5761,17 +5765,17 @@ rs6000_encode_section_info (decl)
if ((size > 0 && size <= g_switch_value) if ((size > 0 && size <= g_switch_value)
|| (name || (name
&& ((len == sizeof (".sdata")-1 && ((len == sizeof (".sdata") - 1
&& strcmp (name, ".sdata") == 0) && strcmp (name, ".sdata") == 0)
|| (len == sizeof (".sdata2")-1 || (len == sizeof (".sdata2") - 1
&& strcmp (name, ".sdata2") == 0) && strcmp (name, ".sdata2") == 0)
|| (len == sizeof (".sbss")-1 || (len == sizeof (".sbss") - 1
&& strcmp (name, ".sbss") == 0) && strcmp (name, ".sbss") == 0)
|| (len == sizeof (".sbss2")-1 || (len == sizeof (".sbss2") - 1
&& strcmp (name, ".sbss2") == 0) && strcmp (name, ".sbss2") == 0)
|| (len == sizeof (".PPC.EMB.sdata0")-1 || (len == sizeof (".PPC.EMB.sdata0") - 1
&& strcmp (name, ".PPC.EMB.sdata0") == 0) && strcmp (name, ".PPC.EMB.sdata0") == 0)
|| (len == sizeof (".PPC.EMB.sbss0")-1 || (len == sizeof (".PPC.EMB.sbss0") - 1
&& strcmp (name, ".PPC.EMB.sbss0") == 0)))) && strcmp (name, ".PPC.EMB.sbss0") == 0))))
{ {
rtx sym_ref = XEXP (DECL_RTL (decl), 0); rtx sym_ref = XEXP (DECL_RTL (decl), 0);
......
...@@ -17,13 +17,12 @@ fp-bit.c: $(srcdir)/config/fp-bit.c ...@@ -17,13 +17,12 @@ fp-bit.c: $(srcdir)/config/fp-bit.c
# different processor models # different processor models
MULTILIB_OPTIONS = msoft-float \ MULTILIB_OPTIONS = msoft-float \
mcpu=common/mcpu=power/mcpu=powerpc/maix64 mcpu=common/mcpu=power/mcpu=powerpc/m64
MULTILIB_DIRNAMES = soft-float \ MULTILIB_DIRNAMES = soft-float \
common power powerpc aix64 common power powerpc ppc64
MULTILIB_MATCHES = msoft-float=mcpu?403 \ MULTILIB_MATCHES = msoft-float=mcpu?403 \
maix64=maix64 \
mcpu?power=mpower \ mcpu?power=mpower \
mcpu?power=mrios1 \ mcpu?power=mrios1 \
mcpu?power=mcpu?rios1 \ mcpu?power=mcpu?rios1 \
...@@ -32,12 +31,15 @@ MULTILIB_MATCHES = msoft-float=mcpu?403 \ ...@@ -32,12 +31,15 @@ MULTILIB_MATCHES = msoft-float=mcpu?403 \
mcpu?power=mpower2 \ mcpu?power=mpower2 \
mcpu?power=mrios2 \ mcpu?power=mrios2 \
mcpu?power=mcpu=rios2 \ mcpu?power=mcpu=rios2 \
mcpu?powerpc=mcpu?rs64a \
mcpu?powerpc=mcpu?601 \ mcpu?powerpc=mcpu?601 \
mcpu?powerpc=mcpu?602 \ mcpu?powerpc=mcpu?602 \
mcpu?powerpc=mcpu?603 \ mcpu?powerpc=mcpu?603 \
mcpu?powerpc=mcpu?603e \ mcpu?powerpc=mcpu?603e \
mcpu?powerpc=mcpu?604 \ mcpu?powerpc=mcpu?604 \
mcpu?powerpc=mcpu?620 \ mcpu?powerpc=mcpu?620 \
mcpu?powerpc=mcpu?630 \
mcpu?powerpc=mcpu?750 \
mcpu?powerpc=mcpu?403 \ mcpu?powerpc=mcpu?403 \
mcpu?powerpc=mpowerpc \ mcpu?powerpc=mpowerpc \
mcpu?powerpc=mpowerpc-gpopt \ mcpu?powerpc=mpowerpc-gpopt \
......
...@@ -307,12 +307,12 @@ in the following sections. ...@@ -307,12 +307,12 @@ in the following sections.
-mcpu=@var{cpu type} -mcpu=@var{cpu type}
-mtune=@var{cpu type} -mtune=@var{cpu type}
-mpower -mno-power -mpower2 -mno-power2 -mpower -mno-power -mpower2 -mno-power2
-mpowerpc -mno-powerpc -mpowerpc -mpowerpc64 -mno-powerpc
-mpowerpc-gpopt -mno-powerpc-gpopt -mpowerpc-gpopt -mno-powerpc-gpopt
-mpowerpc-gfxopt -mno-powerpc-gfxopt -mpowerpc-gfxopt -mno-powerpc-gfxopt
-mnew-mnemonics -mno-new-mnemonics -mnew-mnemonics -mno-new-mnemonics
-mfull-toc -mminimal-toc -mno-fop-in-toc -mno-sum-in-toc -mfull-toc -mminimal-toc -mno-fop-in-toc -mno-sum-in-toc
-maix64 -maix32 -mxl-call -mno-xl-call -mthreads -mpe -m64 -m32 -mxl-call -mno-xl-call -mthreads -mpe
-msoft-float -mhard-float -mmultiple -mno-multiple -msoft-float -mhard-float -mmultiple -mno-multiple
-mstring -mno-string -mupdate -mno-update -mstring -mno-string -mupdate -mno-update
-mfused-madd -mno-fused-madd -mbit-align -mno-bit-align -mfused-madd -mno-fused-madd -mbit-align -mno-bit-align
...@@ -4854,49 +4854,34 @@ should normally not specify either @samp{-mnew-mnemonics} or ...@@ -4854,49 +4854,34 @@ should normally not specify either @samp{-mnew-mnemonics} or
@kindex -mcpu @kindex -mcpu
Set architecture type, register usage, choice of mnemonics, and Set architecture type, register usage, choice of mnemonics, and
instruction scheduling parameters for machine type @var{cpu_type}. instruction scheduling parameters for machine type @var{cpu_type}.
Supported values for @var{cpu_type} are @samp{rs6000}, @samp{rios1}, Supported values for @var{cpu_type} are @samp{rios}, @samp{rios1},
@samp{rios2}, @samp{rsc}, @samp{601}, @samp{602}, @samp{603}, @samp{rsc}, @samp{rios2}, @samp{rs64a}, @samp{601}, @samp{602},
@samp{603e}, @samp{604}, @samp{604e}, @samp{620}, @samp{740}, @samp{603}, @samp{603e}, @samp{604}, @samp{604e}, @samp{620},
@samp{750}, @samp{power}, @samp{power2}, @samp{powerpc}, @samp{403}, @samp{630}, @samp{740}, @samp{750}, @samp{power}, @samp{power2},
@samp{505}, @samp{801}, @samp{821}, @samp{823}, and @samp{860} and @samp{powerpc}, @samp{403}, @samp{505}, @samp{801}, @samp{821},
@samp{common}. @samp{-mcpu=power}, @samp{-mcpu=power2}, and @samp{823}, and @samp{860} and @samp{common}. @samp{-mcpu=power},
@samp{-mcpu=powerpc} specify generic POWER, POWER2 and pure PowerPC @samp{-mcpu=power2}, @samp{-mcpu=powerpc}, and @samp{-mcpu=powerpc64}
(i.e., not MPC601) architecture machine types, with an appropriate, specify generic POWER, POWER2, pure 32-bit PowerPC (i.e., not MPC601),
and 64-bit PowerPC architecture machine types, with an appropriate,
generic processor model assumed for scheduling purposes.@refill generic processor model assumed for scheduling purposes.@refill
@c overfull hbox here --bob 22 jul96
@c original text between ignore ... end ignore
@ignore
Specifying any of the @samp{-mcpu=rios1}, @samp{-mcpu=rios2},
@samp{-mcpu=rsc}, @samp{-mcpu=power}, or @samp{-mcpu=power2} options
enables the @samp{-mpower} option and disables the @samp{-mpowerpc}
option; @samp{-mcpu=601} enables both the @samp{-mpower} and
@samp{-mpowerpc} options; all of @samp{-mcpu=602}, @samp{-mcpu=603},
@samp{-mcpu=603e}, @samp{-mcpu=604}, @samp{-mcpu=604e},
@samp{-mcpu=620}, @samp{-mcpu=403}, @samp{-mcpu=505}, @samp{-mcpu=801},
@samp{-mcpu=821}, @samp{-mcpu=823}, @samp{-mcpu=860} and
@samp{-mcpu=powerpc} enable the @samp{-mpowerpc} option and disable the
@samp{-mpower} option; @samp{-mcpu=common} disables both the
@samp{-mpower} and @samp{-mpowerpc} options.@refill
@end ignore
@c changed paragraph
Specifying any of the following options: Specifying any of the following options:
@samp{-mcpu=rios1}, @samp{-mcpu=rios2}, @samp{-mcpu=rsc}, @samp{-mcpu=rios1}, @samp{-mcpu=rios2}, @samp{-mcpu=rsc},
@samp{-mcpu=power}, or @samp{-mcpu=power2} @samp{-mcpu=power}, or @samp{-mcpu=power2}
enables the @samp{-mpower} option and disables the @samp{-mpowerpc} option; enables the @samp{-mpower} option and disables the @samp{-mpowerpc} option;
@samp{-mcpu=601} enables both the @samp{-mpower} and @samp{-mpowerpc} options. @samp{-mcpu=601} enables both the @samp{-mpower} and @samp{-mpowerpc} options.
All of @samp{-mcpu=602}, @samp{-mcpu=603}, @samp{-mcpu=603e}, All of @samp{-mcpu=rs64a}, @samp{-mcpu=602}, @samp{-mcpu=603},
@samp{-mcpu=604}, @samp{-mcpu=620}, @samp{-mcpu=603e}, @samp{-mcpu=604}, @samp{-mcpu=620}, @samp{-mcpu=630},
@samp{-mcpu=740}, and @samp{-mcpu=750}
enable the @samp{-mpowerpc} option and disable the @samp{-mpower} option. enable the @samp{-mpowerpc} option and disable the @samp{-mpower} option.
Exactly similarly, all of @samp{-mcpu=403}, Exactly similarly, all of @samp{-mcpu=403},
@samp{-mcpu=505}, @samp{-mcpu=821}, @samp{-mcpu=860} and @samp{-mcpu=powerpc} @samp{-mcpu=505}, @samp{-mcpu=821}, @samp{-mcpu=860} and @samp{-mcpu=powerpc}
enable the @samp{-mpowerpc} option and disable the @samp{-mpower} option. enable the @samp{-mpowerpc} option and disable the @samp{-mpower} option.
@samp{-mcpu=common} disables both the @samp{-mcpu=common} disables both the
@samp{-mpower} and @samp{-mpowerpc} options.@refill @samp{-mpower} and @samp{-mpowerpc} options.@refill
@c end changes to prevent overfull hboxes
AIX versions 4 or greater selects @samp{-mcpu=common} by default, so AIX versions 4 or greater selects @samp{-mcpu=common} by default, so
that code will operate on all members of the RS/6000 and PowerPC that code will operate on all members of the RS/6000 POWER and PowerPC
families. In that case, GNU CC will use only the instructions in the families. In that case, GNU CC will use only the instructions in the
common subset of both architectures plus some special AIX common-mode common subset of both architectures plus some special AIX common-mode
calls, and will not use the MQ register. GNU CC assumes a generic calls, and will not use the MQ register. GNU CC assumes a generic
...@@ -4906,8 +4891,9 @@ Specifying any of the options @samp{-mcpu=rios1}, @samp{-mcpu=rios2}, ...@@ -4906,8 +4891,9 @@ Specifying any of the options @samp{-mcpu=rios1}, @samp{-mcpu=rios2},
@samp{-mcpu=rsc}, @samp{-mcpu=power}, or @samp{-mcpu=power2} also @samp{-mcpu=rsc}, @samp{-mcpu=power}, or @samp{-mcpu=power2} also
disables the @samp{new-mnemonics} option. Specifying @samp{-mcpu=601}, disables the @samp{new-mnemonics} option. Specifying @samp{-mcpu=601},
@samp{-mcpu=602}, @samp{-mcpu=603}, @samp{-mcpu=603e}, @samp{-mcpu=604}, @samp{-mcpu=602}, @samp{-mcpu=603}, @samp{-mcpu=603e}, @samp{-mcpu=604},
@samp{620}, @samp{403}, or @samp{-mcpu=powerpc} also enables the @samp{-mcpu=620}, @samp{-mcpu=630}, @samp{-mcpu=403}, @samp{-mcpu=505},
@samp{new-mnemonics} option.@refill @samp{-mcpu=821}, @samp{-mcpu=860} or @samp{-mcpu=powerpc} also enables
the @samp{new-mnemonics} option.@refill
Specifying @samp{-mcpu=403}, @samp{-mcpu=821}, or @samp{-mcpu=860} also Specifying @samp{-mcpu=403}, @samp{-mcpu=821}, or @samp{-mcpu=860} also
enables the @samp{-msoft-float} option. enables the @samp{-msoft-float} option.
...@@ -4950,15 +4936,15 @@ option, GNU CC will produce code that is slower and larger but which ...@@ -4950,15 +4936,15 @@ option, GNU CC will produce code that is slower and larger but which
uses extremely little TOC space. You may wish to use this option uses extremely little TOC space. You may wish to use this option
only on files that contain less frequently executed code. @refill only on files that contain less frequently executed code. @refill
@item -maix64 @item -m64
@itemx -maix32 @itemx -m32
@kindex -maix64 @kindex -m64
@kindex -maix32 @kindex -m32
Enable AIX 64-bit ABI and calling convention: 64-bit pointers, 64-bit Enable 64-bit PowerPC ABI and calling convention: 64-bit pointers, 64-bit
@code{long} type, and the infrastructure needed to support them. @code{long} type, and the infrastructure needed to support them.
Specifying @samp{-maix64} implies @samp{-mpowerpc64} and Specifying @samp{-m64} implies @samp{-mpowerpc64} and
@samp{-mpowerpc}, while @samp{-maix32} disables the 64-bit ABI and @samp{-mpowerpc}, while @samp{-m32} disables the 64-bit ABI and
implies @samp{-mno-powerpc64}. GNU CC defaults to @samp{-maix32}. implies @samp{-mno-powerpc64}. GNU CC defaults to @samp{-m32}.
@item -mxl-call @item -mxl-call
@itemx -mno-xl-call @itemx -mno-xl-call
......
...@@ -1384,13 +1384,14 @@ Floating point register ...@@ -1384,13 +1384,14 @@ Floating point register
Signed 16 bit constant Signed 16 bit constant
@item J @item J
Constant whose low 16 bits are 0 Unsigned 16 bit constant shifted left 16 bits (use @samp{L} instead for
@code{SImode} constants)
@item K @item K
Constant whose high 16 bits are 0 Unsigned 16 bit constant
@item L @item L
Constant suitable as a mask operand Signed 16 bit constant shifted left 16 bits
@item M @item M
Constant larger than 31 Constant larger than 31
...@@ -1418,6 +1419,9 @@ AIX TOC entry ...@@ -1418,6 +1419,9 @@ AIX TOC entry
@item S @item S
Constant suitable as a 64-bit mask operand Constant suitable as a 64-bit mask operand
@item T
Constant suitable as a 32-bit mask operand
@item U @item U
System V Release 4 small data area reference System V Release 4 small data area reference
@end table @end table
......
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