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