Mercurial > hg > CbC > CbC_gcc
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 |