1169689Skan/* ARM CPU Cores
2169689Skan   Copyright (C) 2003, 2005 Free Software Foundation, Inc.
3169689Skan   Written by CodeSourcery, LLC
4169689Skan
5169689Skan   This file is part of GCC.
6169689Skan
7169689Skan   GCC is free software; you can redistribute it and/or modify it
8169689Skan   under the terms of the GNU General Public License as published by
9169689Skan   the Free Software Foundation; either version 2, or (at your option)
10169689Skan   any later version.
11169689Skan
12169689Skan   GCC is distributed in the hope that it will be useful, but
13169689Skan   WITHOUT ANY WARRANTY; without even the implied warranty of
14169689Skan   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15169689Skan   General Public License for more details.
16169689Skan
17169689Skan   You should have received a copy of the GNU General Public License
18169689Skan   along with GCC; see the file COPYING.  If not, write to the Free
19169689Skan   Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
20169689Skan   02110-1301, USA.  */
21169689Skan
22169689Skan/* Before using #include to read this file, define a macro:
23169689Skan
24169689Skan      ARM_CORE(CORE_NAME, CORE_IDENT, ARCH, FLAGS, COSTS)
25169689Skan
26169689Skan   The CORE_NAME is the name of the core, represented as a string constant.
27169689Skan   The CORE_IDENT is the name of the core, represented as an identifier.
28169689Skan   ARCH is the architecture revision implemented by the chip.
29169689Skan   FLAGS are the bitwise-or of the traits that apply to that core.
30169689Skan   This need not include flags implied by the architecture.
31169689Skan   COSTS is the name of the rtx_costs routine to use.
32169689Skan
33169689Skan   If you update this table, you must update the "tune" attribute in
34169689Skan   arm.md.
35169689Skan   
36169689Skan   Some tools assume no whitespace up to the first "," in each entry.  */
37169689Skan
38169689Skan/* V2/V2A Architecture Processors */
39169689SkanARM_CORE("arm2",   arm2,	2,	FL_CO_PROC | FL_MODE26, slowmul)
40169689SkanARM_CORE("arm250", arm250,	2,	FL_CO_PROC | FL_MODE26, slowmul)
41169689SkanARM_CORE("arm3",   arm3,	2,	FL_CO_PROC | FL_MODE26, slowmul)
42169689Skan
43169689Skan/* V3 Architecture Processors */
44169689SkanARM_CORE("arm6",          arm6,		3,	FL_CO_PROC | FL_MODE26, slowmul)
45169689SkanARM_CORE("arm60",         arm60,	3,	FL_CO_PROC | FL_MODE26, slowmul)
46169689SkanARM_CORE("arm600",        arm600,	3,	FL_CO_PROC | FL_MODE26 | FL_WBUF, slowmul)
47169689SkanARM_CORE("arm610",        arm610,	3,	             FL_MODE26 | FL_WBUF, slowmul)
48169689SkanARM_CORE("arm620",        arm620,	3,	FL_CO_PROC | FL_MODE26 | FL_WBUF, slowmul)
49169689SkanARM_CORE("arm7",          arm7,		3,	FL_CO_PROC | FL_MODE26, slowmul)
50169689SkanARM_CORE("arm7d",         arm7d,	3,	FL_CO_PROC | FL_MODE26, slowmul)
51169689SkanARM_CORE("arm7di",        arm7di,	3,	FL_CO_PROC | FL_MODE26, slowmul)
52169689SkanARM_CORE("arm70",         arm70,	3,	FL_CO_PROC | FL_MODE26, slowmul)
53169689SkanARM_CORE("arm700",        arm700,	3,	FL_CO_PROC | FL_MODE26 | FL_WBUF, slowmul)
54169689SkanARM_CORE("arm700i",       arm700i,	3,	FL_CO_PROC | FL_MODE26 | FL_WBUF, slowmul)
55169689SkanARM_CORE("arm710",        arm710,	3,	             FL_MODE26 | FL_WBUF, slowmul)
56169689SkanARM_CORE("arm720",        arm720,	3,	             FL_MODE26 | FL_WBUF, slowmul)
57169689SkanARM_CORE("arm710c",       arm710c,	3,	             FL_MODE26 | FL_WBUF, slowmul)
58169689SkanARM_CORE("arm7100",       arm7100,	3,	             FL_MODE26 | FL_WBUF, slowmul)
59169689SkanARM_CORE("arm7500",       arm7500,	3,	             FL_MODE26 | FL_WBUF, slowmul)
60169689Skan/* Doesn't have an external co-proc, but does have embedded fpa.  */
61169689SkanARM_CORE("arm7500fe",     arm7500fe,	3,	FL_CO_PROC | FL_MODE26 | FL_WBUF, slowmul)
62169689Skan
63169689Skan/* V3M Architecture Processors */
64169689Skan/* arm7m doesn't exist on its own, but only with D, ("and", and I), but
65169689Skan   those don't alter the code, so arm7m is sometimes used.  */
66169689SkanARM_CORE("arm7m",         arm7m,	3M,	FL_CO_PROC | FL_MODE26, fastmul)
67169689SkanARM_CORE("arm7dm",        arm7dm,	3M,	FL_CO_PROC | FL_MODE26, fastmul)
68169689SkanARM_CORE("arm7dmi",       arm7dmi,	3M,	FL_CO_PROC | FL_MODE26, fastmul)
69169689Skan
70169689Skan/* V4 Architecture Processors */
71169689SkanARM_CORE("arm8",          arm8,		4,	             FL_MODE26 | FL_LDSCHED, fastmul)
72169689SkanARM_CORE("arm810",        arm810,	4,	             FL_MODE26 | FL_LDSCHED, fastmul)
73169689SkanARM_CORE("strongarm",     strongarm,	4,	             FL_MODE26 | FL_LDSCHED | FL_STRONG, fastmul)
74169689SkanARM_CORE("strongarm110",  strongarm110,	4,	             FL_MODE26 | FL_LDSCHED | FL_STRONG, fastmul)
75169689SkanARM_CORE("strongarm1100", strongarm1100, 4,	             FL_MODE26 | FL_LDSCHED | FL_STRONG, fastmul)
76169689SkanARM_CORE("strongarm1110", strongarm1110, 4,	             FL_MODE26 | FL_LDSCHED | FL_STRONG, fastmul)
77169689Skan
78169689Skan/* V4T Architecture Processors */
79169689SkanARM_CORE("arm7tdmi",      arm7tdmi,	4T,	FL_CO_PROC          , fastmul)
80169689SkanARM_CORE("arm7tdmi-s",    arm7tdmis,	4T,	FL_CO_PROC          , fastmul)
81169689SkanARM_CORE("arm710t",       arm710t,	4T,	             FL_WBUF, fastmul)
82169689SkanARM_CORE("arm720t",       arm720t,	4T,	             FL_WBUF, fastmul)
83169689SkanARM_CORE("arm740t",       arm740t,	4T,	             FL_WBUF, fastmul)
84169689SkanARM_CORE("arm9",          arm9,		4T,	                         FL_LDSCHED, fastmul)
85169689SkanARM_CORE("arm9tdmi",      arm9tdmi,	4T,	                         FL_LDSCHED, fastmul)
86169689SkanARM_CORE("arm920",        arm920,	4T,	                         FL_LDSCHED, fastmul)
87169689SkanARM_CORE("arm920t",       arm920t,	4T,	                         FL_LDSCHED, fastmul)
88169689SkanARM_CORE("arm922t",       arm922t,	4T,	                         FL_LDSCHED, fastmul)
89169689SkanARM_CORE("arm940t",       arm940t,	4T,	                         FL_LDSCHED, fastmul)
90169689SkanARM_CORE("ep9312",        ep9312,	4T,	                         FL_LDSCHED |             FL_CIRRUS, fastmul)
91169689Skan
92169689Skan/* V5T Architecture Processors */
93169689SkanARM_CORE("arm10tdmi",     arm10tdmi,	5T,	                         FL_LDSCHED, fastmul)
94169689SkanARM_CORE("arm1020t",      arm1020t,	5T,	                         FL_LDSCHED, fastmul)
95169689Skan
96169689Skan/* V5TE Architecture Processors */
97169689SkanARM_CORE("arm9e",         arm9e,	5TE,	                         FL_LDSCHED, 9e)
98169689SkanARM_CORE("arm946e-s",     arm946es,	5TE,	                         FL_LDSCHED, 9e)
99169689SkanARM_CORE("arm966e-s",     arm966es,	5TE,	                         FL_LDSCHED, 9e)
100169689SkanARM_CORE("arm968e-s",     arm968es,	5TE,	                         FL_LDSCHED, 9e)
101169689SkanARM_CORE("arm10e",        arm10e,	5TE,				 FL_LDSCHED, fastmul)
102169689SkanARM_CORE("arm1020e",      arm1020e,	5TE,				 FL_LDSCHED, fastmul)
103169689SkanARM_CORE("arm1022e",      arm1022e,	5TE,				 FL_LDSCHED, fastmul)
104169689SkanARM_CORE("xscale",        xscale,	5TE,	                         FL_LDSCHED | FL_STRONG | FL_XSCALE, xscale)
105169689SkanARM_CORE("iwmmxt",        iwmmxt,	5TE,	                         FL_LDSCHED | FL_STRONG | FL_XSCALE | FL_IWMMXT, xscale)
106169689Skan
107169689Skan/* V5TEJ Architecture Processors */
108169689SkanARM_CORE("arm926ej-s",    arm926ejs,	5TEJ,	                         FL_LDSCHED, 9e)
109169689SkanARM_CORE("arm1026ej-s",   arm1026ejs,	5TEJ,	                         FL_LDSCHED, 9e)
110169689Skan
111169689Skan/* V6 Architecture Processors */
112169689SkanARM_CORE("arm1136j-s",    arm1136js,	6J,	                         FL_LDSCHED, 9e)
113169689SkanARM_CORE("arm1136jf-s",   arm1136jfs,	6J,	                         FL_LDSCHED | FL_VFPV2, 9e)
114169689SkanARM_CORE("arm1176jz-s",	  arm1176jzs,	6ZK,				 FL_LDSCHED, 9e)
115169689SkanARM_CORE("arm1176jzf-s",  arm1176jzfs,	6ZK,				 FL_LDSCHED | FL_VFPV2, 9e)
116169689SkanARM_CORE("mpcorenovfp",	  mpcorenovfp,	6K,				 FL_LDSCHED, 9e)
117169689SkanARM_CORE("mpcore",	  mpcore,	6K,				 FL_LDSCHED | FL_VFPV2, 9e)
118