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