/* ARM CPU Cores Copyright (C) 2003 Free Software Foundation, Inc. Written by CodeSourcery, LLC 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Before using #include to read this file, define a macro: ARM_CORE(CORE_NAME, ARCH, FLAGS, COSTS) The CORE_NAME is the name of the core, represented as an identifier rather than a string constant. ARCH is the architecture revision implemeted by the chip. FLAGS are the bitwise-or of the traits that apply to that core. This need not include flags implied by the architecture. COSTS is the name of the rtx_costs routine to use. If you update this table, you must update the "tune" attribute in arm.md. Some tools assume no whitespace up to the first "," in each entry. */ ARM_CORE(arm2, 2, FL_CO_PROC | FL_MODE26, slowmul) ARM_CORE(arm250, 2, FL_CO_PROC | FL_MODE26, slowmul) ARM_CORE(arm3, 2, FL_CO_PROC | FL_MODE26, slowmul) ARM_CORE(arm6, 3, FL_CO_PROC | FL_MODE26, slowmul) ARM_CORE(arm60, 3, FL_CO_PROC | FL_MODE26, slowmul) ARM_CORE(arm600, 3, FL_CO_PROC | FL_MODE26, slowmul) ARM_CORE(arm610, 3, FL_MODE26, slowmul) ARM_CORE(arm620, 3, FL_CO_PROC | FL_MODE26, slowmul) ARM_CORE(arm7, 3, FL_CO_PROC | FL_MODE26, slowmul) /* arm7m doesn't exist on its own, but only with D, (and I), but those don't alter the code, so arm7m is sometimes used. */ ARM_CORE(arm7m, 3M, FL_CO_PROC | FL_MODE26, fastmul) ARM_CORE(arm7d, 3, FL_CO_PROC | FL_MODE26, slowmul) ARM_CORE(arm7dm, 3M, FL_CO_PROC | FL_MODE26, fastmul) ARM_CORE(arm7di, 3, FL_CO_PROC | FL_MODE26, slowmul) ARM_CORE(arm7dmi, 3M, FL_CO_PROC | FL_MODE26, fastmul) ARM_CORE(arm70, 3, FL_CO_PROC | FL_MODE26, slowmul) ARM_CORE(arm700, 3, FL_CO_PROC | FL_MODE26, slowmul) ARM_CORE(arm700i, 3, FL_CO_PROC | FL_MODE26, slowmul) ARM_CORE(arm710, 3, FL_MODE26, slowmul) ARM_CORE(arm720, 3, FL_MODE26, slowmul) ARM_CORE(arm710c, 3, FL_MODE26, slowmul) ARM_CORE(arm7100, 3, FL_MODE26, slowmul) ARM_CORE(arm7500, 3, FL_MODE26, slowmul) /* Doesn't have an external co-proc, but does have embedded fpa. */ ARM_CORE(arm7500fe, 3, FL_CO_PROC | FL_MODE26, slowmul) /* V4 Architecture Processors */ ARM_CORE(arm7tdmi, 4T, FL_CO_PROC , fastmul) ARM_CORE(arm710t, 4T, 0 , fastmul) ARM_CORE(arm720t, 4T, 0 , fastmul) ARM_CORE(arm740t, 4T, 0 , fastmul) ARM_CORE(arm8, 4, FL_MODE26 | FL_LDSCHED, fastmul) ARM_CORE(arm810, 4, FL_MODE26 | FL_LDSCHED, fastmul) ARM_CORE(arm9, 4T, FL_LDSCHED, fastmul) ARM_CORE(arm920, 4, FL_LDSCHED, fastmul) ARM_CORE(arm920t, 4T, FL_LDSCHED, fastmul) ARM_CORE(arm940t, 4T, FL_LDSCHED, fastmul) ARM_CORE(arm9tdmi, 4T, FL_LDSCHED, fastmul) ARM_CORE(arm9e, 4, FL_LDSCHED, 9e) ARM_CORE(ep9312, 4T, FL_LDSCHED | FL_CIRRUS, fastmul) ARM_CORE(strongarm, 4, FL_MODE26 | FL_LDSCHED | FL_STRONG, fastmul) ARM_CORE(strongarm110, 4, FL_MODE26 | FL_LDSCHED | FL_STRONG, fastmul) ARM_CORE(strongarm1100, 4, FL_MODE26 | FL_LDSCHED | FL_STRONG, fastmul) ARM_CORE(strongarm1110, 4, FL_MODE26 | FL_LDSCHED | FL_STRONG, fastmul) /* V5 Architecture Processors */ ARM_CORE(arm10tdmi, 5T, FL_LDSCHED, fastmul) ARM_CORE(arm1020t, 5T, FL_LDSCHED, fastmul) ARM_CORE(arm926ejs, 5TEJ, 0, 9e) ARM_CORE(arm1026ejs, 5TEJ, 0, 9e) ARM_CORE(xscale, 5TE, FL_LDSCHED | FL_STRONG | FL_XSCALE, xscale) ARM_CORE(iwmmxt, 5TE, FL_LDSCHED | FL_STRONG | FL_XSCALE | FL_IWMMXT, xscale) /* V6 Architecture Processors */ ARM_CORE(arm1136js, 6J, 0, 9e) ARM_CORE(arm1136jfs, 6J, FL_VFPV2, 9e)