libstdc++: Remove std::__is_pointer and std::__is_scalar [PR115497]
[official-gcc.git] / gcc / config / arm / arm-cpus.in
blob451b15fe9f9321aee6b5df23e2b43abe34cdeeed
1 # CPU, FPU and architecture specifications for ARM.
3 # Copyright (C) 2011-2024 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
10 # version.
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.
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
23 # purposes.
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>
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
47 # the parser to hang.
49 # Features - general convention: all lower case.
51 # Architecture rel 4
52 define feature armv4
54 # Thumb aware.
55 define feature thumb
57 # Architecture rel 5t.
58 define feature armv5t
60 # Architecture rel 5te.
61 define feature armv5te
63 # XScale.
64 define feature xscale
66 # Architecture rel 6.
67 define feature armv6
69 # Architecture rel 6k.
70 define feature armv6k
72 # Thumb-2.
73 define feature thumb2
75 # Instructions not present in 'M' profile.
76 define feature notm
78 # Architecture uses be8 mode in big-endian.
79 define feature be8
81 # Thumb division instructions.
82 define feature tdiv
84 # Architecture rel 7e-m.
85 define feature armv7em
87 # Architecture rel 7.
88 define feature armv7
90 # MP extension to ArmV7-A
91 define feature mp
93 # SEC extension to ArmV7-A
94 define feature sec
96 # ARM division instructions.
97 define feature adiv
99 # Architecture rel 8.
100 define feature armv8
102 # ARMv8 CRC32 instructions.
103 define feature crc32
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.
130 define feature cmse
132 # Architecture rel 8.1-M.
133 define feature armv8_1m_main
135 # Architecture rel 9.0.
136 define feature armv9
138 # Floating point and Neon extensions.
139 # VFPv1 is not supported in GCC.
141 # Vector floating point v2.
142 define feature vfpv2
144 # Vector floating point v3.
145 define feature vfpv3
147 # Vector floating point v4.
148 define feature vfpv4
150 # Floating point v5.
151 define feature fpv5
153 # ARMv7-A LPAE.
154 define feature lpae
156 # Advanced SIMD instructions.
157 define feature neon
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).
172 define feature fp16
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
181 # ALL_QUIRKS below.
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
205 # default to v8.5-A
206 define feature sb
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
213 define feature mve
214 define feature mve_float
216 # 8-bit Integer Matrix Multiply extension. Optional from v8.2-A.
217 define feature i8mm
219 # Brain half-precision floating-point extension. Optional from v8.2-A.
220 define feature bf16
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
246 # respectively.
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
265 # -mfpu support.
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
336 # architectures.
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
344 # format:
345 # begin arch <name>
346 #   tune for <cpu>
347 #   [tune flags <list>]
348 #   base <name>
349 #   [profile <A|R|M>]
350 #   isa <isa-flags-list>
351 # end arch <name>
354 begin arch armv4
355  tune for arm7tdmi
356  tune flags CO_PROC
357  base 4
358  isa ARMv4
359 end arch armv4
361 begin arch armv4t
362  tune for arm7tdmi
363  tune flags CO_PROC
364  base 4T
365  isa ARMv4t
366 end arch armv4t
368 begin arch armv5t
369  tune for arm10tdmi
370  tune flags CO_PROC
371  base 5T
372  isa ARMv5t
373 end arch armv5t
375 begin arch armv5te
376  tune for arm1026ej-s
377  tune flags CO_PROC
378  base 5TE
379  isa ARMv5te
380  option fp add VFPv2 FP_DBL
381  optalias vfpv2 fp
382  option nofp remove ALL_FP
383 end arch armv5te
385 begin arch armv5tej
386  tune for arm1026ej-s
387  tune flags CO_PROC
388  base 5TEJ
389  isa ARMv5tej
390  option fp add VFPv2 FP_DBL
391  optalias vfpv2 fp
392  option nofp remove ALL_FP
393 end arch armv5tej
395 begin arch armv6
396  tune for arm1136j-s
397  tune flags CO_PROC
398  base 6
399  isa ARMv6
400  option fp add VFPv2 FP_DBL
401  optalias vfpv2 fp
402  option nofp remove ALL_FP
403 end arch armv6
405 begin arch armv6j
406  tune for arm1136j-s
407  tune flags CO_PROC
408  base 6J
409  isa ARMv6j
410  option fp add VFPv2 FP_DBL
411  optalias vfpv2 fp
412  option nofp remove ALL_FP
413 end arch armv6j
415 begin arch armv6k
416  tune for mpcore
417  tune flags CO_PROC
418  base 6K
419  isa ARMv6k
420  option fp add VFPv2 FP_DBL
421  optalias vfpv2 fp
422  option nofp remove ALL_FP
423 end arch armv6k
425 begin arch armv6z
426  tune for arm1176jz-s
427  tune flags CO_PROC
428  base 6Z
429  isa ARMv6z
430  option fp add VFPv2 FP_DBL
431  optalias vfpv2 fp
432  option nofp remove ALL_FP
433 end arch armv6z
435 begin arch armv6kz
436  tune for arm1176jz-s
437  tune flags CO_PROC
438  base 6KZ
439  isa ARMv6kz
440  option fp add VFPv2 FP_DBL
441  optalias vfpv2 fp
442  option nofp remove ALL_FP
443 end arch armv6kz
445 begin arch armv6zk
446  tune for arm1176jz-s
447  tune flags CO_PROC
448  base 6KZ
449  isa ARMv6kz
450  option fp add VFPv2 FP_DBL
451  optalias vfpv2 fp
452  option nofp remove ALL_FP
453 end arch armv6zk
455 begin arch armv6t2
456  tune for arm1156t2-s
457  tune flags CO_PROC
458  base 6T2
459  isa ARMv6t2
460  option fp add VFPv2 FP_DBL
461  optalias vfpv2 fp
462  option nofp remove ALL_FP
463 end arch armv6t2
465 begin arch armv6-m
466  tune for cortex-m1
467  base 6M
468  profile M
469  isa ARMv6m
470 end arch armv6-m
472 # This is now equivalent to armv6-m, but we keep it because some
473 # versions of GAS still distinguish between the two.
474 begin arch armv6s-m
475  tune for cortex-m1
476  base 6M
477  profile M
478  isa ARMv6m
479 end arch armv6s-m
481 begin arch armv7
482  tune for cortex-a53
483  tune flags CO_PROC
484  base 7
485  isa ARMv7
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
490 end arch armv7
492 begin arch armv7-a
493  tune for cortex-a53
494  tune flags CO_PROC
495  base 7A
496  profile A
497  isa ARMv7a
498  option mp             add mp
499  option sec            add sec
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
509  optalias neon         simd
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
515 end arch armv7-a
517 begin arch armv7ve
518  tune for cortex-a53
519  tune flags CO_PROC
520  base 7A
521  profile A
522  isa ARMv7ve
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
538 end arch armv7ve
540 begin arch armv7-r
541  tune for cortex-r4
542  tune flags CO_PROC
543  base 7R
544  profile R
545  isa ARMv7r
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
553  option idiv add adiv
554  option nofp remove ALL_FP
555  option noidiv remove adiv
556 end arch armv7-r
558 begin arch armv7-m
559  tune for cortex-m3
560  tune flags CO_PROC
561  base 7M
562  profile M
563  isa ARMv7m
564 # In theory FP is permitted in v7-m, but in practice no implementations exist.
565 # leave it out for now.
566 end arch armv7-m
568 begin arch armv7e-m
569  tune for cortex-m4
570  tune flags CO_PROC
571  base 7EM
572  profile M
573  isa ARMv7em
574 # fp => VFPv4-sp-d16; fpv5 => FPv5-sp-d16; fp.dp => FPv5-d16
575  option fp add VFPv4
576  optalias vfpv4-sp-d16 fp
577  option fpv5 add FPv5
578  option fp.dp add FPv5 FP_DBL
579  optalias fpv5-d16 fp.dp
580  option nofp remove ALL_FP
581 end arch armv7e-m
583 begin arch armv8-a
584  tune for cortex-a53
585  tune flags CO_PROC
586  base 8A
587  profile A
588  isa ARMv8a
589  option crc add crc32
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
594  option sb add sb
595  option predres add predres
596 end arch armv8-a
598 begin arch armv8.1-a
599  tune for cortex-a53
600  tune flags CO_PROC
601  base 8A
602  profile A
603  isa ARMv8_1a
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
608  option sb add sb
609  option predres add predres
610 end arch armv8.1-a
612 begin arch armv8.2-a
613  tune for cortex-a53
614  tune flags CO_PROC
615  base 8A
616  profile A
617  isa ARMv8_2a
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
625  option sb add sb
626  option predres add predres
627  option i8mm add i8mm FP_ARMv8 NEON
628  option bf16 add bf16 FP_ARMv8 NEON
629 end arch armv8.2-a
631 begin arch armv8.3-a
632  tune for cortex-a53
633  tune flags CO_PROC
634  base 8A
635  profile A
636  isa ARMv8_3a
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
644  option sb add sb
645  option predres add predres
646  option i8mm add i8mm FP_ARMv8 NEON
647  option bf16 add bf16 FP_ARMv8 NEON
648 end arch armv8.3-a
650 begin arch armv8.4-a
651  tune for cortex-a53
652  tune flags CO_PROC
653  base 8A
654  profile A
655  isa ARMv8_4a
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
661  option sb add sb
662  option predres add predres
663  option i8mm add i8mm FP_ARMv8 DOTPROD
664  option bf16 add bf16 FP_ARMv8 DOTPROD
665 end arch armv8.4-a
667 begin arch armv8.5-a
668  tune for cortex-a53
669  tune flags CO_PROC
670  base 8A
671  profile A
672  isa ARMv8_5a
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
680 end arch armv8.5-a
682 begin arch armv8.6-a
683  tune for cortex-a53
684  tune flags CO_PROC
685  base 8A
686  profile A
687  isa ARMv8_6a
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
695 end arch armv8.6-a
697 begin arch armv8-m.base
698  tune for cortex-m23
699  base 8M_BASE
700  profile M
701  isa ARMv8m_base
702 end arch armv8-m.base
704 begin arch armv8-m.main
705  tune for cortex-m7
706  tune flags CO_PROC
707  base 8M_MAIN
708  profile M
709  isa ARMv8m_main
710  option dsp add armv7em
711 # fp => FPv5-sp-d16; fp.dp => FPv5-d16
712  option fp add FPv5
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
726 begin arch armv8-r
727  tune for cortex-r52
728  tune flags CO_PROC
729  base 8R
730  profile R
731  isa ARMv8r
732  option crc add crc32
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
740 end arch armv8-r
742 begin arch armv8.1-m.main
743  tune for cortex-m55
744  tune flags CO_PROC
745  base 8M_MAIN
746  profile M
747  isa ARMv8_1m_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
754  option mve add MVE
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
766 begin arch armv9-a
767  tune for cortex-a53
768  tune flags CO_PROC
769  base 9A
770  profile A
771  isa ARMv9a
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
779 end arch armv9-a
781 begin arch iwmmxt
782  tune for iwmmxt
783  tune flags LDSCHED STRONG XSCALE
784  base 5TE
785  isa ARMv5te xscale iwmmxt
786 end arch iwmmxt
788 begin arch iwmmxt2
789  tune for iwmmxt2
790  tune flags LDSCHED STRONG XSCALE
791  base 5TE
792  isa ARMv5te xscale iwmmxt iwmmxt2
793 end arch iwmmxt2
795 # CPU entries
796 # format:
797 # begin cpu <name>
798 #   [cname <c-compatible-name>]
799 #   [alias <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>]*
806 #   [costs <name>]
807 #   [vendor <vendor-id>
808 #    [part <part-id> [minrev [maxrev]]]
809 # end cpu <name>
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
827 # to infinity.
828 # Revision information is not implemented yet; no part uses it.
830 # V4 Architecture Processors
831 begin cpu arm8
832  tune flags LDSCHED
833  architecture armv4
834  costs fastmul
835 end cpu arm8
837 begin cpu arm810
838  tune flags LDSCHED
839  architecture armv4
840  costs fastmul
841 end cpu arm810
843 begin cpu strongarm
844  alias strongarm110 !strongarm1100 !strongarm1110
845  tune flags LDSCHED STRONG
846  architecture armv4
847  costs strongarm
848 end cpu strongarm
850 begin cpu fa526
851  tune flags LDSCHED
852  architecture armv4
853  costs fastmul
854 end cpu fa526
856 begin cpu fa626
857  tune flags LDSCHED
858  architecture armv4
859  costs fastmul
860 end cpu fa626
863 # V4T Architecture Processors
864 begin cpu arm7tdmi
865  alias arm7tdmi-s
866  tune flags CO_PROC
867  architecture armv4t
868  costs fastmul
869 end cpu arm7tdmi
871 begin cpu arm710t
872  alias arm720t arm740t
873  tune flags WBUF
874  architecture armv4t
875  costs fastmul
876 end cpu arm710t
878 begin cpu arm9
879  tune flags LDSCHED
880  architecture armv4t
881  costs fastmul
882 end cpu arm9
884 begin cpu arm9tdmi
885  tune flags LDSCHED
886  architecture armv4t
887  costs fastmul
888 end cpu arm9tdmi
890 begin cpu arm920t
891  alias arm920 arm922t arm940t ep9312
892  tune flags LDSCHED
893  architecture armv4t
894  costs fastmul
895 end cpu arm920t
898 # V5T Architecture Processors
899 # These used VFPv1 which isn't supported by GCC
900 begin cpu arm10tdmi
901  alias arm1020t
902  tune flags LDSCHED
903  architecture armv5t
904  costs fastmul
905 end cpu arm10tdmi
908 # V5TE Architecture Processors
909 begin cpu arm9e
910  alias arm946e-s arm966e-s arm968e-s
911  tune flags LDSCHED
912  architecture armv5te+fp
913  option nofp remove ALL_FP
914  costs 9e
915 end cpu arm9e
917 begin cpu arm10e
918  alias arm1020e arm1022e
919  tune flags LDSCHED
920  architecture armv5te+fp
921  option nofp remove ALL_FP
922  costs fastmul
923 end cpu arm10e
925 begin cpu xscale
926  tune flags LDSCHED XSCALE
927  architecture armv5te
928  isa xscale
929  costs xscale
930 end cpu xscale
932 begin cpu iwmmxt
933  tune flags LDSCHED XSCALE
934  architecture iwmmxt
935  costs xscale
936 end cpu iwmmxt
938 begin cpu iwmmxt2
939  tune flags LDSCHED XSCALE
940  architecture iwmmxt2
941  costs xscale
942 end cpu iwmmxt2
944 begin cpu fa606te
945  tune flags LDSCHED
946  architecture armv5te
947  costs 9e
948 end cpu fa606te
950 begin cpu fa626te
951  tune flags LDSCHED
952  architecture armv5te
953  costs 9e
954 end cpu fa626te
956 begin cpu fmp626
957  tune flags LDSCHED
958  architecture armv5te
959  costs 9e
960 end cpu fmp626
962 begin cpu fa726te
963  tune flags LDSCHED
964  architecture armv5te
965  costs fa726te
966 end cpu fa726te
969 # V5TEJ Architecture Processors
970 begin cpu arm926ej-s
971  cname arm926ejs
972  tune flags LDSCHED
973  architecture armv5tej+fp
974  option nofp remove ALL_FP
975  costs 9e
976  vendor 41
977  part 926
978 end cpu arm926ej-s
980 begin cpu arm1026ej-s
981  cname arm1026ejs
982  tune flags LDSCHED
983  architecture armv5tej+fp
984  option nofp remove ALL_FP
985  costs 9e
986  vendor 41
987  part a26
988 end cpu arm1026ej-s
991 # V6 Architecture Processors
992 begin cpu arm1136j-s
993  cname arm1136js
994  tune flags LDSCHED
995  architecture armv6j
996  costs 9e
997 end cpu arm1136j-s
999 begin cpu arm1136jf-s
1000  cname arm1136jfs
1001  tune flags LDSCHED
1002  architecture armv6j+fp
1003  costs 9e
1004  vendor 41
1005  part b36
1006 end cpu arm1136jf-s
1008 begin cpu arm1176jz-s
1009  cname arm1176jzs
1010  tune flags LDSCHED
1011  architecture armv6kz
1012  costs 9e
1013 end cpu arm1176jz-s
1015 begin cpu arm1176jzf-s
1016  cname arm1176jzfs
1017  tune flags LDSCHED
1018  architecture armv6kz+fp
1019  costs 9e
1020  vendor 41
1021  part b76
1022 end cpu arm1176jzf-s
1024 begin cpu mpcorenovfp
1025  tune flags LDSCHED
1026  architecture armv6k
1027  costs 9e
1028 end cpu mpcorenovfp
1030 begin cpu mpcore
1031  tune flags LDSCHED
1032  architecture armv6k+fp
1033  costs 9e
1034  vendor 41
1035  part b02
1036 end cpu mpcore
1038 begin cpu arm1156t2-s
1039  cname arm1156t2s
1040  tune flags LDSCHED
1041  architecture armv6t2
1042  costs v6t2
1043 end cpu arm1156t2-s
1045 begin cpu arm1156t2f-s
1046  cname arm1156t2fs
1047  tune flags LDSCHED
1048  architecture armv6t2+fp
1049  costs v6t2
1050  vendor 41
1051  part b56
1052 end cpu arm1156t2f-s
1055 # V6M Architecture Processors
1056 begin cpu cortex-m1
1057  cname cortexm1
1058  tune flags LDSCHED
1059  architecture armv6s-m
1060  costs v6m
1061  vendor 41
1062  part c21
1063 end cpu cortex-m1
1065 begin cpu cortex-m0
1066  cname cortexm0
1067  tune flags LDSCHED
1068  architecture armv6s-m
1069  costs v6m
1070  vendor 41
1071  part c20
1072 end cpu cortex-m0
1074 begin cpu cortex-m0plus
1075  cname cortexm0plus
1076  tune flags LDSCHED
1077  architecture armv6s-m
1078  costs v6m
1079 end cpu cortex-m0plus
1082 # V6M Architecture Processors for small-multiply implementations.
1083 begin cpu cortex-m1.small-multiply
1084  cname cortexm1smallmultiply
1085  tune for cortex-m1
1086  tune flags LDSCHED SMALLMUL
1087  architecture armv6s-m
1088  costs v6m
1089 end cpu cortex-m1.small-multiply
1091 begin cpu cortex-m0.small-multiply
1092  cname cortexm0smallmultiply
1093  tune for cortex-m0
1094  tune flags LDSCHED SMALLMUL
1095  architecture armv6s-m
1096  costs v6m
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
1104  costs v6m
1105 end cpu cortex-m0plus.small-multiply
1108 # V7 Architecture Processors
1109 begin cpu generic-armv7-a
1110  cname genericv7a
1111  tune flags LDSCHED
1112  architecture armv7-a+fp
1113  isa quirk_no_asmcpu
1114  option mp add mp
1115  option sec add sec
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
1123  optalias neon simd
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
1129  costs cortex
1130 end cpu generic-armv7-a
1132 begin cpu cortex-a5
1133  cname cortexa5
1134  tune flags LDSCHED
1135  architecture armv7-a+mp+sec+neon-fp16
1136  option nosimd remove ALL_SIMD
1137  option nofp remove ALL_FP
1138  costs cortex_a5
1139  vendor 41
1140  part c05
1141 end cpu cortex-a5
1143 begin cpu cortex-a7
1144  cname cortexa7
1145  tune flags LDSCHED
1146  architecture armv7ve+simd
1147  option nosimd remove ALL_SIMD
1148  option nofp remove ALL_FP
1149  costs cortex_a7
1150  vendor 41
1151  part c07
1152 end cpu cortex-a7
1154 begin cpu cortex-a8
1155  cname cortexa8
1156  tune flags LDSCHED
1157  architecture armv7-a+sec+simd
1158  option nofp remove ALL_FP
1159  costs cortex_a8
1160  vendor 41
1161  part c08
1162 end cpu cortex-a8
1164 begin cpu cortex-a9
1165  cname cortexa9
1166  tune flags LDSCHED
1167  architecture armv7-a+mp+sec+neon-fp16
1168  option nosimd remove ALL_SIMD
1169  option nofp remove ALL_FP
1170  costs cortex_a9
1171  vendor 41
1172  part c09
1173 end cpu cortex-a9
1175 begin cpu cortex-a12
1176  cname cortexa12
1177  tune for cortex-a17
1178  tune flags LDSCHED
1179  architecture armv7ve+simd
1180  option nofp remove ALL_FP
1181  costs cortex_a12
1182  vendor 41
1183  part c0d
1184 end cpu cortex-a12
1186 begin cpu cortex-a15
1187  cname cortexa15
1188  tune flags LDSCHED
1189  architecture armv7ve+simd
1190  option nofp remove ALL_FP
1191  costs cortex_a15
1192  vendor 41
1193  part c0f
1194 end cpu cortex-a15
1196 begin cpu cortex-a17
1197  cname cortexa17
1198  tune flags LDSCHED
1199  architecture armv7ve+simd
1200  option nofp remove ALL_FP
1201  costs cortex_a12
1202  vendor 41
1203  part c0e
1204 end cpu cortex-a17
1206 begin cpu cortex-r4
1207  cname cortexr4
1208  tune flags LDSCHED
1209  architecture armv7-r
1210  costs cortex
1211 end cpu cortex-r4
1213 begin cpu cortex-r4f
1214  cname cortexr4f
1215  tune flags LDSCHED
1216  architecture armv7-r+fp
1217  costs cortex
1218  vendor 41
1219  part c14
1220 end cpu cortex-r4f
1222 begin cpu cortex-r5
1223  cname cortexr5
1224  tune flags LDSCHED
1225  architecture armv7-r+idiv+fp
1226  option nofp.dp remove FP_DBL
1227  option nofp remove ALL_FP
1228  costs cortex
1229  vendor 41
1230  part c15
1231 end cpu cortex-r5
1233 begin cpu cortex-r7
1234  cname cortexr7
1235  tune flags LDSCHED
1236  architecture armv7-r+idiv+vfpv3-d16-fp16
1237  option nofp.dp remove FP_DBL
1238  option nofp remove ALL_FP
1239  costs cortex
1240  vendor 41
1241  part c17
1242 end cpu cortex-r7
1244 begin cpu cortex-r8
1245  cname cortexr8
1246  tune for cortex-r7
1247  tune flags LDSCHED
1248  architecture armv7-r+idiv+vfpv3-d16-fp16
1249  option nofp.dp remove FP_DBL
1250  option nofp remove ALL_FP
1251  costs cortex
1252  vendor 41
1253  part c18
1254 end cpu cortex-r8
1256 begin cpu cortex-m7
1257  cname cortexm7
1258  tune flags LDSCHED
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
1263  costs cortex_m7
1264 end cpu cortex-m7
1266 begin cpu cortex-m4
1267  cname cortexm4
1268  tune flags LDSCHED
1269  architecture armv7e-m+fp
1270  option nofp remove ALL_FP
1271  costs v7m
1272  vendor 41
1273  part c24
1274 end cpu cortex-m4
1276 begin cpu cortex-m3
1277  cname cortexm3
1278  tune flags LDSCHED
1279  architecture armv7-m
1280  isa quirk_cm3_ldrd
1281  costs v7m
1282  vendor 41
1283  part c23
1284 end cpu cortex-m3
1286 begin cpu marvell-pj4
1287  tune flags LDSCHED
1288  architecture armv7-a+mp+sec+fp
1289  costs marvell_pj4
1290 end cpu marvell-pj4
1293 # V7 big.LITTLE implementations
1294 begin cpu cortex-a15.cortex-a7
1295  cname cortexa15cortexa7
1296  tune for cortex-a7
1297  tune flags LDSCHED
1298  architecture armv7ve+simd
1299  option nofp remove ALL_FP
1300  costs cortex_a15
1301 end cpu cortex-a15.cortex-a7
1303 begin cpu cortex-a17.cortex-a7
1304  cname cortexa17cortexa7
1305  tune for cortex-a7
1306  tune flags LDSCHED
1307  architecture armv7ve+simd
1308  option nofp remove ALL_FP
1309  costs cortex_a12
1310 end cpu cortex-a17.cortex-a7
1313 # V8 A-profile Architecture Processors
1314 begin cpu cortex-a32
1315  cname cortexa32
1316  tune for cortex-a53
1317  tune flags LDSCHED
1318  architecture armv8-a+crc+simd
1319  option crypto add FP_ARMv8 CRYPTO
1320  option nofp remove ALL_FP
1321  costs cortex_a35
1322  vendor 41
1323  part d01
1324 end cpu cortex-a32
1326 begin cpu cortex-a35
1327  cname cortexa35
1328  tune for cortex-a53
1329  tune flags LDSCHED
1330  architecture armv8-a+crc+simd
1331  option crypto add FP_ARMv8 CRYPTO
1332  option nofp remove ALL_FP
1333  costs cortex_a35
1334  vendor 41
1335  part d04
1336 end cpu cortex-a35
1338 begin cpu cortex-a53
1339  cname cortexa53
1340  tune flags LDSCHED
1341  architecture armv8-a+crc+simd
1342  option crypto add FP_ARMv8 CRYPTO
1343  option nofp remove ALL_FP
1344  costs cortex_a53
1345  vendor 41
1346  part d03
1347 end cpu cortex-a53
1349 begin cpu cortex-a57
1350  cname cortexa57
1351  tune flags LDSCHED
1352  architecture armv8-a+crc+simd
1353  isa quirk_aes_1742098
1354  option crypto add FP_ARMv8 CRYPTO
1355  costs cortex_a57
1356  vendor 41
1357  part d07
1358 end cpu cortex-a57
1360 begin cpu cortex-a72
1361  cname cortexa72
1362  tune for cortex-a57
1363  tune flags LDSCHED
1364  architecture armv8-a+crc+simd
1365  isa quirk_aes_1742098
1366  option crypto add FP_ARMv8 CRYPTO
1367  costs cortex_a57
1368  vendor 41
1369  part d08
1370 end cpu cortex-a72
1372 begin cpu cortex-a73
1373  cname cortexa73
1374  tune for cortex-a57
1375  tune flags LDSCHED
1376  architecture armv8-a+crc+simd
1377  option crypto add FP_ARMv8 CRYPTO
1378  costs cortex_a73
1379  vendor 41
1380  part d09
1381 end cpu cortex-a73
1383 begin cpu exynos-m1
1384  cname exynosm1
1385  tune flags LDSCHED
1386  architecture armv8-a+crc+simd
1387  option crypto add FP_ARMv8 CRYPTO
1388  costs exynosm1
1389 end cpu exynos-m1
1391 begin cpu xgene1
1392  tune flags LDSCHED
1393  architecture armv8-a+simd
1394  option crypto add FP_ARMv8 CRYPTO
1395  costs xgene1
1396 end cpu xgene1
1398 # V8 A-profile big.LITTLE implementations
1399 begin cpu cortex-a57.cortex-a53
1400  cname cortexa57cortexa53
1401  tune for cortex-a53
1402  tune flags LDSCHED
1403  architecture armv8-a+crc+simd
1404  isa quirk_aes_1742098
1405  option crypto add FP_ARMv8 CRYPTO
1406  costs cortex_a57
1407 end cpu cortex-a57.cortex-a53
1409 begin cpu cortex-a72.cortex-a53
1410  cname cortexa72cortexa53
1411  tune for cortex-a53
1412  tune flags LDSCHED
1413  architecture armv8-a+crc+simd
1414  isa quirk_aes_1742098
1415  option crypto add FP_ARMv8 CRYPTO
1416  costs cortex_a57
1417 end cpu cortex-a72.cortex-a53
1419 begin cpu cortex-a73.cortex-a35
1420  cname cortexa73cortexa35
1421  tune for cortex-a53
1422  tune flags LDSCHED
1423  architecture armv8-a+crc+simd
1424  option crypto add FP_ARMv8 CRYPTO
1425  costs cortex_a73
1426 end cpu cortex-a73.cortex-a35
1428 begin cpu cortex-a73.cortex-a53
1429  cname cortexa73cortexa53
1430  tune for cortex-a53
1431  tune flags LDSCHED
1432  architecture armv8-a+crc+simd
1433  option crypto add FP_ARMv8 CRYPTO
1434  costs cortex_a73
1435 end cpu cortex-a73.cortex-a53
1438 # ARMv8.2 A-profile Architecture Processors
1439 begin cpu cortex-a55
1440  cname cortexa55
1441  tune for cortex-a53
1442  tune flags LDSCHED
1443  architecture armv8.2-a+fp16+dotprod
1444  option crypto add FP_ARMv8 CRYPTO
1445  option nofp remove ALL_FP
1446  costs cortex_a53
1447  vendor 41
1448  part d05
1449 end cpu cortex-a55
1451 begin cpu cortex-a75
1452  cname cortexa75
1453  tune for cortex-a57
1454  tune flags LDSCHED
1455  architecture armv8.2-a+fp16+dotprod
1456  option crypto add FP_ARMv8 CRYPTO
1457  costs cortex_a73
1458  vendor 41
1459  part d0a
1460 end cpu cortex-a75
1462 begin cpu cortex-a76
1463  cname cortexa76
1464  tune for cortex-a57
1465  tune flags LDSCHED
1466  architecture armv8.2-a+fp16+dotprod
1467  option crypto add FP_ARMv8 CRYPTO
1468  costs cortex_a57
1469  vendor 41
1470  part d0b
1471 end cpu cortex-a76
1473 begin cpu cortex-a76ae
1474  cname cortexa76ae
1475  tune for cortex-a57
1476  tune flags LDSCHED
1477  architecture armv8.2-a+fp16+dotprod
1478  option crypto add FP_ARMv8 CRYPTO
1479  costs cortex_a57
1480  vendor 41
1481  part d0e
1482 end cpu cortex-a76ae
1484 begin cpu cortex-a77
1485  cname cortexa77
1486  tune for cortex-a57
1487  tune flags LDSCHED
1488  architecture armv8.2-a+fp16+dotprod
1489  option crypto add FP_ARMv8 CRYPTO
1490  costs cortex_a57
1491  vendor 41
1492  part d0d
1493 end cpu cortex-a77
1495 begin cpu cortex-a78
1496  cname cortexa78
1497  tune for cortex-a57
1498  tune flags LDSCHED
1499  architecture armv8.2-a+fp16+dotprod
1500  option crypto add FP_ARMv8 CRYPTO
1501  costs cortex_a57
1502  vendor 41
1503  part d41
1504 end cpu cortex-a78
1506 begin cpu cortex-a78ae
1507  cname cortexa78ae
1508  tune for cortex-a57
1509  tune flags LDSCHED
1510  architecture armv8.2-a+fp16+dotprod
1511  option crypto add FP_ARMv8 CRYPTO
1512  costs cortex_a57
1513  vendor 41
1514  part d42
1515 end cpu cortex-a78ae
1517 begin cpu cortex-a78c
1518  cname cortexa78c
1519  tune for cortex-a57
1520  tune flags LDSCHED
1521  architecture armv8.2-a+fp16+dotprod
1522  option crypto add FP_ARMv8 CRYPTO
1523  costs cortex_a57
1524  vendor 41
1525  part d4b
1526 end cpu cortex-a78c
1528 begin cpu cortex-a710
1529  cname cortexa710
1530  tune for cortex-a57
1531  tune flags LDSCHED
1532  architecture armv9-a+fp16+bf16+i8mm
1533  option crypto add FP_ARMv8 CRYPTO
1534  costs cortex_a57
1535  vendor 41
1536  part d47
1537 end cpu cortex-a710
1539 begin cpu cortex-x1
1540  cname cortexx1
1541  tune for cortex-a57
1542  tune flags LDSCHED
1543  architecture armv8.2-a+fp16+dotprod
1544  option crypto add FP_ARMv8 CRYPTO
1545  costs cortex_a57
1546  vendor 41
1547  part d44
1548 end cpu cortex-x1
1550 begin cpu cortex-x1c
1551  cname cortexx1c
1552  tune for cortex-a57
1553  tune flags LDSCHED
1554  architecture armv8.2-a+fp16+dotprod
1555  option crypto add FP_ARMv8 CRYPTO
1556  costs cortex_a57
1557  vendor 41
1558  part d4c
1559 end cpu cortex-x1c
1561 begin cpu neoverse-n1
1562  cname neoversen1
1563  alias !ares
1564  tune for cortex-a57
1565  tune flags LDSCHED
1566  architecture armv8.2-a+fp16+dotprod
1567  option crypto add FP_ARMv8 CRYPTO
1568  costs cortex_a57
1569  vendor 41
1570  part d0c
1571 end cpu neoverse-n1
1573 # ARMv8.2 A-profile ARM DynamIQ big.LITTLE implementations
1574 begin cpu cortex-a75.cortex-a55
1575  cname cortexa75cortexa55
1576  tune for cortex-a53
1577  tune flags LDSCHED
1578  architecture armv8.2-a+fp16+dotprod
1579  option crypto add FP_ARMv8 CRYPTO
1580  costs cortex_a73
1581 end cpu cortex-a75.cortex-a55
1583 begin cpu cortex-a76.cortex-a55
1584  cname cortexa76cortexa55
1585  tune for cortex-a53
1586  tune flags LDSCHED
1587  architecture armv8.2-a+fp16+dotprod
1588  option crypto add FP_ARMv8 CRYPTO
1589  costs cortex_a57
1590 end cpu cortex-a76.cortex-a55
1592 # Armv8.4 A-profile Architecture Processors
1593 begin cpu neoverse-v1
1594   cname neoversev1
1595   tune for cortex-a57
1596   tune flags LDSCHED
1597   architecture armv8.4-a+fp16+bf16+i8mm
1598   option crypto add FP_ARMv8 CRYPTO
1599   costs cortex_a57
1600   vendor 41
1601   part 0xd40
1602 end cpu neoverse-v1
1604 # Armv8.5 A-profile Architecture Processors
1605 begin cpu neoverse-n2
1606   cname neoversen2
1607   tune for cortex-a57
1608   tune flags LDSCHED
1609   architecture armv8.5-a+fp16+bf16+i8mm
1610   option crypto add FP_ARMv8 CRYPTO
1611   costs cortex_a57
1612   vendor 41
1613   part 0xd49
1614 end cpu neoverse-n2
1616 # V8 M-profile implementations.
1617 begin cpu cortex-m23
1618  cname cortexm23
1619  tune flags LDSCHED
1620  architecture armv8-m.base
1621  costs v6m
1622 end cpu cortex-m23
1624 begin cpu cortex-m33
1625  cname cortexm33
1626  tune flags LDSCHED
1627  architecture armv8-m.main+dsp+fp
1628  option nofp remove ALL_FP
1629  option nodsp remove armv7em
1630  isa quirk_vlldm
1631  costs v7m
1632 end cpu cortex-m33
1634 begin cpu cortex-m35p
1635  cname cortexm35p
1636  tune flags LDSCHED
1637  architecture armv8-m.main+dsp+fp
1638  option nofp remove ALL_FP
1639  option nodsp remove armv7em
1640  isa quirk_vlldm
1641  costs v7m
1642 end cpu cortex-m35p
1644 begin cpu cortex-m52
1645  cname cortexm52
1646  tune flags LDSCHED
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
1662  costs v7m
1663 end cpu cortex-m52
1665 begin cpu cortex-m55
1666  cname cortexm55
1667  tune flags LDSCHED
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
1682  costs v7m
1683  vendor 41
1684 end cpu cortex-m55
1686 begin cpu star-mc1
1687  cname starmc1
1688  tune flags LDSCHED
1689  architecture armv8-m.main+dsp+fp
1690  option nofp remove ALL_FP
1691  option nodsp remove armv7em
1692  isa quirk_no_asmcpu quirk_vlldm
1693  costs v7m
1694 end cpu star-mc1
1696 begin cpu cortex-m85
1697  cname cortexm85
1698  tune flags LDSCHED
1699  architecture armv8.1-m.main+pacbti+mve.fp+fp.dp
1700  option nopacbti remove pacbti
1701  option nomve.fp remove mve_float
1702  option nomve remove mve mve_float
1703  option nofp remove ALL_FP mve_float
1704  option nodsp remove MVE mve_float
1705  isa quirk_no_asmcpu quirk_vlldm
1706  costs v7m
1707  part 0xd23
1708  vendor 41
1709 end cpu cortex-m85
1711 # V8 R-profile implementations.
1712 begin cpu cortex-r52
1713  cname cortexr52
1714  tune flags LDSCHED
1715  architecture armv8-r+crc+simd
1716  option nofp.dp remove FP_DBL ALL_SIMD
1717  costs cortex
1718  vendor 41
1719  part d13
1720 end cpu cortex-r52
1722 begin cpu cortex-r52plus
1723  cname cortexr52plus
1724  tune flags LDSCHED
1725  architecture armv8-r+crc+simd
1726  option nofp.dp remove FP_DBL ALL_SIMD
1727  costs cortex
1728  vendor 41
1729  part d16
1730 end cpu cortex-r52plus
1732 # FPU entries
1733 # format:
1734 # begin fpu <name>
1735 #   isa <isa-flags-list>
1736 # end fpu <name>
1738 begin fpu vfp
1739  isa VFPv2 FP_DBL
1740 end fpu vfp
1742 begin fpu vfpv2
1743  isa VFPv2 FP_DBL
1744 end fpu vfpv2
1746 begin fpu vfpv3
1747  isa VFPv3 FP_D32
1748 end fpu vfpv3
1750 begin fpu vfpv3-fp16
1751  isa VFPv3 FP_D32 fp16conv
1752 end fpu vfpv3-fp16
1754 begin fpu vfpv3-d16
1755  isa VFPv3 FP_DBL
1756 end fpu vfpv3-d16
1758 begin fpu vfpv3-d16-fp16
1759  isa VFPv3 FP_DBL fp16conv
1760 end fpu vfpv3-d16-fp16
1762 begin fpu vfpv3xd
1763  isa VFPv3
1764 end fpu vfpv3xd
1766 begin fpu vfpv3xd-fp16
1767  isa VFPv3 fp16conv
1768 end fpu vfpv3xd-fp16
1770 begin fpu neon
1771  isa VFPv3 NEON
1772 end fpu neon
1774 begin fpu neon-vfpv3
1775  isa VFPv3 NEON
1776 end fpu neon-vfpv3
1778 begin fpu neon-fp16
1779  isa VFPv3 NEON fp16conv
1780 end fpu neon-fp16
1782 begin fpu vfpv4
1783  isa VFPv4 FP_D32
1784 end fpu vfpv4
1786 begin fpu neon-vfpv4
1787  isa VFPv4 NEON
1788 end fpu neon-vfpv4
1790 begin fpu vfpv4-d16
1791  isa VFPv4 FP_DBL
1792 end fpu vfpv4-d16
1794 begin fpu fpv4-sp-d16
1795  isa VFPv4
1796 end fpu fpv4-sp-d16
1798 begin fpu fpv5-sp-d16
1799  isa FPv5
1800 end fpu fpv5-sp-d16
1802 begin fpu fpv5-d16
1803  isa FPv5 FP_DBL
1804 end fpu fpv5-d16
1806 begin fpu fp-armv8
1807  isa FP_ARMv8
1808 end fpu fp-armv8
1810 begin fpu neon-fp-armv8
1811  isa FP_ARMv8 NEON
1812 end fpu neon-fp-armv8
1814 begin fpu crypto-neon-fp-armv8
1815  isa FP_ARMv8 CRYPTO
1816 end fpu crypto-neon-fp-armv8
1818 # Compatibility aliases.
1819 begin fpu vfp3
1820  isa VFPv3 FP_D32
1821 end fpu vfp3