1 # CPU, FPU and architecture specifications for ARM.
3 # Copyright (C) 2011-2025 Free Software Foundation, Inc.
5 # This file is part of GCC.
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
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
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/>.
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
25 # The general form is a sequence of begin..end blocks with the following
27 # begin <object-type> <name>
28 # attribute-statement*
29 # end <object-type> <name>
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.
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.
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.
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
49 # Features - general convention: all lower case.
57 # Architecture rel 5t.
60 # Architecture rel 5te.
61 define feature armv5te
69 # Architecture rel 6k.
75 # Instructions not present in 'M' profile.
78 # Architecture uses be8 mode in big-endian.
81 # Thumb division instructions.
84 # Architecture rel 7e-m.
85 define feature armv7em
90 # MP extension to ArmV7-A
93 # SEC extension to ArmV7-A
96 # ARM division instructions.
102 # ARMv8 CRC32 instructions.
105 # XScale v2 (Wireless MMX).
106 define feature iwmmxt
108 # XScale Wireless MMX2.
109 define feature iwmmxt2
111 # Architecture rel 8.1.
112 define feature armv8_1
114 # Architecture rel 8.2.
115 define feature armv8_2
117 # Architecture rel 8.3.
118 define feature armv8_3
120 # Architecture rel 8.4.
121 define feature armv8_4
123 # Architecture rel 8.5.
124 define feature armv8_5
126 # Architecture rel 8.6.
127 define feature armv8_6
129 # M-Profile security extensions.
132 # Architecture rel 8.1-M.
133 define feature armv8_1m_main
135 # Architecture rel 9.0.
138 # Floating point and Neon extensions.
139 # VFPv1 is not supported in GCC.
141 # Vector floating point v2.
144 # Vector floating point v3.
147 # Vector floating point v4.
156 # Advanced SIMD instructions.
159 # Conversions to/from fp16 (VFPv3 extension).
160 define feature fp16conv
162 # Double precision operations supported.
163 define feature fp_dbl
165 # 32 Double precision registers.
166 define feature fp_d32
168 # Crypto extension to ARMv8.
169 define feature crypto
171 # FP16 data processing (half-precision float).
174 # Dot Product instructions extension to ARMv8.2-a.
175 define feature dotprod
177 # Half-precision floating-point instructions in ARMv8.4-A.
178 define feature fp16fml
180 # ISA Quirks (errata?). Don't forget to add this to the fgroup
183 # No volatile memory in IT blocks.
184 define feature quirk_no_volatile_ce
186 # Previously mis-identified by GCC.
187 define feature quirk_armv6kz
189 # Cortex-M3 LDRD quirk.
190 define feature quirk_cm3_ldrd
192 # v8-m/v8.1-m VLLDM errata.
193 define feature quirk_vlldm
195 # AES errata on some Cortex-A parts
196 define feature quirk_aes_1742098
198 # Don't use .cpu assembly directive
199 define feature quirk_no_asmcpu
201 # (Very) slow multiply operations. Should probably be a tuning bit.
202 define feature smallmul
204 # Speculation Barrier Instruction for v8-A architectures, added by
208 # Execution and Data Prediction Restriction Instruction for
209 # v8-A architectures, added by default from v8.5-A
210 define feature predres
212 # M-profile Vector Extension feature bits
214 define feature mve_float
216 # 8-bit Integer Matrix Multiply extension. Optional from v8.2-A.
219 # Brain half-precision floating-point extension. Optional from v8.2-A.
222 # Arm Custom Datapath Extension (CDE).
223 define feature cdecp0
224 define feature cdecp1
225 define feature cdecp2
226 define feature cdecp3
227 define feature cdecp4
228 define feature cdecp5
229 define feature cdecp6
230 define feature cdecp7
232 # M-profile control flow integrity extensions (PAC/AUT/BTI).
233 # Optional from Armv8.1-M Mainline.
234 define feature pacbti
236 # Feature groups. Conventionally all (or mostly) upper case.
237 # ALL_FPU lists all the feature bits associated with the floating-point
238 # unit; these will all be removed if the floating-point unit is disabled
239 # (eg -mfloat-abi=soft). ALL_FPU_INTERNAL must ONLY contain features that
240 # form part of a named -mfpu option; it is used to map the capabilities
241 # back to a named FPU for the benefit of the assembler.
243 # ALL_SIMD_INTERNAL and ALL_SIMD are similarly defined to help with the
244 # construction of ALL_FPU and ALL_FPU_INTERNAL; they describe the SIMD
245 # extensions that are either part of a named FPU or optional extensions
249 # List of all cryptographic extensions to stripout if crypto is
250 # disabled. Currently, that's trivial, but we define it anyway for
251 # consistency with the SIMD and FP disable lists.
252 define fgroup ALL_CRYPTO crypto
254 # List of all SIMD bits to strip out if SIMD is disabled. This does
255 # strip off 32 D-registers, but does not remove support for
256 # double-precision FP.
257 define fgroup ALL_SIMD_INTERNAL fp_d32 neon ALL_CRYPTO
258 define fgroup ALL_SIMD_EXTERNAL dotprod fp16fml i8mm
259 define fgroup ALL_SIMD ALL_SIMD_INTERNAL ALL_SIMD_EXTERNAL
261 # List of all FPU bits to strip out if -mfpu is used to override the
262 # default. fp16 is deliberately missing from this list.
263 define fgroup ALL_FPU_INTERNAL vfpv2 vfpv3 vfpv4 fpv5 fp16conv fp_dbl ALL_SIMD_INTERNAL
264 # Similarly, but including fp16 and other extensions that aren't part of
266 define fgroup ALL_FPU_EXTERNAL fp16 bf16
268 # Everything related to the FPU extensions (FP or SIMD).
269 define fgroup ALL_FP ALL_FPU_EXTERNAL ALL_FPU_INTERNAL ALL_SIMD
271 define fgroup ARMv4 armv4 notm
272 define fgroup ARMv4t ARMv4 thumb
273 define fgroup ARMv5t ARMv4t armv5t
274 define fgroup ARMv5te ARMv5t armv5te
275 define fgroup ARMv5tej ARMv5te
276 define fgroup ARMv6 ARMv5te armv6 be8
277 define fgroup ARMv6j ARMv6
278 define fgroup ARMv6k ARMv6 armv6k
279 define fgroup ARMv6z ARMv6
280 define fgroup ARMv6kz ARMv6k quirk_armv6kz
281 define fgroup ARMv6zk ARMv6k
282 define fgroup ARMv6t2 ARMv6 thumb2
283 # This is suspect. ARMv6-m doesn't really pull in any useful features
284 # from ARMv5* or ARMv6.
285 define fgroup ARMv6m armv4 thumb armv5t armv5te armv6 be8
286 # This is suspect, the 'common' ARMv7 subset excludes the thumb2 'DSP' and
287 # integer SIMD instructions that are in ARMv6T2. */
288 define fgroup ARMv7 ARMv6m thumb2 armv7
290 define fgroup ARMv7a ARMv7 notm armv6k
291 define fgroup ARMv7ve ARMv7a adiv tdiv lpae mp sec
292 define fgroup ARMv7r ARMv7a tdiv
293 define fgroup ARMv7m ARMv7 tdiv
294 define fgroup ARMv7em ARMv7m armv7em
295 define fgroup ARMv8a ARMv7ve armv8
296 define fgroup ARMv8_1a ARMv8a crc32 armv8_1
297 define fgroup ARMv8_2a ARMv8_1a armv8_2
298 define fgroup ARMv8_3a ARMv8_2a armv8_3
299 define fgroup ARMv8_4a ARMv8_3a armv8_4
300 define fgroup ARMv8_5a ARMv8_4a armv8_5 sb predres
301 define fgroup ARMv8_6a ARMv8_5a armv8_6
302 define fgroup ARMv8m_base ARMv6m armv8 cmse tdiv
303 define fgroup ARMv8m_main ARMv7m armv8 cmse
304 define fgroup ARMv8r ARMv8a
305 define fgroup ARMv8_1m_main ARMv8m_main armv8_1m_main
306 define fgroup ARMv9a ARMv8_5a armv9
308 # Useful combinations.
309 define fgroup VFPv2 vfpv2
310 define fgroup VFPv3 VFPv2 vfpv3
311 define fgroup VFPv4 VFPv3 vfpv4 fp16conv
312 define fgroup FPv5 VFPv4 fpv5
313 define fgroup MVE mve armv7em
314 define fgroup MVE_FP MVE FPv5 fp16 mve_float
316 define fgroup FP_DBL fp_dbl
317 define fgroup FP_D32 FP_DBL fp_d32
318 define fgroup FP_ARMv8 FPv5 FP_D32
319 define fgroup NEON FP_D32 neon
320 define fgroup CRYPTO NEON crypto
321 define fgroup DOTPROD NEON dotprod
323 # Implied feature bits. These are for non-named features shared between fgroups.
324 # Shared feature f belonging to fgroups A and B will be erroneously removed if:
325 # A and B are enabled by default AND A is disabled by a removal flag.
326 # To ensure that f is retained, we must add such bits to the ISA after
327 # processing the removal flags. This is implemented by 'implied bits':
328 # define implied <name> [<feature-or-fgroup>]+
329 # This indicates that, if any of the listed features are enabled, or if any
330 # member of a listed fgroup is enabled, then <name> will be implicitly enabled.
332 # Enabled for all VFP, MVE and MVE with floating point extensions.
333 define implied vfp_base MVE MVE_FP ALL_FP
335 # List of all quirk bits to strip out when comparing CPU features with
337 # xscale isn't really a 'quirk', but it isn't an architecture either and we
338 # need to ignore it for matching purposes.
339 define fgroup ALL_QUIRKS quirk_no_volatile_ce quirk_armv6kz quirk_cm3_ldrd quirk_vlldm xscale quirk_no_asmcpu quirk_aes_1742098
341 define fgroup IGNORE_FOR_MULTILIB cdecp0 cdecp1 cdecp2 cdecp3 cdecp4 cdecp5 cdecp6 cdecp7
343 # Architecture entries
347 # [tune flags <list>]
350 # isa <isa-flags-list>
380 option fp add VFPv2 FP_DBL
382 option nofp remove ALL_FP
390 option fp add VFPv2 FP_DBL
392 option nofp remove ALL_FP
400 option fp add VFPv2 FP_DBL
402 option nofp remove ALL_FP
410 option fp add VFPv2 FP_DBL
412 option nofp remove ALL_FP
420 option fp add VFPv2 FP_DBL
422 option nofp remove ALL_FP
430 option fp add VFPv2 FP_DBL
432 option nofp remove ALL_FP
440 option fp add VFPv2 FP_DBL
442 option nofp remove ALL_FP
450 option fp add VFPv2 FP_DBL
452 option nofp remove ALL_FP
460 option fp add VFPv2 FP_DBL
462 option nofp remove ALL_FP
472 # This is now equivalent to armv6-m, but we keep it because some
473 # versions of GAS still distinguish between the two.
486 # fp => VFPv3-d16 (only useful for the A+R profile subset).
487 option fp add VFPv3 FP_DBL
488 optalias vfpv3-d16 fp
489 option nofp remove ALL_FP
500 # fp => VFPv3-d16, simd => neon-vfpv3
501 option fp add VFPv3 FP_DBL
502 optalias vfpv3-d16 fp
503 option vfpv3 add VFPv3 FP_D32
504 option vfpv3-d16-fp16 add VFPv3 FP_DBL fp16conv
505 option vfpv3-fp16 add VFPv3 FP_DBL FP_D32 fp16conv
506 option vfpv4-d16 add VFPv4 FP_DBL
507 option vfpv4 add VFPv4 FP_D32
508 option simd add VFPv3 NEON
510 optalias neon-vfpv3 simd
511 option neon-fp16 add VFPv3 NEON fp16conv
512 option neon-vfpv4 add VFPv4 NEON
513 option nosimd remove ALL_SIMD
514 option nofp remove ALL_FP
523 # fp => VFPv4-d16, simd => neon-vfpv4
524 option vfpv3-d16 add VFPv3 FP_DBL
525 option vfpv3 add VFPv3 FP_D32
526 option vfpv3-d16-fp16 add VFPv3 FP_DBL fp16conv
527 option vfpv3-fp16 add VFPv3 FP_DBL FP_D32 fp16conv
528 option fp add VFPv4 FP_DBL
529 optalias vfpv4-d16 fp
530 option vfpv4 add VFPv4 FP_D32
531 option neon add VFPv3 NEON
532 optalias neon-vfpv3 neon
533 option neon-fp16 add VFPv3 NEON fp16conv
534 option simd add VFPv4 NEON
535 optalias neon-vfpv4 simd
536 option nosimd remove ALL_SIMD
537 option nofp remove ALL_FP
546 # ARMv7-r uses VFPv3-d16
547 option fp.sp add VFPv3
548 optalias vfpv3xd fp.sp
549 option fp add VFPv3 FP_DBL
550 optalias vfpv3-d16 fp
551 option vfpv3xd-fp16 add VFPv3 fp16conv
552 option vfpv3-d16-fp16 add VFPv3 FP_DBL fp16conv
554 option nofp remove ALL_FP
555 option noidiv remove adiv
564 # In theory FP is permitted in v7-m, but in practice no implementations exist.
565 # leave it out for now.
574 # fp => VFPv4-sp-d16; fpv5 => FPv5-sp-d16; fp.dp => FPv5-d16
576 optalias vfpv4-sp-d16 fp
578 option fp.dp add FPv5 FP_DBL
579 optalias fpv5-d16 fp.dp
580 option nofp remove ALL_FP
590 option simd add FP_ARMv8 NEON
591 option crypto add FP_ARMv8 CRYPTO
592 option nocrypto remove ALL_CRYPTO
593 option nofp remove ALL_FP
595 option predres add predres
604 option simd add FP_ARMv8 NEON
605 option crypto add FP_ARMv8 CRYPTO
606 option nocrypto remove ALL_CRYPTO
607 option nofp remove ALL_FP
609 option predres add predres
618 option simd add FP_ARMv8 NEON
619 option fp16 add fp16 FP_ARMv8 NEON
620 option fp16fml add fp16fml fp16 FP_ARMv8 NEON
621 option crypto add FP_ARMv8 CRYPTO
622 option nocrypto remove ALL_CRYPTO
623 option nofp remove ALL_FP
624 option dotprod add FP_ARMv8 DOTPROD
626 option predres add predres
627 option i8mm add i8mm FP_ARMv8 NEON
628 option bf16 add bf16 FP_ARMv8 NEON
637 option simd add FP_ARMv8 NEON
638 option fp16 add fp16 FP_ARMv8 NEON
639 option fp16fml add fp16fml fp16 FP_ARMv8 NEON
640 option crypto add FP_ARMv8 CRYPTO
641 option nocrypto remove ALL_CRYPTO
642 option nofp remove ALL_FP
643 option dotprod add FP_ARMv8 DOTPROD
645 option predres add predres
646 option i8mm add i8mm FP_ARMv8 NEON
647 option bf16 add bf16 FP_ARMv8 NEON
656 option simd add FP_ARMv8 DOTPROD
657 option fp16 add fp16 fp16fml FP_ARMv8 DOTPROD
658 option crypto add FP_ARMv8 CRYPTO DOTPROD
659 option nocrypto remove ALL_CRYPTO
660 option nofp remove ALL_FP
662 option predres add predres
663 option i8mm add i8mm FP_ARMv8 DOTPROD
664 option bf16 add bf16 FP_ARMv8 DOTPROD
673 option simd add FP_ARMv8 DOTPROD
674 option fp16 add fp16 fp16fml FP_ARMv8 DOTPROD
675 option crypto add FP_ARMv8 CRYPTO DOTPROD
676 option nocrypto remove ALL_CRYPTO
677 option nofp remove ALL_FP
678 option i8mm add i8mm FP_ARMv8 DOTPROD
679 option bf16 add bf16 FP_ARMv8 DOTPROD
688 option simd add FP_ARMv8 DOTPROD
689 option fp16 add fp16 fp16fml FP_ARMv8 DOTPROD
690 option crypto add FP_ARMv8 CRYPTO DOTPROD
691 option nocrypto remove ALL_CRYPTO
692 option nofp remove ALL_FP
693 option i8mm add i8mm FP_ARMv8 DOTPROD
694 option bf16 add bf16 FP_ARMv8 DOTPROD
697 begin arch armv8-m.base
702 end arch armv8-m.base
704 begin arch armv8-m.main
710 option dsp add armv7em
711 # fp => FPv5-sp-d16; fp.dp => FPv5-d16
713 option fp.dp add FPv5 FP_DBL
714 option nofp remove ALL_FP
715 option nodsp remove armv7em
716 option cdecp0 add cdecp0
717 option cdecp1 add cdecp1
718 option cdecp2 add cdecp2
719 option cdecp3 add cdecp3
720 option cdecp4 add cdecp4
721 option cdecp5 add cdecp5
722 option cdecp6 add cdecp6
723 option cdecp7 add cdecp7
724 end arch armv8-m.main
733 # fp.sp => fp-armv8 (d16); simd => simd + fp-armv8 + d32 + double precision
734 # note: no fp option for fp-armv8 (d16) + double precision at the moment
735 option fp.sp add FPv5
736 option simd add FP_ARMv8 NEON
737 option crypto add FP_ARMv8 CRYPTO
738 option nocrypto remove ALL_CRYPTO
739 option nofp remove ALL_FP
742 begin arch armv8.1-m.main
748 # fp => FPv5-sp-d16; fp.dp => FPv5-d16
749 option dsp add armv7em
750 option pacbti add pacbti
751 option fp add FPv5 fp16
752 option fp.dp add FPv5 FP_DBL fp16
753 option nofp remove ALL_FP
755 option mve.fp add MVE_FP
756 option cdecp0 add cdecp0
757 option cdecp1 add cdecp1
758 option cdecp2 add cdecp2
759 option cdecp3 add cdecp3
760 option cdecp4 add cdecp4
761 option cdecp5 add cdecp5
762 option cdecp6 add cdecp6
763 option cdecp7 add cdecp7
764 end arch armv8.1-m.main
772 option simd add FP_ARMv8 DOTPROD
773 option fp16 add fp16 fp16fml FP_ARMv8 DOTPROD
774 option crypto add FP_ARMv8 CRYPTO DOTPROD
775 option nocrypto remove ALL_CRYPTO
776 option nofp remove ALL_FP
777 option i8mm add i8mm FP_ARMv8 DOTPROD
778 option bf16 add bf16 FP_ARMv8 DOTPROD
783 tune flags LDSCHED STRONG XSCALE
785 isa ARMv5te xscale iwmmxt
790 tune flags LDSCHED STRONG XSCALE
792 isa ARMv5te xscale iwmmxt iwmmxt2
798 # [cname <c-compatible-name>]
800 # [tune for <cpu-name>]
801 # [tune flags <list>]
802 # architecture <name>
803 # [isa <additional-isa-flags-list>]
804 # [option <name> add|remove <isa-list>]*
805 # [optalias <name> <optname>]*
807 # [vendor <vendor-id>
808 # [part <part-id> [minrev [maxrev]]]
811 # If omitted, cname is formed from transforming the cpuname to convert
812 # non-valid punctuation characters to '_'.
813 # Any number of alias names may be specified for a CPU. If the name starts
814 # with a '!' then it will be recognized as a valid name, but will not
815 # be printed in any help text listing permitted CPUs.
816 # If specified, tune for specifies a CPU target to use for tuning this core.
817 # isa flags are appended to those defined by the architecture.
818 # Each add option must have a distinct feature set and each remove
819 # option must similarly have a distinct feature set. Option aliases can be
820 # added with the optalias statement.
821 # Vendor, part and revision information is used for native CPU and architecture
822 # detection. All values must be in hex (lower case) with the leading '0x'
823 # omitted. For example the cortex-a9 will have vendor 41 and part c09.
824 # Revision information is used to match a subrange of part
825 # revisions: minrev <= detected <= maxrev.
826 # If a minrev or maxrev are omitted then minrev defaults to zero and maxrev
828 # Revision information is not implemented yet; no part uses it.
830 # V4 Architecture Processors
844 alias strongarm110 !strongarm1100 !strongarm1110
845 tune flags LDSCHED STRONG
863 # V4T Architecture Processors
872 alias arm720t arm740t
891 alias arm920 arm922t arm940t ep9312
898 # V5T Architecture Processors
899 # These used VFPv1 which isn't supported by GCC
908 # V5TE Architecture Processors
910 alias arm946e-s arm966e-s arm968e-s
912 architecture armv5te+fp
913 option nofp remove ALL_FP
918 alias arm1020e arm1022e
920 architecture armv5te+fp
921 option nofp remove ALL_FP
926 tune flags LDSCHED XSCALE
933 tune flags LDSCHED XSCALE
939 tune flags LDSCHED XSCALE
969 # V5TEJ Architecture Processors
973 architecture armv5tej+fp
974 option nofp remove ALL_FP
980 begin cpu arm1026ej-s
983 architecture armv5tej+fp
984 option nofp remove ALL_FP
991 # V6 Architecture Processors
999 begin cpu arm1136jf-s
1002 architecture armv6j+fp
1008 begin cpu arm1176jz-s
1011 architecture armv6kz
1015 begin cpu arm1176jzf-s
1018 architecture armv6kz+fp
1022 end cpu arm1176jzf-s
1024 begin cpu mpcorenovfp
1032 architecture armv6k+fp
1038 begin cpu arm1156t2-s
1041 architecture armv6t2
1045 begin cpu arm1156t2f-s
1048 architecture armv6t2+fp
1052 end cpu arm1156t2f-s
1055 # V6M Architecture Processors
1059 architecture armv6s-m
1068 architecture armv6s-m
1074 begin cpu cortex-m0plus
1077 architecture armv6s-m
1079 end cpu cortex-m0plus
1082 # V6M Architecture Processors for small-multiply implementations.
1083 begin cpu cortex-m1.small-multiply
1084 cname cortexm1smallmultiply
1086 tune flags LDSCHED SMALLMUL
1087 architecture armv6s-m
1089 end cpu cortex-m1.small-multiply
1091 begin cpu cortex-m0.small-multiply
1092 cname cortexm0smallmultiply
1094 tune flags LDSCHED SMALLMUL
1095 architecture armv6s-m
1097 end cpu cortex-m0.small-multiply
1099 begin cpu cortex-m0plus.small-multiply
1100 cname cortexm0plussmallmultiply
1101 tune for cortex-m0plus
1102 tune flags LDSCHED SMALLMUL
1103 architecture armv6s-m
1105 end cpu cortex-m0plus.small-multiply
1108 # V7 Architecture Processors
1109 begin cpu generic-armv7-a
1112 architecture armv7-a+fp
1116 option vfpv3-d16 add VFPv3 FP_DBL
1117 option vfpv3 add VFPv3 FP_D32
1118 option vfpv3-d16-fp16 add VFPv3 FP_DBL fp16conv
1119 option vfpv3-fp16 add VFPv3 FP_D32 fp16conv
1120 option vfpv4-d16 add VFPv4 FP_DBL
1121 option vfpv4 add VFPv4 FP_D32
1122 option simd add VFPv3 NEON
1124 optalias neon-vfpv3 simd
1125 option neon-fp16 add VFPv3 NEON fp16conv
1126 option neon-vfpv4 add VFPv4 NEON
1127 option nosimd remove ALL_SIMD
1128 option nofp remove ALL_FP
1130 end cpu generic-armv7-a
1135 architecture armv7-a+mp+sec+neon-fp16
1136 option nosimd remove ALL_SIMD
1137 option nofp remove ALL_FP
1146 architecture armv7ve+simd
1147 option nosimd remove ALL_SIMD
1148 option nofp remove ALL_FP
1157 architecture armv7-a+sec+simd
1158 option nofp remove ALL_FP
1167 architecture armv7-a+mp+sec+neon-fp16
1168 option nosimd remove ALL_SIMD
1169 option nofp remove ALL_FP
1175 begin cpu cortex-a12
1179 architecture armv7ve+simd
1180 option nofp remove ALL_FP
1186 begin cpu cortex-a15
1189 architecture armv7ve+simd
1190 option nofp remove ALL_FP
1196 begin cpu cortex-a17
1199 architecture armv7ve+simd
1200 option nofp remove ALL_FP
1209 architecture armv7-r
1213 begin cpu cortex-r4f
1216 architecture armv7-r+fp
1225 architecture armv7-r+idiv+fp
1226 option nofp.dp remove FP_DBL
1227 option nofp remove ALL_FP
1236 architecture armv7-r+idiv+vfpv3-d16-fp16
1237 option nofp.dp remove FP_DBL
1238 option nofp remove ALL_FP
1248 architecture armv7-r+idiv+vfpv3-d16-fp16
1249 option nofp.dp remove FP_DBL
1250 option nofp remove ALL_FP
1259 architecture armv7e-m+fp.dp
1260 isa quirk_no_volatile_ce
1261 option nofp.dp remove FP_DBL
1262 option nofp remove ALL_FP
1269 architecture armv7e-m+fp
1270 option nofp remove ALL_FP
1279 architecture armv7-m
1286 begin cpu marvell-pj4
1288 architecture armv7-a+mp+sec+fp
1293 # V7 big.LITTLE implementations
1294 begin cpu cortex-a15.cortex-a7
1295 cname cortexa15cortexa7
1298 architecture armv7ve+simd
1299 option nofp remove ALL_FP
1301 end cpu cortex-a15.cortex-a7
1303 begin cpu cortex-a17.cortex-a7
1304 cname cortexa17cortexa7
1307 architecture armv7ve+simd
1308 option nofp remove ALL_FP
1310 end cpu cortex-a17.cortex-a7
1313 # V8 A-profile Architecture Processors
1314 begin cpu cortex-a32
1318 architecture armv8-a+crc+simd
1319 option crypto add FP_ARMv8 CRYPTO
1320 option nofp remove ALL_FP
1326 begin cpu cortex-a35
1330 architecture armv8-a+crc+simd
1331 option crypto add FP_ARMv8 CRYPTO
1332 option nofp remove ALL_FP
1338 begin cpu cortex-a53
1341 architecture armv8-a+crc+simd
1342 option crypto add FP_ARMv8 CRYPTO
1343 option nofp remove ALL_FP
1349 begin cpu cortex-a57
1352 architecture armv8-a+crc+simd
1353 isa quirk_aes_1742098
1354 option crypto add FP_ARMv8 CRYPTO
1360 begin cpu cortex-a72
1364 architecture armv8-a+crc+simd
1365 isa quirk_aes_1742098
1366 option crypto add FP_ARMv8 CRYPTO
1372 begin cpu cortex-a73
1376 architecture armv8-a+crc+simd
1377 option crypto add FP_ARMv8 CRYPTO
1386 architecture armv8-a+crc+simd
1387 option crypto add FP_ARMv8 CRYPTO
1393 architecture armv8-a+simd
1394 option crypto add FP_ARMv8 CRYPTO
1398 # V8 A-profile big.LITTLE implementations
1399 begin cpu cortex-a57.cortex-a53
1400 cname cortexa57cortexa53
1403 architecture armv8-a+crc+simd
1404 isa quirk_aes_1742098
1405 option crypto add FP_ARMv8 CRYPTO
1407 end cpu cortex-a57.cortex-a53
1409 begin cpu cortex-a72.cortex-a53
1410 cname cortexa72cortexa53
1413 architecture armv8-a+crc+simd
1414 isa quirk_aes_1742098
1415 option crypto add FP_ARMv8 CRYPTO
1417 end cpu cortex-a72.cortex-a53
1419 begin cpu cortex-a73.cortex-a35
1420 cname cortexa73cortexa35
1423 architecture armv8-a+crc+simd
1424 option crypto add FP_ARMv8 CRYPTO
1426 end cpu cortex-a73.cortex-a35
1428 begin cpu cortex-a73.cortex-a53
1429 cname cortexa73cortexa53
1432 architecture armv8-a+crc+simd
1433 option crypto add FP_ARMv8 CRYPTO
1435 end cpu cortex-a73.cortex-a53
1438 # ARMv8.2 A-profile Architecture Processors
1439 begin cpu cortex-a55
1443 architecture armv8.2-a+fp16+dotprod
1444 option crypto add FP_ARMv8 CRYPTO
1445 option nofp remove ALL_FP
1451 begin cpu cortex-a75
1455 architecture armv8.2-a+fp16+dotprod
1456 option crypto add FP_ARMv8 CRYPTO
1462 begin cpu cortex-a76
1466 architecture armv8.2-a+fp16+dotprod
1467 option crypto add FP_ARMv8 CRYPTO
1473 begin cpu cortex-a76ae
1477 architecture armv8.2-a+fp16+dotprod
1478 option crypto add FP_ARMv8 CRYPTO
1482 end cpu cortex-a76ae
1484 begin cpu cortex-a77
1488 architecture armv8.2-a+fp16+dotprod
1489 option crypto add FP_ARMv8 CRYPTO
1495 begin cpu cortex-a78
1499 architecture armv8.2-a+fp16+dotprod
1500 option crypto add FP_ARMv8 CRYPTO
1506 begin cpu cortex-a78ae
1510 architecture armv8.2-a+fp16+dotprod
1511 option crypto add FP_ARMv8 CRYPTO
1515 end cpu cortex-a78ae
1517 begin cpu cortex-a78c
1521 architecture armv8.2-a+fp16+dotprod
1522 option crypto add FP_ARMv8 CRYPTO
1528 begin cpu cortex-a710
1532 architecture armv9-a+fp16+bf16+i8mm
1533 option crypto add FP_ARMv8 CRYPTO
1543 architecture armv8.2-a+fp16+dotprod
1544 option crypto add FP_ARMv8 CRYPTO
1550 begin cpu cortex-x1c
1554 architecture armv8.2-a+fp16+dotprod
1555 option crypto add FP_ARMv8 CRYPTO
1561 begin cpu neoverse-n1
1566 architecture armv8.2-a+fp16+dotprod
1567 option crypto add FP_ARMv8 CRYPTO
1573 # ARMv8.2 A-profile ARM DynamIQ big.LITTLE implementations
1574 begin cpu cortex-a75.cortex-a55
1575 cname cortexa75cortexa55
1578 architecture armv8.2-a+fp16+dotprod
1579 option crypto add FP_ARMv8 CRYPTO
1581 end cpu cortex-a75.cortex-a55
1583 begin cpu cortex-a76.cortex-a55
1584 cname cortexa76cortexa55
1587 architecture armv8.2-a+fp16+dotprod
1588 option crypto add FP_ARMv8 CRYPTO
1590 end cpu cortex-a76.cortex-a55
1592 # Armv8.4 A-profile Architecture Processors
1593 begin cpu neoverse-v1
1597 architecture armv8.4-a+fp16+bf16+i8mm
1598 option crypto add FP_ARMv8 CRYPTO
1604 # Armv8.5 A-profile Architecture Processors
1605 begin cpu neoverse-n2
1609 architecture armv8.5-a+fp16+bf16+i8mm
1610 option crypto add FP_ARMv8 CRYPTO
1616 # V8 M-profile implementations.
1617 begin cpu cortex-m23
1620 architecture armv8-m.base
1624 begin cpu cortex-m33
1627 architecture armv8-m.main+dsp+fp
1628 option nofp remove ALL_FP
1629 option nodsp remove armv7em
1634 begin cpu cortex-m35p
1637 architecture armv8-m.main+dsp+fp
1638 option nofp remove ALL_FP
1639 option nodsp remove armv7em
1644 begin cpu cortex-m52
1647 architecture armv8.1-m.main+pacbti+mve.fp+fp.dp
1648 option nopacbti remove pacbti
1649 option nomve.fp remove mve_float
1650 option nomve remove mve mve_float
1651 option nofp remove ALL_FP mve_float
1652 option nodsp remove MVE mve_float
1653 option cdecp0 add cdecp0
1654 option cdecp1 add cdecp1
1655 option cdecp2 add cdecp2
1656 option cdecp3 add cdecp3
1657 option cdecp4 add cdecp4
1658 option cdecp5 add cdecp5
1659 option cdecp6 add cdecp6
1660 option cdecp7 add cdecp7
1661 isa quirk_no_asmcpu quirk_vlldm
1665 begin cpu cortex-m55
1668 architecture armv8.1-m.main+mve.fp+fp.dp
1669 option nomve.fp remove mve_float
1670 option nomve remove mve mve_float
1671 option nofp remove ALL_FP mve_float
1672 option nodsp remove MVE mve_float
1673 option cdecp0 add cdecp0
1674 option cdecp1 add cdecp1
1675 option cdecp2 add cdecp2
1676 option cdecp3 add cdecp3
1677 option cdecp4 add cdecp4
1678 option cdecp5 add cdecp5
1679 option cdecp6 add cdecp6
1680 option cdecp7 add cdecp7
1681 isa quirk_no_asmcpu quirk_vlldm
1689 architecture armv8-m.main+dsp+fp
1690 option nofp remove ALL_FP
1691 option nodsp remove armv7em
1692 option cdecp0 add cdecp0
1693 option cdecp1 add cdecp1
1694 option cdecp2 add cdecp2
1695 option cdecp3 add cdecp3
1696 option cdecp4 add cdecp4
1697 option cdecp5 add cdecp5
1698 option cdecp6 add cdecp6
1699 option cdecp7 add cdecp7
1700 isa quirk_no_asmcpu quirk_vlldm
1704 begin cpu cortex-m85
1707 architecture armv8.1-m.main+pacbti+mve.fp+fp.dp
1708 option nopacbti remove pacbti
1709 option nomve.fp remove mve_float
1710 option nomve remove mve mve_float
1711 option nofp remove ALL_FP mve_float
1712 option nodsp remove MVE mve_float
1713 isa quirk_no_asmcpu quirk_vlldm
1719 # V8 R-profile implementations.
1720 begin cpu cortex-r52
1723 architecture armv8-r+crc+simd
1724 option nofp.dp remove FP_DBL ALL_SIMD
1730 begin cpu cortex-r52plus
1733 architecture armv8-r+crc+simd
1734 option nofp.dp remove FP_DBL ALL_SIMD
1738 end cpu cortex-r52plus
1743 # isa <isa-flags-list>
1758 begin fpu vfpv3-fp16
1759 isa VFPv3 FP_D32 fp16conv
1766 begin fpu vfpv3-d16-fp16
1767 isa VFPv3 FP_DBL fp16conv
1768 end fpu vfpv3-d16-fp16
1774 begin fpu vfpv3xd-fp16
1776 end fpu vfpv3xd-fp16
1782 begin fpu neon-vfpv3
1787 isa VFPv3 NEON fp16conv
1794 begin fpu neon-vfpv4
1802 begin fpu fpv4-sp-d16
1806 begin fpu fpv5-sp-d16
1818 begin fpu neon-fp-armv8
1820 end fpu neon-fp-armv8
1822 begin fpu crypto-neon-fp-armv8
1824 end fpu crypto-neon-fp-armv8
1826 # Compatibility aliases.