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