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

📄 rs6000.h

📁 linux下编程用 编译软件
💻 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, 2004, 2005, 2006   Free Software Foundation, Inc.   Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)   This file is part of GCC.   GCC is free software; you can redistribute it and/or modify it   under the terms of the GNU General Public License as published   by the Free Software Foundation; either version 2, or (at your   option) any later version.   GCC is distributed in the hope that it will be useful, but WITHOUT   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public   License for more details.   You should have received a copy of the GNU General Public License   along with GCC; see the file COPYING.  If not, write to the   Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston,   MA 02110-1301, 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/* Control whether function entry points use a "dot" symbol when   ABI_AIX.  */#define DOT_SYMBOLS 1/* Default string to use for cpu if not specified.  */#ifndef TARGET_CPU_DEFAULT#define TARGET_CPU_DEFAULT ((char *)0)#endif/* If configured for PPC405, support PPC405CR Erratum77.  */#ifdef CONFIG_PPC405CR#define PPC405_ERRATUM77 (rs6000_cpu == PROCESSOR_PPC405)#else#define PPC405_ERRATUM77 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} \  %{mpowerpc64*: -mppc64} \  %{!mpowerpc64*: %{mpowerpc*: -mppc}} \  %{mno-power: %{!mpowerpc*: -mcom}} \  %{!mno-power: %{!mpower*: %(asm_default)}}} \%{mcpu=common: -mcom} \%{mcpu=power: -mpwr} \%{mcpu=power2: -mpwrx} \%{mcpu=power3: -mppc64} \%{mcpu=power4: -mpower4} \%{mcpu=power5: -mpower4} \%{mcpu=power5+: -mpower4} \%{mcpu=powerpc: -mppc} \%{mcpu=rios: -mpwr} \%{mcpu=rios1: -mpwr} \%{mcpu=rios2: -mpwrx} \%{mcpu=rsc: -mpwr} \%{mcpu=rsc1: -mpwr} \%{mcpu=rs64a: -mppc64} \%{mcpu=401: -mppc} \%{mcpu=403: -m403} \%{mcpu=405: -m405} \%{mcpu=405fp: -m405} \%{mcpu=440: -m440} \%{mcpu=440fp: -m440} \%{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: -mppc64} \%{mcpu=630: -mppc64} \%{mcpu=740: -mppc} \%{mcpu=750: -mppc} \%{mcpu=G3: -mppc} \%{mcpu=7400: -mppc -maltivec} \%{mcpu=7450: -mppc -maltivec} \%{mcpu=G4: -mppc -maltivec} \%{mcpu=801: -mppc} \%{mcpu=821: -mppc} \%{mcpu=823: -mppc} \%{mcpu=860: -mppc} \%{mcpu=970: -mpower4 -maltivec} \%{mcpu=G5: -mpower4 -maltivec} \%{mcpu=8540: -me500} \%{maltivec: -maltivec} \-many"#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 GCC 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.  *//* Define TARGET_MFCRF if the target assembler does not support the   optional field operand for mfcr.  */#ifndef HAVE_AS_MFCRF#undef  TARGET_MFCRF#define TARGET_MFCRF 0#endif/* Define TARGET_POPCNTB if the target assembler does not support the   popcount byte instruction.  */#ifndef HAVE_AS_POPCNTB#undef  TARGET_POPCNTB#define TARGET_POPCNTB 0#endif/* Define TARGET_FPRND if the target assembler does not support the   fp rounding instructions.  */#ifndef HAVE_AS_FPRND#undef  TARGET_FPRND#define TARGET_FPRND 0#endif#ifndef TARGET_SECURE_PLT#define TARGET_SECURE_PLT 0#endif#define TARGET_32BIT		(! TARGET_64BIT)#ifndef HAVE_AS_TLS#define HAVE_AS_TLS 0#endif/* Return 1 for a symbol ref for a thread-local storage symbol.  */#define RS6000_SYMBOL_REF_TLS_P(RTX) \  (GET_CODE (RTX) == SYMBOL_REF && SYMBOL_REF_TLS_MODEL (RTX) != 0)#ifdef IN_LIBGCC2/* For libgcc2 we make sure this is a compile time constant */#if defined (__64BIT__) || defined (__powerpc64__)#undef TARGET_POWERPC64#define TARGET_POWERPC64	1#else#undef TARGET_POWERPC64#define TARGET_POWERPC64	0#endif#else    /* The option machinery will define this.  */#endif#define TARGET_DEFAULT (MASK_POWER | MASK_MULTIPLE | MASK_STRING)/* Processor type.  Order must match cpu attribute in MD file.  */enum processor_type {   PROCESSOR_RIOS1,   PROCESSOR_RIOS2,   PROCESSOR_RS64A,   PROCESSOR_MPCCORE,   PROCESSOR_PPC403,   PROCESSOR_PPC405,   PROCESSOR_PPC440,   PROCESSOR_PPC601,   PROCESSOR_PPC603,   PROCESSOR_PPC604,   PROCESSOR_PPC604e,   PROCESSOR_PPC620,   PROCESSOR_PPC630,   PROCESSOR_PPC750,   PROCESSOR_PPC7400,   PROCESSOR_PPC7450,   PROCESSOR_PPC8540,   PROCESSOR_POWER4,   PROCESSOR_POWER5};extern enum processor_type rs6000_cpu;/* Recast the processor type to the cpu attribute.  */#define rs6000_cpu_attr ((enum attr_cpu)rs6000_cpu)/* Define generic processor types based upon current deployment.  */#define PROCESSOR_COMMON    PROCESSOR_PPC601#define PROCESSOR_POWER     PROCESSOR_RIOS1#define PROCESSOR_POWERPC   PROCESSOR_PPC604#define PROCESSOR_POWERPC64 PROCESSOR_RS64A/* Define the default processor.  This is overridden by other tm.h files.  */#define PROCESSOR_DEFAULT   PROCESSOR_RIOS1#define PROCESSOR_DEFAULT64 PROCESSOR_RS64A/* Specify the dialect of assembler to use.  New mnemonics is dialect one   and the old mnemonics are dialect zero.  */#define ASSEMBLER_DIALECT (TARGET_NEW_MNEMONICS ? 1 : 0)/* Types of costly dependences.  */enum rs6000_dependence_cost {   max_dep_latency = 1000,   no_dep_costly,   all_deps_costly,   true_store_to_load_dep_costly,   store_to_load_dep_costly };/* Types of nop insertion schemes in sched target hook sched_finish.  */enum rs6000_nop_insertion  {    sched_finish_regroup_exact = 1000,    sched_finish_pad_groups,    sched_finish_none  };/* Dispatch group termination caused by an insn.  */enum group_termination  {    current_group,    previous_group  };/* Support for a compile-time default CPU, et cetera.  The rules are:   --with-cpu is ignored if -mcpu is specified.   --with-tune is ignored if -mtune is specified.   --with-float is ignored if -mhard-float or -msoft-float are    specified.  */#define OPTION_DEFAULT_SPECS \  {"cpu", "%{!mcpu=*:-mcpu=%(VALUE)}" }, \  {"tune", "%{!mtune=*:-mtune=%(VALUE)}" }, \  {"float", "%{!msoft-float:%{!mhard-float:-m%(VALUE)-float}}" }/* rs6000_select[0] is reserved for the default cpu defined via --with-cpu */struct rs6000_cpu_select{  const char *string;  const char *name;  int set_tune_p;  int set_arch_p;};extern struct rs6000_cpu_select rs6000_select[];/* Debug support */extern const char *rs6000_debug_name;	/* Name for -mdebug-xxxx option */extern int rs6000_debug_stack;		/* debug stack applications */extern int rs6000_debug_arg;		/* debug argument handling */#define	TARGET_DEBUG_STACK	rs6000_debug_stack#define	TARGET_DEBUG_ARG	rs6000_debug_argextern const char *rs6000_traceback_name; /* Type of traceback table.  *//* These are separate from target_flags because we've run out of bits   there.  */extern int rs6000_long_double_type_size;extern int rs6000_ieeequad;extern int rs6000_altivec_abi;extern int rs6000_spe_abi;extern int rs6000_float_gprs;extern int rs6000_alignment_flags;extern const char *rs6000_sched_insert_nops_str;extern enum rs6000_nop_insertion rs6000_sched_insert_nops;/* Alignment options for fields in structures for sub-targets following   AIX-like ABI.   ALIGN_POWER word-aligns FP doubles (default AIX ABI).   ALIGN_NATURAL doubleword-aligns FP doubles (align to object size).   Override the macro definitions when compiling libobjc to avoid undefined   reference to rs6000_alignment_flags due to library's use of GCC alignment   macros which use the macros below.  */#ifndef IN_TARGET_LIBS#define MASK_ALIGN_POWER   0x00000000#define MASK_ALIGN_NATURAL 0x00000001#define TARGET_ALIGN_NATURAL (rs6000_alignment_flags & MASK_ALIGN_NATURAL)#else#define TARGET_ALIGN_NATURAL 0#endif#define TARGET_LONG_DOUBLE_128 (rs6000_long_double_type_size == 128)#define TARGET_IEEEQUAD rs6000_ieeequad#define TARGET_ALTIVEC_ABI rs6000_altivec_abi#define TARGET_SPE_ABI 0#define TARGET_SPE 0#define TARGET_E500 0#define TARGET_ISEL 0#define TARGET_FPRS 1#define TARGET_E500_SINGLE 0#define TARGET_E500_DOUBLE 0/* 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.   Do not use this macro to turn on various extra optimizations for   `-O'.  That is what `OPTIMIZATION_OPTIONS' is for.   On the RS/6000 this is used to define the target cpu type.  */#define OVERRIDE_OPTIONS rs6000_override_options (TARGET_CPU_DEFAULT)/* Define this to change the optimizations performed by default.  */#define OPTIMIZATION_OPTIONS(LEVEL,SIZE) optimization_options(LEVEL,SIZE)/* Show we can debug even without a frame pointer.  */#define CAN_DEBUG_WITHOUT_FP

⌨️ 快捷键说明

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