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