X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fconfig%2Fmips%2Fmips.h;h=d6d909b775619e322ac6b2ac09bd4ac8ebe4a15d;hb=f6e5e45643c1d764440adf5c6d65e0995619c6ce;hp=e30d03e32e9999396c3d60cef3bf81f643d5ef73;hpb=2dfa2c74c15975f8a1194ae4f21b13d026b3d3c3;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h index e30d03e32e9..d6d909b7756 100644 --- a/gcc/config/mips/mips.h +++ b/gcc/config/mips/mips.h @@ -26,6 +26,12 @@ along with GCC; see the file COPYING3. If not see #include "config/vxworks-dummy.h" +#ifdef GENERATOR_FILE +/* This is used in some insn conditions, so needs to be declared, but + does not need to be defined. */ +extern int target_flags_explicit; +#endif + /* MIPS external variables defined in mips.c. */ /* Which ABI to use. ABI_32 (original 32, or o32), ABI_N32 (n32), @@ -761,7 +767,9 @@ enum mips_code_readable_setting { /* A spec that infers the -mdsp setting from an -march argument. */ #define BASE_DRIVER_SELF_SPECS \ - "%{!mno-dsp:%{march=24ke*|march=34k*|march=74k*|march=1004k*: -mdsp}}" + "%{!mno-dsp: \ + %{march=24ke*|march=34k*|march=1004k*: -mdsp} \ + %{march=74k*:%{!mno-dspr2: -mdspr2 -mdsp}}}" #define DRIVER_SELF_SPECS BASE_DRIVER_SELF_SPECS @@ -1073,12 +1081,7 @@ enum mips_code_readable_setting { #define SWITCH_TAKES_ARG(CHAR) \ (DEFAULT_SWITCH_TAKES_ARG (CHAR) || (CHAR) == 'G') -#define OVERRIDE_OPTIONS mips_override_options () - #define CONDITIONAL_REGISTER_USAGE mips_conditional_register_usage () - -/* Show we can debug even without a frame pointer. */ -#define CAN_DEBUG_WITHOUT_FP /* Tell collect what flags to pass to nm. */ #ifndef NM_FLAGS @@ -1284,14 +1287,6 @@ enum mips_code_readable_setting { #define BYTES_BIG_ENDIAN (TARGET_BIG_ENDIAN != 0) #define WORDS_BIG_ENDIAN (TARGET_BIG_ENDIAN != 0) -/* Define this to set the endianness to use in libgcc2.c, which can - not depend on target_flags. */ -#if !defined(MIPSEL) && !defined(__MIPSEL__) -#define LIBGCC2_WORDS_BIG_ENDIAN 1 -#else -#define LIBGCC2_WORDS_BIG_ENDIAN 0 -#endif - #define MAX_BITS_PER_WORD 64 /* Width of a word, in units (bytes). */ @@ -1328,9 +1323,6 @@ enum mips_code_readable_setting { /* The number of bytes in a double. */ #define UNITS_PER_DOUBLE (TYPE_PRECISION (double_type_node) / BITS_PER_UNIT) -#define UNITS_PER_SIMD_WORD(MODE) \ - (TARGET_PAIRED_SINGLE_FLOAT ? 8 : UNITS_PER_WORD) - /* Set the sizes of the core types. */ #define SHORT_TYPE_SIZE 16 #define INT_TYPE_SIZE 32 @@ -1521,7 +1513,7 @@ enum mips_code_readable_setting { Regarding coprocessor registers: without evidence to the contrary, it's best to assume that each coprocessor register has a unique - use. This can be overridden, in, e.g., mips_override_options or + use. This can be overridden, in, e.g., mips_option_override or CONDITIONAL_REGISTER_USAGE should the assumption be inappropriate for a particular target. */ @@ -1739,6 +1731,9 @@ enum mips_code_readable_setting { #define HARD_FRAME_POINTER_REGNUM \ (TARGET_MIPS16 ? GP_REG_FIRST + 17 : GP_REG_FIRST + 30) +#define HARD_FRAME_POINTER_IS_FRAME_POINTER 0 +#define HARD_FRAME_POINTER_IS_ARG_POINTER 0 + /* Register in which static-chain is passed to a function. */ #define STATIC_CHAIN_REGNUM (GP_REG_FIRST + 15) @@ -2251,29 +2246,6 @@ typedef struct mips_args { #define INIT_CUMULATIVE_ARGS(CUM, FNTYPE, LIBNAME, INDIRECT, N_NAMED_ARGS) \ mips_init_cumulative_args (&CUM, FNTYPE) -/* Update the data in CUM to advance over an argument - of mode MODE and data type TYPE. - (TYPE is null for libcalls where that information may not be available.) */ - -#define FUNCTION_ARG_ADVANCE(CUM, MODE, TYPE, NAMED) \ - mips_function_arg_advance (&CUM, MODE, TYPE, NAMED) - -/* Determine where to put an argument to a function. - Value is zero to push the argument on the stack, - or a hard register in which to store the argument. - - MODE is the argument's machine mode. - TYPE is the data type of the argument (as a tree). - This is null for libcalls where that information may - not be available. - CUM is a variable of type CUMULATIVE_ARGS which gives info about - the preceding args and about the function being called. - NAMED is nonzero if this argument is a named parameter - (otherwise it is an extra parameter matching an ellipsis). */ - -#define FUNCTION_ARG(CUM, MODE, TYPE, NAMED) \ - mips_function_arg (&CUM, MODE, TYPE, NAMED) - #define FUNCTION_ARG_BOUNDARY mips_function_arg_boundary #define FUNCTION_ARG_PADDING(MODE, TYPE) \ @@ -2446,9 +2418,10 @@ typedef struct mips_args { (often extended) would be needed for byte accesses. */ #define SLOW_BYTE_ACCESS (!TARGET_MIPS16) -/* Define this to be nonzero if shift instructions ignore all but the low-order - few bits. */ -#define SHIFT_COUNT_TRUNCATED 1 +/* Standard MIPS integer shifts truncate the shift amount to the + width of the shifted operand. However, Loongson vector shifts + do not truncate the shift amount at all. */ +#define SHIFT_COUNT_TRUNCATED (!TARGET_LOONGSON_2EF) /* Value is 1 if truncating an integer of INPREC bits to OUTPREC bits is done just by pretending it is already truncated. */