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

📄 ia64.h

📁 linux下的gcc编译器
💻 H
📖 第 1 页 / 共 5 页
字号:
/* Definitions of target machine GNU compiler.  IA-64 version.   Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.   Contributed by James E. Wilson <wilson@cygnus.com> and   		  David Mosberger <davidm@hpl.hp.com>.This file is part of GNU CC.GNU CC is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 2, or (at your option)any later version.GNU CC is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with GNU CC; see the file COPYING.  If not, write tothe Free Software Foundation, 59 Temple Place - Suite 330,Boston, MA 02111-1307, USA.  *//* ??? Look at ABI group documents for list of preprocessor macros and   other features required for ABI compliance.  *//* ??? Functions containing a non-local goto target save many registers.  Why?   See for instance execute/920428-2.c.  *//* ??? Add support for short data/bss sections.  *//* Run-time target specifications *//* Target CPU builtins.  */#define TARGET_CPU_CPP_BUILTINS()		\do {						\	builtin_assert("cpu=ia64");		\	builtin_assert("machine=ia64");		\	builtin_define("__ia64");		\	builtin_define("__ia64__");		\	builtin_define("__itanium__");		\	builtin_define("__ELF__");		\	if (!TARGET_ILP32)			\	  {					\	    builtin_define("_LP64");		\	    builtin_define("__LP64__");		\	  }					\	if (TARGET_BIG_ENDIAN)			\	  builtin_define("__BIG_ENDIAN__");	\} while (0)#define EXTRA_SPECS \  { "asm_extra", ASM_EXTRA_SPEC },#define CC1_SPEC "%(cc1_cpu) "#define ASM_EXTRA_SPEC ""/* This declaration should be present.  */extern int target_flags;/* This series of macros is to allow compiler command arguments to enable or   disable the use of optional features of the target machine.  */#define MASK_BIG_ENDIAN	0x00000001	/* Generate big endian code.  */#define MASK_GNU_AS	0x00000002	/* Generate code for GNU as.  */#define MASK_GNU_LD	0x00000004	/* Generate code for GNU ld.  */#define MASK_NO_PIC	0x00000008	/* Generate code without GP reg.  */#define MASK_VOL_ASM_STOP 0x00000010	/* Emit stop bits for vol ext asm.  */#define MASK_ILP32      0x00000020      /* Generate ILP32 code.  */#define MASK_B_STEP	0x00000040	/* Emit code for Itanium B step.  */#define MASK_REG_NAMES	0x00000080	/* Use in/loc/out register names.  */#define MASK_NO_SDATA   0x00000100	/* Disable sdata/scommon/sbss.  */#define MASK_CONST_GP	0x00000200	/* treat gp as program-wide constant */#define MASK_AUTO_PIC	0x00000400	/* generate automatically PIC */#define MASK_INLINE_FLOAT_DIV_LAT 0x00000800 /* inline div, min latency.  */#define MASK_INLINE_FLOAT_DIV_THR 0x00001000 /* inline div, max throughput.  */#define MASK_INLINE_INT_DIV_LAT   0x00000800 /* inline div, min latency.  */#define MASK_INLINE_INT_DIV_THR   0x00001000 /* inline div, max throughput.  */#define MASK_DWARF2_ASM 0x40000000	/* test dwarf2 line info via gas.  */#define TARGET_BIG_ENDIAN	(target_flags & MASK_BIG_ENDIAN)#define TARGET_GNU_AS		(target_flags & MASK_GNU_AS)#define TARGET_GNU_LD		(target_flags & MASK_GNU_LD)#define TARGET_NO_PIC		(target_flags & MASK_NO_PIC)#define TARGET_VOL_ASM_STOP	(target_flags & MASK_VOL_ASM_STOP)#define TARGET_ILP32            (target_flags & MASK_ILP32)#define TARGET_B_STEP		(target_flags & MASK_B_STEP)#define TARGET_REG_NAMES	(target_flags & MASK_REG_NAMES)#define TARGET_NO_SDATA		(target_flags & MASK_NO_SDATA)#define TARGET_CONST_GP		(target_flags & MASK_CONST_GP)#define TARGET_AUTO_PIC		(target_flags & MASK_AUTO_PIC)#define TARGET_INLINE_FLOAT_DIV_LAT (target_flags & MASK_INLINE_FLOAT_DIV_LAT)#define TARGET_INLINE_FLOAT_DIV_THR (target_flags & MASK_INLINE_FLOAT_DIV_THR)#define TARGET_INLINE_INT_DIV_LAT   (target_flags & MASK_INLINE_INT_DIV_LAT)#define TARGET_INLINE_INT_DIV_THR   (target_flags & MASK_INLINE_INT_DIV_THR)#define TARGET_INLINE_FLOAT_DIV \  (target_flags & (MASK_INLINE_FLOAT_DIV_LAT | MASK_INLINE_FLOAT_DIV_THR))#define TARGET_INLINE_INT_DIV \  (target_flags & (MASK_INLINE_INT_DIV_LAT | MASK_INLINE_INT_DIV_THR))#define TARGET_DWARF2_ASM	(target_flags & MASK_DWARF2_ASM)/* If the assembler supports thread-local storage, assume that the   system does as well.  If a particular target system has an   assembler that supports TLS -- but the rest of the system does not   support TLS -- that system should explicit define TARGET_HAVE_TLS   to false in its own configuration file.  */#if !defined(TARGET_HAVE_TLS) && defined(HAVE_AS_TLS)#define TARGET_HAVE_TLS true#endifextern int ia64_tls_size;#define TARGET_TLS14		(ia64_tls_size == 14)#define TARGET_TLS22		(ia64_tls_size == 22)#define TARGET_TLS64		(ia64_tls_size == 64)#define TARGET_HPUX_LD		0#ifndef HAVE_AS_LTOFFX_LDXMOV_RELOCS#define HAVE_AS_LTOFFX_LDXMOV_RELOCS 0#endif/* This macro defines names of command options to set and clear bits in   `target_flags'.  Its definition is an initializer with a subgrouping for   each command option.  */#define TARGET_SWITCHES							\{									\  { "big-endian",	MASK_BIG_ENDIAN,				\      N_("Generate big endian code") },					\  { "little-endian",	-MASK_BIG_ENDIAN,				\      N_("Generate little endian code") },				\  { "gnu-as",		MASK_GNU_AS,					\      N_("Generate code for GNU as") },					\  { "no-gnu-as",	-MASK_GNU_AS,					\      N_("Generate code for Intel as") },				\  { "gnu-ld",		MASK_GNU_LD,					\      N_("Generate code for GNU ld") },					\  { "no-gnu-ld",	-MASK_GNU_LD,					\      N_("Generate code for Intel ld") },				\  { "no-pic",		MASK_NO_PIC,					\      N_("Generate code without GP reg") },				\  { "volatile-asm-stop", MASK_VOL_ASM_STOP,				\      N_("Emit stop bits before and after volatile extended asms") },	\  { "no-volatile-asm-stop", -MASK_VOL_ASM_STOP,				\      N_("Don't emit stop bits before and after volatile extended asms") }, \  { "b-step",		MASK_B_STEP,					\      N_("Emit code for Itanium (TM) processor B step")},		\  { "register-names",	MASK_REG_NAMES,					\      N_("Use in/loc/out register names")},				\  { "no-sdata",		MASK_NO_SDATA,					\      N_("Disable use of sdata/scommon/sbss")},				\  { "sdata",		-MASK_NO_SDATA,					\      N_("Enable use of sdata/scommon/sbss")},				\  { "constant-gp",	MASK_CONST_GP,					\      N_("gp is constant (but save/restore gp on indirect calls)") },	\  { "auto-pic",		MASK_AUTO_PIC,					\      N_("Generate self-relocatable code") },				\  { "inline-float-divide-min-latency", MASK_INLINE_FLOAT_DIV_LAT,	\      N_("Generate inline floating point division, optimize for latency") },\  { "inline-float-divide-max-throughput", MASK_INLINE_FLOAT_DIV_THR,	\      N_("Generate inline floating point division, optimize for throughput") },\  { "inline-int-divide-min-latency", MASK_INLINE_INT_DIV_LAT,		\      N_("Generate inline integer division, optimize for latency") },	\  { "inline-int-divide-max-throughput", MASK_INLINE_INT_DIV_THR,	\      N_("Generate inline integer division, optimize for throughput") },\  { "dwarf2-asm", 	MASK_DWARF2_ASM,				\      N_("Enable Dwarf 2 line debug info via GNU as")},			\  { "no-dwarf2-asm", 	-MASK_DWARF2_ASM,				\      N_("Disable Dwarf 2 line debug info via GNU as")},		\  SUBTARGET_SWITCHES							\  { "",			TARGET_DEFAULT | TARGET_CPU_DEFAULT,		\      NULL }								\}/* Default target_flags if no switches are specified  */#ifndef TARGET_DEFAULT#define TARGET_DEFAULT MASK_DWARF2_ASM#endif#ifndef TARGET_CPU_DEFAULT#define TARGET_CPU_DEFAULT 0#endif#ifndef SUBTARGET_SWITCHES#define SUBTARGET_SWITCHES#endif/* 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.  */extern const char *ia64_fixed_range_string;extern const char *ia64_tls_size_string;#define TARGET_OPTIONS \{									\  { "fixed-range=", 	&ia64_fixed_range_string,			\      N_("Specify range of registers to make fixed")},			\  { "tls-size=",	&ia64_tls_size_string,				\      N_("Specify bit size of immediate TLS offsets")},			\}/* 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.  */#define OVERRIDE_OPTIONS ia64_override_options ()/* Some machines may desire to change what optimizations are performed for   various optimization levels.  This macro, if defined, is executed once just   after the optimization level is determined and before the remainder of the   command options have been parsed.  Values set in this macro are used as the   default values for the other command line options.  *//* #define OPTIMIZATION_OPTIONS(LEVEL,SIZE) *//* Driver configuration *//* A C string constant that tells the GNU CC driver program options to pass to   `cc1'.  It can also specify how to translate options you give to GNU CC into   options for GNU CC to pass to the `cc1'.  */#undef CC1_SPEC#define CC1_SPEC "%{G*}"/* A C string constant that tells the GNU CC driver program options to pass to   `cc1plus'.  It can also specify how to translate options you give to GNU CC   into options for GNU CC to pass to the `cc1plus'.  *//* #define CC1PLUS_SPEC "" *//* Storage Layout *//* Define this macro to have the value 1 if the most significant bit in a byte   has the lowest number; otherwise define it to have the value zero.  */#define BITS_BIG_ENDIAN 0#define BYTES_BIG_ENDIAN (TARGET_BIG_ENDIAN != 0)/* Define this macro to have the value 1 if, in a multiword object, the most   significant word has the lowest number.  */#define WORDS_BIG_ENDIAN (TARGET_BIG_ENDIAN != 0)#if defined(__BIG_ENDIAN__)#define LIBGCC2_WORDS_BIG_ENDIAN 1#else#define LIBGCC2_WORDS_BIG_ENDIAN 0#endif#define UNITS_PER_WORD 8#define POINTER_SIZE (TARGET_ILP32 ? 32 : 64)/* A C expression whose value is zero if pointers that need to be extended   from being `POINTER_SIZE' bits wide to `Pmode' are sign-extended and one if   they are zero-extended and negative one if there is an ptr_extend operation.   You need not define this macro if the `POINTER_SIZE' is equal to the width   of `Pmode'.  *//* Need this for 32 bit pointers, see hpux.h for setting it.  *//* #define POINTERS_EXTEND_UNSIGNED *//* A macro to update MODE and UNSIGNEDP when an object whose type is TYPE and   which has the specified mode and signedness is to be stored in a register.   This macro is only called when TYPE is a scalar type.  */#define PROMOTE_MODE(MODE,UNSIGNEDP,TYPE)				\do									\  {									\    if (GET_MODE_CLASS (MODE) == MODE_INT				\	&& GET_MODE_SIZE (MODE) < 4)					\      (MODE) = SImode;							\  }									\while (0)/* ??? ABI doesn't allow us to define this.  *//* #define PROMOTE_FUNCTION_ARGS *//* ??? ABI doesn't allow us to define this.  *//* #define PROMOTE_FUNCTION_RETURN */#define PARM_BOUNDARY 64/* Define this macro if you wish to preserve a certain alignment for the stack   pointer.  The definition is a C expression for the desired alignment   (measured in bits).  */#define STACK_BOUNDARY 128

⌨️ 快捷键说明

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