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