]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/arm/arm-cpus.in
re PR tree-optimization/87621 (outer loop auto-vectorization fails for exponentiation...
[thirdparty/gcc.git] / gcc / config / arm / arm-cpus.in
CommitLineData
a92ffb3e
RE
1# CPU, FPU and architecture specifications for ARM.
2#
85ec4feb 3# Copyright (C) 2011-2018 Free Software Foundation, Inc.
a92ffb3e
RE
4#
5# This file is part of GCC.
6#
7# GCC is free software; you can redistribute it and/or modify it under
8# the terms of the GNU General Public License as published by the Free
9# Software Foundation; either version 3, or (at your option) any later
10# version.
11#
12# GCC is distributed in the hope that it will be useful, but WITHOUT ANY
13# WARRANTY; without even the implied warranty of MERCHANTABILITY or
14# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15# for more details.
16#
17# You should have received a copy of the GNU General Public License
18# along with GCC; see the file COPYING3. If not see
19# <http://www.gnu.org/licenses/>.
20
21# This file describes all the various CPUs, FPUs and architectures supported
22# by the compiler. It is pre-processed by parsecpu.awk for a number of
23# purposes.
24#
25# The general form is a sequence of begin..end blocks with the following
26# syntax:
27# begin <object-type> <name>
28# attribute-statement*
29# end <object-type> <name>
30#
31# where object type is one of "cpu" "arch" "fpu". Each object type has
32# a specific set of permitted attributes, some of which are optional; further
33# details can be found below.
34#
35# Some objects cross-reference other objects by name. Objects are permitted
36# in any order and it is not necessary to place a cross-referenced object
37# earlier in the file.
38#
39# The object names for cpu, arch and fpu objects are used for the public option
40# names in the final compiler. The order within each group is preserved and
41# forms the order for the list within the compiler.
42
bdb0828f
RE
43# Most objects in this file support forward references. The major
44# exception is feature groups, which may only refer to previously
45# defined features or feature groups. This is done to avoid the risk
46# of feature groups recursively referencing each other and causing
47# the parser to hang.
48
49# Features - general convention: all lower case.
50
bdb0828f
RE
51# Architecture rel 4
52define feature armv4
53
bdb0828f
RE
54# Thumb aware.
55define feature thumb
56
c3f808d3
KT
57# Architecture rel 5t.
58define feature armv5t
59
60# Architecture rel 5te.
61define feature armv5te
bdb0828f
RE
62
63# XScale.
64define feature xscale
65
66# Architecture rel 6.
67define feature armv6
68
69# Architecture rel 6k.
70define feature armv6k
71
72# Thumb-2.
73define feature thumb2
74
75# Instructions not present in 'M' profile.
76define feature notm
77
78# Architecture uses be8 mode in big-endian.
79define feature be8
80
81# Thumb division instructions.
82define feature tdiv
83
84# Architecture rel 7e-m.
85define feature armv7em
86
87# Architecture rel 7.
88define feature armv7
89
90# ARM division instructions.
91define feature adiv
92
93# Architecture rel 8.
94define feature armv8
95
96# ARMv8 CRC32 instructions.
97define feature crc32
98
99# XScale v2 (Wireless MMX).
100define feature iwmmxt
101
102# XScale Wireless MMX2.
103define feature iwmmxt2
104
105# Architecture rel 8.1.
106define feature armv8_1
107
1ad9b03f 108# Architecture rel 8.2.
bdb0828f
RE
109define feature armv8_2
110
1ad9b03f
TC
111# Architecture rel 8.3.
112define feature armv8_3
113
946c6c45
KT
114# Architecture rel 8.4.
115define feature armv8_4
116
bdb0828f
RE
117# M-Profile security extensions.
118define feature cmse
119
120# Floating point and Neon extensions.
121# VFPv1 is not supported in GCC.
122
123# Vector floating point v2.
124define feature vfpv2
125
126# Vector floating point v3.
127define feature vfpv3
128
129# Vector floating point v4.
130define feature vfpv4
131
132# Floating point v5.
133define feature fpv5
134
135# ARMv7-A LPAE.
136define feature lpae
137
138# Advanced SIMD instructions.
139define feature neon
140
141# Conversions to/from fp16 (VFPv3 extension).
142define feature fp16conv
143
144# Double precision operations supported.
145define feature fp_dbl
146
147# 32 Double precision registers.
148define feature fp_d32
149
150# Crypto extension to ARMv8.
151define feature crypto
152
153# FP16 data processing (half-precision float).
154define feature fp16
155
ba09dd21
TC
156# Dot Product instructions extension to ARMv8.2-a.
157define feature dotprod
bdb0828f 158
06e95715
KT
159# Half-precision floating-point instructions in ARMv8.4-A.
160define feature fp16fml
161
bdb0828f
RE
162# ISA Quirks (errata?). Don't forget to add this to the fgroup
163# ALL_QUIRKS below.
164
165# No volatile memory in IT blocks.
166define feature quirk_no_volatile_ce
167
168# Previously mis-identified by GCC.
169define feature quirk_armv6kz
170
171# Cortex-M3 LDRD quirk.
172define feature quirk_cm3_ldrd
173
174# (Very) slow multiply operations. Should probably be a tuning bit.
175define feature smallmul
176
177# Feature groups. Conventionally all (or mostly) upper case.
ba09dd21
TC
178# ALL_FPU lists all the feature bits associated with the floating-point
179# unit; these will all be removed if the floating-point unit is disabled
180# (eg -mfloat-abi=soft). ALL_FPU_INTERNAL must ONLY contain features that
181# form part of a named -mfpu option; it is used to map the capabilities
182# back to a named FPU for the benefit of the assembler.
183#
184# ALL_SIMD_INTERNAL and ALL_SIMD are similarly defined to help with the
185# construction of ALL_FPU and ALL_FPU_INTERNAL; they describe the SIMD
186# extensions that are either part of a named FPU or optional extensions
187# respectively.
188
bdb0828f
RE
189
190# List of all cryptographic extensions to stripout if crypto is
191# disabled. Currently, that's trivial, but we define it anyway for
192# consistency with the SIMD and FP disable lists.
193define fgroup ALL_CRYPTO crypto
194
195# List of all SIMD bits to strip out if SIMD is disabled. This does
196# strip off 32 D-registers, but does not remove support for
197# double-precision FP.
ba09dd21 198define fgroup ALL_SIMD_INTERNAL fp_d32 neon ALL_CRYPTO
06e95715 199define fgroup ALL_SIMD ALL_SIMD_INTERNAL dotprod fp16fml
bdb0828f
RE
200
201# List of all FPU bits to strip out if -mfpu is used to override the
202# default. fp16 is deliberately missing from this list.
ba09dd21 203define fgroup ALL_FPU_INTERNAL vfpv2 vfpv3 vfpv4 fpv5 fp16conv fp_dbl ALL_SIMD_INTERNAL
bdb0828f
RE
204
205# Similarly, but including fp16 and other extensions that aren't part of
206# -mfpu support.
207define fgroup ALL_FP fp16 ALL_FPU_INTERNAL
208
5511d3fa 209define fgroup ARMv4 armv4 notm
bdb0828f 210define fgroup ARMv4t ARMv4 thumb
c3f808d3
KT
211define fgroup ARMv5t ARMv4t armv5t
212define fgroup ARMv5te ARMv5t armv5te
bdb0828f
RE
213define fgroup ARMv5tej ARMv5te
214define fgroup ARMv6 ARMv5te armv6 be8
215define fgroup ARMv6j ARMv6
216define fgroup ARMv6k ARMv6 armv6k
217define fgroup ARMv6z ARMv6
218define fgroup ARMv6kz ARMv6k quirk_armv6kz
219define fgroup ARMv6zk ARMv6k
220define fgroup ARMv6t2 ARMv6 thumb2
221# This is suspect. ARMv6-m doesn't really pull in any useful features
222# from ARMv5* or ARMv6.
5511d3fa 223define fgroup ARMv6m armv4 thumb armv5t armv5te armv6 be8
bdb0828f
RE
224# This is suspect, the 'common' ARMv7 subset excludes the thumb2 'DSP' and
225# integer SIMD instructions that are in ARMv6T2. */
226define fgroup ARMv7 ARMv6m thumb2 armv7
227
228define fgroup ARMv7a ARMv7 notm armv6k
229define fgroup ARMv7ve ARMv7a adiv tdiv lpae
230define fgroup ARMv7r ARMv7a tdiv
231define fgroup ARMv7m ARMv7 tdiv
232define fgroup ARMv7em ARMv7m armv7em
233define fgroup ARMv8a ARMv7ve armv8
234define fgroup ARMv8_1a ARMv8a crc32 armv8_1
235define fgroup ARMv8_2a ARMv8_1a armv8_2
1ad9b03f 236define fgroup ARMv8_3a ARMv8_2a armv8_3
946c6c45 237define fgroup ARMv8_4a ARMv8_3a armv8_4
bdb0828f
RE
238define fgroup ARMv8m_base ARMv6m armv8 cmse tdiv
239define fgroup ARMv8m_main ARMv7m armv8 cmse
240define fgroup ARMv8r ARMv8a
241
242# Useful combinations.
243define fgroup VFPv2 vfpv2
244define fgroup VFPv3 VFPv2 vfpv3
245define fgroup VFPv4 VFPv3 vfpv4 fp16conv
246define fgroup FPv5 VFPv4 fpv5
247
248define fgroup FP_DBL fp_dbl
249define fgroup FP_D32 FP_DBL fp_d32
250define fgroup FP_ARMv8 FPv5 FP_D32
251define fgroup NEON FP_D32 neon
252define fgroup CRYPTO NEON crypto
ba09dd21 253define fgroup DOTPROD NEON dotprod
bdb0828f
RE
254
255# List of all quirk bits to strip out when comparing CPU features with
256# architectures.
34a1d5c2
RE
257# xscale isn't really a 'quirk', but it isn't an architecture either and we
258# need to ignore it for matching purposes.
259define fgroup ALL_QUIRKS quirk_no_volatile_ce quirk_armv6kz quirk_cm3_ldrd xscale
bdb0828f 260
a92ffb3e
RE
261# Architecture entries
262# format:
263# begin arch <name>
264# tune for <cpu>
265# [tune flags <list>]
266# base <name>
8afb5358 267# [profile <A|R|M>]
a92ffb3e
RE
268# isa <isa-flags-list>
269# end arch <name>
270#
271
a92ffb3e
RE
272begin arch armv4
273 tune for arm7tdmi
274 tune flags CO_PROC
275 base 4
7aa13250 276 isa ARMv4
a92ffb3e
RE
277end arch armv4
278
a92ffb3e
RE
279begin arch armv4t
280 tune for arm7tdmi
281 tune flags CO_PROC
282 base 4T
283 isa ARMv4t
284end arch armv4t
285
a92ffb3e
RE
286begin arch armv5t
287 tune for arm10tdmi
288 tune flags CO_PROC
289 base 5T
290 isa ARMv5t
291end arch armv5t
292
a92ffb3e
RE
293begin arch armv5te
294 tune for arm1026ej-s
295 tune flags CO_PROC
296 base 5TE
297 isa ARMv5te
76d7d533 298 option fp add VFPv2 FP_DBL
357e1023 299 optalias vfpv2 fp
e87afe54 300 option nofp remove ALL_FP
a92ffb3e
RE
301end arch armv5te
302
303begin arch armv5tej
304 tune for arm1026ej-s
305 tune flags CO_PROC
306 base 5TEJ
307 isa ARMv5tej
76d7d533 308 option fp add VFPv2 FP_DBL
357e1023 309 optalias vfpv2 fp
e87afe54 310 option nofp remove ALL_FP
a92ffb3e
RE
311end arch armv5tej
312
313begin arch armv6
314 tune for arm1136j-s
315 tune flags CO_PROC
316 base 6
317 isa ARMv6
76d7d533 318 option fp add VFPv2 FP_DBL
357e1023 319 optalias vfpv2 fp
e87afe54 320 option nofp remove ALL_FP
a92ffb3e
RE
321end arch armv6
322
323begin arch armv6j
324 tune for arm1136j-s
325 tune flags CO_PROC
326 base 6J
327 isa ARMv6j
76d7d533 328 option fp add VFPv2 FP_DBL
357e1023 329 optalias vfpv2 fp
e87afe54 330 option nofp remove ALL_FP
a92ffb3e
RE
331end arch armv6j
332
333begin arch armv6k
334 tune for mpcore
335 tune flags CO_PROC
336 base 6K
337 isa ARMv6k
76d7d533 338 option fp add VFPv2 FP_DBL
357e1023 339 optalias vfpv2 fp
e87afe54 340 option nofp remove ALL_FP
a92ffb3e
RE
341end arch armv6k
342
343begin arch armv6z
344 tune for arm1176jz-s
345 tune flags CO_PROC
346 base 6Z
347 isa ARMv6z
76d7d533 348 option fp add VFPv2 FP_DBL
357e1023 349 optalias vfpv2 fp
e87afe54 350 option nofp remove ALL_FP
a92ffb3e
RE
351end arch armv6z
352
353begin arch armv6kz
354 tune for arm1176jz-s
355 tune flags CO_PROC
356 base 6KZ
357 isa ARMv6kz
76d7d533 358 option fp add VFPv2 FP_DBL
357e1023 359 optalias vfpv2 fp
e87afe54 360 option nofp remove ALL_FP
a92ffb3e
RE
361end arch armv6kz
362
363begin arch armv6zk
364 tune for arm1176jz-s
365 tune flags CO_PROC
366 base 6KZ
367 isa ARMv6kz
76d7d533 368 option fp add VFPv2 FP_DBL
357e1023 369 optalias vfpv2 fp
e87afe54 370 option nofp remove ALL_FP
a92ffb3e
RE
371end arch armv6zk
372
373begin arch armv6t2
374 tune for arm1156t2-s
375 tune flags CO_PROC
376 base 6T2
377 isa ARMv6t2
76d7d533 378 option fp add VFPv2 FP_DBL
357e1023 379 optalias vfpv2 fp
e87afe54 380 option nofp remove ALL_FP
a92ffb3e
RE
381end arch armv6t2
382
383begin arch armv6-m
384 tune for cortex-m1
385 base 6M
8afb5358 386 profile M
a92ffb3e
RE
387 isa ARMv6m
388end arch armv6-m
389
c40a8be8
RE
390# This is now equivalent to armv6-m, but we keep it because some
391# versions of GAS still distinguish between the two.
a92ffb3e
RE
392begin arch armv6s-m
393 tune for cortex-m1
394 base 6M
8afb5358 395 profile M
a92ffb3e
RE
396 isa ARMv6m
397end arch armv6s-m
398
399begin arch armv7
400 tune for cortex-a8
401 tune flags CO_PROC
402 base 7
403 isa ARMv7
76d7d533
RE
404# fp => VFPv3-d16 (only useful for the A+R profile subset).
405 option fp add VFPv3 FP_DBL
357e1023 406 optalias vfpv3-d16 fp
ffc12690 407 option nofp remove ALL_FP
a92ffb3e
RE
408end arch armv7
409
410begin arch armv7-a
411 tune for cortex-a8
412 tune flags CO_PROC
413 base 7A
8afb5358 414 profile A
a92ffb3e 415 isa ARMv7a
76d7d533 416# fp => VFPv3-d16, simd => neon-vfpv3
357e1023
RE
417 option fp add VFPv3 FP_DBL
418 optalias vfpv3-d16 fp
419 option vfpv3 add VFPv3 FP_D32
bdb0828f
RE
420 option vfpv3-d16-fp16 add VFPv3 FP_DBL fp16conv
421 option vfpv3-fp16 add VFPv3 FP_DBL FP_D32 fp16conv
e87afe54 422 option vfpv4-d16 add VFPv4 FP_DBL
357e1023
RE
423 option vfpv4 add VFPv4 FP_D32
424 option simd add VFPv3 NEON
425 optalias neon simd
426 optalias neon-vfpv3 simd
bdb0828f 427 option neon-fp16 add VFPv3 NEON fp16conv
e87afe54 428 option neon-vfpv4 add VFPv4 NEON
357e1023
RE
429 option nosimd remove ALL_SIMD
430 option nofp remove ALL_FP
a92ffb3e
RE
431end arch armv7-a
432
433begin arch armv7ve
434 tune for cortex-a8
435 tune flags CO_PROC
436 base 7A
8afb5358 437 profile A
a92ffb3e 438 isa ARMv7ve
76d7d533 439# fp => VFPv4-d16, simd => neon-vfpv4
e87afe54
RE
440 option vfpv3-d16 add VFPv3 FP_DBL
441 option vfpv3 add VFPv3 FP_D32
bdb0828f
RE
442 option vfpv3-d16-fp16 add VFPv3 FP_DBL fp16conv
443 option vfpv3-fp16 add VFPv3 FP_DBL FP_D32 fp16conv
e87afe54 444 option fp add VFPv4 FP_DBL
357e1023 445 optalias vfpv4-d16 fp
e87afe54
RE
446 option vfpv4 add VFPv4 FP_D32
447 option neon add VFPv3 NEON
357e1023 448 optalias neon-vfpv3 neon
bdb0828f 449 option neon-fp16 add VFPv3 NEON fp16conv
e87afe54 450 option simd add VFPv4 NEON
357e1023
RE
451 optalias neon-vfpv4 simd
452 option nosimd remove ALL_SIMD
453 option nofp remove ALL_FP
a92ffb3e
RE
454end arch armv7ve
455
456begin arch armv7-r
457 tune for cortex-r4
458 tune flags CO_PROC
459 base 7R
8afb5358 460 profile R
a92ffb3e 461 isa ARMv7r
76d7d533 462# ARMv7-r uses VFPv3-d16
76d7d533 463 option fp.sp add VFPv3
ffc12690 464 optalias vfpv3xd fp.sp
e87afe54 465 option fp add VFPv3 FP_DBL
ffc12690 466 optalias vfpv3-d16 fp
bdb0828f 467 option idiv add adiv
e87afe54 468 option nofp remove ALL_FP
bdb0828f 469 option noidiv remove adiv
a92ffb3e
RE
470end arch armv7-r
471
472begin arch armv7-m
473 tune for cortex-m3
474 tune flags CO_PROC
475 base 7M
8afb5358 476 profile M
a92ffb3e 477 isa ARMv7m
76d7d533
RE
478# In theory FP is permitted in v7-m, but in practice no implementations exist.
479# leave it out for now.
a92ffb3e
RE
480end arch armv7-m
481
482begin arch armv7e-m
483 tune for cortex-m4
484 tune flags CO_PROC
485 base 7EM
8afb5358 486 profile M
a92ffb3e 487 isa ARMv7em
76d7d533
RE
488# fp => VFPv4-sp-d16; fpv5 => FPv5-sp-d16; fp.dp => FPv5-d16
489 option fp add VFPv4
ffc12690 490 optalias vfpv4-sp-d16 fp
76d7d533
RE
491 option fpv5 add FPv5
492 option fp.dp add FPv5 FP_DBL
ffc12690 493 optalias fpv5-d16 fp.dp
e87afe54 494 option nofp remove ALL_FP
a92ffb3e
RE
495end arch armv7e-m
496
497begin arch armv8-a
498 tune for cortex-a53
499 tune flags CO_PROC
500 base 8A
8afb5358 501 profile A
a92ffb3e 502 isa ARMv8a
bdb0828f 503 option crc add crc32
250e088b 504 option simd add FP_ARMv8 NEON
e87afe54 505 option crypto add FP_ARMv8 CRYPTO
e87afe54 506 option nocrypto remove ALL_CRYPTO
357e1023 507 option nofp remove ALL_FP
a92ffb3e
RE
508end arch armv8-a
509
a92ffb3e
RE
510begin arch armv8.1-a
511 tune for cortex-a53
512 tune flags CO_PROC
513 base 8A
8afb5358 514 profile A
a92ffb3e 515 isa ARMv8_1a
250e088b 516 option simd add FP_ARMv8 NEON
e87afe54 517 option crypto add FP_ARMv8 CRYPTO
e87afe54 518 option nocrypto remove ALL_CRYPTO
357e1023 519 option nofp remove ALL_FP
a92ffb3e
RE
520end arch armv8.1-a
521
522begin arch armv8.2-a
523 tune for cortex-a53
524 tune flags CO_PROC
525 base 8A
8afb5358 526 profile A
a92ffb3e 527 isa ARMv8_2a
250e088b 528 option simd add FP_ARMv8 NEON
bdb0828f 529 option fp16 add fp16 FP_ARMv8 NEON
06e95715 530 option fp16fml add fp16fml fp16 FP_ARMv8 NEON
e87afe54 531 option crypto add FP_ARMv8 CRYPTO
e87afe54 532 option nocrypto remove ALL_CRYPTO
357e1023 533 option nofp remove ALL_FP
ba09dd21 534 option dotprod add FP_ARMv8 DOTPROD
a92ffb3e
RE
535end arch armv8.2-a
536
1ad9b03f
TC
537begin arch armv8.3-a
538 tune for cortex-a53
539 tune flags CO_PROC
540 base 8A
541 profile A
542 isa ARMv8_3a
543 option simd add FP_ARMv8 NEON
544 option fp16 add fp16 FP_ARMv8 NEON
06e95715 545 option fp16fml add fp16fml fp16 FP_ARMv8 NEON
1ad9b03f
TC
546 option crypto add FP_ARMv8 CRYPTO
547 option nocrypto remove ALL_CRYPTO
548 option nofp remove ALL_FP
549 option dotprod add FP_ARMv8 DOTPROD
550end arch armv8.3-a
551
946c6c45
KT
552begin arch armv8.4-a
553 tune for cortex-a53
554 tune flags CO_PROC
555 base 8A
556 profile A
557 isa ARMv8_4a
558 option simd add FP_ARMv8 DOTPROD
06e95715 559 option fp16 add fp16 fp16fml FP_ARMv8 DOTPROD
946c6c45
KT
560 option crypto add FP_ARMv8 CRYPTO DOTPROD
561 option nocrypto remove ALL_CRYPTO
562 option nofp remove ALL_FP
563end arch armv8.4-a
564
a92ffb3e
RE
565begin arch armv8-m.base
566 tune for cortex-m23
567 base 8M_BASE
8afb5358 568 profile M
a92ffb3e
RE
569 isa ARMv8m_base
570end arch armv8-m.base
571
572begin arch armv8-m.main
573 tune for cortex-m7
574 tune flags CO_PROC
575 base 8M_MAIN
8afb5358 576 profile M
a92ffb3e 577 isa ARMv8m_main
bdb0828f 578 option dsp add armv7em
76d7d533
RE
579# fp => FPv5-sp-d16; fp.dp => FPv5-d16
580 option fp add FPv5
581 option fp.dp add FPv5 FP_DBL
e87afe54 582 option nofp remove ALL_FP
bdb0828f 583 option nodsp remove armv7em
a92ffb3e
RE
584end arch armv8-m.main
585
9296dd9b 586begin arch armv8-r
2376caf9 587 tune for cortex-r52
9296dd9b
TP
588 tune flags CO_PROC
589 base 8R
590 profile R
591 isa ARMv8r
bdb0828f 592 option crc add crc32
9296dd9b
TP
593# fp.sp => fp-armv8 (d16); simd => simd + fp-armv8 + d32 + double precision
594# note: no fp option for fp-armv8 (d16) + double precision at the moment
c8d61ab8 595 option fp.sp add FPv5
9296dd9b
TP
596 option simd add FP_ARMv8 NEON
597 option crypto add FP_ARMv8 CRYPTO
598 option nocrypto remove ALL_CRYPTO
599 option nofp remove ALL_FP
600end arch armv8-r
601
a92ffb3e
RE
602begin arch iwmmxt
603 tune for iwmmxt
604 tune flags LDSCHED STRONG XSCALE
605 base 5TE
bdb0828f 606 isa ARMv5te xscale iwmmxt
a92ffb3e
RE
607end arch iwmmxt
608
609begin arch iwmmxt2
610 tune for iwmmxt2
611 tune flags LDSCHED STRONG XSCALE
612 base 5TE
bdb0828f 613 isa ARMv5te xscale iwmmxt iwmmxt2
a92ffb3e
RE
614end arch iwmmxt2
615
616# CPU entries
617# format:
618# begin cpu <name>
619# [cname <c-compatible-name>]
d4f680c6 620# [alias <name>+]
a92ffb3e
RE
621# [tune for <cpu-name>]
622# [tune flags <list>]
623# architecture <name>
a92ffb3e 624# [isa <additional-isa-flags-list>]
250e088b 625# [option <name> add|remove <isa-list>]*
357e1023 626# [optalias <name> <optname>]*
a92ffb3e 627# [costs <name>]
b02160e5
RE
628# [vendor <vendor-id>
629# [part <part-id> [minrev [maxrev]]]
a92ffb3e
RE
630# end cpu <name>
631#
632# If omitted, cname is formed from transforming the cpuname to convert
633# non-valid punctuation characters to '_'.
d4f680c6
RE
634# Any number of alias names may be specified for a CPU. If the name starts
635# with a '!' then it will be recognized as a valid name, but will not
636# be printed in any help text listing permitted CPUs.
a92ffb3e
RE
637# If specified, tune for specifies a CPU target to use for tuning this core.
638# isa flags are appended to those defined by the architecture.
357e1023
RE
639# Each add option must have a distinct feature set and each remove
640# option must similarly have a distinct feature set. Option aliases can be
dff2abcb 641# added with the optalias statement.
b02160e5
RE
642# Vendor, part and revision information is used for native CPU and architecture
643# detection. All values must be in hex (lower case) with the leading '0x'
644# omitted. For example the cortex-a9 will have vendor 41 and part c09.
645# Revision information is used to match a subrange of part
646# revisions: minrev <= detected <= maxrev.
647# If a minrev or maxrev are omitted then minrev defaults to zero and maxrev
648# to infinity.
649# Revision information is not implemented yet; no part uses it.
a92ffb3e 650
a92ffb3e
RE
651# V4 Architecture Processors
652begin cpu arm8
653 tune flags LDSCHED
654 architecture armv4
655 costs fastmul
656end cpu arm8
657
658begin cpu arm810
659 tune flags LDSCHED
660 architecture armv4
661 costs fastmul
662end cpu arm810
663
664begin cpu strongarm
d4f680c6 665 alias strongarm110 !strongarm1100 !strongarm1110
a92ffb3e
RE
666 tune flags LDSCHED STRONG
667 architecture armv4
668 costs strongarm
669end cpu strongarm
670
a92ffb3e
RE
671begin cpu fa526
672 tune flags LDSCHED
673 architecture armv4
674 costs fastmul
675end cpu fa526
676
677begin cpu fa626
678 tune flags LDSCHED
679 architecture armv4
680 costs fastmul
681end cpu fa626
682
683
684# V4T Architecture Processors
685begin cpu arm7tdmi
686 tune flags CO_PROC
687 architecture armv4t
688 costs fastmul
689end cpu arm7tdmi
690
691begin cpu arm7tdmi-s
692 cname arm7tdmis
693 tune flags CO_PROC
694 architecture armv4t
695 costs fastmul
696end cpu arm7tdmi-s
697
698begin cpu arm710t
699 tune flags WBUF
700 architecture armv4t
701 costs fastmul
702end cpu arm710t
703
704begin cpu arm720t
705 tune flags WBUF
706 architecture armv4t
707 costs fastmul
708end cpu arm720t
709
710begin cpu arm740t
711 tune flags WBUF
712 architecture armv4t
713 costs fastmul
714end cpu arm740t
715
716begin cpu arm9
717 tune flags LDSCHED
718 architecture armv4t
719 costs fastmul
720end cpu arm9
721
722begin cpu arm9tdmi
723 tune flags LDSCHED
724 architecture armv4t
725 costs fastmul
726end cpu arm9tdmi
727
728begin cpu arm920
729 tune flags LDSCHED
730 architecture armv4t
731 costs fastmul
732end cpu arm920
733
734begin cpu arm920t
735 tune flags LDSCHED
736 architecture armv4t
737 costs fastmul
738end cpu arm920t
739
740begin cpu arm922t
741 tune flags LDSCHED
742 architecture armv4t
743 costs fastmul
744end cpu arm922t
745
746begin cpu arm940t
747 tune flags LDSCHED
748 architecture armv4t
749 costs fastmul
750end cpu arm940t
751
752begin cpu ep9312
753 tune flags LDSCHED
754 architecture armv4t
755 costs fastmul
756end cpu ep9312
757
758
759# V5T Architecture Processors
e87afe54 760# These used VFPv1 which isn't supported by GCC
a92ffb3e
RE
761begin cpu arm10tdmi
762 tune flags LDSCHED
763 architecture armv5t
764 costs fastmul
765end cpu arm10tdmi
766
767begin cpu arm1020t
768 tune flags LDSCHED
769 architecture armv5t
770 costs fastmul
771end cpu arm1020t
772
773
774# V5TE Architecture Processors
775begin cpu arm9e
776 tune flags LDSCHED
dff2abcb 777 architecture armv5te+fp
e87afe54 778 option nofp remove ALL_FP
a92ffb3e
RE
779 costs 9e
780end cpu arm9e
781
782begin cpu arm946e-s
783 cname arm946es
784 tune flags LDSCHED
dff2abcb 785 architecture armv5te+fp
e87afe54 786 option nofp remove ALL_FP
a92ffb3e
RE
787 costs 9e
788end cpu arm946e-s
789
790begin cpu arm966e-s
791 cname arm966es
792 tune flags LDSCHED
dff2abcb 793 architecture armv5te+fp
e87afe54 794 option nofp remove ALL_FP
a92ffb3e
RE
795 costs 9e
796end cpu arm966e-s
797
798begin cpu arm968e-s
799 cname arm968es
800 tune flags LDSCHED
dff2abcb 801 architecture armv5te+fp
e87afe54 802 option nofp remove ALL_FP
a92ffb3e
RE
803 costs 9e
804end cpu arm968e-s
805
806begin cpu arm10e
807 tune flags LDSCHED
dff2abcb 808 architecture armv5te+fp
e87afe54 809 option nofp remove ALL_FP
a92ffb3e
RE
810 costs fastmul
811end cpu arm10e
812
813begin cpu arm1020e
814 tune flags LDSCHED
dff2abcb 815 architecture armv5te+fp
e87afe54 816 option nofp remove ALL_FP
a92ffb3e
RE
817 costs fastmul
818end cpu arm1020e
819
820begin cpu arm1022e
821 tune flags LDSCHED
dff2abcb 822 architecture armv5te+fp
e87afe54 823 option nofp remove ALL_FP
a92ffb3e
RE
824 costs fastmul
825end cpu arm1022e
826
827begin cpu xscale
828 tune flags LDSCHED XSCALE
829 architecture armv5te
bdb0828f 830 isa xscale
a92ffb3e
RE
831 costs xscale
832end cpu xscale
833
834begin cpu iwmmxt
835 tune flags LDSCHED XSCALE
836 architecture iwmmxt
837 costs xscale
838end cpu iwmmxt
839
840begin cpu iwmmxt2
841 tune flags LDSCHED XSCALE
842 architecture iwmmxt2
843 costs xscale
844end cpu iwmmxt2
845
846begin cpu fa606te
847 tune flags LDSCHED
848 architecture armv5te
849 costs 9e
850end cpu fa606te
851
852begin cpu fa626te
853 tune flags LDSCHED
854 architecture armv5te
855 costs 9e
856end cpu fa626te
857
858begin cpu fmp626
859 tune flags LDSCHED
860 architecture armv5te
861 costs 9e
862end cpu fmp626
863
864begin cpu fa726te
865 tune flags LDSCHED
866 architecture armv5te
867 costs fa726te
868end cpu fa726te
869
870
871# V5TEJ Architecture Processors
872begin cpu arm926ej-s
873 cname arm926ejs
874 tune flags LDSCHED
dff2abcb 875 architecture armv5tej+fp
e87afe54 876 option nofp remove ALL_FP
a92ffb3e 877 costs 9e
b02160e5
RE
878 vendor 41
879 part 926
a92ffb3e
RE
880end cpu arm926ej-s
881
882begin cpu arm1026ej-s
883 cname arm1026ejs
884 tune flags LDSCHED
dff2abcb 885 architecture armv5tej+fp
e87afe54 886 option nofp remove ALL_FP
a92ffb3e 887 costs 9e
b02160e5
RE
888 vendor 41
889 part a26
a92ffb3e
RE
890end cpu arm1026ej-s
891
892
893# V6 Architecture Processors
894begin cpu arm1136j-s
895 cname arm1136js
896 tune flags LDSCHED
897 architecture armv6j
898 costs 9e
899end cpu arm1136j-s
900
901begin cpu arm1136jf-s
902 cname arm1136jfs
903 tune flags LDSCHED
dff2abcb 904 architecture armv6j+fp
a92ffb3e 905 costs 9e
b02160e5
RE
906 vendor 41
907 part b36
a92ffb3e
RE
908end cpu arm1136jf-s
909
910begin cpu arm1176jz-s
911 cname arm1176jzs
912 tune flags LDSCHED
913 architecture armv6kz
914 costs 9e
915end cpu arm1176jz-s
916
917begin cpu arm1176jzf-s
918 cname arm1176jzfs
919 tune flags LDSCHED
dff2abcb 920 architecture armv6kz+fp
a92ffb3e 921 costs 9e
b02160e5
RE
922 vendor 41
923 part b76
a92ffb3e
RE
924end cpu arm1176jzf-s
925
926begin cpu mpcorenovfp
927 tune flags LDSCHED
928 architecture armv6k
929 costs 9e
930end cpu mpcorenovfp
931
932begin cpu mpcore
933 tune flags LDSCHED
dff2abcb 934 architecture armv6k+fp
a92ffb3e 935 costs 9e
b02160e5
RE
936 vendor 41
937 part b02
a92ffb3e
RE
938end cpu mpcore
939
940begin cpu arm1156t2-s
941 cname arm1156t2s
942 tune flags LDSCHED
943 architecture armv6t2
944 costs v6t2
945end cpu arm1156t2-s
946
947begin cpu arm1156t2f-s
948 cname arm1156t2fs
949 tune flags LDSCHED
dff2abcb 950 architecture armv6t2+fp
a92ffb3e 951 costs v6t2
b02160e5
RE
952 vendor 41
953 part b56
a92ffb3e
RE
954end cpu arm1156t2f-s
955
956
957# V6M Architecture Processors
958begin cpu cortex-m1
959 cname cortexm1
960 tune flags LDSCHED
c40a8be8 961 architecture armv6s-m
a92ffb3e 962 costs v6m
b02160e5
RE
963 vendor 41
964 part c21
a92ffb3e
RE
965end cpu cortex-m1
966
967begin cpu cortex-m0
968 cname cortexm0
969 tune flags LDSCHED
c40a8be8 970 architecture armv6s-m
a92ffb3e 971 costs v6m
b02160e5
RE
972 vendor 41
973 part c20
a92ffb3e
RE
974end cpu cortex-m0
975
976begin cpu cortex-m0plus
977 cname cortexm0plus
978 tune flags LDSCHED
c40a8be8 979 architecture armv6s-m
a92ffb3e
RE
980 costs v6m
981end cpu cortex-m0plus
982
983
984# V6M Architecture Processors for small-multiply implementations.
985begin cpu cortex-m1.small-multiply
986 cname cortexm1smallmultiply
987 tune for cortex-m1
988 tune flags LDSCHED SMALLMUL
c40a8be8 989 architecture armv6s-m
a92ffb3e
RE
990 costs v6m
991end cpu cortex-m1.small-multiply
992
993begin cpu cortex-m0.small-multiply
994 cname cortexm0smallmultiply
995 tune for cortex-m0
996 tune flags LDSCHED SMALLMUL
c40a8be8 997 architecture armv6s-m
a92ffb3e
RE
998 costs v6m
999end cpu cortex-m0.small-multiply
1000
1001begin cpu cortex-m0plus.small-multiply
1002 cname cortexm0plussmallmultiply
48c0758a 1003 tune for cortex-m0plus
a92ffb3e 1004 tune flags LDSCHED SMALLMUL
c40a8be8 1005 architecture armv6s-m
a92ffb3e
RE
1006 costs v6m
1007end cpu cortex-m0plus.small-multiply
1008
1009
1010# V7 Architecture Processors
1011begin cpu generic-armv7-a
1012 cname genericv7a
1013 tune flags LDSCHED
dff2abcb 1014 architecture armv7-a+fp
e87afe54 1015 option vfpv3-d16 add VFPv3 FP_DBL
357e1023 1016 option vfpv3 add VFPv3 FP_D32
bdb0828f
RE
1017 option vfpv3-d16-fp16 add VFPv3 FP_DBL fp16conv
1018 option vfpv3-fp16 add VFPv3 FP_D32 fp16conv
e87afe54 1019 option vfpv4-d16 add VFPv4 FP_DBL
357e1023
RE
1020 option vfpv4 add VFPv4 FP_D32
1021 option simd add VFPv3 NEON
1022 optalias neon simd
1023 optalias neon-vfpv3 simd
bdb0828f 1024 option neon-fp16 add VFPv3 NEON fp16conv
e87afe54 1025 option neon-vfpv4 add VFPv4 NEON
e87afe54 1026 option nosimd remove ALL_SIMD
357e1023 1027 option nofp remove ALL_FP
a92ffb3e
RE
1028 costs cortex
1029end cpu generic-armv7-a
1030
1031begin cpu cortex-a5
1032 cname cortexa5
1033 tune flags LDSCHED
dff2abcb 1034 architecture armv7-a+neon-fp16
e87afe54
RE
1035 option nosimd remove ALL_SIMD
1036 option nofp remove ALL_FP
a92ffb3e 1037 costs cortex_a5
b02160e5
RE
1038 vendor 41
1039 part c05
a92ffb3e
RE
1040end cpu cortex-a5
1041
1042begin cpu cortex-a7
1043 cname cortexa7
1044 tune flags LDSCHED
dff2abcb 1045 architecture armv7ve+simd
e87afe54
RE
1046 option nosimd remove ALL_SIMD
1047 option nofp remove ALL_FP
a92ffb3e 1048 costs cortex_a7
b02160e5
RE
1049 vendor 41
1050 part c07
a92ffb3e
RE
1051end cpu cortex-a7
1052
1053begin cpu cortex-a8
1054 cname cortexa8
1055 tune flags LDSCHED
dff2abcb 1056 architecture armv7-a+simd
e87afe54 1057 option nofp remove ALL_FP
a92ffb3e 1058 costs cortex_a8
b02160e5
RE
1059 vendor 41
1060 part c08
a92ffb3e
RE
1061end cpu cortex-a8
1062
1063begin cpu cortex-a9
1064 cname cortexa9
1065 tune flags LDSCHED
dff2abcb 1066 architecture armv7-a+neon-fp16
e87afe54 1067 option nosimd remove ALL_SIMD
357e1023 1068 option nofp remove ALL_FP
a92ffb3e 1069 costs cortex_a9
b02160e5
RE
1070 vendor 41
1071 part c09
a92ffb3e
RE
1072end cpu cortex-a9
1073
1074begin cpu cortex-a12
1075 cname cortexa12
1076 tune for cortex-a17
1077 tune flags LDSCHED
dff2abcb 1078 architecture armv7ve+simd
e87afe54 1079 option nofp remove ALL_FP
a92ffb3e 1080 costs cortex_a12
b02160e5
RE
1081 vendor 41
1082 part c0d
a92ffb3e
RE
1083end cpu cortex-a12
1084
1085begin cpu cortex-a15
1086 cname cortexa15
1087 tune flags LDSCHED
dff2abcb 1088 architecture armv7ve+simd
e87afe54 1089 option nofp remove ALL_FP
a92ffb3e 1090 costs cortex_a15
b02160e5
RE
1091 vendor 41
1092 part c0f
a92ffb3e
RE
1093end cpu cortex-a15
1094
1095begin cpu cortex-a17
1096 cname cortexa17
1097 tune flags LDSCHED
dff2abcb 1098 architecture armv7ve+simd
e87afe54 1099 option nofp remove ALL_FP
a92ffb3e 1100 costs cortex_a12
b02160e5
RE
1101 vendor 41
1102 part c0e
a92ffb3e
RE
1103end cpu cortex-a17
1104
1105begin cpu cortex-r4
1106 cname cortexr4
1107 tune flags LDSCHED
1108 architecture armv7-r
1109 costs cortex
1110end cpu cortex-r4
1111
1112begin cpu cortex-r4f
1113 cname cortexr4f
1114 tune flags LDSCHED
dff2abcb 1115 architecture armv7-r+fp
a92ffb3e 1116 costs cortex
b02160e5
RE
1117 vendor 41
1118 part c14
a92ffb3e
RE
1119end cpu cortex-r4f
1120
1121begin cpu cortex-r5
1122 cname cortexr5
1123 tune flags LDSCHED
dff2abcb 1124 architecture armv7-r+idiv+fp
e87afe54
RE
1125 option nofp.dp remove FP_DBL
1126 option nofp remove ALL_FP
a92ffb3e 1127 costs cortex
b02160e5
RE
1128 vendor 41
1129 part c15
a92ffb3e
RE
1130end cpu cortex-r5
1131
1132begin cpu cortex-r7
1133 cname cortexr7
1134 tune flags LDSCHED
dff2abcb 1135 architecture armv7-r+idiv+fp
e87afe54 1136 option nofp remove ALL_FP
a92ffb3e 1137 costs cortex
b02160e5
RE
1138 vendor 41
1139 part c17
a92ffb3e
RE
1140end cpu cortex-r7
1141
1142begin cpu cortex-r8
1143 cname cortexr8
1144 tune for cortex-r7
1145 tune flags LDSCHED
dff2abcb 1146 architecture armv7-r+idiv+fp
e87afe54 1147 option nofp remove ALL_FP
a92ffb3e 1148 costs cortex
b02160e5
RE
1149 vendor 41
1150 part c18
a92ffb3e
RE
1151end cpu cortex-r8
1152
1153begin cpu cortex-m7
1154 cname cortexm7
1155 tune flags LDSCHED
dff2abcb 1156 architecture armv7e-m+fp.dp
a92ffb3e 1157 isa quirk_no_volatile_ce
e87afe54
RE
1158 option nofp.dp remove FP_DBL
1159 option nofp remove ALL_FP
a92ffb3e
RE
1160 costs cortex_m7
1161end cpu cortex-m7
1162
1163begin cpu cortex-m4
1164 cname cortexm4
1165 tune flags LDSCHED
dff2abcb 1166 architecture armv7e-m+fp
e87afe54 1167 option nofp remove ALL_FP
a92ffb3e 1168 costs v7m
b02160e5
RE
1169 vendor 41
1170 part c24
a92ffb3e
RE
1171end cpu cortex-m4
1172
1173begin cpu cortex-m3
1174 cname cortexm3
1175 tune flags LDSCHED
1176 architecture armv7-m
1177 isa quirk_cm3_ldrd
1178 costs v7m
b02160e5
RE
1179 vendor 41
1180 part c23
a92ffb3e
RE
1181end cpu cortex-m3
1182
1183begin cpu marvell-pj4
1184 tune flags LDSCHED
1185 architecture armv7-a
1186 costs marvell_pj4
1187end cpu marvell-pj4
1188
1189
1190# V7 big.LITTLE implementations
1191begin cpu cortex-a15.cortex-a7
1192 cname cortexa15cortexa7
1193 tune for cortex-a7
1194 tune flags LDSCHED
dff2abcb 1195 architecture armv7ve+simd
e87afe54 1196 option nofp remove ALL_FP
a92ffb3e
RE
1197 costs cortex_a15
1198end cpu cortex-a15.cortex-a7
1199
1200begin cpu cortex-a17.cortex-a7
1201 cname cortexa17cortexa7
1202 tune for cortex-a7
1203 tune flags LDSCHED
dff2abcb 1204 architecture armv7ve+simd
e87afe54 1205 option nofp remove ALL_FP
a92ffb3e
RE
1206 costs cortex_a12
1207end cpu cortex-a17.cortex-a7
1208
1209
1210# V8 A-profile Architecture Processors
1211begin cpu cortex-a32
1212 cname cortexa32
1213 tune for cortex-a53
1214 tune flags LDSCHED
dff2abcb 1215 architecture armv8-a+crc+simd
e87afe54
RE
1216 option crypto add FP_ARMv8 CRYPTO
1217 option nofp remove ALL_FP
a92ffb3e 1218 costs cortex_a35
b02160e5
RE
1219 vendor 41
1220 part d01
a92ffb3e
RE
1221end cpu cortex-a32
1222
1223begin cpu cortex-a35
1224 cname cortexa35
1225 tune for cortex-a53
1226 tune flags LDSCHED
dff2abcb 1227 architecture armv8-a+crc+simd
e87afe54
RE
1228 option crypto add FP_ARMv8 CRYPTO
1229 option nofp remove ALL_FP
a92ffb3e 1230 costs cortex_a35
b02160e5
RE
1231 vendor 41
1232 part d04
a92ffb3e
RE
1233end cpu cortex-a35
1234
1235begin cpu cortex-a53
1236 cname cortexa53
1237 tune flags LDSCHED
dff2abcb 1238 architecture armv8-a+crc+simd
e87afe54
RE
1239 option crypto add FP_ARMv8 CRYPTO
1240 option nofp remove ALL_FP
a92ffb3e 1241 costs cortex_a53
b02160e5
RE
1242 vendor 41
1243 part d03
a92ffb3e
RE
1244end cpu cortex-a53
1245
1246begin cpu cortex-a57
1247 cname cortexa57
1248 tune flags LDSCHED
dff2abcb 1249 architecture armv8-a+crc+simd
e87afe54 1250 option crypto add FP_ARMv8 CRYPTO
a92ffb3e 1251 costs cortex_a57
b02160e5
RE
1252 vendor 41
1253 part d07
a92ffb3e
RE
1254end cpu cortex-a57
1255
1256begin cpu cortex-a72
1257 cname cortexa72
1258 tune for cortex-a57
1259 tune flags LDSCHED
dff2abcb 1260 architecture armv8-a+crc+simd
e87afe54 1261 option crypto add FP_ARMv8 CRYPTO
a92ffb3e 1262 costs cortex_a57
b02160e5
RE
1263 vendor 41
1264 part d08
a92ffb3e
RE
1265end cpu cortex-a72
1266
1267begin cpu cortex-a73
1268 cname cortexa73
1269 tune for cortex-a57
1270 tune flags LDSCHED
dff2abcb 1271 architecture armv8-a+crc+simd
e87afe54 1272 option crypto add FP_ARMv8 CRYPTO
a92ffb3e 1273 costs cortex_a73
b02160e5
RE
1274 vendor 41
1275 part d09
a92ffb3e
RE
1276end cpu cortex-a73
1277
1278begin cpu exynos-m1
1279 cname exynosm1
1280 tune flags LDSCHED
dff2abcb 1281 architecture armv8-a+crc+simd
e87afe54 1282 option crypto add FP_ARMv8 CRYPTO
a92ffb3e
RE
1283 costs exynosm1
1284end cpu exynos-m1
1285
a92ffb3e
RE
1286begin cpu xgene1
1287 tune flags LDSCHED
dff2abcb 1288 architecture armv8-a+simd
e87afe54 1289 option crypto add FP_ARMv8 CRYPTO
a92ffb3e
RE
1290 costs xgene1
1291end cpu xgene1
1292
a92ffb3e
RE
1293# V8 A-profile big.LITTLE implementations
1294begin cpu cortex-a57.cortex-a53
1295 cname cortexa57cortexa53
1296 tune for cortex-a53
1297 tune flags LDSCHED
dff2abcb 1298 architecture armv8-a+crc+simd
e87afe54 1299 option crypto add FP_ARMv8 CRYPTO
a92ffb3e
RE
1300 costs cortex_a57
1301end cpu cortex-a57.cortex-a53
1302
1303begin cpu cortex-a72.cortex-a53
1304 cname cortexa72cortexa53
1305 tune for cortex-a53
1306 tune flags LDSCHED
dff2abcb 1307 architecture armv8-a+crc+simd
e87afe54 1308 option crypto add FP_ARMv8 CRYPTO
a92ffb3e
RE
1309 costs cortex_a57
1310end cpu cortex-a72.cortex-a53
1311
1312begin cpu cortex-a73.cortex-a35
1313 cname cortexa73cortexa35
1314 tune for cortex-a53
1315 tune flags LDSCHED
dff2abcb 1316 architecture armv8-a+crc+simd
e87afe54 1317 option crypto add FP_ARMv8 CRYPTO
a92ffb3e
RE
1318 costs cortex_a73
1319end cpu cortex-a73.cortex-a35
1320
1321begin cpu cortex-a73.cortex-a53
1322 cname cortexa73cortexa53
1323 tune for cortex-a53
1324 tune flags LDSCHED
dff2abcb 1325 architecture armv8-a+crc+simd
e87afe54 1326 option crypto add FP_ARMv8 CRYPTO
a92ffb3e
RE
1327 costs cortex_a73
1328end cpu cortex-a73.cortex-a53
1329
1330
1d79dcb8
JG
1331# ARMv8.2 A-profile Architecture Processors
1332begin cpu cortex-a55
1333 cname cortexa55
1334 tune for cortex-a53
1335 tune flags LDSCHED
dff2abcb 1336 architecture armv8.2-a+fp16+dotprod+simd
1d79dcb8
JG
1337 option crypto add FP_ARMv8 CRYPTO
1338 option nofp remove ALL_FP
1339 costs cortex_a53
b02160e5
RE
1340 vendor 41
1341 part d05
1d79dcb8
JG
1342end cpu cortex-a55
1343
1344begin cpu cortex-a75
1345 cname cortexa75
1346 tune for cortex-a57
1347 tune flags LDSCHED
dff2abcb 1348 architecture armv8.2-a+fp16+dotprod+simd
1d79dcb8
JG
1349 option crypto add FP_ARMv8 CRYPTO
1350 costs cortex_a73
b02160e5
RE
1351 vendor 41
1352 part d0a
1d79dcb8
JG
1353end cpu cortex-a75
1354
ed4e2a17
KT
1355begin cpu cortex-a76
1356 cname cortexa76
1357 tune for cortex-a57
1358 tune flags LDSCHED
dff2abcb 1359 architecture armv8.2-a+fp16+dotprod+simd
ed4e2a17
KT
1360 option crypto add FP_ARMv8 CRYPTO
1361 costs cortex_a57
b02160e5
RE
1362 vendor 41
1363 part d0b
ed4e2a17 1364end cpu cortex-a76
1d79dcb8 1365
6279fcd6
KT
1366begin cpu ares
1367 cname ares
1368 tune for cortex-a57
1369 tune flags LDSCHED
1370 architecture armv8.2-a+fp16+dotprod+simd
1371 option crypto add FP_ARMv8 CRYPTO
1372 costs cortex_a57
1373 vendor 41
1374 part d0c
1375end cpu ares
1376
1d79dcb8
JG
1377# ARMv8.2 A-profile ARM DynamIQ big.LITTLE implementations
1378begin cpu cortex-a75.cortex-a55
1379 cname cortexa75cortexa55
1380 tune for cortex-a53
1381 tune flags LDSCHED
dff2abcb 1382 architecture armv8.2-a+fp16+dotprod+simd
1d79dcb8
JG
1383 option crypto add FP_ARMv8 CRYPTO
1384 costs cortex_a73
1385end cpu cortex-a75.cortex-a55
1386
ed4e2a17
KT
1387begin cpu cortex-a76.cortex-a55
1388 cname cortexa76cortexa55
1389 tune for cortex-a53
1390 tune flags LDSCHED
dff2abcb 1391 architecture armv8.2-a+fp16+dotprod+simd
ed4e2a17
KT
1392 option crypto add FP_ARMv8 CRYPTO
1393 costs cortex_a57
1394end cpu cortex-a76.cortex-a55
1395
a92ffb3e
RE
1396# V8 M-profile implementations.
1397begin cpu cortex-m23
1398 cname cortexm23
1399 tune flags LDSCHED
1400 architecture armv8-m.base
1401 costs v6m
1402end cpu cortex-m23
1403
1404begin cpu cortex-m33
1405 cname cortexm33
1406 tune flags LDSCHED
dff2abcb 1407 architecture armv8-m.main+dsp+fp
e87afe54 1408 option nofp remove ALL_FP
525f700d 1409 option nodsp remove armv7em
a92ffb3e
RE
1410 costs v7m
1411end cpu cortex-m33
1412
2376caf9
TP
1413# V8 R-profile implementations.
1414begin cpu cortex-r52
1415 cname cortexr52
1416 tune flags LDSCHED
1417 architecture armv8-r+crc+simd
2376caf9
TP
1418 option nofp.dp remove FP_DBL ALL_SIMD
1419 costs cortex
b02160e5
RE
1420 vendor 41
1421 part d13
2376caf9
TP
1422end cpu cortex-r52
1423
a92ffb3e
RE
1424# FPU entries
1425# format:
1426# begin fpu <name>
1427# isa <isa-flags-list>
1428# end fpu <name>
1429
1430begin fpu vfp
1431 isa VFPv2 FP_DBL
1432end fpu vfp
1433
1434begin fpu vfpv2
1435 isa VFPv2 FP_DBL
1436end fpu vfpv2
1437
1438begin fpu vfpv3
1439 isa VFPv3 FP_D32
1440end fpu vfpv3
1441
1442begin fpu vfpv3-fp16
bdb0828f 1443 isa VFPv3 FP_D32 fp16conv
a92ffb3e
RE
1444end fpu vfpv3-fp16
1445
1446begin fpu vfpv3-d16
1447 isa VFPv3 FP_DBL
1448end fpu vfpv3-d16
1449
1450begin fpu vfpv3-d16-fp16
bdb0828f 1451 isa VFPv3 FP_DBL fp16conv
a92ffb3e
RE
1452end fpu vfpv3-d16-fp16
1453
1454begin fpu vfpv3xd
1455 isa VFPv3
1456end fpu vfpv3xd
1457
1458begin fpu vfpv3xd-fp16
bdb0828f 1459 isa VFPv3 fp16conv
a92ffb3e
RE
1460end fpu vfpv3xd-fp16
1461
1462begin fpu neon
1463 isa VFPv3 NEON
1464end fpu neon
1465
1466begin fpu neon-vfpv3
1467 isa VFPv3 NEON
1468end fpu neon-vfpv3
1469
1470begin fpu neon-fp16
bdb0828f 1471 isa VFPv3 NEON fp16conv
a92ffb3e
RE
1472end fpu neon-fp16
1473
1474begin fpu vfpv4
1475 isa VFPv4 FP_D32
1476end fpu vfpv4
1477
1478begin fpu neon-vfpv4
1479 isa VFPv4 NEON
1480end fpu neon-vfpv4
1481
1482begin fpu vfpv4-d16
1483 isa VFPv4 FP_DBL
1484end fpu vfpv4-d16
1485
1486begin fpu fpv4-sp-d16
1487 isa VFPv4
1488end fpu fpv4-sp-d16
1489
1490begin fpu fpv5-sp-d16
1491 isa FPv5
1492end fpu fpv5-sp-d16
1493
1494begin fpu fpv5-d16
1495 isa FPv5 FP_DBL
1496end fpu fpv5-d16
1497
1498begin fpu fp-armv8
c8d61ab8 1499 isa FP_ARMv8
a92ffb3e
RE
1500end fpu fp-armv8
1501
1502begin fpu neon-fp-armv8
1503 isa FP_ARMv8 NEON
1504end fpu neon-fp-armv8
1505
1506begin fpu crypto-neon-fp-armv8
1507 isa FP_ARMv8 CRYPTO
1508end fpu crypto-neon-fp-armv8
1509
1510# Compatibility aliases.
1511begin fpu vfp3
1512 isa VFPv3 FP_D32
1513end fpu vfp3