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