⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 i386.h

📁 Mac OS X 10.4.9 for x86 Source Code gcc 实现源代码
💻 H
📖 第 1 页 / 共 5 页
字号:
	  builtin_define ("__tune_pentiumpro__");		\	  switch (last_tune_char)				\	    {							\	    case '3':						\	      builtin_define ("__tune_pentium3__");		\	      /* FALLTHRU */					\	    case '2':						\	      builtin_define ("__tune_pentium2__");		\	      break;						\	    }							\	}							\      else if (TARGET_K6)					\	{							\	  builtin_define ("__tune_k6__");			\	  if (last_tune_char == '2')				\	    builtin_define ("__tune_k6_2__");			\	  else if (last_tune_char == '3')			\	    builtin_define ("__tune_k6_3__");			\	}							\      else if (TARGET_ATHLON)					\	{							\	  builtin_define ("__tune_athlon__");			\	  /* Only plain "athlon" lacks SSE.  */			\	  if (last_tune_char != 'n')				\	    builtin_define ("__tune_athlon_sse__");		\	}							\      else if (TARGET_K8)					\	builtin_define ("__tune_k8__");				\      else if (TARGET_PENTIUM4)					\	builtin_define ("__tune_pentium4__");			\      else if (TARGET_NOCONA)					\	builtin_define ("__tune_nocona__");			\								\      if (TARGET_MMX)						\	builtin_define ("__MMX__");				\      if (TARGET_3DNOW)						\	builtin_define ("__3dNOW__");				\      if (TARGET_3DNOW_A)					\	builtin_define ("__3dNOW_A__");				\      if (TARGET_SSE)						\	builtin_define ("__SSE__");				\      if (TARGET_SSE2)						\	builtin_define ("__SSE2__");				\      if (TARGET_SSE3)						\	builtin_define ("__SSE3__");				\      /* APPLE LOCAL begin mni 4424835 */				\      if (TARGET_MNI)						\	builtin_define ("__MNI__");				\      /* APPLE LOCAL end mni */					\      if (TARGET_SSE_MATH && TARGET_SSE)			\	builtin_define ("__SSE_MATH__");			\      if (TARGET_SSE_MATH && TARGET_SSE2)			\	builtin_define ("__SSE2_MATH__");			\								\      /* Built-ins based on -march=.  */			\      if (ix86_arch == PROCESSOR_I486)				\	{							\	  builtin_define ("__i486");				\	  builtin_define ("__i486__");				\	}							\      else if (ix86_arch == PROCESSOR_PENTIUM)			\	{							\	  builtin_define ("__i586");				\	  builtin_define ("__i586__");				\	  builtin_define ("__pentium");				\	  builtin_define ("__pentium__");			\	  if (last_arch_char == 'x')				\	    builtin_define ("__pentium_mmx__");			\	}							\      else if (ix86_arch == PROCESSOR_PENTIUMPRO)		\	{							\	  builtin_define ("__i686");				\	  builtin_define ("__i686__");				\	  builtin_define ("__pentiumpro");			\	  builtin_define ("__pentiumpro__");			\	}							\      else if (ix86_arch == PROCESSOR_K6)			\	{							\								\	  builtin_define ("__k6");				\	  builtin_define ("__k6__");				\	  if (last_arch_char == '2')				\	    builtin_define ("__k6_2__");			\	  else if (last_arch_char == '3')			\	    builtin_define ("__k6_3__");			\	}							\      else if (ix86_arch == PROCESSOR_ATHLON)			\	{							\	  builtin_define ("__athlon");				\	  builtin_define ("__athlon__");			\	  /* Only plain "athlon" lacks SSE.  */			\	  if (last_arch_char != 'n')				\	    builtin_define ("__athlon_sse__");			\	}							\      else if (ix86_arch == PROCESSOR_K8)			\	{							\	  builtin_define ("__k8");				\	  builtin_define ("__k8__");				\	}							\      else if (ix86_arch == PROCESSOR_PENTIUM4)			\	{							\	  builtin_define ("__pentium4");			\	  builtin_define ("__pentium4__");			\	}							\      else if (ix86_arch == PROCESSOR_NOCONA)			\	{							\	  builtin_define ("__nocona");				\	  builtin_define ("__nocona__");			\	}							\    }								\  while (0)#define TARGET_CPU_DEFAULT_i386 0#define TARGET_CPU_DEFAULT_i486 1#define TARGET_CPU_DEFAULT_pentium 2#define TARGET_CPU_DEFAULT_pentium_mmx 3#define TARGET_CPU_DEFAULT_pentiumpro 4#define TARGET_CPU_DEFAULT_pentium2 5#define TARGET_CPU_DEFAULT_pentium3 6#define TARGET_CPU_DEFAULT_pentium4 7#define TARGET_CPU_DEFAULT_k6 8#define TARGET_CPU_DEFAULT_k6_2 9#define TARGET_CPU_DEFAULT_k6_3 10#define TARGET_CPU_DEFAULT_athlon 11#define TARGET_CPU_DEFAULT_athlon_sse 12#define TARGET_CPU_DEFAULT_k8 13#define TARGET_CPU_DEFAULT_pentium_m 14#define TARGET_CPU_DEFAULT_prescott 15#define TARGET_CPU_DEFAULT_nocona 16/* APPLE LOCAL begin mainline 2006-04-19 4434601 */#define TARGET_CPU_DEFAULT_generic 17#define TARGET_CPU_DEFAULT_NAMES {"i386", "i486", "pentium", "pentium-mmx",\				  "pentiumpro", "pentium2", "pentium3", \				  "pentium4", "k6", "k6-2", "k6-3",\				  "athlon", "athlon-4", "k8", \				  "pentium-m", "prescott", "nocona", \				  "generic"}/* APPLE LOCAL end mainline 2006-04-19 4434601 */#ifndef CC1_SPEC#define CC1_SPEC "%(cc1_cpu) "#endif/* This macro defines names of additional specifications to put in the   specs that can be used in various specifications like CC1_SPEC.  Its   definition is an initializer with a subgrouping for each command option.   Each subgrouping contains a string constant, that defines the   specification name, and a string constant that used by the GCC driver   program.   Do not define this macro if it does not need to do anything.  */#ifndef SUBTARGET_EXTRA_SPECS#define SUBTARGET_EXTRA_SPECS#endif#define EXTRA_SPECS							\  { "cc1_cpu",  CC1_CPU_SPEC },						\  SUBTARGET_EXTRA_SPECS/* target machine storage layout */#define LONG_DOUBLE_TYPE_SIZE 80/* Set the value of FLT_EVAL_METHOD in float.h.  When using only the   FPU, assume that the fpcw is set to extended precision; when using   only SSE, rounding is correct; when using both SSE and the FPU,   the rounding precision is indeterminate, since either may be chosen   apparently at random.  */#define TARGET_FLT_EVAL_METHOD \  (TARGET_MIX_SSE_I387 ? -1 : TARGET_SSE_MATH ? 0 : 2)#define SHORT_TYPE_SIZE 16#define INT_TYPE_SIZE 32#define FLOAT_TYPE_SIZE 32#define LONG_TYPE_SIZE BITS_PER_WORD#define DOUBLE_TYPE_SIZE 64#define LONG_LONG_TYPE_SIZE 64#if defined (TARGET_BI_ARCH) || TARGET_64BIT_DEFAULT#define MAX_BITS_PER_WORD 64#else#define MAX_BITS_PER_WORD 32#endif/* Define this if most significant byte of a word is the lowest numbered.  *//* That is true on the 80386.  */#define BITS_BIG_ENDIAN 0/* Define this if most significant byte of a word is the lowest numbered.  *//* That is not true on the 80386.  */#define BYTES_BIG_ENDIAN 0/* Define this if most significant word of a multiword number is the lowest   numbered.  *//* Not true for 80386 */#define WORDS_BIG_ENDIAN 0/* Width of a word, in units (bytes).  */#define UNITS_PER_WORD (TARGET_64BIT ? 8 : 4)#ifdef IN_LIBGCC2#define MIN_UNITS_PER_WORD	(TARGET_64BIT ? 8 : 4)#else#define MIN_UNITS_PER_WORD	4#endif/* Allocation boundary (in *bits*) for storing arguments in argument list.  */#define PARM_BOUNDARY BITS_PER_WORD/* Boundary (in *bits*) on which stack pointer should be aligned.  *//* APPLE LOCAL begin compiler should obey -mpreferred-stack-boundary (radar 3232990) *//* prefer * #define STACK_BOUNDARY ((ix86_preferred_stack_boundary > 128) ? 128 : ix86_preferred_stack_boundary) *//*  We're going to extremes to yield a result of indeterminite    signedness here; this macro will be expanded in signed and    unsigned contexts, and mixed signedness induces fatal    warnings.  Radar 3941684.  */#define STACK_BOUNDARY ((ix86_preferred_stack_boundary >=  128) ? 128 : \			(ix86_preferred_stack_boundary == 64) ? 64 : 32)/* APPLE LOCAL end compiler should obey -mpreferred-stack-boundary (radar 3232990) *//* Boundary (in *bits*) on which the stack pointer prefers to be   aligned; the compiler cannot rely on having this alignment.  */#define PREFERRED_STACK_BOUNDARY ix86_preferred_stack_boundary/* As of July 2001, many runtimes to not align the stack properly when   entering main.  This causes expand_main_function to forcibly align   the stack, which results in aligned frames for functions called from   main, though it does nothing for the alignment of main itself.  */#define FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN \  (ix86_preferred_stack_boundary > STACK_BOUNDARY && !TARGET_64BIT)/* Minimum allocation boundary for the code of a function.  */#define FUNCTION_BOUNDARY 8/* C++ stores the virtual bit in the lowest bit of function pointers.  */#define TARGET_PTRMEMFUNC_VBIT_LOCATION ptrmemfunc_vbit_in_pfn/* Alignment of field after `int : 0' in a structure.  */#define EMPTY_FIELD_BOUNDARY BITS_PER_WORD/* Minimum size in bits of the largest boundary to which any   and all fundamental data types supported by the hardware   might need to be aligned. No data type wants to be aligned   rounder than this.   Pentium+ prefers DFmode values to be aligned to 64 bit boundary   and Pentium Pro XFmode values at 128 bit boundaries.  */#define BIGGEST_ALIGNMENT 128/* Decide whether a variable of mode MODE should be 128 bit aligned.  */#define ALIGN_MODE_128(MODE) \ ((MODE) == XFmode || (MODE) == TFmode || SSE_REG_MODE_P (MODE))/* The published ABIs say that doubles should be aligned on word   boundaries, so lower the alignment for structure fields unless   -malign-double is set.  *//* ??? Blah -- this macro is used directly by libobjc.  Since it   supports no vector modes, cut out the complexity and fall back   on BIGGEST_FIELD_ALIGNMENT.  */#ifdef IN_TARGET_LIBS#ifdef __x86_64__#define BIGGEST_FIELD_ALIGNMENT 128#else#define BIGGEST_FIELD_ALIGNMENT 32#endif#else/* APPLE LOCAL Macintosh alignment */#define ADJUST_FIELD_ALIGN(FIELD, COMPUTED, FIRST_FIELD_P) \   x86_field_alignment (FIELD, COMPUTED)#endif/* If defined, a C expression to compute the alignment given to a   constant that is being placed in memory.  EXP is the constant   and ALIGN is the alignment that the object would ordinarily have.   The value of this macro is used instead of that alignment to align   the object.   If this macro is not defined, then ALIGN is used.   The typical use of this macro is to increase alignment for string   constants to be word aligned so that `strcpy' calls that copy   constants can be done inline.  */#define CONSTANT_ALIGNMENT(EXP, ALIGN) ix86_constant_alignment ((EXP), (ALIGN))/* If defined, a C expression to compute the alignment for a static   variable.  TYPE is the data type, and ALIGN is the alignment that   the object would ordinarily have.  The value of this macro is used   instead of that alignment to align the object.   If this macro is not defined, then ALIGN is used.   One use of this macro is to increase alignment of medium-size   data to make it all fit in fewer cache lines.  Another is to   cause character arrays to be word-aligned so that `strcpy' calls   that copy constants to character arrays can be done inline.  */#define DATA_ALIGNMENT(TYPE, ALIGN) ix86_data_alignment ((TYPE), (ALIGN))/* If defined, a C expression to compute the alignment for a local   variable.  TYPE is the data type, and ALIGN is the alignment that   the object would ordinarily have.  The value of this macro is used   instead of that alignment to align the object.   If this macro is not defined, then ALIGN is used.   One use of this macro is to increase alignment of medium-size   data to make it all fit in fewer cache lines.  */#define LOCAL_ALIGNMENT(TYPE, ALIGN) ix86_local_alignment ((TYPE), (ALIGN))/* If defined, a C expression that gives the alignment boundary, in   bits, of an argument with the specified mode and type.  If it is   not defined, `PARM_BOUNDARY' is used for all arguments.  */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -