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

📄 i386.h

📁 Mac OS X 10.4.9 for x86 Source Code gcc 实现源代码
💻 H
📖 第 1 页 / 共 5 页
字号:
#define TARGET_MEMORY_MISMATCH_STALL (x86_memory_mismatch_stall & TUNEMASK)#define TARGET_PROLOGUE_USING_MOVE (x86_prologue_using_move & TUNEMASK)#define TARGET_EPILOGUE_USING_MOVE (x86_epilogue_using_move & TUNEMASK)/* APPLE LOCAL mainline 2006-04-19 4434601 *//* TARGET_DECOMPOSE_LEA removed */#define TARGET_PREFETCH_SSE (x86_prefetch_sse)#define TARGET_SHIFT1 (x86_shift1 & TUNEMASK)#define TARGET_USE_FFREEP (x86_use_ffreep & TUNEMASK)#define TARGET_REP_MOVL_OPTIMAL (x86_rep_movl_optimal & TUNEMASK)#define TARGET_INTER_UNIT_MOVES (x86_inter_unit_moves & TUNEMASK)#define TARGET_FOUR_JUMP_LIMIT (x86_four_jump_limit & TUNEMASK)#define TARGET_SCHEDULE (x86_schedule & TUNEMASK)#define TARGET_USE_BT (x86_use_bt & TUNEMASK)/* APPLE LOCAL begin mainline 2006-04-19 4434601 */#define TARGET_USE_INCDEC (x86_use_incdec & TUNEMASK)#define TARGET_PAD_RETURNS (x86_pad_returns & TUNEMASK)/* APPLE LOCAL end mainline 2006-04-19 4434601 */#define TARGET_STACK_PROBE (target_flags & MASK_STACK_PROBE)#define TARGET_ALIGN_STRINGOPS (!(target_flags & MASK_NO_ALIGN_STROPS))#define TARGET_INLINE_ALL_STRINGOPS (target_flags & MASK_INLINE_ALL_STROPS)#define ASSEMBLER_DIALECT (ix86_asm_dialect)#define TARGET_SSE ((target_flags & MASK_SSE) != 0)#define TARGET_SSE2 ((target_flags & MASK_SSE2) != 0)#define TARGET_SSE3 ((target_flags & MASK_SSE3) != 0)#define TARGET_SSE_MATH ((ix86_fpmath & FPMATH_SSE) != 0)#define TARGET_MIX_SSE_I387 ((ix86_fpmath & FPMATH_SSE) \			     && (ix86_fpmath & FPMATH_387))#define TARGET_MMX ((target_flags & MASK_MMX) != 0)#define TARGET_3DNOW ((target_flags & MASK_3DNOW) != 0)#define TARGET_3DNOW_A ((target_flags & MASK_3DNOW_A) != 0)/* APPLE LOCAL mni */#define TARGET_MNI ((target_flags & MASK_MNI) != 0)#define TARGET_RED_ZONE (!(target_flags & MASK_NO_RED_ZONE))#define TARGET_USE_MS_BITFIELD_LAYOUT  (target_flags & MASK_MS_BITFIELD_LAYOUT)#define TARGET_GNU_TLS (ix86_tls_dialect == TLS_DIALECT_GNU)#define TARGET_SUN_TLS (ix86_tls_dialect == TLS_DIALECT_SUN)/* WARNING: Do not mark empty strings for translation, as calling            gettext on an empty string does NOT return an empty            string.  */#define TARGET_SWITCHES							      \{ { "80387",			 MASK_80387, N_("Use hardware fp") },	      \  { "no-80387",			-MASK_80387, N_("Do not use hardware fp") },  \  { "hard-float",		 MASK_80387, N_("Use hardware fp") },	      \  { "soft-float",		-MASK_80387, N_("Do not use hardware fp") },  \  { "no-soft-float",		 MASK_80387, N_("Use hardware fp") },	      \  { "386",			 0, "" /*Deprecated.*/},		      \  { "486",			 0, "" /*Deprecated.*/},		      \  { "pentium",			 0, "" /*Deprecated.*/},		      \  { "pentiumpro",		 0, "" /*Deprecated.*/},		      \  { "intel-syntax",		 0, "" /*Deprecated.*/},	 	      \  { "no-intel-syntax",		 0, "" /*Deprecated.*/},	 	      \  { "rtd",			 MASK_RTD,				      \    N_("Alternate calling convention") },				      \  { "no-rtd",			-MASK_RTD,				      \    N_("Use normal calling convention") },				      \  { "align-double",		 MASK_ALIGN_DOUBLE,			      \    N_("Align some doubles on dword boundary") },			      \  { "no-align-double",		-MASK_ALIGN_DOUBLE,			      \    N_("Align doubles on word boundary") },				      \  { "svr3-shlib",		 MASK_SVR3_SHLIB,			      \    N_("Uninitialized locals in .bss")  },				      \  { "no-svr3-shlib",		-MASK_SVR3_SHLIB,			      \    N_("Uninitialized locals in .data") },				      \  { "ieee-fp",			 MASK_IEEE_FP,				      \    N_("Use IEEE math for fp comparisons") },				      \  { "no-ieee-fp",		-MASK_IEEE_FP,				      \    N_("Do not use IEEE math for fp comparisons") },			      \  { "fp-ret-in-387",		 MASK_FLOAT_RETURNS,			      \    N_("Return values of functions in FPU registers") },		      \  { "no-fp-ret-in-387",		-MASK_FLOAT_RETURNS ,			      \    N_("Do not return values of functions in FPU registers")},		      \  { "no-fancy-math-387",	 MASK_NO_FANCY_MATH_387,		      \    N_("Do not generate sin, cos, sqrt for FPU") },			      \  { "fancy-math-387",		-MASK_NO_FANCY_MATH_387,		      \     N_("Generate sin, cos, sqrt for FPU")},				      \  { "omit-leaf-frame-pointer",	 MASK_OMIT_LEAF_FRAME_POINTER,		      \    N_("Omit the frame pointer in leaf functions") },			      \  { "no-omit-leaf-frame-pointer",-MASK_OMIT_LEAF_FRAME_POINTER, "" },	      \  { "stack-arg-probe",		 MASK_STACK_PROBE,			      \    N_("Enable stack probing") },					      \  { "no-stack-arg-probe",	-MASK_STACK_PROBE, "" },		      \  { "windows",			0, 0 /* undocumented */ },		      \  { "dll",			0,  0 /* undocumented */ },		      \  { "align-stringops",		-MASK_NO_ALIGN_STROPS,			      \    N_("Align destination of the string operations") },			      \  { "no-align-stringops",	 MASK_NO_ALIGN_STROPS,			      \    N_("Do not align destination of the string operations") },		      \  { "inline-all-stringops",	 MASK_INLINE_ALL_STROPS,		      \    N_("Inline all known string operations") },				      \  { "no-inline-all-stringops",	-MASK_INLINE_ALL_STROPS,		      \    N_("Do not inline all known string operations") },			      \  { "push-args",		-MASK_NO_PUSH_ARGS,			      \    N_("Use push instructions to save outgoing arguments") },		      \  { "no-push-args",		MASK_NO_PUSH_ARGS,			      \    N_("Do not use push instructions to save outgoing arguments") },	      \  { "accumulate-outgoing-args",	MASK_ACCUMULATE_OUTGOING_ARGS,		      \    N_("Use push instructions to save outgoing arguments") },		      \  { "no-accumulate-outgoing-args",-MASK_ACCUMULATE_OUTGOING_ARGS,	      \    N_("Do not use push instructions to save outgoing arguments") },	      \  { "mmx",			 MASK_MMX,				      \    N_("Support MMX built-in functions") },				      \  { "no-mmx",			 -(MASK_MMX|MASK_3DNOW|MASK_3DNOW_A),	      \    N_("Do not support MMX built-in functions") },			      \  { "3dnow",                     MASK_3DNOW,				      \    N_("Support 3DNow! built-in functions") },				      \  { "no-3dnow",                  -(MASK_3DNOW|MASK_3DNOW_A),		      \    N_("Do not support 3DNow! built-in functions") },			      \  { "sse",			 MASK_SSE,				      \    N_("Support MMX and SSE built-in functions and code generation") },	      \  { "no-sse",			 -(MASK_SSE|MASK_SSE2|MASK_SSE3),	      \    N_("Do not support MMX and SSE built-in functions and code generation") },\  { "sse2",			 MASK_SSE2,				      \    N_("Support MMX, SSE and SSE2 built-in functions and code generation") }, \  { "no-sse2",			 -(MASK_SSE2|MASK_SSE3),		      \    N_("Do not support MMX, SSE and SSE2 built-in functions and code generation") },    \  { "sse3",			 MASK_SSE3,				      \    N_("Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation") },\  { "no-sse3",			 -MASK_SSE3,				      \    N_("Do not support MMX, SSE, SSE2 and SSE3 built-in functions and code generation") },\    /* APPLE LOCAL begin mni 4424835 */						      \  { "mni",			 MASK_MNI,				      \    N_("Support MNI built-in functions and code generation") },		      \  { "no-mni",			 -MASK_MNI,				      \    N_("Do not support MNI built-in functions and code generation") },	      \  /* APPLE LOCAL end mni */						      \  { "128bit-long-double",	 MASK_128BIT_LONG_DOUBLE,		      \    N_("sizeof(long double) is 16") },					      \  { "96bit-long-double",	-MASK_128BIT_LONG_DOUBLE,		      \    N_("sizeof(long double) is 12") },					      \  { "64",			MASK_64BIT,				      \    N_("Generate 64bit x86-64 code") },					      \  { "32",			-MASK_64BIT,				      \    N_("Generate 32bit i386 code") },					      \  { "ms-bitfields",		MASK_MS_BITFIELD_LAYOUT,		      \    N_("Use native (MS) bitfield layout") },				      \  { "no-ms-bitfields",		-MASK_MS_BITFIELD_LAYOUT,		      \    N_("Use gcc default bitfield layout") },				      \  { "red-zone",			-MASK_NO_RED_ZONE,			      \    N_("Use red-zone in the x86-64 code") },				      \  { "no-red-zone",		MASK_NO_RED_ZONE,			      \    N_("Do not use red-zone in the x86-64 code") },			      \  { "tls-direct-seg-refs",	MASK_TLS_DIRECT_SEG_REFS,		      \    N_("Use direct references against %gs when accessing tls data") },	      \  { "no-tls-direct-seg-refs",	-MASK_TLS_DIRECT_SEG_REFS,		      \    N_("Do not use direct references against %gs when accessing tls data") }, \  SUBTARGET_SWITCHES							      \  { "",									      \    TARGET_DEFAULT | TARGET_64BIT_DEFAULT | TARGET_SUBTARGET_DEFAULT	      \    | TARGET_TLS_DIRECT_SEG_REFS_DEFAULT, 0 }}#ifndef TARGET_64BIT_DEFAULT#define TARGET_64BIT_DEFAULT 0#endif#ifndef TARGET_TLS_DIRECT_SEG_REFS_DEFAULT#define TARGET_TLS_DIRECT_SEG_REFS_DEFAULT 0#endif/* Once GDB has been enhanced to deal with functions without frame   pointers, we can change this to allow for elimination of   the frame pointer in leaf functions.  */#define TARGET_DEFAULT 0/* This is not really a target flag, but is done this way so that   it's analogous to similar code for Mach-O on PowerPC.  darwin.h   redefines this to 1.  */#define TARGET_MACHO 0/* APPLE LOCAL begin mach-o cleanup */#define MACHOPIC_INDIRECT 0#define MACHOPIC_PURE 0/* APPLE LOCAL end mach-o cleanup *//* Subtargets may reset this to 1 in order to enable 96-bit long double   with the rounding mode forced to 53 bits.  */#define TARGET_96_ROUND_53_LONG_DOUBLE 0/* This macro is similar to `TARGET_SWITCHES' but defines names of   command options that have values.  Its definition is an   initializer with a subgrouping for each command option.   Each subgrouping contains a string constant, that defines the   fixed part of the option name, and the address of a variable.  The   variable, type `char *', is set to the variable part of the given   option if the fixed part matches.  The actual option name is made   by appending `-m' to the specified name.  */#define TARGET_OPTIONS						\{ { "tune=",		&ix86_tune_string,			\    N_("Schedule code for given CPU"), 0},			\  { "fpmath=",		&ix86_fpmath_string,			\    N_("Generate floating point mathematics using given instruction set"), 0},\  { "arch=",		&ix86_arch_string,			\    N_("Generate code for given CPU"), 0},			\  { "regparm=",		&ix86_regparm_string,			\    N_("Number of registers used to pass integer arguments"), 0},\  { "align-loops=",	&ix86_align_loops_string,		\    N_("Loop code aligned to this power of 2"), 0},		\  { "align-jumps=",	&ix86_align_jumps_string,		\    N_("Jump targets are aligned to this power of 2"), 0},	\  { "align-functions=",	&ix86_align_funcs_string,		\    N_("Function starts are aligned to this power of 2"), 0},	\  { "preferred-stack-boundary=",				\    &ix86_preferred_stack_boundary_string,			\    N_("Attempt to keep stack aligned to this power of 2"), 0},	\  { "branch-cost=",	&ix86_branch_cost_string,		\    N_("Branches are this expensive (1-5, arbitrary units)"), 0},\  { "cmodel=", &ix86_cmodel_string,				\    N_("Use given x86-64 code model"), 0},			\  { "debug-arg", &ix86_debug_arg_string,			\    "" /* Undocumented.  */, 0},				\  { "debug-addr", &ix86_debug_addr_string,			\    "" /* Undocumented.  */, 0},				\  { "asm=", &ix86_asm_string,					\    N_("Use given assembler dialect"), 0},			\  { "tls-dialect=", &ix86_tls_dialect_string,			\    N_("Use given thread-local storage dialect"), 0},		\  /* APPLE LOCAL begin 4356747 stack realign */			\  { "stackrealign",						\    &ix86_force_align_arg_pointer,				\    N_("Realign stack in prologue"), 0},			\  /* APPLE LOCAL end 4356747 stack realign */			\  SUBTARGET_OPTIONS						\}/* Sometimes certain combinations of command options do not make   sense on a particular target machine.  You can define a macro   `OVERRIDE_OPTIONS' to take account of this.  This macro, if   defined, is executed once just after all the command options have   been parsed.   Don't use this macro to turn on various extra optimizations for   `-O'.  That is what `OPTIMIZATION_OPTIONS' is for.  */#define OVERRIDE_OPTIONS override_options ()/* These are meant to be redefined in the host dependent files */#define SUBTARGET_SWITCHES#define SUBTARGET_OPTIONS/* Define this to change the optimizations performed by default.  */#define OPTIMIZATION_OPTIONS(LEVEL, SIZE) \  optimization_options ((LEVEL), (SIZE))/* Support for configure-time defaults of some command line options.  */#define OPTION_DEFAULT_SPECS \  {"arch", "%{!march=*:-march=%(VALUE)}"}, \  {"tune", "%{!mtune=*:%{!mcpu=*:%{!march=*:-mtune=%(VALUE)}}}" }, \  {"cpu", "%{!mtune=*:%{!mcpu=*:%{!march=*:-mtune=%(VALUE)}}}" }/* Specs for the compiler proper */#ifndef CC1_CPU_SPEC#define CC1_CPU_SPEC "\%{!mtune*: \%{m386:mtune=i386 \%n`-m386' is deprecated. Use `-march=i386' or `-mtune=i386' instead.\n} \%{m486:-mtune=i486 \%n`-m486' is deprecated. Use `-march=i486' or `-mtune=i486' instead.\n} \%{mpentium:-mtune=pentium \%n`-mpentium' is deprecated. Use `-march=pentium' or `-mtune=pentium' instead.\n} \%{mpentiumpro:-mtune=pentiumpro \%n`-mpentiumpro' is deprecated. Use `-march=pentiumpro' or `-mtune=pentiumpro' instead.\n} \%{mcpu=*:-mtune=%* \%n`-mcpu=' is deprecated. Use `-mtune=' or '-march=' instead.\n}} \%<mcpu=* \%{mintel-syntax:-masm=intel \%n`-mintel-syntax' is deprecated. Use `-masm=intel' instead.\n} \%{mno-intel-syntax:-masm=att \%n`-mno-intel-syntax' is deprecated. Use `-masm=att' instead.\n}"#endif/* Target CPU builtins.  */#define TARGET_CPU_CPP_BUILTINS()				\  do								\    {								\      size_t arch_len = strlen (ix86_arch_string);		\      size_t tune_len = strlen (ix86_tune_string);		\      int last_arch_char = ix86_arch_string[arch_len - 1];	\      int last_tune_char = ix86_tune_string[tune_len - 1];		\								\      if (TARGET_64BIT)						\	{							\	  builtin_assert ("cpu=x86_64");			\	  builtin_assert ("machine=x86_64");			\	  builtin_define ("__amd64");				\	  builtin_define ("__amd64__");				\	  builtin_define ("__x86_64");				\	  builtin_define ("__x86_64__");			\	}							\      else							\	{							\	  builtin_assert ("cpu=i386");				\	  builtin_assert ("machine=i386");			\	  builtin_define_std ("i386");				\	}							\								\      /* Built-ins based on -mtune= (or -march= if no		\	 -mtune= given).  */					\      if (TARGET_386)						\	builtin_define ("__tune_i386__");			\      else if (TARGET_486)					\	builtin_define ("__tune_i486__");			\      else if (TARGET_PENTIUM)					\	{							\	  builtin_define ("__tune_i586__");			\	  builtin_define ("__tune_pentium__");			\	  if (last_tune_char == 'x')				\	    builtin_define ("__tune_pentium_mmx__");		\	}							\      else if (TARGET_PENTIUMPRO)				\	{							\	  builtin_define ("__tune_i686__");			\

⌨️ 快捷键说明

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