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

📄 rs6000.h

📁 linux下的gcc编译器
💻 H
📖 第 1 页 / 共 5 页
字号:
/* Definitions of target machine for GNU compiler, for IBM RS/6000.   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,   2000, 2001, 2002, 2003 Free Software Foundation, Inc.   Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)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.  *//* Note that some other tm.h files include this one and then override   many of the definitions.  *//* Definitions for the object file format.  These are set at   compile-time.  */#define OBJECT_XCOFF 1#define OBJECT_ELF 2#define OBJECT_PEF 3#define OBJECT_MACHO 4#define TARGET_ELF (TARGET_OBJECT_FORMAT == OBJECT_ELF)#define TARGET_XCOFF (TARGET_OBJECT_FORMAT == OBJECT_XCOFF)#define TARGET_MACOS (TARGET_OBJECT_FORMAT == OBJECT_PEF)#define TARGET_MACHO (TARGET_OBJECT_FORMAT == OBJECT_MACHO)#ifndef TARGET_AIX#define TARGET_AIX 0#endif/* Default string to use for cpu if not specified.  */#ifndef TARGET_CPU_DEFAULT#define TARGET_CPU_DEFAULT ((char *)0)#endif/* Common ASM definitions used by ASM_SPEC among the various targets   for handling -mcpu=xxx switches.  */#define ASM_CPU_SPEC \"%{!mcpu*: \  %{mpower: %{!mpower2: -mpwr}} \  %{mpower2: -mpwrx} \  %{mpowerpc*: -mppc} \  %{mno-power: %{!mpowerpc*: -mcom}} \  %{!mno-power: %{!mpower2: %(asm_default)}}} \%{mcpu=common: -mcom} \%{mcpu=power: -mpwr} \%{mcpu=power2: -mpwrx} \%{mcpu=power3: -m604} \%{mcpu=power4: -mpower4} \%{mcpu=powerpc: -mppc} \%{mcpu=rios: -mpwr} \%{mcpu=rios1: -mpwr} \%{mcpu=rios2: -mpwrx} \%{mcpu=rsc: -mpwr} \%{mcpu=rsc1: -mpwr} \%{mcpu=401: -mppc} \%{mcpu=403: -m403} \%{mcpu=405: -m405} \%{mcpu=505: -mppc} \%{mcpu=601: -m601} \%{mcpu=602: -mppc} \%{mcpu=603: -mppc} \%{mcpu=603e: -mppc} \%{mcpu=ec603e: -mppc} \%{mcpu=604: -mppc} \%{mcpu=604e: -mppc} \%{mcpu=620: -mppc} \%{mcpu=630: -m604} \%{mcpu=740: -mppc} \%{mcpu=7400: -mppc} \%{mcpu=7450: -mppc} \%{mcpu=750: -mppc} \%{mcpu=801: -mppc} \%{mcpu=821: -mppc} \%{mcpu=823: -mppc} \%{mcpu=860: -mppc} \%{mcpu=8540: -me500} \%{maltivec: -maltivec}"#define CPP_DEFAULT_SPEC ""#define ASM_DEFAULT_SPEC ""/* 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 GNU CC driver   program.   Do not define this macro if it does not need to do anything.  */#define SUBTARGET_EXTRA_SPECS#define EXTRA_SPECS							\  { "cpp_default",		CPP_DEFAULT_SPEC },			\  { "asm_cpu",			ASM_CPU_SPEC },				\  { "asm_default",		ASM_DEFAULT_SPEC },			\  SUBTARGET_EXTRA_SPECS/* Architecture type.  */extern int target_flags;/* Use POWER architecture instructions and MQ register.  */#define MASK_POWER		0x00000001/* Use POWER2 extensions to POWER architecture.  */#define MASK_POWER2		0x00000002/* Use PowerPC architecture instructions.  */#define MASK_POWERPC		0x00000004/* Use PowerPC General Purpose group optional instructions, e.g. fsqrt.  */#define MASK_PPC_GPOPT		0x00000008/* Use PowerPC Graphics group optional instructions, e.g. fsel.  */#define MASK_PPC_GFXOPT		0x00000010/* Use PowerPC-64 architecture instructions.  */#define MASK_POWERPC64		0x00000020/* Use revised mnemonic names defined for PowerPC architecture.  */#define MASK_NEW_MNEMONICS	0x00000040/* Disable placing fp constants in the TOC; can be turned on when the   TOC overflows.  */#define MASK_NO_FP_IN_TOC	0x00000080/* Disable placing symbol+offset constants in the TOC; can be turned on when   the TOC overflows.  */#define MASK_NO_SUM_IN_TOC	0x00000100/* Output only one TOC entry per module.  Normally linking fails if   there are more than 16K unique variables/constants in an executable.  With   this option, linking fails only if there are more than 16K modules, or   if there are more than 16K unique variables/constant in a single module.   This is at the cost of having 2 extra loads and one extra store per   function, and one less allocable register.  */#define MASK_MINIMAL_TOC	0x00000200/* Nonzero for the 64bit model: longs and pointers are 64 bits.  */#define MASK_64BIT		0x00000400/* Disable use of FPRs.  */#define MASK_SOFT_FLOAT		0x00000800/* Enable load/store multiple, even on PowerPC */#define	MASK_MULTIPLE		0x00001000#define	MASK_MULTIPLE_SET	0x00002000/* Use string instructions for block moves */#define MASK_STRING		0x00004000#define MASK_STRING_SET		0x00008000/* Disable update form of load/store */#define MASK_NO_UPDATE		0x00010000/* Disable fused multiply/add operations */#define MASK_NO_FUSED_MADD	0x00020000/* Nonzero if we need to schedule the prolog and epilog.  */#define MASK_SCHED_PROLOG	0x00040000/* Use AltiVec instructions.  */#define MASK_ALTIVEC		0x00080000/* Return small structures in memory (as the AIX ABI requires).  */#define MASK_AIX_STRUCT_RET	0x00100000#define MASK_AIX_STRUCT_RET_SET	0x00200000/* The only remaining free bit is 0x00400000. sysv4.h uses   0x00800000 -> 0x40000000, and 0x80000000 is not available   because target_flags is signed.  */#define TARGET_POWER		(target_flags & MASK_POWER)#define TARGET_POWER2		(target_flags & MASK_POWER2)#define TARGET_POWERPC		(target_flags & MASK_POWERPC)#define TARGET_PPC_GPOPT	(target_flags & MASK_PPC_GPOPT)#define TARGET_PPC_GFXOPT	(target_flags & MASK_PPC_GFXOPT)#define TARGET_NEW_MNEMONICS	(target_flags & MASK_NEW_MNEMONICS)#define TARGET_NO_FP_IN_TOC	(target_flags & MASK_NO_FP_IN_TOC)#define TARGET_NO_SUM_IN_TOC	(target_flags & MASK_NO_SUM_IN_TOC)#define TARGET_MINIMAL_TOC	(target_flags & MASK_MINIMAL_TOC)#define TARGET_64BIT		(target_flags & MASK_64BIT)#define TARGET_SOFT_FLOAT	(target_flags & MASK_SOFT_FLOAT)#define	TARGET_MULTIPLE		(target_flags & MASK_MULTIPLE)#define	TARGET_MULTIPLE_SET	(target_flags & MASK_MULTIPLE_SET)#define TARGET_STRING		(target_flags & MASK_STRING)#define TARGET_STRING_SET	(target_flags & MASK_STRING_SET)#define TARGET_NO_UPDATE	(target_flags & MASK_NO_UPDATE)#define TARGET_NO_FUSED_MADD	(target_flags & MASK_NO_FUSED_MADD)#define TARGET_SCHED_PROLOG	(target_flags & MASK_SCHED_PROLOG)#define TARGET_ALTIVEC		(target_flags & MASK_ALTIVEC)#define TARGET_AIX_STRUCT_RET	(target_flags & MASK_AIX_STRUCT_RET)#define TARGET_32BIT		(! TARGET_64BIT)#define TARGET_HARD_FLOAT	(! TARGET_SOFT_FLOAT)#define TARGET_UPDATE		(! TARGET_NO_UPDATE)#define TARGET_FUSED_MADD	(! TARGET_NO_FUSED_MADD)#ifdef IN_LIBGCC2/* For libgcc2 we make sure this is a compile time constant */#if defined (__64BIT__) || defined (__powerpc64__)#define TARGET_POWERPC64	1#else#define TARGET_POWERPC64	0#endif#else#define TARGET_POWERPC64	(target_flags & MASK_POWERPC64)#endif#define TARGET_XL_CALL 0/* Run-time compilation parameters selecting different hardware subsets.   Macro to define tables used to set the flags.   This is a list in braces of pairs in braces,   each pair being { "NAME", VALUE }   where VALUE is the bits to set or minus the bits to clear.   An empty string NAME is used to identify the default VALUE.  */#define TARGET_SWITCHES							\ {{"power",		MASK_POWER  | MASK_MULTIPLE | MASK_STRING,	\			N_("Use POWER instruction set")},		\  {"power2",		(MASK_POWER | MASK_MULTIPLE | MASK_STRING	\			 | MASK_POWER2),				\			N_("Use POWER2 instruction set")},		\  {"no-power2",		- MASK_POWER2,					\			N_("Do not use POWER2 instruction set")},	\  {"no-power",		- (MASK_POWER | MASK_POWER2 | MASK_MULTIPLE	\			   | MASK_STRING),				\			N_("Do not use POWER instruction set")},	\  {"powerpc",		MASK_POWERPC,					\			N_("Use PowerPC instruction set")},		\  {"no-powerpc",	- (MASK_POWERPC | MASK_PPC_GPOPT		\			   | MASK_PPC_GFXOPT | MASK_POWERPC64),		\			N_("Do not use PowerPC instruction set")},	\  {"powerpc-gpopt",	MASK_POWERPC | MASK_PPC_GPOPT,			\			N_("Use PowerPC General Purpose group optional instructions")},\  {"no-powerpc-gpopt",	- MASK_PPC_GPOPT,				\			N_("Don't use PowerPC General Purpose group optional instructions")},\  {"powerpc-gfxopt",	MASK_POWERPC | MASK_PPC_GFXOPT,			\			N_("Use PowerPC Graphics group optional instructions")},\  {"no-powerpc-gfxopt",	- MASK_PPC_GFXOPT,				\			N_("Don't use PowerPC Graphics group optional instructions")},\  {"powerpc64",		MASK_POWERPC64,					\			N_("Use PowerPC-64 instruction set")},		\  {"no-powerpc64",	- MASK_POWERPC64,				\			N_("Don't use PowerPC-64 instruction set")},	\  {"altivec",		MASK_ALTIVEC ,					\			N_("Use AltiVec instructions")},		\  {"no-altivec",	- MASK_ALTIVEC ,					\			N_("Don't use AltiVec instructions")},	\  {"new-mnemonics",	MASK_NEW_MNEMONICS,				\			N_("Use new mnemonics for PowerPC architecture")},\  {"old-mnemonics",	-MASK_NEW_MNEMONICS,				\			N_("Use old mnemonics for PowerPC architecture")},\  {"full-toc",		- (MASK_NO_FP_IN_TOC | MASK_NO_SUM_IN_TOC	\			   | MASK_MINIMAL_TOC),				\			N_("Put everything in the regular TOC")},	\  {"fp-in-toc",		- MASK_NO_FP_IN_TOC,				\			N_("Place floating point constants in TOC")},	\  {"no-fp-in-toc",	MASK_NO_FP_IN_TOC,				\			N_("Don't place floating point constants in TOC")},\  {"sum-in-toc",	- MASK_NO_SUM_IN_TOC,				\			N_("Place symbol+offset constants in TOC")},	\  {"no-sum-in-toc",	MASK_NO_SUM_IN_TOC,				\			N_("Don't place symbol+offset constants in TOC")},\  {"minimal-toc",	MASK_MINIMAL_TOC,				\			"Use only one TOC entry per procedure"},	\  {"minimal-toc",	- (MASK_NO_FP_IN_TOC | MASK_NO_SUM_IN_TOC),	\			""},						\  {"no-minimal-toc",	- MASK_MINIMAL_TOC,				\			N_("Place variable addresses in the regular TOC")},\  {"hard-float",	- MASK_SOFT_FLOAT,				\			N_("Use hardware fp")},				\  {"soft-float",	MASK_SOFT_FLOAT,				\			N_("Do not use hardware fp")},			\  {"multiple",		MASK_MULTIPLE | MASK_MULTIPLE_SET,		\			N_("Generate load/store multiple instructions")},	\  {"no-multiple",	- MASK_MULTIPLE,				\			N_("Do not generate load/store multiple instructions")},\  {"no-multiple",	MASK_MULTIPLE_SET,				\			""},						\  {"string",		MASK_STRING | MASK_STRING_SET,			\			N_("Generate string instructions for block moves")},\  {"no-string",		- MASK_STRING,					\			N_("Do not generate string instructions for block moves")},\  {"no-string",		MASK_STRING_SET,				\			""},						\  {"update",		- MASK_NO_UPDATE,				\			N_("Generate load/store with update instructions")},\  {"no-update",		MASK_NO_UPDATE,					\			N_("Do not generate load/store with update instructions")},\  {"fused-madd",	- MASK_NO_FUSED_MADD,				\			N_("Generate fused multiply/add instructions")},\  {"no-fused-madd",	MASK_NO_FUSED_MADD,				\			N_("Don't generate fused multiply/add instructions")},\  {"sched-prolog",      MASK_SCHED_PROLOG,                              \			""},						\  {"no-sched-prolog",   -MASK_SCHED_PROLOG,                             \			N_("Don't schedule the start and end of the procedure")},\  {"sched-epilog",      MASK_SCHED_PROLOG,                              \			""},						\  {"no-sched-epilog",   -MASK_SCHED_PROLOG,                             \			""},						\  {"aix-struct-return",	MASK_AIX_STRUCT_RET | MASK_AIX_STRUCT_RET_SET,	\			N_("Return all structures in memory (AIX default)")},\  {"svr4-struct-return", - MASK_AIX_STRUCT_RET,\			N_("Return small structures in registers (SVR4 default)")},\  {"svr4-struct-return",MASK_AIX_STRUCT_RET_SET,\			""},\  {"no-aix-struct-return", - MASK_AIX_STRUCT_RET,\			""},\  {"no-aix-struct-return", MASK_AIX_STRUCT_RET_SET,\			""},\  {"no-svr4-struct-return", MASK_AIX_STRUCT_RET | MASK_AIX_STRUCT_RET_SET,\			""},\  SUBTARGET_SWITCHES							\  {"",			TARGET_DEFAULT | MASK_SCHED_PROLOG,		\			""}}#define TARGET_DEFAULT (MASK_POWER | MASK_MULTIPLE | MASK_STRING)

⌨️ 快捷键说明

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