1 /* ARM CPU architectures.
2 Copyright (C
) 1991-2017 Free Software Foundation
, Inc.
4 This file is part of GCC.
6 GCC is free software
; you can redistribute it and
/or modify it
7 under the terms of the GNU General Public License as published
8 by the Free Software Foundation
; either version
3, or (at your
9 option
) any later version.
11 GCC is distributed in the hope that it will be useful
, but WITHOUT
12 ANY WARRANTY
; without even the implied warranty of MERCHANTABILITY
13 or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public
14 License for more details.
16 You should have received a copy of the GNU General Public License
17 along with GCC
; see the file COPYING3. If not see
18 <http
://www.gnu.org
/licenses
/>.
*/
20 /* Before using #include to read this file
, define a macro
:
22 ARM_ARCH(NAME
, CORE
, TUNE_FLAGS
, ARCH
, ISA
)
24 The NAME is the name of the architecture
, represented as a string
25 constant. The CORE is the identifier for a core representative of
26 this architecture. ARCH is the architecture revision. ISA is the
27 detailed architectural capabilities of the
core (see arm
-isa.h
).
29 genopt.sh assumes no whitespace up to the first
"," in each entry.
*/
31 ARM_ARCH("armv2", arm2
, (TF_CO_PROC | TF_NO_MODE32
), 2, ISA_FEAT(ISA_ARMv2
) ISA_FEAT(isa_bit_mode26
))
32 ARM_ARCH("armv2a", arm2
, (TF_CO_PROC | TF_NO_MODE32
), 2, ISA_FEAT(ISA_ARMv2
) ISA_FEAT(isa_bit_mode26
))
33 ARM_ARCH("armv3", arm6
, TF_CO_PROC
, 3, ISA_FEAT(ISA_ARMv3
) ISA_FEAT(isa_bit_mode26
))
34 ARM_ARCH("armv3m", arm7m
, TF_CO_PROC
, 3M
, ISA_FEAT(ISA_ARMv3m
) ISA_FEAT(isa_bit_mode26
))
35 ARM_ARCH("armv4", arm7tdmi
, TF_CO_PROC
, 4, ISA_FEAT(ISA_ARMv4
) ISA_FEAT(isa_bit_mode26
))
36 /* Strictly
, isa_bit_mode26 is a permitted option for v4t
, but there are no
37 implementations that support it
, so we will leave it out for now.
*/
38 ARM_ARCH("armv4t", arm7tdmi
, TF_CO_PROC
, 4T
, ISA_FEAT(ISA_ARMv4t
))
39 ARM_ARCH("armv5", arm10tdmi
, TF_CO_PROC
, 5, ISA_FEAT(ISA_ARMv5
))
40 ARM_ARCH("armv5t", arm10tdmi
, TF_CO_PROC
, 5T
, ISA_FEAT(ISA_ARMv5t
))
41 ARM_ARCH("armv5e", arm1026ejs
, TF_CO_PROC
, 5E
, ISA_FEAT(ISA_ARMv5e
))
42 ARM_ARCH("armv5te", arm1026ejs
, TF_CO_PROC
, 5TE
, ISA_FEAT(ISA_ARMv5te
))
43 ARM_ARCH("armv6", arm1136js
, TF_CO_PROC
, 6, ISA_FEAT(ISA_ARMv6
))
44 ARM_ARCH("armv6j", arm1136js
, TF_CO_PROC
, 6J
, ISA_FEAT(ISA_ARMv6j
))
45 ARM_ARCH("armv6k", mpcore
, TF_CO_PROC
, 6K
, ISA_FEAT(ISA_ARMv6k
))
46 ARM_ARCH("armv6z", arm1176jzs
, TF_CO_PROC
, 6Z
, ISA_FEAT(ISA_ARMv6z
))
47 ARM_ARCH("armv6kz", arm1176jzs
, TF_CO_PROC
, 6KZ
, ISA_FEAT(ISA_ARMv6kz
))
48 ARM_ARCH("armv6zk", arm1176jzs
, TF_CO_PROC
, 6KZ
, ISA_FEAT(ISA_ARMv6kz
))
49 ARM_ARCH("armv6t2", arm1156t2s
, TF_CO_PROC
, 6T2
, ISA_FEAT(ISA_ARMv6t2
))
50 ARM_ARCH("armv6-m", cortexm1
, 0, 6M
, ISA_FEAT(ISA_ARMv6m
))
51 ARM_ARCH("armv6s-m", cortexm1
, 0, 6M
, ISA_FEAT(ISA_ARMv6m
))
52 ARM_ARCH("armv7", cortexa8
, TF_CO_PROC
, 7, ISA_FEAT(ISA_ARMv7
))
53 ARM_ARCH("armv7-a", cortexa8
, TF_CO_PROC
, 7A
, ISA_FEAT(ISA_ARMv7a
))
54 ARM_ARCH("armv7ve", cortexa8
, TF_CO_PROC
, 7A
, ISA_FEAT(ISA_ARMv7ve
))
55 ARM_ARCH("armv7-r", cortexr4
, TF_CO_PROC
, 7R
, ISA_FEAT(ISA_ARMv7r
))
56 ARM_ARCH("armv7-m", cortexm3
, TF_CO_PROC
, 7M
, ISA_FEAT(ISA_ARMv7m
))
57 ARM_ARCH("armv7e-m", cortexm4
, TF_CO_PROC
, 7EM
, ISA_FEAT(ISA_ARMv7em
))
58 ARM_ARCH("armv8-a", cortexa53
, TF_CO_PROC
, 8A
, ISA_FEAT(ISA_ARMv8a
))
59 ARM_ARCH("armv8-a+crc",cortexa53
, TF_CO_PROC
, 8A
, ISA_FEAT(ISA_ARMv8a
) ISA_FEAT(isa_bit_crc32
))
60 ARM_ARCH("armv8.1-a", cortexa53
, TF_CO_PROC
, 8A
, ISA_FEAT(ISA_ARMv8_1a
))
61 ARM_ARCH ("armv8.2-a", cortexa53
, TF_CO_PROC
, 8A
, ISA_FEAT(ISA_ARMv8_2a
))
62 ARM_ARCH ("armv8.2-a+fp16", cortexa53
, TF_CO_PROC
, 8A
, ISA_FEAT(ISA_ARMv8_2a
) ISA_FEAT(isa_bit_fp16
))
63 ARM_ARCH("armv8-m.base", cortexm23
, 0, 8M_BASE
, ISA_FEAT(ISA_ARMv8m_base
))
64 ARM_ARCH("armv8-m.main", cortexm7
, TF_CO_PROC
, 8M_MAIN
, ISA_FEAT(ISA_ARMv8m_main
))
65 ARM_ARCH("armv8-m.main+dsp", cortexm33
, TF_CO_PROC
, 8M_MAIN
, ISA_FEAT(ISA_ARMv8m_main
) ISA_FEAT(isa_bit_ARMv7em
))
66 ARM_ARCH("iwmmxt", iwmmxt
, (TF_LDSCHED | TF_STRONG | TF_XSCALE
), 5TE
, ISA_FEAT(ISA_ARMv5te
) ISA_FEAT(isa_bit_xscale
) ISA_FEAT(isa_bit_iwmmxt
))
67 ARM_ARCH("iwmmxt2", iwmmxt2
, (TF_LDSCHED | TF_STRONG | TF_XSCALE
), 5TE
, ISA_FEAT(ISA_ARMv5te
) ISA_FEAT(isa_bit_xscale
) ISA_FEAT(isa_bit_iwmmxt
) ISA_FEAT(isa_bit_iwmmxt2
))