gcc_update (gcc/config/mips/mips-tables.opt): New dependencies.
contrib: * gcc_update (gcc/config/mips/mips-tables.opt): New dependencies. gcc: * config/mips/genopt.sh, config/mips/mips-cpus.def: New files. * config/mips/mips-tables.opt: New file (generated). * config.gcc (mips*-*-*): Add mips/mips-tables.opt to extra_options. * config/mips/mips-opts.h (MIPS_ARCH_OPTION_FROM_ABI, MIPS_ARCH_OPTION_NATIVE): Define. * config/mips/mips.c (mips_cpu_info_table): Move contents to mips-cpus.def. (mips_strict_matching_cpu_name_p, mips_matching_cpu_name_p, mips_parse_cpu): Remove. (mips_cpu_info_from_opt, mips_default_arch): New. (mips_handle_option): Don't assert that global structures are in use. Don't handle OPT_march_, OPT_mtune_ and OPT_mips here. (mips_option_override): Use new variables and functions to set state of these options. Use strcmp to check for individual CPU names. * config/mips/mips.h (MIPS_CPU_STRING_DEFAULT): Remove default definition. * config/mips/mips.opt (march=): Use ToLower and Enum. (mips): Use ToLower, Enum and Var. (mtune=): Use ToLower and Enum. * config/mips/t-mips ($(srcdir)/config/mips/mips-tables.opt): New. From-SVN: r173561
This commit is contained in:
parent
4fc07af967
commit
d371df6f10
12 changed files with 976 additions and 235 deletions
|
@ -1,3 +1,7 @@
|
|||
2011-05-09 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* gcc_update (gcc/config/mips/mips-tables.opt): New dependencies.
|
||||
|
||||
2010-05-05 Joern Rennecke <joern.rennecke@embecosm.com>
|
||||
|
||||
* config-list.mk: New file.
|
||||
|
|
|
@ -82,6 +82,7 @@ gcc/fixinc/fixincl.x: gcc/fixinc/fixincl.tpl gcc/fixinc/inclhack.def
|
|||
gcc/config/arm/arm-tune.md: gcc/config/arm/arm-cores.def gcc/config/arm/gentune.sh
|
||||
gcc/config/arm/arm-tables.opt: gcc/config/arm/arm-arches.def gcc/config/arm/arm-cores.def gcc/config/arm/genopt.sh
|
||||
gcc/config/m68k/m68k-tables.opt: gcc/config/m68k/m68k-devices.def gcc/config/m68k/m68k-isas.def gcc/config/m68k/m68k-microarchs.def gcc/config/m68k/genopt.sh
|
||||
gcc/config/mips/mips-tables.opt: gcc/config/mips/mips-cpus.def gcc/config/mips/genopt.sh
|
||||
# And then, language-specific files
|
||||
gcc/cp/cfns.h: gcc/cp/cfns.gperf
|
||||
gcc/java/keyword.h: gcc/java/keyword.gperf
|
||||
|
|
|
@ -1,3 +1,28 @@
|
|||
2011-05-09 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* config/mips/genopt.sh, config/mips/mips-cpus.def: New files.
|
||||
* config/mips/mips-tables.opt: New file (generated).
|
||||
* config.gcc (mips*-*-*): Add mips/mips-tables.opt to
|
||||
extra_options.
|
||||
* config/mips/mips-opts.h (MIPS_ARCH_OPTION_FROM_ABI,
|
||||
MIPS_ARCH_OPTION_NATIVE): Define.
|
||||
* config/mips/mips.c (mips_cpu_info_table): Move contents to
|
||||
mips-cpus.def.
|
||||
(mips_strict_matching_cpu_name_p, mips_matching_cpu_name_p,
|
||||
mips_parse_cpu): Remove.
|
||||
(mips_cpu_info_from_opt, mips_default_arch): New.
|
||||
(mips_handle_option): Don't assert that global structures are in
|
||||
use. Don't handle OPT_march_, OPT_mtune_ and OPT_mips here.
|
||||
(mips_option_override): Use new variables and functions to set
|
||||
state of these options. Use strcmp to check for individual CPU
|
||||
names.
|
||||
* config/mips/mips.h (MIPS_CPU_STRING_DEFAULT): Remove default
|
||||
definition.
|
||||
* config/mips/mips.opt (march=): Use ToLower and Enum.
|
||||
(mips): Use ToLower, Enum and Var.
|
||||
(mtune=): Use ToLower and Enum.
|
||||
* config/mips/t-mips ($(srcdir)/config/mips/mips-tables.opt): New.
|
||||
|
||||
2011-05-08 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* gimple.c (type_pair_hash, type_pair_eq, lookup_type_pair):
|
||||
|
|
|
@ -371,7 +371,7 @@ mips*-*-*)
|
|||
cpu_type=mips
|
||||
need_64bit_hwint=yes
|
||||
extra_headers="loongson.h"
|
||||
extra_options="${extra_options} g.opt"
|
||||
extra_options="${extra_options} g.opt mips/mips-tables.opt"
|
||||
;;
|
||||
picochip-*-*)
|
||||
cpu_type=picochip
|
||||
|
|
123
gcc/config/mips/genopt.sh
Executable file
123
gcc/config/mips/genopt.sh
Executable file
|
@ -0,0 +1,123 @@
|
|||
#!/bin/sh
|
||||
# Generate mips-tables.opt from the list of CPUs in mips-cpus.def.
|
||||
# Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
#
|
||||
# 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 3, 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 COPYING3. If not see
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
|
||||
cat <<EOF
|
||||
; -*- buffer-read-only: t -*-
|
||||
; Generated automatically by genopt.sh from mips-cpus.def.
|
||||
|
||||
; Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
;
|
||||
; 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 3, 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 COPYING3. If not see
|
||||
; <http://www.gnu.org/licenses/>.
|
||||
|
||||
Enum
|
||||
Name(mips_arch_opt_value) Type(int)
|
||||
Known MIPS CPUs (for use with the -march= and -mtune= options):
|
||||
|
||||
Enum
|
||||
Name(mips_mips_opt_value) Type(int)
|
||||
Known MIPS ISA levels (for use with the -mips option):
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(from-abi) Value(MIPS_ARCH_OPTION_FROM_ABI)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(native) Value(MIPS_ARCH_OPTION_NATIVE) DriverOnly
|
||||
|
||||
EOF
|
||||
|
||||
awk -F'[(, ]+' '
|
||||
BEGIN {
|
||||
value = 0
|
||||
}
|
||||
|
||||
# Write an entry for a single string accepted as a -march= argument.
|
||||
|
||||
function write_one_arch_value(name, value, flags)
|
||||
{
|
||||
print "EnumValue"
|
||||
print "Enum(mips_arch_opt_value) String(" name ") Value(" value ")" flags
|
||||
print ""
|
||||
if (name ~ "^mips") {
|
||||
sub("^mips", "", name)
|
||||
print "EnumValue"
|
||||
print "Enum(mips_mips_opt_value) String(" name ") Value(" value ")"
|
||||
print ""
|
||||
}
|
||||
}
|
||||
|
||||
# The logic for matching CPU name variants should be the same as in GAS.
|
||||
|
||||
# Write an entry for a single string accepted as a -march= argument,
|
||||
# plus any variant with a final "000" replaced by "k".
|
||||
|
||||
function write_arch_value_maybe_k(name, value, flags)
|
||||
{
|
||||
write_one_arch_value(name, value, flags)
|
||||
if (name ~ "000$") {
|
||||
sub("000$", "k", name)
|
||||
write_one_arch_value(name, value, "")
|
||||
}
|
||||
}
|
||||
|
||||
# Write all the entries for a -march= argument. In addition to
|
||||
# replacement of a final "000" with "k", an argument starting with
|
||||
# "vr", "rm" or "r" followed by a number, or just a plain number,
|
||||
# matches a plain number or "r" followed by a plain number.
|
||||
|
||||
function write_all_arch_values(name, value)
|
||||
{
|
||||
write_arch_value_maybe_k(name, value, " Canonical")
|
||||
cname = name
|
||||
if (cname ~ "^vr") {
|
||||
sub("^vr", "", cname)
|
||||
} else if (cname ~ "^rm") {
|
||||
sub("^rm", "", cname)
|
||||
} else if (cname ~ "^r") {
|
||||
sub("^r", "", cname)
|
||||
}
|
||||
if (cname ~ "^[0-9]") {
|
||||
if (cname != name)
|
||||
write_arch_value_maybe_k(cname, value, "")
|
||||
rname = "r" cname
|
||||
if (rname != name)
|
||||
write_arch_value_maybe_k(rname, value, "")
|
||||
}
|
||||
}
|
||||
|
||||
/^MIPS_CPU/ {
|
||||
name = $2
|
||||
gsub("\"", "", name)
|
||||
write_all_arch_values(name, value)
|
||||
value++
|
||||
}' $1/mips-cpus.def
|
147
gcc/config/mips/mips-cpus.def
Normal file
147
gcc/config/mips/mips-cpus.def
Normal file
|
@ -0,0 +1,147 @@
|
|||
/* MIPS CPU names.
|
||||
Copyright (C) 1989, 1990, 1991, 1993, 1994, 1995, 1996, 1997, 1998,
|
||||
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
|
||||
2011
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
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 3, 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 COPYING3. If not see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* A table describing all the processors GCC knows about. The first
|
||||
mention of an ISA level is taken as the canonical name for that
|
||||
ISA.
|
||||
|
||||
To ease comparison, please keep this table in the same order
|
||||
as GAS's mips_cpu_info_table. Please also make sure that
|
||||
MIPS_ISA_LEVEL_SPEC and MIPS_ARCH_FLOAT_SPEC handle all -march
|
||||
options correctly.
|
||||
|
||||
Before including this file, define a macro:
|
||||
|
||||
MIPS_CPU (NAME, CPU, ISA, FLAGS)
|
||||
|
||||
where the arguments are the fields of struct mips_cpu_info. */
|
||||
|
||||
/* Entries for generic ISAs. */
|
||||
MIPS_CPU ("mips1", PROCESSOR_R3000, 1, 0)
|
||||
MIPS_CPU ("mips2", PROCESSOR_R6000, 2, 0)
|
||||
MIPS_CPU ("mips3", PROCESSOR_R4000, 3, 0)
|
||||
MIPS_CPU ("mips4", PROCESSOR_R8000, 4, 0)
|
||||
/* Prefer not to use branch-likely instructions for generic MIPS32rX
|
||||
and MIPS64rX code. The instructions were officially deprecated
|
||||
in revisions 2 and earlier, but revision 3 is likely to downgrade
|
||||
that to a recommendation to avoid the instructions in code that
|
||||
isn't tuned to a specific processor. */
|
||||
MIPS_CPU ("mips32", PROCESSOR_4KC, 32, PTF_AVOID_BRANCHLIKELY)
|
||||
MIPS_CPU ("mips32r2", PROCESSOR_M4K, 33, PTF_AVOID_BRANCHLIKELY)
|
||||
MIPS_CPU ("mips64", PROCESSOR_5KC, 64, PTF_AVOID_BRANCHLIKELY)
|
||||
/* ??? For now just tune the generic MIPS64r2 for 5KC as well. */
|
||||
MIPS_CPU ("mips64r2", PROCESSOR_5KC, 65, PTF_AVOID_BRANCHLIKELY)
|
||||
|
||||
/* MIPS I processors. */
|
||||
MIPS_CPU ("r3000", PROCESSOR_R3000, 1, 0)
|
||||
MIPS_CPU ("r2000", PROCESSOR_R3000, 1, 0)
|
||||
MIPS_CPU ("r3900", PROCESSOR_R3900, 1, 0)
|
||||
|
||||
/* MIPS II processors. */
|
||||
MIPS_CPU ("r6000", PROCESSOR_R6000, 2, 0)
|
||||
|
||||
/* MIPS III processors. */
|
||||
MIPS_CPU ("r4000", PROCESSOR_R4000, 3, 0)
|
||||
MIPS_CPU ("vr4100", PROCESSOR_R4100, 3, 0)
|
||||
MIPS_CPU ("vr4111", PROCESSOR_R4111, 3, 0)
|
||||
MIPS_CPU ("vr4120", PROCESSOR_R4120, 3, 0)
|
||||
MIPS_CPU ("vr4130", PROCESSOR_R4130, 3, 0)
|
||||
MIPS_CPU ("vr4300", PROCESSOR_R4300, 3, 0)
|
||||
MIPS_CPU ("r4400", PROCESSOR_R4000, 3, 0)
|
||||
MIPS_CPU ("r4600", PROCESSOR_R4600, 3, 0)
|
||||
MIPS_CPU ("orion", PROCESSOR_R4600, 3, 0)
|
||||
MIPS_CPU ("r4650", PROCESSOR_R4650, 3, 0)
|
||||
/* ST Loongson 2E/2F processors. */
|
||||
MIPS_CPU ("loongson2e", PROCESSOR_LOONGSON_2E, 3, PTF_AVOID_BRANCHLIKELY)
|
||||
MIPS_CPU ("loongson2f", PROCESSOR_LOONGSON_2F, 3, PTF_AVOID_BRANCHLIKELY)
|
||||
|
||||
/* MIPS IV processors. */
|
||||
MIPS_CPU ("r8000", PROCESSOR_R8000, 4, 0)
|
||||
MIPS_CPU ("r10000", PROCESSOR_R10000, 4, 0)
|
||||
MIPS_CPU ("r12000", PROCESSOR_R10000, 4, 0)
|
||||
MIPS_CPU ("r14000", PROCESSOR_R10000, 4, 0)
|
||||
MIPS_CPU ("r16000", PROCESSOR_R10000, 4, 0)
|
||||
MIPS_CPU ("vr5000", PROCESSOR_R5000, 4, 0)
|
||||
MIPS_CPU ("vr5400", PROCESSOR_R5400, 4, 0)
|
||||
MIPS_CPU ("vr5500", PROCESSOR_R5500, 4, PTF_AVOID_BRANCHLIKELY)
|
||||
MIPS_CPU ("rm7000", PROCESSOR_R7000, 4, 0)
|
||||
MIPS_CPU ("rm9000", PROCESSOR_R9000, 4, 0)
|
||||
|
||||
/* MIPS32 processors. */
|
||||
MIPS_CPU ("4kc", PROCESSOR_4KC, 32, 0)
|
||||
MIPS_CPU ("4km", PROCESSOR_4KC, 32, 0)
|
||||
MIPS_CPU ("4kp", PROCESSOR_4KP, 32, 0)
|
||||
MIPS_CPU ("4ksc", PROCESSOR_4KC, 32, 0)
|
||||
|
||||
/* MIPS32 Release 2 processors. */
|
||||
MIPS_CPU ("m4k", PROCESSOR_M4K, 33, 0)
|
||||
MIPS_CPU ("4kec", PROCESSOR_4KC, 33, 0)
|
||||
MIPS_CPU ("4kem", PROCESSOR_4KC, 33, 0)
|
||||
MIPS_CPU ("4kep", PROCESSOR_4KP, 33, 0)
|
||||
MIPS_CPU ("4ksd", PROCESSOR_4KC, 33, 0)
|
||||
|
||||
MIPS_CPU ("24kc", PROCESSOR_24KC, 33, 0)
|
||||
MIPS_CPU ("24kf2_1", PROCESSOR_24KF2_1, 33, 0)
|
||||
MIPS_CPU ("24kf", PROCESSOR_24KF2_1, 33, 0)
|
||||
MIPS_CPU ("24kf1_1", PROCESSOR_24KF1_1, 33, 0)
|
||||
MIPS_CPU ("24kfx", PROCESSOR_24KF1_1, 33, 0)
|
||||
MIPS_CPU ("24kx", PROCESSOR_24KF1_1, 33, 0)
|
||||
|
||||
MIPS_CPU ("24kec", PROCESSOR_24KC, 33, 0) /* 24K with DSP. */
|
||||
MIPS_CPU ("24kef2_1", PROCESSOR_24KF2_1, 33, 0)
|
||||
MIPS_CPU ("24kef", PROCESSOR_24KF2_1, 33, 0)
|
||||
MIPS_CPU ("24kef1_1", PROCESSOR_24KF1_1, 33, 0)
|
||||
MIPS_CPU ("24kefx", PROCESSOR_24KF1_1, 33, 0)
|
||||
MIPS_CPU ("24kex", PROCESSOR_24KF1_1, 33, 0)
|
||||
|
||||
MIPS_CPU ("34kc", PROCESSOR_24KC, 33, 0) /* 34K with MT/DSP. */
|
||||
MIPS_CPU ("34kf2_1", PROCESSOR_24KF2_1, 33, 0)
|
||||
MIPS_CPU ("34kf", PROCESSOR_24KF2_1, 33, 0)
|
||||
MIPS_CPU ("34kf1_1", PROCESSOR_24KF1_1, 33, 0)
|
||||
MIPS_CPU ("34kfx", PROCESSOR_24KF1_1, 33, 0)
|
||||
MIPS_CPU ("34kx", PROCESSOR_24KF1_1, 33, 0)
|
||||
|
||||
MIPS_CPU ("74kc", PROCESSOR_74KC, 33, 0) /* 74K with DSPr2. */
|
||||
MIPS_CPU ("74kf2_1", PROCESSOR_74KF2_1, 33, 0)
|
||||
MIPS_CPU ("74kf", PROCESSOR_74KF2_1, 33, 0)
|
||||
MIPS_CPU ("74kf1_1", PROCESSOR_74KF1_1, 33, 0)
|
||||
MIPS_CPU ("74kfx", PROCESSOR_74KF1_1, 33, 0)
|
||||
MIPS_CPU ("74kx", PROCESSOR_74KF1_1, 33, 0)
|
||||
MIPS_CPU ("74kf3_2", PROCESSOR_74KF3_2, 33, 0)
|
||||
|
||||
MIPS_CPU ("1004kc", PROCESSOR_24KC, 33, 0) /* 1004K with MT/DSP. */
|
||||
MIPS_CPU ("1004kf2_1", PROCESSOR_24KF2_1, 33, 0)
|
||||
MIPS_CPU ("1004kf", PROCESSOR_24KF2_1, 33, 0)
|
||||
MIPS_CPU ("1004kf1_1", PROCESSOR_24KF1_1, 33, 0)
|
||||
|
||||
/* MIPS64 processors. */
|
||||
MIPS_CPU ("5kc", PROCESSOR_5KC, 64, 0)
|
||||
MIPS_CPU ("5kf", PROCESSOR_5KF, 64, 0)
|
||||
MIPS_CPU ("20kc", PROCESSOR_20KC, 64, PTF_AVOID_BRANCHLIKELY)
|
||||
MIPS_CPU ("sb1", PROCESSOR_SB1, 64, PTF_AVOID_BRANCHLIKELY)
|
||||
MIPS_CPU ("sb1a", PROCESSOR_SB1A, 64, PTF_AVOID_BRANCHLIKELY)
|
||||
MIPS_CPU ("sr71000", PROCESSOR_SR71000, 64, PTF_AVOID_BRANCHLIKELY)
|
||||
MIPS_CPU ("xlr", PROCESSOR_XLR, 64, 0)
|
||||
MIPS_CPU ("loongson3a", PROCESSOR_LOONGSON_3A, 64, PTF_AVOID_BRANCHLIKELY)
|
||||
|
||||
/* MIPS64 Release 2 processors. */
|
||||
MIPS_CPU ("octeon", PROCESSOR_OCTEON, 65, PTF_AVOID_BRANCHLIKELY)
|
|
@ -36,4 +36,10 @@ enum mips_r10k_cache_barrier_setting {
|
|||
R10K_CACHE_BARRIER_LOAD_STORE
|
||||
};
|
||||
|
||||
/* No enumeration is defined to index the -march= values (entries in
|
||||
mips_cpu_info_table), with the type int being used instead, but we
|
||||
need to distinguish the special "from-abi" and "native" values. */
|
||||
#define MIPS_ARCH_OPTION_FROM_ABI -1
|
||||
#define MIPS_ARCH_OPTION_NATIVE -2
|
||||
|
||||
#endif
|
||||
|
|
605
gcc/config/mips/mips-tables.opt
Normal file
605
gcc/config/mips/mips-tables.opt
Normal file
|
@ -0,0 +1,605 @@
|
|||
; -*- buffer-read-only: t -*-
|
||||
; Generated automatically by genopt.sh from mips-cpus.def.
|
||||
|
||||
; Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
;
|
||||
; 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 3, 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 COPYING3. If not see
|
||||
; <http://www.gnu.org/licenses/>.
|
||||
|
||||
Enum
|
||||
Name(mips_arch_opt_value) Type(int)
|
||||
Known MIPS CPUs (for use with the -march= and -mtune= options):
|
||||
|
||||
Enum
|
||||
Name(mips_mips_opt_value) Type(int)
|
||||
Known MIPS ISA levels (for use with the -mips option):
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(from-abi) Value(MIPS_ARCH_OPTION_FROM_ABI)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(native) Value(MIPS_ARCH_OPTION_NATIVE) DriverOnly
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(mips1) Value(0) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_mips_opt_value) String(1) Value(0)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(mips2) Value(1) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_mips_opt_value) String(2) Value(1)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(mips3) Value(2) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_mips_opt_value) String(3) Value(2)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(mips4) Value(3) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_mips_opt_value) String(4) Value(3)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(mips32) Value(4) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_mips_opt_value) String(32) Value(4)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(mips32r2) Value(5) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_mips_opt_value) String(32r2) Value(5)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(mips64) Value(6) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_mips_opt_value) String(64) Value(6)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(mips64r2) Value(7) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_mips_opt_value) String(64r2) Value(7)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r3000) Value(8) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r3k) Value(8)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(3000) Value(8)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(3k) Value(8)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r2000) Value(9) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r2k) Value(9)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(2000) Value(9)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(2k) Value(9)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r3900) Value(10) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(3900) Value(10)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r6000) Value(11) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r6k) Value(11)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(6000) Value(11)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(6k) Value(11)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r4000) Value(12) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r4k) Value(12)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(4000) Value(12)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(4k) Value(12)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(vr4100) Value(13) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(4100) Value(13)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r4100) Value(13)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(vr4111) Value(14) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(4111) Value(14)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r4111) Value(14)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(vr4120) Value(15) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(4120) Value(15)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r4120) Value(15)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(vr4130) Value(16) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(4130) Value(16)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r4130) Value(16)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(vr4300) Value(17) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(4300) Value(17)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r4300) Value(17)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r4400) Value(18) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(4400) Value(18)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r4600) Value(19) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(4600) Value(19)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(orion) Value(20) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r4650) Value(21) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(4650) Value(21)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(loongson2e) Value(22) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(loongson2f) Value(23) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r8000) Value(24) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r8k) Value(24)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(8000) Value(24)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(8k) Value(24)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r10000) Value(25) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r10k) Value(25)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(10000) Value(25)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(10k) Value(25)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r12000) Value(26) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r12k) Value(26)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(12000) Value(26)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(12k) Value(26)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r14000) Value(27) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r14k) Value(27)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(14000) Value(27)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(14k) Value(27)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r16000) Value(28) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r16k) Value(28)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(16000) Value(28)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(16k) Value(28)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(vr5000) Value(29) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(vr5k) Value(29)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(5000) Value(29)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(5k) Value(29)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r5000) Value(29)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r5k) Value(29)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(vr5400) Value(30) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(5400) Value(30)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r5400) Value(30)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(vr5500) Value(31) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(5500) Value(31)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r5500) Value(31)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(rm7000) Value(32) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(rm7k) Value(32)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(7000) Value(32)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(7k) Value(32)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r7000) Value(32)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r7k) Value(32)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(rm9000) Value(33) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(rm9k) Value(33)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(9000) Value(33)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(9k) Value(33)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r9000) Value(33)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r9k) Value(33)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(4kc) Value(34) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r4kc) Value(34)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(4km) Value(35) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r4km) Value(35)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(4kp) Value(36) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r4kp) Value(36)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(4ksc) Value(37) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r4ksc) Value(37)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(m4k) Value(38) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(4kec) Value(39) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r4kec) Value(39)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(4kem) Value(40) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r4kem) Value(40)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(4kep) Value(41) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r4kep) Value(41)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(4ksd) Value(42) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r4ksd) Value(42)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(24kc) Value(43) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r24kc) Value(43)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(24kf2_1) Value(44) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r24kf2_1) Value(44)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(24kf) Value(45) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r24kf) Value(45)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(24kf1_1) Value(46) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r24kf1_1) Value(46)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(24kfx) Value(47) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r24kfx) Value(47)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(24kx) Value(48) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r24kx) Value(48)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(24kec) Value(49) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r24kec) Value(49)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(24kef2_1) Value(50) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r24kef2_1) Value(50)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(24kef) Value(51) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r24kef) Value(51)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(24kef1_1) Value(52) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r24kef1_1) Value(52)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(24kefx) Value(53) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r24kefx) Value(53)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(24kex) Value(54) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r24kex) Value(54)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(34kc) Value(55) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r34kc) Value(55)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(34kf2_1) Value(56) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r34kf2_1) Value(56)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(34kf) Value(57) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r34kf) Value(57)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(34kf1_1) Value(58) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r34kf1_1) Value(58)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(34kfx) Value(59) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r34kfx) Value(59)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(34kx) Value(60) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r34kx) Value(60)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(74kc) Value(61) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r74kc) Value(61)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(74kf2_1) Value(62) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r74kf2_1) Value(62)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(74kf) Value(63) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r74kf) Value(63)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(74kf1_1) Value(64) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r74kf1_1) Value(64)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(74kfx) Value(65) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r74kfx) Value(65)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(74kx) Value(66) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r74kx) Value(66)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(74kf3_2) Value(67) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r74kf3_2) Value(67)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(1004kc) Value(68) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r1004kc) Value(68)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(1004kf2_1) Value(69) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r1004kf2_1) Value(69)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(1004kf) Value(70) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r1004kf) Value(70)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(1004kf1_1) Value(71) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r1004kf1_1) Value(71)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(5kc) Value(72) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r5kc) Value(72)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(5kf) Value(73) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r5kf) Value(73)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(20kc) Value(74) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(r20kc) Value(74)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(sb1) Value(75) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(sb1a) Value(76) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(sr71000) Value(77) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(sr71k) Value(77)
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(xlr) Value(78) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(loongson3a) Value(79) Canonical
|
||||
|
||||
EnumValue
|
||||
Enum(mips_arch_opt_value) String(octeon) Value(80) Canonical
|
||||
|
|
@ -645,125 +645,13 @@ static const struct attribute_spec mips_attribute_table[] = {
|
|||
{ NULL, 0, 0, false, false, false, NULL, false }
|
||||
};
|
||||
|
||||
/* A table describing all the processors GCC knows about. Names are
|
||||
matched in the order listed. The first mention of an ISA level is
|
||||
taken as the canonical name for that ISA.
|
||||
|
||||
To ease comparison, please keep this table in the same order
|
||||
as GAS's mips_cpu_info_table. Please also make sure that
|
||||
MIPS_ISA_LEVEL_SPEC and MIPS_ARCH_FLOAT_SPEC handle all -march
|
||||
options correctly. */
|
||||
/* A table describing all the processors GCC knows about; see
|
||||
mips-cpus.def for details. */
|
||||
static const struct mips_cpu_info mips_cpu_info_table[] = {
|
||||
/* Entries for generic ISAs. */
|
||||
{ "mips1", PROCESSOR_R3000, 1, 0 },
|
||||
{ "mips2", PROCESSOR_R6000, 2, 0 },
|
||||
{ "mips3", PROCESSOR_R4000, 3, 0 },
|
||||
{ "mips4", PROCESSOR_R8000, 4, 0 },
|
||||
/* Prefer not to use branch-likely instructions for generic MIPS32rX
|
||||
and MIPS64rX code. The instructions were officially deprecated
|
||||
in revisions 2 and earlier, but revision 3 is likely to downgrade
|
||||
that to a recommendation to avoid the instructions in code that
|
||||
isn't tuned to a specific processor. */
|
||||
{ "mips32", PROCESSOR_4KC, 32, PTF_AVOID_BRANCHLIKELY },
|
||||
{ "mips32r2", PROCESSOR_M4K, 33, PTF_AVOID_BRANCHLIKELY },
|
||||
{ "mips64", PROCESSOR_5KC, 64, PTF_AVOID_BRANCHLIKELY },
|
||||
/* ??? For now just tune the generic MIPS64r2 for 5KC as well. */
|
||||
{ "mips64r2", PROCESSOR_5KC, 65, PTF_AVOID_BRANCHLIKELY },
|
||||
|
||||
/* MIPS I processors. */
|
||||
{ "r3000", PROCESSOR_R3000, 1, 0 },
|
||||
{ "r2000", PROCESSOR_R3000, 1, 0 },
|
||||
{ "r3900", PROCESSOR_R3900, 1, 0 },
|
||||
|
||||
/* MIPS II processors. */
|
||||
{ "r6000", PROCESSOR_R6000, 2, 0 },
|
||||
|
||||
/* MIPS III processors. */
|
||||
{ "r4000", PROCESSOR_R4000, 3, 0 },
|
||||
{ "vr4100", PROCESSOR_R4100, 3, 0 },
|
||||
{ "vr4111", PROCESSOR_R4111, 3, 0 },
|
||||
{ "vr4120", PROCESSOR_R4120, 3, 0 },
|
||||
{ "vr4130", PROCESSOR_R4130, 3, 0 },
|
||||
{ "vr4300", PROCESSOR_R4300, 3, 0 },
|
||||
{ "r4400", PROCESSOR_R4000, 3, 0 },
|
||||
{ "r4600", PROCESSOR_R4600, 3, 0 },
|
||||
{ "orion", PROCESSOR_R4600, 3, 0 },
|
||||
{ "r4650", PROCESSOR_R4650, 3, 0 },
|
||||
/* ST Loongson 2E/2F processors. */
|
||||
{ "loongson2e", PROCESSOR_LOONGSON_2E, 3, PTF_AVOID_BRANCHLIKELY },
|
||||
{ "loongson2f", PROCESSOR_LOONGSON_2F, 3, PTF_AVOID_BRANCHLIKELY },
|
||||
|
||||
/* MIPS IV processors. */
|
||||
{ "r8000", PROCESSOR_R8000, 4, 0 },
|
||||
{ "r10000", PROCESSOR_R10000, 4, 0 },
|
||||
{ "r12000", PROCESSOR_R10000, 4, 0 },
|
||||
{ "r14000", PROCESSOR_R10000, 4, 0 },
|
||||
{ "r16000", PROCESSOR_R10000, 4, 0 },
|
||||
{ "vr5000", PROCESSOR_R5000, 4, 0 },
|
||||
{ "vr5400", PROCESSOR_R5400, 4, 0 },
|
||||
{ "vr5500", PROCESSOR_R5500, 4, PTF_AVOID_BRANCHLIKELY },
|
||||
{ "rm7000", PROCESSOR_R7000, 4, 0 },
|
||||
{ "rm9000", PROCESSOR_R9000, 4, 0 },
|
||||
|
||||
/* MIPS32 processors. */
|
||||
{ "4kc", PROCESSOR_4KC, 32, 0 },
|
||||
{ "4km", PROCESSOR_4KC, 32, 0 },
|
||||
{ "4kp", PROCESSOR_4KP, 32, 0 },
|
||||
{ "4ksc", PROCESSOR_4KC, 32, 0 },
|
||||
|
||||
/* MIPS32 Release 2 processors. */
|
||||
{ "m4k", PROCESSOR_M4K, 33, 0 },
|
||||
{ "4kec", PROCESSOR_4KC, 33, 0 },
|
||||
{ "4kem", PROCESSOR_4KC, 33, 0 },
|
||||
{ "4kep", PROCESSOR_4KP, 33, 0 },
|
||||
{ "4ksd", PROCESSOR_4KC, 33, 0 },
|
||||
|
||||
{ "24kc", PROCESSOR_24KC, 33, 0 },
|
||||
{ "24kf2_1", PROCESSOR_24KF2_1, 33, 0 },
|
||||
{ "24kf", PROCESSOR_24KF2_1, 33, 0 },
|
||||
{ "24kf1_1", PROCESSOR_24KF1_1, 33, 0 },
|
||||
{ "24kfx", PROCESSOR_24KF1_1, 33, 0 },
|
||||
{ "24kx", PROCESSOR_24KF1_1, 33, 0 },
|
||||
|
||||
{ "24kec", PROCESSOR_24KC, 33, 0 }, /* 24K with DSP. */
|
||||
{ "24kef2_1", PROCESSOR_24KF2_1, 33, 0 },
|
||||
{ "24kef", PROCESSOR_24KF2_1, 33, 0 },
|
||||
{ "24kef1_1", PROCESSOR_24KF1_1, 33, 0 },
|
||||
{ "24kefx", PROCESSOR_24KF1_1, 33, 0 },
|
||||
{ "24kex", PROCESSOR_24KF1_1, 33, 0 },
|
||||
|
||||
{ "34kc", PROCESSOR_24KC, 33, 0 }, /* 34K with MT/DSP. */
|
||||
{ "34kf2_1", PROCESSOR_24KF2_1, 33, 0 },
|
||||
{ "34kf", PROCESSOR_24KF2_1, 33, 0 },
|
||||
{ "34kf1_1", PROCESSOR_24KF1_1, 33, 0 },
|
||||
{ "34kfx", PROCESSOR_24KF1_1, 33, 0 },
|
||||
{ "34kx", PROCESSOR_24KF1_1, 33, 0 },
|
||||
|
||||
{ "74kc", PROCESSOR_74KC, 33, 0 }, /* 74K with DSPr2. */
|
||||
{ "74kf2_1", PROCESSOR_74KF2_1, 33, 0 },
|
||||
{ "74kf", PROCESSOR_74KF2_1, 33, 0 },
|
||||
{ "74kf1_1", PROCESSOR_74KF1_1, 33, 0 },
|
||||
{ "74kfx", PROCESSOR_74KF1_1, 33, 0 },
|
||||
{ "74kx", PROCESSOR_74KF1_1, 33, 0 },
|
||||
{ "74kf3_2", PROCESSOR_74KF3_2, 33, 0 },
|
||||
|
||||
{ "1004kc", PROCESSOR_24KC, 33, 0 }, /* 1004K with MT/DSP. */
|
||||
{ "1004kf2_1", PROCESSOR_24KF2_1, 33, 0 },
|
||||
{ "1004kf", PROCESSOR_24KF2_1, 33, 0 },
|
||||
{ "1004kf1_1", PROCESSOR_24KF1_1, 33, 0 },
|
||||
|
||||
/* MIPS64 processors. */
|
||||
{ "5kc", PROCESSOR_5KC, 64, 0 },
|
||||
{ "5kf", PROCESSOR_5KF, 64, 0 },
|
||||
{ "20kc", PROCESSOR_20KC, 64, PTF_AVOID_BRANCHLIKELY },
|
||||
{ "sb1", PROCESSOR_SB1, 64, PTF_AVOID_BRANCHLIKELY },
|
||||
{ "sb1a", PROCESSOR_SB1A, 64, PTF_AVOID_BRANCHLIKELY },
|
||||
{ "sr71000", PROCESSOR_SR71000, 64, PTF_AVOID_BRANCHLIKELY },
|
||||
{ "xlr", PROCESSOR_XLR, 64, 0 },
|
||||
{ "loongson3a", PROCESSOR_LOONGSON_3A, 64, PTF_AVOID_BRANCHLIKELY },
|
||||
|
||||
/* MIPS64 Release 2 processors. */
|
||||
{ "octeon", PROCESSOR_OCTEON, 65, PTF_AVOID_BRANCHLIKELY }
|
||||
#define MIPS_CPU(NAME, CPU, ISA, FLAGS) \
|
||||
{ NAME, CPU, ISA, FLAGS },
|
||||
#include "mips-cpus.def"
|
||||
#undef MIPS_CPU
|
||||
};
|
||||
|
||||
/* Default costs. If these are used for a processor we should look
|
||||
|
@ -15320,91 +15208,48 @@ mips_cpu_info_from_isa (int isa)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
/* Return true if GIVEN is the same as CANONICAL, or if it is CANONICAL
|
||||
with a final "000" replaced by "k". Ignore case.
|
||||
|
||||
Note: this function is shared between GCC and GAS. */
|
||||
|
||||
static bool
|
||||
mips_strict_matching_cpu_name_p (const char *canonical, const char *given)
|
||||
{
|
||||
while (*given != 0 && TOLOWER (*given) == TOLOWER (*canonical))
|
||||
given++, canonical++;
|
||||
|
||||
return ((*given == 0 && *canonical == 0)
|
||||
|| (strcmp (canonical, "000") == 0 && strcasecmp (given, "k") == 0));
|
||||
}
|
||||
|
||||
/* Return true if GIVEN matches CANONICAL, where GIVEN is a user-supplied
|
||||
CPU name. We've traditionally allowed a lot of variation here.
|
||||
|
||||
Note: this function is shared between GCC and GAS. */
|
||||
|
||||
static bool
|
||||
mips_matching_cpu_name_p (const char *canonical, const char *given)
|
||||
{
|
||||
/* First see if the name matches exactly, or with a final "000"
|
||||
turned into "k". */
|
||||
if (mips_strict_matching_cpu_name_p (canonical, given))
|
||||
return true;
|
||||
|
||||
/* If not, try comparing based on numerical designation alone.
|
||||
See if GIVEN is an unadorned number, or 'r' followed by a number. */
|
||||
if (TOLOWER (*given) == 'r')
|
||||
given++;
|
||||
if (!ISDIGIT (*given))
|
||||
return false;
|
||||
|
||||
/* Skip over some well-known prefixes in the canonical name,
|
||||
hoping to find a number there too. */
|
||||
if (TOLOWER (canonical[0]) == 'v' && TOLOWER (canonical[1]) == 'r')
|
||||
canonical += 2;
|
||||
else if (TOLOWER (canonical[0]) == 'r' && TOLOWER (canonical[1]) == 'm')
|
||||
canonical += 2;
|
||||
else if (TOLOWER (canonical[0]) == 'r')
|
||||
canonical += 1;
|
||||
|
||||
return mips_strict_matching_cpu_name_p (canonical, given);
|
||||
}
|
||||
|
||||
/* Return the mips_cpu_info entry for the processor or ISA given
|
||||
by CPU_STRING. Return null if the string isn't recognized.
|
||||
|
||||
A similar function exists in GAS. */
|
||||
/* Return a mips_cpu_info entry determined by an option valued
|
||||
OPT. */
|
||||
|
||||
static const struct mips_cpu_info *
|
||||
mips_parse_cpu (const char *cpu_string)
|
||||
mips_cpu_info_from_opt (int opt)
|
||||
{
|
||||
switch (opt)
|
||||
{
|
||||
case MIPS_ARCH_OPTION_FROM_ABI:
|
||||
/* 'from-abi' selects the most compatible architecture for the
|
||||
given ABI: MIPS I for 32-bit ABIs and MIPS III for 64-bit
|
||||
ABIs. For the EABIs, we have to decide whether we're using
|
||||
the 32-bit or 64-bit version. */
|
||||
return mips_cpu_info_from_isa (ABI_NEEDS_32BIT_REGS ? 1
|
||||
: ABI_NEEDS_64BIT_REGS ? 3
|
||||
: (TARGET_64BIT ? 3 : 1));
|
||||
|
||||
case MIPS_ARCH_OPTION_NATIVE:
|
||||
gcc_unreachable ();
|
||||
|
||||
default:
|
||||
return &mips_cpu_info_table[opt];
|
||||
}
|
||||
}
|
||||
|
||||
/* Return a default mips_cpu_info entry, given that no -march= option
|
||||
was explicitly specified. */
|
||||
|
||||
static const struct mips_cpu_info *
|
||||
mips_default_arch (void)
|
||||
{
|
||||
#ifdef MIPS_CPU_STRING_DEFAULT
|
||||
unsigned int i;
|
||||
const char *s;
|
||||
|
||||
/* In the past, we allowed upper-case CPU names, but it doesn't
|
||||
work well with the multilib machinery. */
|
||||
for (s = cpu_string; *s != 0; s++)
|
||||
if (ISUPPER (*s))
|
||||
{
|
||||
warning (0, "CPU names must be lower case");
|
||||
break;
|
||||
}
|
||||
|
||||
/* 'from-abi' selects the most compatible architecture for the given
|
||||
ABI: MIPS I for 32-bit ABIs and MIPS III for 64-bit ABIs. For the
|
||||
EABIs, we have to decide whether we're using the 32-bit or 64-bit
|
||||
version. */
|
||||
if (strcasecmp (cpu_string, "from-abi") == 0)
|
||||
return mips_cpu_info_from_isa (ABI_NEEDS_32BIT_REGS ? 1
|
||||
: ABI_NEEDS_64BIT_REGS ? 3
|
||||
: (TARGET_64BIT ? 3 : 1));
|
||||
|
||||
/* 'default' has traditionally been a no-op. Probably not very useful. */
|
||||
if (strcasecmp (cpu_string, "default") == 0)
|
||||
return NULL;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE (mips_cpu_info_table); i++)
|
||||
if (mips_matching_cpu_name_p (mips_cpu_info_table[i].name, cpu_string))
|
||||
if (strcmp (mips_cpu_info_table[i].name, MIPS_CPU_STRING_DEFAULT) == 0)
|
||||
return mips_cpu_info_table + i;
|
||||
|
||||
return NULL;
|
||||
gcc_unreachable ();
|
||||
#else
|
||||
/* 'from-abi' makes a good default: you get whatever the ABI
|
||||
requires. */
|
||||
return mips_cpu_info_from_opt (MIPS_ARCH_OPTION_FROM_ABI);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Set up globals to generate code for the ISA or processor
|
||||
|
@ -15436,26 +15281,16 @@ mips_set_tune (const struct mips_cpu_info *info)
|
|||
/* Implement TARGET_HANDLE_OPTION. */
|
||||
|
||||
static bool
|
||||
mips_handle_option (struct gcc_options *opts, struct gcc_options *opts_set,
|
||||
mips_handle_option (struct gcc_options *opts,
|
||||
struct gcc_options *opts_set ATTRIBUTE_UNUSED,
|
||||
const struct cl_decoded_option *decoded,
|
||||
location_t loc ATTRIBUTE_UNUSED)
|
||||
{
|
||||
size_t code = decoded->opt_index;
|
||||
const char *arg = decoded->arg;
|
||||
|
||||
gcc_assert (opts == &global_options);
|
||||
gcc_assert (opts_set == &global_options_set);
|
||||
|
||||
switch (code)
|
||||
{
|
||||
case OPT_march_:
|
||||
case OPT_mtune_:
|
||||
return mips_parse_cpu (arg) != 0;
|
||||
|
||||
case OPT_mips:
|
||||
mips_isa_option_info = mips_parse_cpu (ACONCAT (("mips", arg, NULL)));
|
||||
return mips_isa_option_info != 0;
|
||||
|
||||
case OPT_mno_flush_func:
|
||||
opts->x_mips_cache_flush_func = NULL;
|
||||
return true;
|
||||
|
@ -15472,6 +15307,9 @@ mips_option_override (void)
|
|||
{
|
||||
int i, start, regno, mode;
|
||||
|
||||
if (global_options_set.x_mips_isa_option)
|
||||
mips_isa_option_info = &mips_cpu_info_table[mips_isa_option];
|
||||
|
||||
/* Process flags as though we were generating non-MIPS16 code. */
|
||||
mips_base_mips16 = TARGET_MIPS16;
|
||||
target_flags &= ~MASK_MIPS16;
|
||||
|
@ -15499,8 +15337,8 @@ mips_option_override (void)
|
|||
Similar code was added to GAS 2.14 (see tc-mips.c:md_after_parse_args()).
|
||||
The GAS and GCC code should be kept in sync as much as possible. */
|
||||
|
||||
if (mips_arch_string != 0)
|
||||
mips_set_architecture (mips_parse_cpu (mips_arch_string));
|
||||
if (global_options_set.x_mips_arch_option)
|
||||
mips_set_architecture (mips_cpu_info_from_opt (mips_arch_option));
|
||||
|
||||
if (mips_isa_option_info != 0)
|
||||
{
|
||||
|
@ -15514,21 +15352,15 @@ mips_option_override (void)
|
|||
}
|
||||
|
||||
if (mips_arch_info == 0)
|
||||
{
|
||||
#ifdef MIPS_CPU_STRING_DEFAULT
|
||||
mips_set_architecture (mips_parse_cpu (MIPS_CPU_STRING_DEFAULT));
|
||||
#else
|
||||
mips_set_architecture (mips_cpu_info_from_isa (MIPS_ISA_DEFAULT));
|
||||
#endif
|
||||
}
|
||||
mips_set_architecture (mips_default_arch ());
|
||||
|
||||
if (ABI_NEEDS_64BIT_REGS && !ISA_HAS_64BIT_REGS)
|
||||
error ("%<-march=%s%> is not compatible with the selected ABI",
|
||||
mips_arch_info->name);
|
||||
|
||||
/* Optimize for mips_arch, unless -mtune selects a different processor. */
|
||||
if (mips_tune_string != 0)
|
||||
mips_set_tune (mips_parse_cpu (mips_tune_string));
|
||||
if (global_options_set.x_mips_tune_option)
|
||||
mips_set_tune (mips_cpu_info_from_opt (mips_tune_option));
|
||||
|
||||
if (mips_tune_info == 0)
|
||||
mips_set_tune (mips_arch_info);
|
||||
|
@ -15788,19 +15620,19 @@ mips_option_override (void)
|
|||
/* Default to working around R4000 errata only if the processor
|
||||
was selected explicitly. */
|
||||
if ((target_flags_explicit & MASK_FIX_R4000) == 0
|
||||
&& mips_matching_cpu_name_p (mips_arch_info->name, "r4000"))
|
||||
&& strcmp (mips_arch_info->name, "r4000") == 0)
|
||||
target_flags |= MASK_FIX_R4000;
|
||||
|
||||
/* Default to working around R4400 errata only if the processor
|
||||
was selected explicitly. */
|
||||
if ((target_flags_explicit & MASK_FIX_R4400) == 0
|
||||
&& mips_matching_cpu_name_p (mips_arch_info->name, "r4400"))
|
||||
&& strcmp (mips_arch_info->name, "r4400") == 0)
|
||||
target_flags |= MASK_FIX_R4400;
|
||||
|
||||
/* Default to working around R10000 errata only if the processor
|
||||
was selected explicitly. */
|
||||
if ((target_flags_explicit & MASK_FIX_R10000) == 0
|
||||
&& mips_matching_cpu_name_p (mips_arch_info->name, "r10000"))
|
||||
&& strcmp (mips_arch_info->name, "r10000") == 0)
|
||||
target_flags |= MASK_FIX_R10000;
|
||||
|
||||
/* Make sure that branch-likely instructions available when using
|
||||
|
|
|
@ -572,13 +572,6 @@ struct mips_cpu_info {
|
|||
#define TARGET_FP_EXCEPTIONS_DEFAULT MASK_FP_EXCEPTIONS
|
||||
#endif
|
||||
|
||||
/* 'from-abi' makes a good default: you get whatever the ABI requires. */
|
||||
#ifndef MIPS_ISA_DEFAULT
|
||||
#ifndef MIPS_CPU_STRING_DEFAULT
|
||||
#define MIPS_CPU_STRING_DEFAULT "from-abi"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef IN_LIBGCC2
|
||||
#undef TARGET_64BIT
|
||||
/* Make this compile time constant for libgcc2 */
|
||||
|
|
|
@ -59,7 +59,7 @@ Target Report Var(TARGET_MAD)
|
|||
Use PMC-style 'mad' instructions
|
||||
|
||||
march=
|
||||
Target RejectNegative Joined Var(mips_arch_string)
|
||||
Target RejectNegative Joined Var(mips_arch_option) ToLower Enum(mips_arch_opt_value)
|
||||
-march=ISA Generate code for the given ISA
|
||||
|
||||
mbranch-cost=
|
||||
|
@ -222,7 +222,7 @@ Target Report Var(TARGET_INTERLINK_MIPS16) Init(0)
|
|||
Generate code that can be safely linked with MIPS16 code.
|
||||
|
||||
mips
|
||||
Target RejectNegative Joined
|
||||
Target RejectNegative Joined ToLower Enum(mips_mips_opt_value) Var(mips_isa_option)
|
||||
-mipsN Generate code for ISA level N
|
||||
|
||||
mips16
|
||||
|
@ -339,7 +339,7 @@ Target Report Mask(SYNCI)
|
|||
Use synci instruction to invalidate i-cache
|
||||
|
||||
mtune=
|
||||
Target RejectNegative Joined Var(mips_tune_string)
|
||||
Target RejectNegative Joined Var(mips_tune_option) ToLower Enum(mips_arch_opt_value)
|
||||
-mtune=PROCESSOR Optimize the output for PROCESSOR
|
||||
|
||||
muninit-const-in-rodata
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Copyright (C) 2002, 2003, 2006 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2002, 2003, 2006, 2011 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of GCC.
|
||||
#
|
||||
|
@ -39,3 +39,8 @@ fp-bit.c: $(srcdir)/config/fp-bit.c
|
|||
cat $(srcdir)/config/fp-bit.c >> fp-bit.c
|
||||
|
||||
LIB2_SIDITI_CONV_FUNCS=yes
|
||||
|
||||
$(srcdir)/config/mips/mips-tables.opt: $(srcdir)/config/mips/genopt.sh \
|
||||
$(srcdir)/config/mips/mips-cpus.def
|
||||
$(SHELL) $(srcdir)/config/mips/genopt.sh $(srcdir)/config/mips > \
|
||||
$(srcdir)/config/mips/mips-tables.opt
|
||||
|
|
Loading…
Add table
Reference in a new issue