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