comparison gcc/config/alpha/alpha.h @ 67:f6334be47118

update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
author nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
date Tue, 22 Mar 2011 17:18:12 +0900
parents 77e2b8dfacca
children 04ced10e8804
comparison
equal deleted inserted replaced
65:65488c3d617d 67:f6334be47118
1 /* Definitions of target machine for GNU compiler, for DEC Alpha. 1 /* Definitions of target machine for GNU compiler, for DEC Alpha.
2 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
3 2000, 2001, 2002, 2004, 2005, 2007, 2008, 2009 3 2000, 2001, 2002, 2004, 2005, 2007, 2008, 2009, 2010
4 Free Software Foundation, Inc. 4 Free Software Foundation, Inc.
5 Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu) 5 Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
6 6
7 This file is part of GCC. 7 This file is part of GCC.
8 8
94 } \ 94 } \
95 } \ 95 } \
96 while (0) 96 while (0)
97 #endif 97 #endif
98 98
99 #define WORD_SWITCH_TAKES_ARG(STR) \
100 (!strcmp (STR, "rpath") || DEFAULT_WORD_SWITCH_TAKES_ARG(STR))
101
102 /* Print subsidiary information on the compiler version in use. */ 99 /* Print subsidiary information on the compiler version in use. */
103 #define TARGET_VERSION 100 #define TARGET_VERSION
104 101
105 /* Run-time compilation parameters selecting different hardware subsets. */ 102 /* Run-time compilation parameters selecting different hardware subsets. */
106 103
139 ALPHA_FPTM_U, /* Underflow traps enabled. */ 136 ALPHA_FPTM_U, /* Underflow traps enabled. */
140 ALPHA_FPTM_SU, /* Software completion, w/underflow traps */ 137 ALPHA_FPTM_SU, /* Software completion, w/underflow traps */
141 ALPHA_FPTM_SUI /* Software completion, w/underflow & inexact traps */ 138 ALPHA_FPTM_SUI /* Software completion, w/underflow & inexact traps */
142 }; 139 };
143 140
144 extern int target_flags;
145
146 extern enum alpha_trap_precision alpha_tp; 141 extern enum alpha_trap_precision alpha_tp;
147 extern enum alpha_fp_rounding_mode alpha_fprm; 142 extern enum alpha_fp_rounding_mode alpha_fprm;
148 extern enum alpha_fp_trap_mode alpha_fptm; 143 extern enum alpha_fp_trap_mode alpha_fptm;
149 144
150 /* Invert the easy way to make options work. */ 145 /* Invert the easy way to make options work. */
207 --with-tune is ignored if -mtune is specified. */ 202 --with-tune is ignored if -mtune is specified. */
208 #define OPTION_DEFAULT_SPECS \ 203 #define OPTION_DEFAULT_SPECS \
209 {"cpu", "%{!mcpu=*:-mcpu=%(VALUE)}" }, \ 204 {"cpu", "%{!mcpu=*:-mcpu=%(VALUE)}" }, \
210 {"tune", "%{!mtune=*:-mtune=%(VALUE)}" } 205 {"tune", "%{!mtune=*:-mtune=%(VALUE)}" }
211 206
212 /* Sometimes certain combinations of command options do not make sense
213 on a particular target machine. You can define a macro
214 `OVERRIDE_OPTIONS' to take account of this. This macro, if
215 defined, is executed once just after all the command options have
216 been parsed.
217
218 On the Alpha, it is used to translate target-option strings into
219 numeric values. */
220
221 #define OVERRIDE_OPTIONS override_options ()
222
223
224 /* Define this macro to change register usage conditional on target flags.
225
226 On the Alpha, we use this to disable the floating-point registers when
227 they don't exist. */
228
229 #define CONDITIONAL_REGISTER_USAGE \
230 { \
231 int i; \
232 if (! TARGET_FPREGS) \
233 for (i = 32; i < 63; i++) \
234 fixed_regs[i] = call_used_regs[i] = 1; \
235 }
236
237
238 /* Show we can debug even without a frame pointer. */
239 #define CAN_DEBUG_WITHOUT_FP
240 207
241 /* target machine storage layout */ 208 /* target machine storage layout */
242 209
243 /* Define the size of `int'. The default is the same as the word size. */ 210 /* Define the size of `int'. The default is the same as the word size. */
244 #define INT_TYPE_SIZE 32 211 #define INT_TYPE_SIZE 32
701 668
702 /* Define this if stack space is still allocated for a parameter passed 669 /* Define this if stack space is still allocated for a parameter passed
703 in a register. */ 670 in a register. */
704 /* #define REG_PARM_STACK_SPACE */ 671 /* #define REG_PARM_STACK_SPACE */
705 672
706 /* Value is the number of bytes of arguments automatically
707 popped when returning from a subroutine call.
708 FUNDECL is the declaration node of the function (as a tree),
709 FUNTYPE is the data type of the function (as a tree),
710 or for a library call it is an identifier node for the subroutine name.
711 SIZE is the number of bytes of arguments passed on the stack. */
712
713 #define RETURN_POPS_ARGS(FUNDECL,FUNTYPE,SIZE) 0
714
715 /* Define how to find the value returned by a function. 673 /* Define how to find the value returned by a function.
716 VALTYPE is the data type of the value (as a tree). 674 VALTYPE is the data type of the value (as a tree).
717 If the precise function being called is known, FUNC is its FUNCTION_DECL; 675 If the precise function being called is known, FUNC is its FUNCTION_DECL;
718 otherwise, FUNC is 0. 676 otherwise, FUNC is 0.
719 677
766 #define ALPHA_ARG_SIZE(MODE, TYPE, NAMED) \ 724 #define ALPHA_ARG_SIZE(MODE, TYPE, NAMED) \
767 ((MODE) == TFmode || (MODE) == TCmode ? 1 \ 725 ((MODE) == TFmode || (MODE) == TCmode ? 1 \
768 : (((MODE) == BLKmode ? int_size_in_bytes (TYPE) : GET_MODE_SIZE (MODE)) \ 726 : (((MODE) == BLKmode ? int_size_in_bytes (TYPE) : GET_MODE_SIZE (MODE)) \
769 + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD) 727 + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD)
770 728
771 /* Update the data in CUM to advance over an argument
772 of mode MODE and data type TYPE.
773 (TYPE is null for libcalls where that information may not be available.) */
774
775 #define FUNCTION_ARG_ADVANCE(CUM, MODE, TYPE, NAMED) \
776 ((CUM) += \
777 (targetm.calls.must_pass_in_stack (MODE, TYPE)) \
778 ? 6 : ALPHA_ARG_SIZE (MODE, TYPE, NAMED))
779
780 /* Determine where to put an argument to a function.
781 Value is zero to push the argument on the stack,
782 or a hard register in which to store the argument.
783
784 MODE is the argument's machine mode.
785 TYPE is the data type of the argument (as a tree).
786 This is null for libcalls where that information may
787 not be available.
788 CUM is a variable of type CUMULATIVE_ARGS which gives info about
789 the preceding args and about the function being called.
790 NAMED is nonzero if this argument is a named parameter
791 (otherwise it is an extra parameter matching an ellipsis).
792
793 On Alpha the first 6 words of args are normally in registers
794 and the rest are pushed. */
795
796 #define FUNCTION_ARG(CUM, MODE, TYPE, NAMED) \
797 function_arg((CUM), (MODE), (TYPE), (NAMED))
798
799 /* Make (or fake) .linkage entry for function call. 729 /* Make (or fake) .linkage entry for function call.
800 IS_LOCAL is 0 if name is used in call, 1 if name is used in definition. */ 730 IS_LOCAL is 0 if name is used in call, 1 if name is used in definition. */
801 731
802 /* This macro defines the start of an assembly comment. */ 732 /* This macro defines the start of an assembly comment. */
803 733
931 elimination offsets will change the hi/lo split, and if we split 861 elimination offsets will change the hi/lo split, and if we split
932 before reload, we will require additional instructions. */ 862 before reload, we will require additional instructions. */
933 #define NONSTRICT_REG_OK_FP_BASE_P(X) \ 863 #define NONSTRICT_REG_OK_FP_BASE_P(X) \
934 (REGNO (X) == 31 || REGNO (X) == 63 \ 864 (REGNO (X) == 31 || REGNO (X) == 63 \
935 || (REGNO (X) >= FIRST_PSEUDO_REGISTER \ 865 || (REGNO (X) >= FIRST_PSEUDO_REGISTER \
936 && REGNO (X) < LAST_VIRTUAL_REGISTER)) 866 && REGNO (X) < LAST_VIRTUAL_POINTER_REGISTER))
937 867
938 /* Nonzero if X is a hard reg that can be used as a base reg. */ 868 /* Nonzero if X is a hard reg that can be used as a base reg. */
939 #define STRICT_REG_OK_FOR_BASE_P(X) REGNO_OK_FOR_BASE_P (REGNO (X)) 869 #define STRICT_REG_OK_FOR_BASE_P(X) REGNO_OK_FOR_BASE_P (REGNO (X))
940 870
941 #ifdef REG_OK_STRICT 871 #ifdef REG_OK_STRICT