]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/aarch64/aarch64-cores.def
aarch64-cores.def (thunderx): Disable LSE.
[thirdparty/gcc.git] / gcc / config / aarch64 / aarch64-cores.def
CommitLineData
cbe34bb5 1/* Copyright (C) 2011-2017 Free Software Foundation, Inc.
43e9d192
IB
2 Contributed by ARM Ltd.
3
4 This file is part of GCC.
5
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 by
8 the Free Software Foundation; either version 3, or (at your option)
9 any later version.
10
11 GCC is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 General Public License for more details.
15
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/>. */
19
20/* This is a list of cores that implement AArch64.
21
22 Before using #include to read this file, define a macro:
23
e8fcc9fa 24 AARCH64_CORE(CORE_NAME, CORE_IDENT, SCHEDULER_IDENT, ARCH_IDENT, FLAGS, COSTS, IMP, PART, VARIANT)
43e9d192
IB
25
26 The CORE_NAME is the name of the core, represented as a string constant.
27 The CORE_IDENT is the name of the core, represented as an identifier.
192ed1dd
JG
28 The SCHEDULER_IDENT is the name of the core for which scheduling decisions
29 will be made, represented as an identifier.
393ae126
KT
30 ARCH_IDENT is the architecture implemented by the chip as specified in
31 aarch64-arches.def.
43e9d192
IB
32 FLAGS are the bitwise-or of the traits that apply to that core.
33 This need not include flags implied by the architecture.
7e1bcce3 34 COSTS is the name of the rtx_costs routine to use.
2e721daa
AP
35 IMP is the implementer ID of the CPU vendor. On a GNU/Linux system it
36 can be found in /proc/cpuinfo. A partial list of implementer IDs is
37 given in the ARM Architecture Reference Manual ARMv8, for
38 ARMv8-A architecture profile.
39 PART is the part number of the CPU. On a GNU/Linux system it can be
40 found in /proc/cpuinfo. For big.LITTLE systems this should use the
41 macro AARCH64_BIG_LITTLE where the big part number comes as the first
e8fcc9fa
AP
42 argument to the macro and little is the second.
43 VARIANT is the variant of the CPU. In a GNU/Linux system it can found
44 in /proc/cpuinfo. If this is -1, this means it can match any variant. */
43e9d192 45
192ed1dd 46/* V8 Architecture Processors. */
43e9d192 47
4d9205d5 48/* ARM ('A') cores. */
e8fcc9fa
AP
49AARCH64_CORE("cortex-a35", cortexa35, cortexa53, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa35, 0x41, 0xd04, -1)
50AARCH64_CORE("cortex-a53", cortexa53, cortexa53, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa53, 0x41, 0xd03, -1)
51AARCH64_CORE("cortex-a57", cortexa57, cortexa57, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa57, 0x41, 0xd07, -1)
52AARCH64_CORE("cortex-a72", cortexa72, cortexa57, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa72, 0x41, 0xd08, -1)
53AARCH64_CORE("cortex-a73", cortexa73, cortexa57, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa73, 0x41, 0xd09, -1)
4d9205d5
AP
54
55/* Samsung ('S') cores. */
e8fcc9fa 56AARCH64_CORE("exynos-m1", exynosm1, exynosm1, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, exynosm1, 0x53, 0x001, -1)
4d9205d5
AP
57
58/* Qualcomm ('Q') cores. */
e8fcc9fa
AP
59AARCH64_CORE("falkor", falkor, cortexa57, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, qdf24xx, 0x51, 0xC00, -1)
60AARCH64_CORE("qdf24xx", qdf24xx, cortexa57, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, qdf24xx, 0x51, 0xC00, -1)
4d9205d5
AP
61
62/* Cavium ('C') cores. */
71aba51d 63AARCH64_CORE("thunderx", thunderx, thunderx, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, thunderx, 0x43, 0x0a0, -1)
e8fcc9fa
AP
64/* Do not swap around "thunderxt88p1" and "thunderxt88",
65 this order is required to handle variant correctly. */
71aba51d
AP
66AARCH64_CORE("thunderxt88p1", thunderxt88p1, thunderx, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, thunderx, 0x43, 0x0a1, 0)
67AARCH64_CORE("thunderxt88", thunderxt88, thunderx, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, thunderx, 0x43, 0x0a1, -1)
68AARCH64_CORE("thunderxt81", thunderxt81, thunderx, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, thunderx, 0x43, 0x0a2, -1)
69AARCH64_CORE("thunderxt83", thunderxt83, thunderx, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, thunderx, 0x43, 0x0a3, -1)
4d9205d5
AP
70
71/* APM ('P') cores. */
e8fcc9fa 72AARCH64_CORE("xgene1", xgene1, xgene1, 8A, AARCH64_FL_FOR_ARCH8, xgene1, 0x50, 0x000, -1)
f00f3b67 73
717b373c
VP
74/* V8.1 Architecture Processors. */
75
4d9205d5 76/* Broadcom ('B') cores. */
f192030d
JB
77AARCH64_CORE("thunderx2t99", thunderx2t99, thunderx2t99, 8_1A, AARCH64_FL_FOR_ARCH8_1 | AARCH64_FL_CRYPTO, thunderx2t99, 0x42, 0x516, -1)
78AARCH64_CORE("vulcan", vulcan, thunderx2t99, 8_1A, AARCH64_FL_FOR_ARCH8_1 | AARCH64_FL_CRYPTO, thunderx2t99, 0x42, 0x516, -1)
717b373c 79
f00f3b67
JG
80/* V8 big.LITTLE implementations. */
81
e8fcc9fa
AP
82AARCH64_CORE("cortex-a57.cortex-a53", cortexa57cortexa53, cortexa53, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa57, 0x41, AARCH64_BIG_LITTLE (0xd07, 0xd03), -1)
83AARCH64_CORE("cortex-a72.cortex-a53", cortexa72cortexa53, cortexa53, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa72, 0x41, AARCH64_BIG_LITTLE (0xd08, 0xd03), -1)
84AARCH64_CORE("cortex-a73.cortex-a35", cortexa73cortexa35, cortexa53, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa73, 0x41, AARCH64_BIG_LITTLE (0xd09, 0xd04), -1)
85AARCH64_CORE("cortex-a73.cortex-a53", cortexa73cortexa53, cortexa53, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa73, 0x41, AARCH64_BIG_LITTLE (0xd09, 0xd03), -1)
cd8b19af
AP
86
87#undef AARCH64_CORE