Home | History | Annotate | Line # | Download | only in arm
arm-cpus.in revision 1.1.1.4
      1 # CPU, FPU and architecture specifications for ARM.
      2 #
      3 # Copyright (C) 2011-2020 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 # Floating point and Neon extensions.
    136 # VFPv1 is not supported in GCC.
    137 
    138 # Vector floating point v2.
    139 define feature vfpv2
    140 
    141 # Vector floating point v3.
    142 define feature vfpv3
    143 
    144 # Vector floating point v4.
    145 define feature vfpv4
    146 
    147 # Floating point v5.
    148 define feature fpv5
    149 
    150 # ARMv7-A LPAE.
    151 define feature lpae
    152 
    153 # Advanced SIMD instructions.
    154 define feature neon
    155 
    156 # Conversions to/from fp16 (VFPv3 extension).
    157 define feature fp16conv
    158 
    159 # Double precision operations supported.
    160 define feature fp_dbl
    161 
    162 # 32 Double precision registers.
    163 define feature fp_d32
    164 
    165 # Crypto extension to ARMv8.
    166 define feature crypto
    167 
    168 # FP16 data processing (half-precision float).
    169 define feature fp16
    170 
    171 # Dot Product instructions extension to ARMv8.2-a.
    172 define feature dotprod
    173 
    174 # Half-precision floating-point instructions in ARMv8.4-A.
    175 define feature fp16fml
    176 
    177 # ISA Quirks (errata?).  Don't forget to add this to the fgroup
    178 # ALL_QUIRKS below.
    179 
    180 # No volatile memory in IT blocks.
    181 define feature quirk_no_volatile_ce
    182 
    183 # Previously mis-identified by GCC.
    184 define feature quirk_armv6kz
    185 
    186 # Cortex-M3 LDRD quirk.
    187 define feature quirk_cm3_ldrd
    188 
    189 # v8-m/v8.1-m VLLDM errata.
    190 define feature quirk_vlldm
    191 
    192 # Don't use .cpu assembly directive
    193 define feature quirk_no_asmcpu
    194 
    195 # (Very) slow multiply operations.  Should probably be a tuning bit.
    196 define feature smallmul
    197 
    198 # Speculation Barrier Instruction for v8-A architectures, added by
    199 # default to v8.5-A
    200 define feature sb
    201 
    202 # Execution and Data Prediction Restriction Instruction for
    203 # v8-A architectures, added by default from v8.5-A
    204 define feature predres
    205 
    206 # M-profile Vector Extension feature bits
    207 define feature mve
    208 define feature mve_float
    209 
    210 # 8-bit Integer Matrix Multiply extension. Optional from v8.2-A.
    211 define feature i8mm
    212 
    213 # Brain half-precision floating-point extension. Optional from v8.2-A.
    214 define feature bf16
    215 
    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
    225 
    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.
    232 #
    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.
    237 
    238 
    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
    243 
    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
    250 
    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
    257 
    258 # Everything related to the FPU extensions (FP or SIMD).
    259 define fgroup ALL_FP	ALL_FPU_EXTERNAL ALL_FPU_INTERNAL ALL_SIMD
    260 
    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
    279 
    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
    296 
    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
    304 
    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
    311 
    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.
    320 
    321 # Enabled for all VFP, MVE and MVE with floating point extensions.
    322 define implied vfp_base MVE MVE_FP ALL_FP
    323 
    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
    329 
    330 define fgroup IGNORE_FOR_MULTILIB cdecp0 cdecp1 cdecp2 cdecp3 cdecp4 cdecp5 cdecp6 cdecp7
    331 
    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>
    341 #
    342 
    343 begin arch armv4
    344  tune for arm7tdmi
    345  tune flags CO_PROC
    346  base 4
    347  isa ARMv4
    348 end arch armv4
    349 
    350 begin arch armv4t
    351  tune for arm7tdmi
    352  tune flags CO_PROC
    353  base 4T
    354  isa ARMv4t
    355 end arch armv4t
    356 
    357 begin arch armv5t
    358  tune for arm10tdmi
    359  tune flags CO_PROC
    360  base 5T
    361  isa ARMv5t
    362 end arch armv5t
    363 
    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
    373 
    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
    383 
    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
    393 
    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
    403 
    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
    413 
    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
    423 
    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
    433 
    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
    443 
    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
    453 
    454 begin arch armv6-m
    455  tune for cortex-m1
    456  base 6M
    457  profile M
    458  isa ARMv6m
    459 end arch armv6-m
    460 
    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
    469 
    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
    480 
    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
    505 
    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
    528 
    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
    546 
    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
    556 
    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
    571 
    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
    586 
    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
    600 
    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
    619 
    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
    638 
    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
    655 
    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
    670 
    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
    685 
    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
    692 
    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
    714 
    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
    730 
    731 begin arch armv8.1-m.main
    732  tune for cortex-m7
    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
    753 
    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
    760 
    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
    767 
    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>
    783 #
    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.
    802 
    803 # V4 Architecture Processors
    804 begin cpu arm8
    805  tune flags LDSCHED
    806  architecture armv4
    807  costs fastmul
    808 end cpu arm8
    809 
    810 begin cpu arm810
    811  tune flags LDSCHED
    812  architecture armv4
    813  costs fastmul
    814 end cpu arm810
    815 
    816 begin cpu strongarm
    817  alias strongarm110 !strongarm1100 !strongarm1110
    818  tune flags LDSCHED STRONG
    819  architecture armv4
    820  costs strongarm
    821 end cpu strongarm
    822 
    823 begin cpu fa526
    824  tune flags LDSCHED
    825  architecture armv4
    826  costs fastmul
    827 end cpu fa526
    828 
    829 begin cpu fa626
    830  tune flags LDSCHED
    831  architecture armv4
    832  costs fastmul
    833 end cpu fa626
    834 
    835 
    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
    843 
    844 begin cpu arm710t
    845  alias arm720t arm740t
    846  tune flags WBUF
    847  architecture armv4t
    848  costs fastmul
    849 end cpu arm710t
    850 
    851 begin cpu arm9
    852  tune flags LDSCHED
    853  architecture armv4t
    854  costs fastmul
    855 end cpu arm9
    856 
    857 begin cpu arm9tdmi
    858  tune flags LDSCHED
    859  architecture armv4t
    860  costs fastmul
    861 end cpu arm9tdmi
    862 
    863 begin cpu arm920t
    864  alias arm920 arm922t arm940t ep9312
    865  tune flags LDSCHED
    866  architecture armv4t
    867  costs fastmul
    868 end cpu arm920t
    869 
    870 
    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
    879 
    880 
    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
    889 
    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
    897 
    898 begin cpu xscale
    899  tune flags LDSCHED XSCALE
    900  architecture armv5te
    901  isa xscale
    902  costs xscale
    903 end cpu xscale
    904 
    905 begin cpu iwmmxt
    906  tune flags LDSCHED XSCALE
    907  architecture iwmmxt
    908  costs xscale
    909 end cpu iwmmxt
    910 
    911 begin cpu iwmmxt2
    912  tune flags LDSCHED XSCALE
    913  architecture iwmmxt2
    914  costs xscale
    915 end cpu iwmmxt2
    916 
    917 begin cpu fa606te
    918  tune flags LDSCHED
    919  architecture armv5te
    920  costs 9e
    921 end cpu fa606te
    922 
    923 begin cpu fa626te
    924  tune flags LDSCHED
    925  architecture armv5te
    926  costs 9e
    927 end cpu fa626te
    928 
    929 begin cpu fmp626
    930  tune flags LDSCHED
    931  architecture armv5te
    932  costs 9e
    933 end cpu fmp626
    934 
    935 begin cpu fa726te
    936  tune flags LDSCHED
    937  architecture armv5te
    938  costs fa726te
    939 end cpu fa726te
    940 
    941 
    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
    952 
    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
    962 
    963 
    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
    971 
    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
    980 
    981 begin cpu arm1176jz-s
    982  cname arm1176jzs
    983  tune flags LDSCHED
    984  architecture armv6kz
    985  costs 9e
    986 end cpu arm1176jz-s
    987 
    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
    996 
    997 begin cpu mpcorenovfp
    998  tune flags LDSCHED
    999  architecture armv6k
   1000  costs 9e
   1001 end cpu mpcorenovfp
   1002 
   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
   1010 
   1011 begin cpu arm1156t2-s
   1012  cname arm1156t2s
   1013  tune flags LDSCHED
   1014  architecture armv6t2
   1015  costs v6t2
   1016 end cpu arm1156t2-s
   1017 
   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
   1026 
   1027 
   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
   1037 
   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
   1046 
   1047 begin cpu cortex-m0plus
   1048  cname cortexm0plus
   1049  tune flags LDSCHED
   1050  architecture armv6s-m
   1051  costs v6m
   1052 end cpu cortex-m0plus
   1053 
   1054 
   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
   1063 
   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
   1071 
   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
   1079 
   1080 
   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
   1104 
   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
   1115 
   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
   1126 
   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
   1136 
   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
   1147 
   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
   1158 
   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
   1168 
   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
   1178 
   1179 begin cpu cortex-r4
   1180  cname cortexr4
   1181  tune flags LDSCHED
   1182  architecture armv7-r
   1183  costs cortex
   1184 end cpu cortex-r4
   1185 
   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
   1194 
   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
   1205 
   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
   1216 
   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
   1228 
   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
   1238 
   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
   1248 
   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
   1258 
   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
   1264 
   1265 
   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
   1275 
   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
   1284 
   1285 
   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
   1298 
   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
   1310 
   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
   1321 
   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
   1331 
   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
   1342 
   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
   1353 
   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
   1361 
   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
   1368 
   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
   1378 
   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
   1387 
   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
   1396 
   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
   1405 
   1406 
   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
   1419 
   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
   1430 
   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
   1441 
   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
   1452 
   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
   1463 
   1464 begin cpu neoverse-n1
   1465  cname neoversen1
   1466  alias !ares
   1467  tune for cortex-a57
   1468  tune flags LDSCHED
   1469  architecture armv8.2-a+fp16+dotprod
   1470  option crypto add FP_ARMv8 CRYPTO
   1471  costs cortex_a57
   1472  vendor 41
   1473  part d0c
   1474 end cpu neoverse-n1
   1475 
   1476 # ARMv8.2 A-profile ARM DynamIQ big.LITTLE implementations
   1477 begin cpu cortex-a75.cortex-a55
   1478  cname cortexa75cortexa55
   1479  tune for cortex-a53
   1480  tune flags LDSCHED
   1481  architecture armv8.2-a+fp16+dotprod
   1482  option crypto add FP_ARMv8 CRYPTO
   1483  costs cortex_a73
   1484 end cpu cortex-a75.cortex-a55
   1485 
   1486 begin cpu cortex-a76.cortex-a55
   1487  cname cortexa76cortexa55
   1488  tune for cortex-a53
   1489  tune flags LDSCHED
   1490  architecture armv8.2-a+fp16+dotprod
   1491  option crypto add FP_ARMv8 CRYPTO
   1492  costs cortex_a57
   1493 end cpu cortex-a76.cortex-a55
   1494 
   1495 # Armv8.4 A-profile Architecture Processors
   1496 begin cpu neoverse-v1
   1497   cname neoversev1
   1498   tune for cortex-a57
   1499   tune flags LDSCHED
   1500   architecture armv8.4-a+fp16+bf16+i8mm
   1501   option crypto add FP_ARMv8 CRYPTO
   1502   costs cortex_a57
   1503   vendor 41
   1504   part 0xd40
   1505 end cpu neoverse-v1
   1506 
   1507 # Armv8.5 A-profile Architecture Processors
   1508 begin cpu neoverse-n2
   1509   cname neoversen2
   1510   tune for cortex-a57
   1511   tune flags LDSCHED
   1512   architecture armv8.5-a+fp16+bf16+i8mm
   1513   option crypto add FP_ARMv8 CRYPTO
   1514   costs cortex_a57
   1515   vendor 41
   1516   part 0xd49
   1517 end cpu neoverse-n2
   1518 
   1519 # V8 M-profile implementations.
   1520 begin cpu cortex-m23
   1521  cname cortexm23
   1522  tune flags LDSCHED
   1523  architecture armv8-m.base
   1524  costs v6m
   1525 end cpu cortex-m23
   1526 
   1527 begin cpu cortex-m33
   1528  cname cortexm33
   1529  tune flags LDSCHED
   1530  architecture armv8-m.main+dsp+fp
   1531  option nofp remove ALL_FP
   1532  option nodsp remove armv7em
   1533  isa quirk_vlldm
   1534  costs v7m
   1535 end cpu cortex-m33
   1536 
   1537 begin cpu cortex-m35p
   1538  cname cortexm35p
   1539  tune flags LDSCHED
   1540  architecture armv8-m.main+dsp+fp
   1541  option nofp remove ALL_FP
   1542  option nodsp remove armv7em
   1543  isa quirk_vlldm
   1544  costs v7m
   1545 end cpu cortex-m35p
   1546 
   1547 begin cpu cortex-m55
   1548  cname cortexm55
   1549  tune flags LDSCHED
   1550  architecture armv8.1-m.main+mve.fp+fp.dp
   1551  option nomve.fp remove mve_float
   1552  option nomve remove mve mve_float
   1553  option nofp remove ALL_FP mve_float
   1554  option nodsp remove MVE mve_float
   1555  isa quirk_no_asmcpu quirk_vlldm
   1556  costs v7m
   1557  vendor 41
   1558 end cpu cortex-m55
   1559 
   1560 # V8 R-profile implementations.
   1561 begin cpu cortex-r52
   1562  cname cortexr52
   1563  tune flags LDSCHED
   1564  architecture armv8-r+crc+simd
   1565  option nofp.dp remove FP_DBL ALL_SIMD
   1566  costs cortex
   1567  vendor 41
   1568  part d13
   1569 end cpu cortex-r52
   1570 
   1571 # FPU entries
   1572 # format:
   1573 # begin fpu <name>
   1574 #   isa <isa-flags-list>
   1575 # end fpu <name>
   1576 
   1577 begin fpu vfp
   1578  isa VFPv2 FP_DBL
   1579 end fpu vfp
   1580 
   1581 begin fpu vfpv2
   1582  isa VFPv2 FP_DBL
   1583 end fpu vfpv2
   1584 
   1585 begin fpu vfpv3
   1586  isa VFPv3 FP_D32
   1587 end fpu vfpv3
   1588 
   1589 begin fpu vfpv3-fp16
   1590  isa VFPv3 FP_D32 fp16conv
   1591 end fpu vfpv3-fp16
   1592 
   1593 begin fpu vfpv3-d16
   1594  isa VFPv3 FP_DBL
   1595 end fpu vfpv3-d16
   1596 
   1597 begin fpu vfpv3-d16-fp16
   1598  isa VFPv3 FP_DBL fp16conv
   1599 end fpu vfpv3-d16-fp16
   1600 
   1601 begin fpu vfpv3xd
   1602  isa VFPv3
   1603 end fpu vfpv3xd
   1604 
   1605 begin fpu vfpv3xd-fp16
   1606  isa VFPv3 fp16conv
   1607 end fpu vfpv3xd-fp16
   1608 
   1609 begin fpu neon
   1610  isa VFPv3 NEON
   1611 end fpu neon
   1612 
   1613 begin fpu neon-vfpv3
   1614  isa VFPv3 NEON
   1615 end fpu neon-vfpv3
   1616 
   1617 begin fpu neon-fp16
   1618  isa VFPv3 NEON fp16conv
   1619 end fpu neon-fp16
   1620 
   1621 begin fpu vfpv4
   1622  isa VFPv4 FP_D32
   1623 end fpu vfpv4
   1624 
   1625 begin fpu neon-vfpv4
   1626  isa VFPv4 NEON
   1627 end fpu neon-vfpv4
   1628 
   1629 begin fpu vfpv4-d16
   1630  isa VFPv4 FP_DBL
   1631 end fpu vfpv4-d16
   1632 
   1633 begin fpu fpv4-sp-d16
   1634  isa VFPv4
   1635 end fpu fpv4-sp-d16
   1636 
   1637 begin fpu fpv5-sp-d16
   1638  isa FPv5
   1639 end fpu fpv5-sp-d16
   1640 
   1641 begin fpu fpv5-d16
   1642  isa FPv5 FP_DBL
   1643 end fpu fpv5-d16
   1644 
   1645 begin fpu fp-armv8
   1646  isa FP_ARMv8
   1647 end fpu fp-armv8
   1648 
   1649 begin fpu neon-fp-armv8
   1650  isa FP_ARMv8 NEON
   1651 end fpu neon-fp-armv8
   1652 
   1653 begin fpu crypto-neon-fp-armv8
   1654  isa FP_ARMv8 CRYPTO
   1655 end fpu crypto-neon-fp-armv8
   1656 
   1657 # Compatibility aliases.
   1658 begin fpu vfp3
   1659  isa VFPv3 FP_D32
   1660 end fpu vfp3
   1661