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