fi
use_collect2=yes
gas=yes
+ if test "x$with_dwarf2" != x; then
+ echo "Warning: dwarf2 debug format is not supported for this target, --with-dwarf2 ignored" 1>&2
+ dwarf2=no
+ fi
;;
hppa*64*-*-hpux11*)
target_cpu_default="MASK_PA_11|MASK_PA_20"
tm_file="${tm_file} hpux-stdint.h"
;;
esac
+ if test "x$with_dwarf2" != x; then
+ echo "Warning: dwarf2 debug format is not supported for this target, --with-dwarf2 ignored" 1>&2
+ dwarf2=no
+ fi
;;
i[34567]86-*-darwin*)
need_64bit_hwint=yes
need_64bit_hwint=yes
need_64bit_isa=yes
case X"${with_cpu}" in
- Xgeneric|Xatom|Xcore2|Xnocona|Xx86-64|Xbdver1|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx|Xathlon64-sse3|Xk8-sse3|Xopteron-sse3)
+ Xgeneric|Xatom|Xcore2|Xcorei7|Xcorei7-avx|Xnocona|Xx86-64|Xbdver1|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx|Xathlon64-sse3|Xk8-sse3|Xopteron-sse3)
;;
X)
if test x$with_cpu_64 = x; then
;;
*)
echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
- echo "generic atom core2 nocona x86-64 bdver1 amdfam10 barcelona k8 opteron athlon64 athlon-fx athlon64-sse3 k8-sse3 opteron-sse3" 1>&2
+ echo "generic atom core2 corei7 corei7-avx nocona x86-64 bdver1 amdfam10 barcelona k8 opteron athlon64 athlon-fx athlon64-sse3 k8-sse3 opteron-sse3" 1>&2
exit 1
;;
esac
need_64bit_isa=yes
use_gcc_stdint=wrap
case X"${with_cpu}" in
- Xgeneric|Xatom|Xcore2|Xnocona|Xx86-64|Xbdver1|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx|Xathlon64-sse3|Xk8-sse3|Xopteron-sse3)
+ Xgeneric|Xatom|Xcore2|Xcorei7|Xcorei7-avx|Xnocona|Xx86-64|Xbdver1|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx|Xathlon64-sse3|Xk8-sse3|Xopteron-sse3)
;;
X)
if test x$with_cpu_64 = x; then
;;
*)
echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
- echo "generic atom core2 nocona x86-64 bdver1 amdfam10 barcelona k8 opteron athlon64 athlon-fx athlon64-sse3 k8-sse3 opteron-sse3" 1>&2
+ echo "generic atom core2 corei7 corei7-avx nocona x86-64 bdver1 amdfam10 barcelona k8 opteron athlon64 athlon-fx athlon64-sse3 k8-sse3 opteron-sse3" 1>&2
exit 1
;;
esac
if test x$enable_targets = xall; then
tm_defines="${tm_defines} TARGET_BI_ARCH=1"
case X"${with_cpu}" in
- Xgeneric|Xatom|Xcore2|Xnocona|Xx86-64|Xbdver1|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx|Xathlon64-sse3|Xk8-sse3|Xopteron-sse3)
+ Xgeneric|Xatom|Xcore2|Xcorei7|Xcorei7-avx|Xnocona|Xx86-64|Xbdver1|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx|Xathlon64-sse3|Xk8-sse3|Xopteron-sse3)
;;
X)
if test x$with_cpu_64 = x; then
;;
*)
echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
- echo "generic atom core2 nocona x86-64 bdver1 amdfam10 barcelona k8 opteron athlon64 athlon-fx athlon64-sse3 k8-sse3 opteron-sse3" 1>&2
+ echo "generic atom core2 corei7 Xcorei7-avx nocona x86-64 bdver1 amdfam10 barcelona k8 opteron athlon64 athlon-fx athlon64-sse3 k8-sse3 opteron-sse3" 1>&2
exit 1
;;
esac
tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
tmake_file="mips/t-elf mips/t-libgcc-mips16"
;;
+mips64-*-toppers* | mips64el-*-toppers*)
+ tm_file="elfos.h ${tm_file} mips/elf.h mips/toppers.h"
+ tmake_file="mips/t-elf mips/t-libgcc-mips16"
+ tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_N32"
+ ;;
mips64-*-elf* | mips64el-*-elf*)
tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
tmake_file="mips/t-elf mips/t-libgcc-mips16"
tmake_file="$tmake_file sh/t-sh sh/t-elf sh/t-vxworks"
tm_file="${tm_file} elfos.h svr4.h sh/elf.h sh/embed-elf.h vx-common.h vxworks.h sh/vxworks.h"
;;
- sparc-*-netbsdelf*)
- tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h netbsd.h netbsd-elf.h sparc/netbsd-elf.h"
- extra_options="${extra_options} sparc/long-double-switch.opt"
- ;;
- sparc64-*-openbsd*)
- tm_file="sparc/openbsd1-64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/sp64-elf.h"
- tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h sparc/openbsd64.h"
- extra_options="${extra_options} sparc/little-endian.opt"
- gas=yes gnu_ld=yes
- with_cpu=ultrasparc
- ;;
sparc-*-elf*)
tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h svr4.h sparc/sysv4.h sparc/sp-elf.h"
tmake_file="sparc/t-elf sparc/t-crtfm"
extra_parts="crti.o crtn.o crtbegin.o crtend.o"
;;
- sparc-*-linux*) # SPARC's running GNU/Linux, libc6
+ sparc-*-rtems*)
+ tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
+ tmake_file="sparc/t-elf sparc/t-crtfm t-rtems"
+ extra_parts="crti.o crtn.o crtbegin.o crtend.o"
+ ;;
+ sparc-*-linux*)
tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h linux.h glibc-stdint.h"
extra_options="${extra_options} sparc/long-double-switch.opt"
tmake_file="${tmake_file} sparc/t-linux"
fi
tmake_file="${tmake_file} sparc/t-crtfm"
;;
- sparc-*-rtems*)
- tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
- tmake_file="sparc/t-elf sparc/t-crtfm t-rtems"
- extra_parts="crti.o crtn.o crtbegin.o crtend.o"
- ;;
- sparc64-*-rtems*)
- tm_file="${tm_file} dbxelf.h elfos.h svr4.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h sparc/rtemself.h rtems.h"
- extra_options="${extra_options} sparc/little-endian.opt"
- tmake_file="${tmake_file} sparc/t-crtfm t-rtems"
- extra_parts="crtbegin.o crtend.o"
+ sparc-*-netbsdelf*)
+ tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h netbsd.h netbsd-elf.h sparc/netbsd-elf.h"
+ extra_options="${extra_options} sparc/long-double-switch.opt"
;;
sparc*-*-solaris2*)
tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sol2.h"
tmake_file="${tmake_file} sparc/t-crtfm"
extra_parts="crtbegin.o crtend.o"
;;
+ sparc64-*-rtems*)
+ tm_file="${tm_file} dbxelf.h elfos.h svr4.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h sparc/rtemself.h rtems.h"
+ extra_options="${extra_options} sparc/little-endian.opt"
+ tmake_file="${tmake_file} sparc/t-crtfm t-rtems"
+ extra_parts="crtbegin.o crtend.o"
+ ;;
+ sparc64-*-linux*)
+ tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h linux.h glibc-stdint.h sparc/linux64.h"
+ extra_options="${extra_options} sparc/long-double-switch.opt"
+ tmake_file="${tmake_file} sparc/t-linux sparc/t-linux64 sparc/t-crtfm"
+ ;;
sparc64-*-freebsd*|ultrasparc-*-freebsd*)
tm_file="${tm_file} ${fbsd_tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/freebsd.h"
extra_options="${extra_options} sparc/long-double-switch.opt"
*) echo "$with_cpu not supported for freebsd target"; exit 1 ;;
esac
;;
- sparc64-*-linux*) # 64-bit SPARC's running GNU/Linux
- tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h linux.h glibc-stdint.h sparc/linux64.h"
- extra_options="${extra_options} sparc/long-double-switch.opt"
- tmake_file="${tmake_file} sparc/t-linux sparc/t-linux64 sparc/t-crtfm"
- ;;
sparc64-*-netbsd*)
tm_file="sparc/biarch64.h ${tm_file}"
tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h netbsd.h netbsd-elf.h sparc/netbsd-elf.h"
extra_options="${extra_options} sparc/long-double-switch.opt"
tmake_file="${tmake_file} sparc/t-netbsd64"
;;
+ sparc64-*-openbsd*)
+ tm_file="sparc/openbsd1-64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/sp64-elf.h"
+ tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h sparc/openbsd64.h"
+ extra_options="${extra_options} sparc/little-endian.opt"
+ gas=yes gnu_ld=yes
+ with_cpu=ultrasparc
+ ;;
spu-*-elf*)
tm_file="dbxelf.h elfos.h spu/spu-elf.h spu/spu.h newlib-stdint.h"
tmake_file="spu/t-spu-elf"
arch=core2
cpu=core2
;;
+ corei7-*)
+ arch=corei7
+ cpu=corei7
+ ;;
+ corei7_avx-*)
+ arch=corei7-avx
+ cpu=corei7-avx
+ ;;
pentium_m-*)
arch=pentium-m
cpu=pentium-m
arch=core2
cpu=core2
;;
+ corei7-*)
+ arch=corei7
+ cpu=corei7
+ ;;
*)
arch=x86-64
cpu=generic
"" | x86-64 | generic | native \
| k8 | k8-sse3 | athlon64 | athlon64-sse3 | opteron \
| opteron-sse3 | athlon-fx | bdver1 | amdfam10 \
- | barcelona | nocona | core2 | atom)
+ | barcelona | nocona | core2 | corei7 | corei7-avx | atom)
# OK
;;
*)
/* Note that some other tm.h files include this one and then override
many of the definitions. */
+ #ifndef RS6000_OPTS_H
+ #include "config/rs6000/rs6000-opts.h"
+ #endif
+
/* Definitions for the object file format. These are set at
compile-time. */
/* -mcpu=native handling only makes sense with compiler running on
an PowerPC chip. If changing this condition, also change
the condition in driver-rs6000.c. */
-#if defined(__powerpc__) || defined(__POWERPC__) || defined(_AIX)
+#if 0 /* defined(__powerpc__) || defined(__POWERPC__) || defined(_AIX) */
/* In driver-rs6000.c. */
extern const char *host_detect_local_cpu (int argc, const char **argv);
#define EXTRA_SPEC_FUNCTIONS \
#define TARGET_SECURE_PLT 0
#endif
- /* Code model for 64-bit linux.
- small: 16-bit toc offsets.
- medium: 32-bit toc offsets, static data and code within 2G of TOC pointer.
- large: 32-bit toc offsets, no limit on static data and code. */
- enum rs6000_cmodel {
- CMODEL_SMALL,
- CMODEL_MEDIUM,
- CMODEL_LARGE
- };
-
#ifndef TARGET_CMODEL
#define TARGET_CMODEL CMODEL_SMALL
#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_PPC476,
- PROCESSOR_PPC601,
- PROCESSOR_PPC603,
- PROCESSOR_PPC604,
- PROCESSOR_PPC604e,
- PROCESSOR_PPC620,
- PROCESSOR_PPC630,
- PROCESSOR_PPC750,
- PROCESSOR_PPC7400,
- PROCESSOR_PPC7450,
- PROCESSOR_PPC8540,
- PROCESSOR_PPCE300C2,
- PROCESSOR_PPCE300C3,
- PROCESSOR_PPCE500MC,
- PROCESSOR_PPCE500MC64,
- PROCESSOR_POWER4,
- PROCESSOR_POWER5,
- PROCESSOR_POWER6,
- PROCESSOR_POWER7,
- PROCESSOR_CELL,
- PROCESSOR_PPCA2,
- PROCESSOR_TITAN
- };
-
/* FPU operations supported.
Each use of TARGET_SINGLE_FLOAT or TARGET_DOUBLE_FLOAT must
also test TARGET_HARD_FLOAT. */
#define TARGET_SIMPLE_FPU 0
#define TARGET_XILINX_FPU 0
- extern enum processor_type rs6000_cpu;
-
/* Recast the processor type to the cpu attribute. */
#define rs6000_cpu_attr ((enum attr_cpu)rs6000_cpu)
#define PROCESSOR_DEFAULT PROCESSOR_RIOS1
#define PROCESSOR_DEFAULT64 PROCESSOR_RS64A
- /* FP processor type. */
- enum fpu_type_t
- {
- FPU_NONE, /* No FPU */
- FPU_SF_LITE, /* Limited Single Precision FPU */
- FPU_DF_LITE, /* Limited Double Precision FPU */
- FPU_SF_FULL, /* Full Single Precision FPU */
- FPU_DF_FULL /* Full Double Single Precision FPU */
- };
-
extern enum fpu_type_t fpu_type;
/* 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
- };
-
/* rs6000_select[0] is reserved for the default cpu defined via --with-cpu */
struct rs6000_cpu_select
{
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 */
- extern int rs6000_debug_reg; /* debug register handling */
- extern int rs6000_debug_addr; /* debug memory addressing */
- extern int rs6000_debug_cost; /* debug rtx_costs */
-
- #define TARGET_DEBUG_STACK rs6000_debug_stack
- #define TARGET_DEBUG_ARG rs6000_debug_arg
- #define TARGET_DEBUG_REG rs6000_debug_reg
- #define TARGET_DEBUG_ADDR rs6000_debug_addr
- #define TARGET_DEBUG_COST rs6000_debug_cost
-
- extern 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_spe;
- 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;
-
- /* Describe which vector unit to use for a given machine mode. */
- enum rs6000_vector {
- VECTOR_NONE, /* Type is not a vector or not supported */
- VECTOR_ALTIVEC, /* Use altivec for vector processing */
- VECTOR_VSX, /* Use VSX for vector processing */
- VECTOR_PAIRED, /* Use paired floating point for vectors */
- VECTOR_SPE, /* Use SPE for vector processing */
- VECTOR_OTHER /* Some other vector unit */
- };
+ #define MASK_DEBUG_STACK 0x01 /* debug stack applications */
+ #define MASK_DEBUG_ARG 0x02 /* debug argument handling */
+ #define MASK_DEBUG_REG 0x04 /* debug register handling */
+ #define MASK_DEBUG_ADDR 0x08 /* debug memory addressing */
+ #define MASK_DEBUG_COST 0x10 /* debug rtx codes */
+ #define MASK_DEBUG_TARGET 0x20 /* debug target attribute/pragma */
+ #define MASK_DEBUG_ALL (MASK_DEBUG_STACK \
+ | MASK_DEBUG_ARG \
+ | MASK_DEBUG_REG \
+ | MASK_DEBUG_ADDR \
+ | MASK_DEBUG_COST \
+ | MASK_DEBUG_TARGET)
+
+ #define TARGET_DEBUG_STACK (rs6000_debug & MASK_DEBUG_STACK)
+ #define TARGET_DEBUG_ARG (rs6000_debug & MASK_DEBUG_ARG)
+ #define TARGET_DEBUG_REG (rs6000_debug & MASK_DEBUG_REG)
+ #define TARGET_DEBUG_ADDR (rs6000_debug & MASK_DEBUG_ADDR)
+ #define TARGET_DEBUG_COST (rs6000_debug & MASK_DEBUG_COST)
+ #define TARGET_DEBUG_TARGET (rs6000_debug & MASK_DEBUG_TARGET)
extern enum rs6000_vector rs6000_vector_unit[];
/* Target pragma. */
#define REGISTER_TARGET_PRAGMAS() do { \
c_register_pragma (0, "longcall", rs6000_pragma_longcall); \
+ targetm.target_option.pragma_parse = rs6000_pragma_target_parse; \
targetm.resolve_overloaded_builtin = altivec_resolve_overloaded_builtin; \
} while (0)
#define FIXED_SCRATCH 0
- /* Define this macro to change register usage conditional on target
- flags. */
-
- #define CONDITIONAL_REGISTER_USAGE rs6000_conditional_register_usage ()
-
/* Specify the registers used for certain standard purposes.
The values of these macros are register numbers. */
/* Stack layout; function entry, exit and calling. */
- /* Enumeration to give which calling sequence to use. */
- enum rs6000_abi {
- ABI_NONE,
- ABI_AIX, /* IBM's AIX */
- ABI_V4, /* System V.4/eabi */
- ABI_DARWIN /* Apple's Darwin (OS X kernel) */
- };
-
- extern enum rs6000_abi rs6000_current_abi; /* available for use by subtarget */
-
/* Define this if pushing a word on the stack
makes the stack pointer a smaller address. */
#define STACK_GROWS_DOWNWARD