1 # CPU, FPU and architecture specifications for ARM.
3 # Copyright (C) 2011-2020 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 # Floating point and Neon extensions.
133 # VFPv1 is not supported in GCC.
135 # Vector floating point v2.
138 # Vector floating point v3.
141 # Vector floating point v4.
150 # Advanced SIMD instructions.
153 # Conversions to/from fp16 (VFPv3 extension).
154 define feature fp16conv
156 # Double precision operations supported.
157 define feature fp_dbl
159 # 32 Double precision registers.
160 define feature fp_d32
162 # Crypto extension to ARMv8.
163 define feature crypto
165 # FP16 data processing (half-precision float).
168 # Dot Product instructions extension to ARMv8.2-a.
169 define feature dotprod
171 # Half-precision floating-point instructions in ARMv8.4-A.
172 define feature fp16fml
174 # ISA Quirks (errata?). Don't forget to add this to the fgroup
177 # No volatile memory in IT blocks.
178 define feature quirk_no_volatile_ce
180 # Previously mis-identified by GCC.
181 define feature quirk_armv6kz
183 # Cortex-M3 LDRD quirk.
184 define feature quirk_cm3_ldrd
186 # (Very) slow multiply operations. Should probably be a tuning bit.
187 define feature smallmul
189 # Speculation Barrier Instruction for v8-A architectures, added by
193 # Execution and Data Prediction Restriction Instruction for
194 # v8-A architectures, added by default from v8.5-A
195 define feature predres
197 # 8-bit Integer Matrix Multiply extension. Optional from v8.2-A.
200 # Brain half-precision floating-point extension. Optional from v8.2-A.
203 # Feature groups. Conventionally all (or mostly) upper case.
204 # ALL_FPU lists all the feature bits associated with the floating-point
205 # unit; these will all be removed if the floating-point unit is disabled
206 # (eg -mfloat-abi=soft). ALL_FPU_INTERNAL must ONLY contain features that
207 # form part of a named -mfpu option; it is used to map the capabilities
208 # back to a named FPU for the benefit of the assembler.
210 # ALL_SIMD_INTERNAL and ALL_SIMD are similarly defined to help with the
211 # construction of ALL_FPU and ALL_FPU_INTERNAL; they describe the SIMD
212 # extensions that are either part of a named FPU or optional extensions
216 # List of all cryptographic extensions to stripout if crypto is
217 # disabled. Currently, that's trivial, but we define it anyway for
218 # consistency with the SIMD and FP disable lists.
219 define fgroup ALL_CRYPTO crypto
221 # List of all SIMD bits to strip out if SIMD is disabled. This does
222 # strip off 32 D-registers, but does not remove support for
223 # double-precision FP.
224 define fgroup ALL_SIMD_INTERNAL fp_d32 neon ALL_CRYPTO
225 define fgroup ALL_SIMD_EXTERNAL dotprod fp16fml i8mm
226 define fgroup ALL_SIMD ALL_SIMD_INTERNAL ALL_SIMD_EXTERNAL
228 # List of all FPU bits to strip out if -mfpu is used to override the
229 # default. fp16 is deliberately missing from this list.
230 define fgroup ALL_FPU_INTERNAL vfpv2 vfpv3 vfpv4 fpv5 fp16conv fp_dbl ALL_SIMD_INTERNAL
231 # Similarly, but including fp16 and other extensions that aren't part of
233 define fgroup ALL_FPU_EXTERNAL fp16 bf16
235 # Everything related to the FPU extensions (FP or SIMD).
236 define fgroup ALL_FP ALL_FPU_EXTERNAL ALL_FPU_INTERNAL ALL_SIMD
238 define fgroup ARMv4 armv4 notm
239 define fgroup ARMv4t ARMv4 thumb
240 define fgroup ARMv5t ARMv4t armv5t
241 define fgroup ARMv5te ARMv5t armv5te
242 define fgroup ARMv5tej ARMv5te
243 define fgroup ARMv6 ARMv5te armv6 be8
244 define fgroup ARMv6j ARMv6
245 define fgroup ARMv6k ARMv6 armv6k
246 define fgroup ARMv6z ARMv6
247 define fgroup ARMv6kz ARMv6k quirk_armv6kz
248 define fgroup ARMv6zk ARMv6k
249 define fgroup ARMv6t2 ARMv6 thumb2
250 # This is suspect. ARMv6-m doesn't really pull in any useful features
251 # from ARMv5* or ARMv6.
252 define fgroup ARMv6m armv4 thumb armv5t armv5te armv6 be8
253 # This is suspect, the 'common' ARMv7 subset excludes the thumb2 'DSP' and
254 # integer SIMD instructions that are in ARMv6T2. */
255 define fgroup ARMv7 ARMv6m thumb2 armv7
257 define fgroup ARMv7a ARMv7 notm armv6k
258 define fgroup ARMv7ve ARMv7a adiv tdiv lpae mp sec
259 define fgroup ARMv7r ARMv7a tdiv
260 define fgroup ARMv7m ARMv7 tdiv
261 define fgroup ARMv7em ARMv7m armv7em
262 define fgroup ARMv8a ARMv7ve armv8
263 define fgroup ARMv8_1a ARMv8a crc32 armv8_1
264 define fgroup ARMv8_2a ARMv8_1a armv8_2
265 define fgroup ARMv8_3a ARMv8_2a armv8_3
266 define fgroup ARMv8_4a ARMv8_3a armv8_4
267 define fgroup ARMv8_5a ARMv8_4a armv8_5 sb predres
268 define fgroup ARMv8_6a ARMv8_5a armv8_6
269 define fgroup ARMv8m_base ARMv6m armv8 cmse tdiv
270 define fgroup ARMv8m_main ARMv7m armv8 cmse
271 define fgroup ARMv8r ARMv8a
273 # Useful combinations.
274 define fgroup VFPv2 vfpv2
275 define fgroup VFPv3 VFPv2 vfpv3
276 define fgroup VFPv4 VFPv3 vfpv4 fp16conv
277 define fgroup FPv5 VFPv4 fpv5
279 define fgroup FP_DBL fp_dbl
280 define fgroup FP_D32 FP_DBL fp_d32
281 define fgroup FP_ARMv8 FPv5 FP_D32
282 define fgroup NEON FP_D32 neon
283 define fgroup CRYPTO NEON crypto
284 define fgroup DOTPROD NEON dotprod
286 # List of all quirk bits to strip out when comparing CPU features with
288 # xscale isn't really a 'quirk', but it isn't an architecture either and we
289 # need to ignore it for matching purposes.
290 define fgroup ALL_QUIRKS quirk_no_volatile_ce quirk_armv6kz quirk_cm3_ldrd xscale
292 # Architecture entries
296 # [tune flags <list>]
299 # isa <isa-flags-list>
329 option fp add VFPv2 FP_DBL
331 option nofp remove ALL_FP
339 option fp add VFPv2 FP_DBL
341 option nofp remove ALL_FP
349 option fp add VFPv2 FP_DBL
351 option nofp remove ALL_FP
359 option fp add VFPv2 FP_DBL
361 option nofp remove ALL_FP
369 option fp add VFPv2 FP_DBL
371 option nofp remove ALL_FP
379 option fp add VFPv2 FP_DBL
381 option nofp remove ALL_FP
389 option fp add VFPv2 FP_DBL
391 option nofp remove ALL_FP
399 option fp add VFPv2 FP_DBL
401 option nofp remove ALL_FP
409 option fp add VFPv2 FP_DBL
411 option nofp remove ALL_FP
421 # This is now equivalent to armv6-m, but we keep it because some
422 # versions of GAS still distinguish between the two.
435 # fp => VFPv3-d16 (only useful for the A+R profile subset).
436 option fp add VFPv3 FP_DBL
437 optalias vfpv3-d16 fp
438 option nofp remove ALL_FP
449 # fp => VFPv3-d16, simd => neon-vfpv3
450 option fp add VFPv3 FP_DBL
451 optalias vfpv3-d16 fp
452 option vfpv3 add VFPv3 FP_D32
453 option vfpv3-d16-fp16 add VFPv3 FP_DBL fp16conv
454 option vfpv3-fp16 add VFPv3 FP_DBL FP_D32 fp16conv
455 option vfpv4-d16 add VFPv4 FP_DBL
456 option vfpv4 add VFPv4 FP_D32
457 option simd add VFPv3 NEON
459 optalias neon-vfpv3 simd
460 option neon-fp16 add VFPv3 NEON fp16conv
461 option neon-vfpv4 add VFPv4 NEON
462 option nosimd remove ALL_SIMD
463 option nofp remove ALL_FP
472 # fp => VFPv4-d16, simd => neon-vfpv4
473 option vfpv3-d16 add VFPv3 FP_DBL
474 option vfpv3 add VFPv3 FP_D32
475 option vfpv3-d16-fp16 add VFPv3 FP_DBL fp16conv
476 option vfpv3-fp16 add VFPv3 FP_DBL FP_D32 fp16conv
477 option fp add VFPv4 FP_DBL
478 optalias vfpv4-d16 fp
479 option vfpv4 add VFPv4 FP_D32
480 option neon add VFPv3 NEON
481 optalias neon-vfpv3 neon
482 option neon-fp16 add VFPv3 NEON fp16conv
483 option simd add VFPv4 NEON
484 optalias neon-vfpv4 simd
485 option nosimd remove ALL_SIMD
486 option nofp remove ALL_FP
495 # ARMv7-r uses VFPv3-d16
496 option fp.sp add VFPv3
497 optalias vfpv3xd fp.sp
498 option fp add VFPv3 FP_DBL
499 optalias vfpv3-d16 fp
500 option vfpv3xd-fp16 add VFPv3 fp16conv
501 option vfpv3-d16-fp16 add VFPv3 FP_DBL fp16conv
503 option nofp remove ALL_FP
504 option noidiv remove adiv
513 # In theory FP is permitted in v7-m, but in practice no implementations exist.
514 # leave it out for now.
523 # fp => VFPv4-sp-d16; fpv5 => FPv5-sp-d16; fp.dp => FPv5-d16
525 optalias vfpv4-sp-d16 fp
527 option fp.dp add FPv5 FP_DBL
528 optalias fpv5-d16 fp.dp
529 option nofp remove ALL_FP
539 option simd add FP_ARMv8 NEON
540 option crypto add FP_ARMv8 CRYPTO
541 option nocrypto remove ALL_CRYPTO
542 option nofp remove ALL_FP
544 option predres add predres
553 option simd add FP_ARMv8 NEON
554 option crypto add FP_ARMv8 CRYPTO
555 option nocrypto remove ALL_CRYPTO
556 option nofp remove ALL_FP
558 option predres add predres
567 option simd add FP_ARMv8 NEON
568 option fp16 add fp16 FP_ARMv8 NEON
569 option fp16fml add fp16fml fp16 FP_ARMv8 NEON
570 option crypto add FP_ARMv8 CRYPTO
571 option nocrypto remove ALL_CRYPTO
572 option nofp remove ALL_FP
573 option dotprod add FP_ARMv8 DOTPROD
575 option predres add predres
576 option i8mm add i8mm FP_ARMv8 NEON
577 option bf16 add bf16 FP_ARMv8 NEON
586 option simd add FP_ARMv8 NEON
587 option fp16 add fp16 FP_ARMv8 NEON
588 option fp16fml add fp16fml fp16 FP_ARMv8 NEON
589 option crypto add FP_ARMv8 CRYPTO
590 option nocrypto remove ALL_CRYPTO
591 option nofp remove ALL_FP
592 option dotprod add FP_ARMv8 DOTPROD
594 option predres add predres
595 option i8mm add i8mm FP_ARMv8 NEON
596 option bf16 add bf16 FP_ARMv8 NEON
605 option simd add FP_ARMv8 DOTPROD
606 option fp16 add fp16 fp16fml FP_ARMv8 DOTPROD
607 option crypto add FP_ARMv8 CRYPTO DOTPROD
608 option nocrypto remove ALL_CRYPTO
609 option nofp remove ALL_FP
611 option predres add predres
612 option i8mm add i8mm FP_ARMv8 DOTPROD
613 option bf16 add bf16 FP_ARMv8 DOTPROD
622 option simd add FP_ARMv8 DOTPROD
623 option fp16 add fp16 fp16fml FP_ARMv8 DOTPROD
624 option crypto add FP_ARMv8 CRYPTO DOTPROD
625 option nocrypto remove ALL_CRYPTO
626 option nofp remove ALL_FP
627 option i8mm add i8mm FP_ARMv8 DOTPROD
628 option bf16 add bf16 FP_ARMv8 DOTPROD
637 option simd add FP_ARMv8 DOTPROD
638 option fp16 add fp16 fp16fml FP_ARMv8 DOTPROD
639 option crypto add FP_ARMv8 CRYPTO DOTPROD
640 option nocrypto remove ALL_CRYPTO
641 option nofp remove ALL_FP
642 option i8mm add i8mm FP_ARMv8 DOTPROD
643 option bf16 add bf16 FP_ARMv8 DOTPROD
646 begin arch armv8-m.base
651 end arch armv8-m.base
653 begin arch armv8-m.main
659 option dsp add armv7em
660 # fp => FPv5-sp-d16; fp.dp => FPv5-d16
662 option fp.dp add FPv5 FP_DBL
663 option nofp remove ALL_FP
664 option nodsp remove armv7em
665 end arch armv8-m.main
674 # fp.sp => fp-armv8 (d16); simd => simd + fp-armv8 + d32 + double precision
675 # note: no fp option for fp-armv8 (d16) + double precision at the moment
676 option fp.sp add FPv5
677 option simd add FP_ARMv8 NEON
678 option crypto add FP_ARMv8 CRYPTO
679 option nocrypto remove ALL_CRYPTO
680 option nofp remove ALL_FP
685 tune flags LDSCHED STRONG XSCALE
687 isa ARMv5te xscale iwmmxt
692 tune flags LDSCHED STRONG XSCALE
694 isa ARMv5te xscale iwmmxt iwmmxt2
700 # [cname <c-compatible-name>]
702 # [tune for <cpu-name>]
703 # [tune flags <list>]
704 # architecture <name>
705 # [isa <additional-isa-flags-list>]
706 # [option <name> add|remove <isa-list>]*
707 # [optalias <name> <optname>]*
709 # [vendor <vendor-id>
710 # [part <part-id> [minrev [maxrev]]]
713 # If omitted, cname is formed from transforming the cpuname to convert
714 # non-valid punctuation characters to '_'.
715 # Any number of alias names may be specified for a CPU. If the name starts
716 # with a '!' then it will be recognized as a valid name, but will not
717 # be printed in any help text listing permitted CPUs.
718 # If specified, tune for specifies a CPU target to use for tuning this core.
719 # isa flags are appended to those defined by the architecture.
720 # Each add option must have a distinct feature set and each remove
721 # option must similarly have a distinct feature set. Option aliases can be
722 # added with the optalias statement.
723 # Vendor, part and revision information is used for native CPU and architecture
724 # detection. All values must be in hex (lower case) with the leading '0x'
725 # omitted. For example the cortex-a9 will have vendor 41 and part c09.
726 # Revision information is used to match a subrange of part
727 # revisions: minrev <= detected <= maxrev.
728 # If a minrev or maxrev are omitted then minrev defaults to zero and maxrev
730 # Revision information is not implemented yet; no part uses it.
732 # V4 Architecture Processors
746 alias strongarm110 !strongarm1100 !strongarm1110
747 tune flags LDSCHED STRONG
765 # V4T Architecture Processors
774 alias arm720t arm740t
793 alias arm920 arm922t arm940t ep9312
800 # V5T Architecture Processors
801 # These used VFPv1 which isn't supported by GCC
810 # V5TE Architecture Processors
812 alias arm946e-s arm966e-s arm968e-s
814 architecture armv5te+fp
815 option nofp remove ALL_FP
820 alias arm1020e arm1022e
822 architecture armv5te+fp
823 option nofp remove ALL_FP
828 tune flags LDSCHED XSCALE
835 tune flags LDSCHED XSCALE
841 tune flags LDSCHED XSCALE
871 # V5TEJ Architecture Processors
875 architecture armv5tej+fp
876 option nofp remove ALL_FP
882 begin cpu arm1026ej-s
885 architecture armv5tej+fp
886 option nofp remove ALL_FP
893 # V6 Architecture Processors
901 begin cpu arm1136jf-s
904 architecture armv6j+fp
910 begin cpu arm1176jz-s
917 begin cpu arm1176jzf-s
920 architecture armv6kz+fp
926 begin cpu mpcorenovfp
934 architecture armv6k+fp
940 begin cpu arm1156t2-s
947 begin cpu arm1156t2f-s
950 architecture armv6t2+fp
957 # V6M Architecture Processors
961 architecture armv6s-m
970 architecture armv6s-m
976 begin cpu cortex-m0plus
979 architecture armv6s-m
981 end cpu cortex-m0plus
984 # V6M Architecture Processors for small-multiply implementations.
985 begin cpu cortex-m1.small-multiply
986 cname cortexm1smallmultiply
988 tune flags LDSCHED SMALLMUL
989 architecture armv6s-m
991 end cpu cortex-m1.small-multiply
993 begin cpu cortex-m0.small-multiply
994 cname cortexm0smallmultiply
996 tune flags LDSCHED SMALLMUL
997 architecture armv6s-m
999 end cpu cortex-m0.small-multiply
1001 begin cpu cortex-m0plus.small-multiply
1002 cname cortexm0plussmallmultiply
1003 tune for cortex-m0plus
1004 tune flags LDSCHED SMALLMUL
1005 architecture armv6s-m
1007 end cpu cortex-m0plus.small-multiply
1010 # V7 Architecture Processors
1011 begin cpu generic-armv7-a
1014 architecture armv7-a+fp
1017 option vfpv3-d16 add VFPv3 FP_DBL
1018 option vfpv3 add VFPv3 FP_D32
1019 option vfpv3-d16-fp16 add VFPv3 FP_DBL fp16conv
1020 option vfpv3-fp16 add VFPv3 FP_D32 fp16conv
1021 option vfpv4-d16 add VFPv4 FP_DBL
1022 option vfpv4 add VFPv4 FP_D32
1023 option simd add VFPv3 NEON
1025 optalias neon-vfpv3 simd
1026 option neon-fp16 add VFPv3 NEON fp16conv
1027 option neon-vfpv4 add VFPv4 NEON
1028 option nosimd remove ALL_SIMD
1029 option nofp remove ALL_FP
1031 end cpu generic-armv7-a
1036 architecture armv7-a+mp+sec+neon-fp16
1037 option nosimd remove ALL_SIMD
1038 option nofp remove ALL_FP
1047 architecture armv7ve+simd
1048 option nosimd remove ALL_SIMD
1049 option nofp remove ALL_FP
1058 architecture armv7-a+sec+simd
1059 option nofp remove ALL_FP
1068 architecture armv7-a+mp+sec+neon-fp16
1069 option nosimd remove ALL_SIMD
1070 option nofp remove ALL_FP
1076 begin cpu cortex-a12
1080 architecture armv7ve+simd
1081 option nofp remove ALL_FP
1087 begin cpu cortex-a15
1090 architecture armv7ve+simd
1091 option nofp remove ALL_FP
1097 begin cpu cortex-a17
1100 architecture armv7ve+simd
1101 option nofp remove ALL_FP
1110 architecture armv7-r
1114 begin cpu cortex-r4f
1117 architecture armv7-r+fp
1126 architecture armv7-r+idiv+fp
1127 option nofp.dp remove FP_DBL
1128 option nofp remove ALL_FP
1137 architecture armv7-r+idiv+vfpv3-d16-fp16
1138 option nofp.dp remove FP_DBL
1139 option nofp remove ALL_FP
1149 architecture armv7-r+idiv+vfpv3-d16-fp16
1150 option nofp.dp remove FP_DBL
1151 option nofp remove ALL_FP
1160 architecture armv7e-m+fp.dp
1161 isa quirk_no_volatile_ce
1162 option nofp.dp remove FP_DBL
1163 option nofp remove ALL_FP
1170 architecture armv7e-m+fp
1171 option nofp remove ALL_FP
1180 architecture armv7-m
1187 begin cpu marvell-pj4
1189 architecture armv7-a+mp+sec+fp
1194 # V7 big.LITTLE implementations
1195 begin cpu cortex-a15.cortex-a7
1196 cname cortexa15cortexa7
1199 architecture armv7ve+simd
1200 option nofp remove ALL_FP
1202 end cpu cortex-a15.cortex-a7
1204 begin cpu cortex-a17.cortex-a7
1205 cname cortexa17cortexa7
1208 architecture armv7ve+simd
1209 option nofp remove ALL_FP
1211 end cpu cortex-a17.cortex-a7
1214 # V8 A-profile Architecture Processors
1215 begin cpu cortex-a32
1219 architecture armv8-a+crc+simd
1220 option crypto add FP_ARMv8 CRYPTO
1221 option nofp remove ALL_FP
1227 begin cpu cortex-a35
1231 architecture armv8-a+crc+simd
1232 option crypto add FP_ARMv8 CRYPTO
1233 option nofp remove ALL_FP
1239 begin cpu cortex-a53
1242 architecture armv8-a+crc+simd
1243 option crypto add FP_ARMv8 CRYPTO
1244 option nofp remove ALL_FP
1250 begin cpu cortex-a57
1253 architecture armv8-a+crc+simd
1254 option crypto add FP_ARMv8 CRYPTO
1260 begin cpu cortex-a72
1264 architecture armv8-a+crc+simd
1265 option crypto add FP_ARMv8 CRYPTO
1271 begin cpu cortex-a73
1275 architecture armv8-a+crc+simd
1276 option crypto add FP_ARMv8 CRYPTO
1285 architecture armv8-a+crc+simd
1286 option crypto add FP_ARMv8 CRYPTO
1292 architecture armv8-a+simd
1293 option crypto add FP_ARMv8 CRYPTO
1297 # V8 A-profile big.LITTLE implementations
1298 begin cpu cortex-a57.cortex-a53
1299 cname cortexa57cortexa53
1302 architecture armv8-a+crc+simd
1303 option crypto add FP_ARMv8 CRYPTO
1305 end cpu cortex-a57.cortex-a53
1307 begin cpu cortex-a72.cortex-a53
1308 cname cortexa72cortexa53
1311 architecture armv8-a+crc+simd
1312 option crypto add FP_ARMv8 CRYPTO
1314 end cpu cortex-a72.cortex-a53
1316 begin cpu cortex-a73.cortex-a35
1317 cname cortexa73cortexa35
1320 architecture armv8-a+crc+simd
1321 option crypto add FP_ARMv8 CRYPTO
1323 end cpu cortex-a73.cortex-a35
1325 begin cpu cortex-a73.cortex-a53
1326 cname cortexa73cortexa53
1329 architecture armv8-a+crc+simd
1330 option crypto add FP_ARMv8 CRYPTO
1332 end cpu cortex-a73.cortex-a53
1335 # ARMv8.2 A-profile Architecture Processors
1336 begin cpu cortex-a55
1340 architecture armv8.2-a+fp16+dotprod
1341 option crypto add FP_ARMv8 CRYPTO
1342 option nofp remove ALL_FP
1348 begin cpu cortex-a75
1352 architecture armv8.2-a+fp16+dotprod
1353 option crypto add FP_ARMv8 CRYPTO
1359 begin cpu cortex-a76
1363 architecture armv8.2-a+fp16+dotprod
1364 option crypto add FP_ARMv8 CRYPTO
1370 begin cpu cortex-a76ae
1374 architecture armv8.2-a+fp16+dotprod
1375 option crypto add FP_ARMv8 CRYPTO
1379 end cpu cortex-a76ae
1381 begin cpu cortex-a77
1385 architecture armv8.2-a+fp16+dotprod
1386 option crypto add FP_ARMv8 CRYPTO
1392 begin cpu neoverse-n1
1397 architecture armv8.2-a+fp16+dotprod
1398 option crypto add FP_ARMv8 CRYPTO
1404 # ARMv8.2 A-profile ARM DynamIQ big.LITTLE implementations
1405 begin cpu cortex-a75.cortex-a55
1406 cname cortexa75cortexa55
1409 architecture armv8.2-a+fp16+dotprod
1410 option crypto add FP_ARMv8 CRYPTO
1412 end cpu cortex-a75.cortex-a55
1414 begin cpu cortex-a76.cortex-a55
1415 cname cortexa76cortexa55
1418 architecture armv8.2-a+fp16+dotprod
1419 option crypto add FP_ARMv8 CRYPTO
1421 end cpu cortex-a76.cortex-a55
1423 # V8 M-profile implementations.
1424 begin cpu cortex-m23
1427 architecture armv8-m.base
1431 begin cpu cortex-m33
1434 architecture armv8-m.main+dsp+fp
1435 option nofp remove ALL_FP
1436 option nodsp remove armv7em
1440 begin cpu cortex-m35p
1443 architecture armv8-m.main+dsp+fp
1444 option nofp remove ALL_FP
1445 option nodsp remove armv7em
1449 # V8 R-profile implementations.
1450 begin cpu cortex-r52
1453 architecture armv8-r+crc+simd
1454 option nofp.dp remove FP_DBL ALL_SIMD
1463 # isa <isa-flags-list>
1478 begin fpu vfpv3-fp16
1479 isa VFPv3 FP_D32 fp16conv
1486 begin fpu vfpv3-d16-fp16
1487 isa VFPv3 FP_DBL fp16conv
1488 end fpu vfpv3-d16-fp16
1494 begin fpu vfpv3xd-fp16
1496 end fpu vfpv3xd-fp16
1502 begin fpu neon-vfpv3
1507 isa VFPv3 NEON fp16conv
1514 begin fpu neon-vfpv4
1522 begin fpu fpv4-sp-d16
1526 begin fpu fpv5-sp-d16
1538 begin fpu neon-fp-armv8
1540 end fpu neon-fp-armv8
1542 begin fpu crypto-neon-fp-armv8
1544 end fpu crypto-neon-fp-armv8
1546 # Compatibility aliases.