Home | History | Annotate | Line # | Download | only in arm
arm-cpus.in revision 1.1.1.2
      1 # CPU, FPU and architecture specifications for ARM.
      2 #
      3 # Copyright (C) 2011-2018 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 # Extended multiply
     52 define feature armv3m
     53 
     54 # 26-bit mode support
     55 define feature mode26
     56 
     57 # 32-bit mode support
     58 define feature mode32
     59 
     60 # Architecture rel 4
     61 define feature armv4
     62 
     63 # Architecture rel 5
     64 define feature armv5
     65 
     66 # Thumb aware.
     67 define feature thumb
     68 
     69 # Architecture rel 5e.
     70 define feature armv5e
     71 
     72 # XScale.
     73 define feature xscale
     74 
     75 # Architecture rel 6.
     76 define feature armv6
     77 
     78 # Architecture rel 6k.
     79 define feature armv6k
     80 
     81 # Thumb-2.
     82 define feature thumb2
     83 
     84 # Instructions not present in 'M' profile.
     85 define feature notm
     86 
     87 # Architecture uses be8 mode in big-endian.
     88 define feature be8
     89 
     90 # Thumb division instructions.
     91 define feature tdiv
     92 
     93 # Architecture rel 7e-m.
     94 define feature armv7em
     95 
     96 # Architecture rel 7.
     97 define feature armv7
     98 
     99 # MP extension to ArmV7-A
    100 define feature mp
    101 
    102 # SEC extension to ArmV7-A
    103 define feature sec
    104 
    105 # ARM division instructions.
    106 define feature adiv
    107 
    108 # Architecture rel 8.
    109 define feature armv8
    110 
    111 # ARMv8 CRC32 instructions.
    112 define feature crc32
    113 
    114 # XScale v2 (Wireless MMX).
    115 define feature iwmmxt
    116 
    117 # XScale Wireless MMX2.
    118 define feature iwmmxt2
    119 
    120 # Architecture rel 8.1.
    121 define feature armv8_1
    122 
    123 # Architecture rel 8.2.
    124 define feature armv8_2
    125 
    126 # Architecture rel 8.3.
    127 define feature armv8_3
    128 
    129 # Architecture rel 8.4.
    130 define feature armv8_4
    131 
    132 # M-Profile security extensions.
    133 define feature cmse
    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 # (Very) slow multiply operations.  Should probably be a tuning bit.
    190 define feature smallmul
    191 
    192 # Feature groups.  Conventionally all (or mostly) upper case.
    193 # ALL_FPU lists all the feature bits associated with the floating-point
    194 # unit; these will all be removed if the floating-point unit is disabled
    195 # (eg -mfloat-abi=soft).  ALL_FPU_INTERNAL must ONLY contain features that
    196 # form part of a named -mfpu option; it is used to map the capabilities
    197 # back to a named FPU for the benefit of the assembler.
    198 #
    199 # ALL_SIMD_INTERNAL and ALL_SIMD are similarly defined to help with the
    200 # construction of ALL_FPU and ALL_FPU_INTERNAL; they describe the SIMD
    201 # extensions that are either part of a named FPU or optional extensions
    202 # respectively.
    203 
    204 
    205 # List of all cryptographic extensions to stripout if crypto is
    206 # disabled.  Currently, that's trivial, but we define it anyway for
    207 # consistency with the SIMD and FP disable lists.
    208 define fgroup ALL_CRYPTO	crypto
    209 
    210 # List of all SIMD bits to strip out if SIMD is disabled.  This does
    211 # strip off 32 D-registers, but does not remove support for
    212 # double-precision FP.
    213 define fgroup ALL_SIMD_INTERNAL	fp_d32 neon ALL_CRYPTO
    214 define fgroup ALL_SIMD	ALL_SIMD_INTERNAL dotprod fp16fml
    215 
    216 # List of all FPU bits to strip out if -mfpu is used to override the
    217 # default.  fp16 is deliberately missing from this list.
    218 define fgroup ALL_FPU_INTERNAL	vfpv2 vfpv3 vfpv4 fpv5 fp16conv fp_dbl ALL_SIMD_INTERNAL
    219 
    220 # Similarly, but including fp16 and other extensions that aren't part of
    221 # -mfpu support.
    222 define fgroup ALL_FP	fp16 ALL_FPU_INTERNAL
    223 
    224 define fgroup ARMv2       notm
    225 define fgroup ARMv3       ARMv2 mode32
    226 define fgroup ARMv3m      ARMv3 armv3m
    227 define fgroup ARMv4       ARMv3m armv4
    228 define fgroup ARMv4t      ARMv4 thumb
    229 define fgroup ARMv5       ARMv4 armv5
    230 define fgroup ARMv5t      ARMv5 thumb
    231 define fgroup ARMv5e      ARMv5 armv5e
    232 define fgroup ARMv5te     ARMv5e thumb
    233 define fgroup ARMv5tej    ARMv5te
    234 define fgroup ARMv6       ARMv5te armv6 be8
    235 define fgroup ARMv6j      ARMv6
    236 define fgroup ARMv6k      ARMv6 armv6k
    237 define fgroup ARMv6z      ARMv6
    238 define fgroup ARMv6kz     ARMv6k quirk_armv6kz
    239 define fgroup ARMv6zk     ARMv6k
    240 define fgroup ARMv6t2     ARMv6 thumb2
    241 # This is suspect.  ARMv6-m doesn't really pull in any useful features
    242 # from ARMv5* or ARMv6.
    243 define fgroup ARMv6m      mode32 armv3m armv4 thumb armv5 armv5e armv6 be8
    244 # This is suspect, the 'common' ARMv7 subset excludes the thumb2 'DSP' and
    245 # integer SIMD instructions that are in ARMv6T2.  */
    246 define fgroup ARMv7       ARMv6m thumb2 armv7
    247 
    248 define fgroup ARMv7a      ARMv7 notm armv6k
    249 define fgroup ARMv7ve     ARMv7a adiv tdiv lpae mp sec
    250 define fgroup ARMv7r      ARMv7a tdiv
    251 define fgroup ARMv7m      ARMv7 tdiv
    252 define fgroup ARMv7em     ARMv7m armv7em
    253 define fgroup ARMv8a      ARMv7ve armv8
    254 define fgroup ARMv8_1a    ARMv8a crc32 armv8_1
    255 define fgroup ARMv8_2a    ARMv8_1a armv8_2
    256 define fgroup ARMv8_3a    ARMv8_2a armv8_3
    257 define fgroup ARMv8_4a    ARMv8_3a armv8_4
    258 define fgroup ARMv8m_base ARMv6m armv8 cmse tdiv
    259 define fgroup ARMv8m_main ARMv7m armv8 cmse
    260 define fgroup ARMv8r      ARMv8a
    261 
    262 # Useful combinations.
    263 define fgroup VFPv2	vfpv2
    264 define fgroup VFPv3	VFPv2 vfpv3
    265 define fgroup VFPv4	VFPv3 vfpv4 fp16conv
    266 define fgroup FPv5	VFPv4 fpv5
    267 
    268 define fgroup FP_DBL	fp_dbl
    269 define fgroup FP_D32	FP_DBL fp_d32
    270 define fgroup FP_ARMv8	FPv5 FP_D32
    271 define fgroup NEON	FP_D32 neon
    272 define fgroup CRYPTO	NEON crypto
    273 define fgroup DOTPROD	NEON dotprod
    274 
    275 # List of all quirk bits to strip out when comparing CPU features with
    276 # architectures.
    277 # xscale isn't really a 'quirk', but it isn't an architecture either and we
    278 # need to ignore it for matching purposes.
    279 define fgroup ALL_QUIRKS   quirk_no_volatile_ce quirk_armv6kz quirk_cm3_ldrd xscale
    280 
    281 # Architecture entries
    282 # format:
    283 # begin arch <name>
    284 #   tune for <cpu>
    285 #   [tune flags <list>]
    286 #   base <name>
    287 #   [profile <A|R|M>]
    288 #   isa <isa-flags-list>
    289 # end arch <name>
    290 #
    291 
    292 begin arch armv2
    293  tune for arm2
    294  tune flags CO_PROC NO_MODE32
    295  base 2
    296  isa ARMv2 mode26
    297 end arch armv2
    298 
    299 begin arch armv2a
    300  tune for arm2
    301  tune flags CO_PROC NO_MODE32
    302  base 2
    303  isa ARMv2 mode26
    304 end arch armv2a
    305 
    306 begin arch armv3
    307  tune for arm6
    308  tune flags CO_PROC
    309  base 3
    310  isa ARMv3 mode26
    311 end arch armv3
    312 
    313 begin arch armv3m
    314  tune for arm7m
    315  tune flags CO_PROC
    316  base 3M
    317  isa ARMv3m mode26
    318 end arch armv3m
    319 
    320 begin arch armv4
    321  tune for arm7tdmi
    322  tune flags CO_PROC
    323  base 4
    324  isa ARMv4 mode26
    325 end arch armv4
    326 
    327 # Strictly, mode26 is a permitted option for v4t, but there are no
    328 # implementations that support it, so we will leave it out for now.
    329 begin arch armv4t
    330  tune for arm7tdmi
    331  tune flags CO_PROC
    332  base 4T
    333  isa ARMv4t
    334 end arch armv4t
    335 
    336 begin arch armv5
    337  tune for arm10tdmi
    338  tune flags CO_PROC
    339  base 5
    340  isa ARMv5
    341 end arch armv5
    342 
    343 begin arch armv5t
    344  tune for arm10tdmi
    345  tune flags CO_PROC
    346  base 5T
    347  isa ARMv5t
    348 end arch armv5t
    349 
    350 begin arch armv5e
    351  tune for arm1026ej-s
    352  tune flags CO_PROC
    353  base 5E
    354  isa ARMv5e
    355  option fp add VFPv2 FP_DBL
    356  optalias vfpv2 fp
    357  option nofp remove ALL_FP
    358 end arch armv5e
    359 
    360 begin arch armv5te
    361  tune for arm1026ej-s
    362  tune flags CO_PROC
    363  base 5TE
    364  isa ARMv5te
    365  option fp add VFPv2 FP_DBL
    366  optalias vfpv2 fp
    367  option nofp remove ALL_FP
    368 end arch armv5te
    369 
    370 begin arch armv5tej
    371  tune for arm1026ej-s
    372  tune flags CO_PROC
    373  base 5TEJ
    374  isa ARMv5tej
    375  option fp add VFPv2 FP_DBL
    376  optalias vfpv2 fp
    377  option nofp remove ALL_FP
    378 end arch armv5tej
    379 
    380 begin arch armv6
    381  tune for arm1136j-s
    382  tune flags CO_PROC
    383  base 6
    384  isa ARMv6
    385  option fp add VFPv2 FP_DBL
    386  optalias vfpv2 fp
    387  option nofp remove ALL_FP
    388 end arch armv6
    389 
    390 begin arch armv6j
    391  tune for arm1136j-s
    392  tune flags CO_PROC
    393  base 6J
    394  isa ARMv6j
    395  option fp add VFPv2 FP_DBL
    396  optalias vfpv2 fp
    397  option nofp remove ALL_FP
    398 end arch armv6j
    399 
    400 begin arch armv6k
    401  tune for mpcore
    402  tune flags CO_PROC
    403  base 6K
    404  isa ARMv6k
    405  option fp add VFPv2 FP_DBL
    406  optalias vfpv2 fp
    407  option nofp remove ALL_FP
    408 end arch armv6k
    409 
    410 begin arch armv6z
    411  tune for arm1176jz-s
    412  tune flags CO_PROC
    413  base 6Z
    414  isa ARMv6z
    415  option fp add VFPv2 FP_DBL
    416  optalias vfpv2 fp
    417  option nofp remove ALL_FP
    418 end arch armv6z
    419 
    420 begin arch armv6kz
    421  tune for arm1176jz-s
    422  tune flags CO_PROC
    423  base 6KZ
    424  isa ARMv6kz
    425  option fp add VFPv2 FP_DBL
    426  optalias vfpv2 fp
    427  option nofp remove ALL_FP
    428 end arch armv6kz
    429 
    430 begin arch armv6zk
    431  tune for arm1176jz-s
    432  tune flags CO_PROC
    433  base 6KZ
    434  isa ARMv6kz
    435  option fp add VFPv2 FP_DBL
    436  optalias vfpv2 fp
    437  option nofp remove ALL_FP
    438 end arch armv6zk
    439 
    440 begin arch armv6t2
    441  tune for arm1156t2-s
    442  tune flags CO_PROC
    443  base 6T2
    444  isa ARMv6t2
    445  option fp add VFPv2 FP_DBL
    446  optalias vfpv2 fp
    447  option nofp remove ALL_FP
    448 end arch armv6t2
    449 
    450 begin arch armv6-m
    451  tune for cortex-m1
    452  base 6M
    453  profile M
    454  isa ARMv6m
    455 end arch armv6-m
    456 
    457 # This is now equivalent to armv6-m, but we keep it because some
    458 # versions of GAS still distinguish between the two.
    459 begin arch armv6s-m
    460  tune for cortex-m1
    461  base 6M
    462  profile M
    463  isa ARMv6m
    464 end arch armv6s-m
    465 
    466 begin arch armv7
    467  tune for cortex-a8
    468  tune flags CO_PROC
    469  base 7
    470  isa ARMv7
    471 # fp => VFPv3-d16 (only useful for the A+R profile subset).
    472  option fp add VFPv3 FP_DBL
    473  optalias vfpv3-d16 fp
    474  option nofp remove ALL_FP
    475 end arch armv7
    476 
    477 begin arch armv7-a
    478  tune for cortex-a8
    479  tune flags CO_PROC
    480  base 7A
    481  profile A
    482  isa ARMv7a
    483  option mp	       add mp
    484  option sec	       add sec
    485 # fp => VFPv3-d16, simd => neon-vfpv3
    486  option fp	       add VFPv3 FP_DBL
    487  optalias vfpv3-d16    fp
    488  option vfpv3	       add VFPv3 FP_D32
    489  option vfpv3-d16-fp16 add VFPv3 FP_DBL fp16conv
    490  option vfpv3-fp16     add VFPv3 FP_DBL FP_D32 fp16conv
    491  option vfpv4-d16      add VFPv4 FP_DBL
    492  option vfpv4	       add VFPv4 FP_D32
    493  option simd	       add VFPv3 NEON
    494  optalias neon	       simd
    495  optalias neon-vfpv3   simd
    496  option neon-fp16      add VFPv3 NEON fp16conv
    497  option neon-vfpv4     add VFPv4 NEON
    498  option nosimd	    remove ALL_SIMD
    499  option nofp	    remove ALL_FP
    500 end arch armv7-a
    501 
    502 begin arch armv7ve
    503  tune for cortex-a8
    504  tune flags CO_PROC
    505  base 7A
    506  profile A
    507  isa ARMv7ve
    508 # fp => VFPv4-d16, simd => neon-vfpv4
    509  option vfpv3-d16      add VFPv3 FP_DBL
    510  option vfpv3 	       add VFPv3 FP_D32
    511  option vfpv3-d16-fp16 add VFPv3 FP_DBL fp16conv
    512  option vfpv3-fp16     add VFPv3 FP_DBL FP_D32 fp16conv
    513  option fp 	       add VFPv4 FP_DBL
    514  optalias vfpv4-d16    fp
    515  option vfpv4 	       add VFPv4 FP_D32
    516  option neon 	       add VFPv3 NEON
    517  optalias neon-vfpv3   neon
    518  option neon-fp16      add VFPv3 NEON fp16conv
    519  option simd 	       add VFPv4 NEON
    520  optalias neon-vfpv4   simd
    521  option nosimd	    remove ALL_SIMD
    522  option nofp	    remove ALL_FP
    523 end arch armv7ve
    524 
    525 begin arch armv7-r
    526  tune for cortex-r4
    527  tune flags CO_PROC
    528  base 7R
    529  profile R
    530  isa ARMv7r
    531 # ARMv7-r uses VFPv3-d16
    532  option fp.sp add VFPv3
    533  optalias vfpv3xd fp.sp
    534  option fp add VFPv3 FP_DBL
    535  optalias vfpv3-d16 fp
    536  option vfpv3xd-fp16 add VFPv3 fp16conv
    537  option vfpv3-d16-fp16 add VFPv3 FP_DBL fp16conv
    538  option idiv add adiv
    539  option nofp remove ALL_FP
    540  option noidiv remove adiv
    541 end arch armv7-r
    542 
    543 begin arch armv7-m
    544  tune for cortex-m3
    545  tune flags CO_PROC
    546  base 7M
    547  profile M
    548  isa ARMv7m
    549 # In theory FP is permitted in v7-m, but in practice no implementations exist.
    550 # leave it out for now.
    551 end arch armv7-m
    552 
    553 begin arch armv7e-m
    554  tune for cortex-m4
    555  tune flags CO_PROC
    556  base 7EM
    557  profile M
    558  isa ARMv7em
    559 # fp => VFPv4-sp-d16; fpv5 => FPv5-sp-d16; fp.dp => FPv5-d16
    560  option fp add VFPv4
    561  optalias vfpv4-sp-d16 fp
    562  option fpv5 add FPv5
    563  option fp.dp add FPv5 FP_DBL
    564  optalias fpv5-d16 fp.dp
    565  option nofp remove ALL_FP
    566 end arch armv7e-m
    567 
    568 begin arch armv8-a
    569  tune for cortex-a53
    570  tune flags CO_PROC
    571  base 8A
    572  profile A
    573  isa ARMv8a
    574  option crc add crc32
    575  option simd add FP_ARMv8 NEON
    576  option crypto add FP_ARMv8 CRYPTO
    577  option nocrypto remove ALL_CRYPTO
    578  option nofp remove ALL_FP
    579 end arch armv8-a
    580 
    581 begin arch armv8.1-a
    582  tune for cortex-a53
    583  tune flags CO_PROC
    584  base 8A
    585  profile A
    586  isa ARMv8_1a
    587  option simd add FP_ARMv8 NEON
    588  option crypto add FP_ARMv8 CRYPTO
    589  option nocrypto remove ALL_CRYPTO
    590  option nofp remove ALL_FP
    591 end arch armv8.1-a
    592 
    593 begin arch armv8.2-a
    594  tune for cortex-a53
    595  tune flags CO_PROC
    596  base 8A
    597  profile A
    598  isa ARMv8_2a
    599  option simd add FP_ARMv8 NEON
    600  option fp16 add fp16 FP_ARMv8 NEON
    601  option fp16fml add fp16fml fp16 FP_ARMv8 NEON
    602  option crypto add FP_ARMv8 CRYPTO
    603  option nocrypto remove ALL_CRYPTO
    604  option nofp remove ALL_FP
    605  option dotprod add FP_ARMv8 DOTPROD
    606 end arch armv8.2-a
    607 
    608 begin arch armv8.3-a
    609  tune for cortex-a53
    610  tune flags CO_PROC
    611  base 8A
    612  profile A
    613  isa ARMv8_3a
    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 end arch armv8.3-a
    622 
    623 begin arch armv8.4-a
    624  tune for cortex-a53
    625  tune flags CO_PROC
    626  base 8A
    627  profile A
    628  isa ARMv8_4a
    629  option simd add FP_ARMv8 DOTPROD
    630  option fp16 add fp16 fp16fml FP_ARMv8 DOTPROD
    631  option crypto add FP_ARMv8 CRYPTO DOTPROD
    632  option nocrypto remove ALL_CRYPTO
    633  option nofp remove ALL_FP
    634 end arch armv8.4-a
    635 
    636 begin arch armv8-m.base
    637  tune for cortex-m23
    638  base 8M_BASE
    639  profile M
    640  isa ARMv8m_base
    641 end arch armv8-m.base
    642 
    643 begin arch armv8-m.main
    644  tune for cortex-m7
    645  tune flags CO_PROC
    646  base 8M_MAIN
    647  profile M
    648  isa ARMv8m_main
    649  option dsp add armv7em
    650 # fp => FPv5-sp-d16; fp.dp => FPv5-d16
    651  option fp add FPv5
    652  option fp.dp add FPv5 FP_DBL
    653  option nofp remove ALL_FP
    654  option nodsp remove armv7em
    655 end arch armv8-m.main
    656 
    657 begin arch armv8-r
    658  tune for cortex-r52
    659  tune flags CO_PROC
    660  base 8R
    661  profile R
    662  isa ARMv8r
    663  option crc add crc32
    664 # fp.sp => fp-armv8 (d16); simd => simd + fp-armv8 + d32 + double precision
    665 # note: no fp option for fp-armv8 (d16) + double precision at the moment
    666  option fp.sp add FPv5
    667  option simd add FP_ARMv8 NEON
    668  option crypto add FP_ARMv8 CRYPTO
    669  option nocrypto remove ALL_CRYPTO
    670  option nofp remove ALL_FP
    671 end arch armv8-r
    672 
    673 begin arch iwmmxt
    674  tune for iwmmxt
    675  tune flags LDSCHED STRONG XSCALE
    676  base 5TE
    677  isa ARMv5te xscale iwmmxt
    678 end arch iwmmxt
    679 
    680 begin arch iwmmxt2
    681  tune for iwmmxt2
    682  tune flags LDSCHED STRONG XSCALE
    683  base 5TE
    684  isa ARMv5te xscale iwmmxt iwmmxt2
    685 end arch iwmmxt2
    686 
    687 # CPU entries
    688 # format:
    689 # begin cpu <name>
    690 #   [cname <c-compatible-name>]
    691 #   [tune for <cpu-name>]
    692 #   [tune flags <list>]
    693 #   architecture <name>
    694 #   [fpu <name>]
    695 #   [isa <additional-isa-flags-list>]
    696 #   [option <name> add|remove <isa-list>]*
    697 #   [optalias <name> <optname>]*
    698 #   [costs <name>]
    699 # end cpu <name>
    700 #
    701 # If omitted, cname is formed from transforming the cpuname to convert
    702 # non-valid punctuation characters to '_'.
    703 # If specified, tune for specifies a CPU target to use for tuning this core.
    704 # isa flags are appended to those defined by the architecture.
    705 # Each add option must have a distinct feature set and each remove
    706 # option must similarly have a distinct feature set.  Option aliases can be
    707 # added with the optalias statement
    708 
    709 # V2/V2A Architecture Processors
    710 begin cpu arm2
    711  tune flags CO_PROC NO_MODE32
    712  architecture armv2
    713  costs slowmul
    714 end cpu arm2
    715 
    716 begin cpu arm250
    717  tune flags CO_PROC NO_MODE32
    718  architecture armv2
    719  costs slowmul
    720 end cpu arm250
    721 
    722 begin cpu arm3
    723  tune flags CO_PROC NO_MODE32
    724  architecture armv2
    725  costs slowmul
    726 end cpu arm3
    727 
    728 
    729 # V3 Architecture Processors
    730 begin cpu arm6
    731  tune flags CO_PROC
    732  architecture armv3
    733  costs slowmul
    734 end cpu arm6
    735 
    736 begin cpu arm60
    737  tune flags CO_PROC
    738  architecture armv3
    739  costs slowmul
    740 end cpu arm60
    741 
    742 begin cpu arm600
    743  tune flags CO_PROC WBUF
    744  architecture armv3
    745  costs slowmul
    746 end cpu arm600
    747 
    748 begin cpu arm610
    749  tune flags WBUF
    750  architecture armv3
    751  costs slowmul
    752 end cpu arm610
    753 
    754 begin cpu arm620
    755  tune flags CO_PROC WBUF
    756  architecture armv3
    757  costs slowmul
    758 end cpu arm620
    759 
    760 begin cpu arm7
    761  tune flags CO_PROC
    762  architecture armv3
    763  costs slowmul
    764 end cpu arm7
    765 
    766 begin cpu arm7d
    767  tune flags CO_PROC
    768  architecture armv3
    769  costs slowmul
    770 end cpu arm7d
    771 
    772 begin cpu arm7di
    773  tune flags CO_PROC
    774  architecture armv3
    775  costs slowmul
    776 end cpu arm7di
    777 
    778 begin cpu arm70
    779  tune flags CO_PROC
    780  architecture armv3
    781  costs slowmul
    782 end cpu arm70
    783 
    784 begin cpu arm700
    785  tune flags CO_PROC WBUF
    786  architecture armv3
    787  costs slowmul
    788 end cpu arm700
    789 
    790 begin cpu arm700i
    791  tune flags CO_PROC WBUF
    792  architecture armv3
    793  costs slowmul
    794 end cpu arm700i
    795 
    796 begin cpu arm710
    797  tune flags WBUF
    798  architecture armv3
    799  costs slowmul
    800 end cpu arm710
    801 
    802 begin cpu arm720
    803  tune flags WBUF
    804  architecture armv3
    805  costs slowmul
    806 end cpu arm720
    807 
    808 begin cpu arm710c
    809  tune flags WBUF
    810  architecture armv3
    811  costs slowmul
    812 end cpu arm710c
    813 
    814 begin cpu arm7100
    815  tune flags WBUF
    816  architecture armv3
    817  costs slowmul
    818 end cpu arm7100
    819 
    820 begin cpu arm7500
    821  tune flags WBUF
    822  architecture armv3
    823  costs slowmul
    824 end cpu arm7500
    825 
    826 # Doesn't have an external co-proc, but does have embedded FPA
    827 # (the FPA part is no-longer supported).
    828 begin cpu arm7500fe
    829  tune flags CO_PROC WBUF
    830  architecture armv3
    831  costs slowmul
    832 end cpu arm7500fe
    833 
    834 
    835 # V3M Architecture Processors
    836 # arm7m doesn't exist on its own, but only with "D", (and "I"), but
    837 # those don't alter the code, so arm7m is sometimes used.
    838 begin cpu arm7m
    839  tune flags CO_PROC
    840  architecture armv3m
    841  costs fastmul
    842 end cpu arm7m
    843 
    844 begin cpu arm7dm
    845  tune flags CO_PROC
    846  architecture armv3m
    847  costs fastmul
    848 end cpu arm7dm
    849 
    850 begin cpu arm7dmi
    851  tune flags CO_PROC
    852  architecture armv3m
    853  costs fastmul
    854 end cpu arm7dmi
    855 
    856 
    857 # V4 Architecture Processors
    858 begin cpu arm8
    859  tune flags LDSCHED
    860  architecture armv4
    861  costs fastmul
    862 end cpu arm8
    863 
    864 begin cpu arm810
    865  tune flags LDSCHED
    866  architecture armv4
    867  costs fastmul
    868 end cpu arm810
    869 
    870 begin cpu strongarm
    871  tune flags LDSCHED STRONG
    872  architecture armv4
    873  costs strongarm
    874 end cpu strongarm
    875 
    876 begin cpu strongarm110
    877  tune flags LDSCHED STRONG
    878  architecture armv4
    879  costs strongarm
    880 end cpu strongarm110
    881 
    882 begin cpu strongarm1100
    883  tune flags LDSCHED STRONG
    884  architecture armv4
    885  costs strongarm
    886 end cpu strongarm1100
    887 
    888 begin cpu strongarm1110
    889  tune flags LDSCHED STRONG
    890  architecture armv4
    891  costs strongarm
    892 end cpu strongarm1110
    893 
    894 begin cpu fa526
    895  tune flags LDSCHED
    896  architecture armv4
    897  costs fastmul
    898 end cpu fa526
    899 
    900 begin cpu fa626
    901  tune flags LDSCHED
    902  architecture armv4
    903  costs fastmul
    904 end cpu fa626
    905 
    906 
    907 # V4T Architecture Processors
    908 begin cpu arm7tdmi
    909  tune flags CO_PROC
    910  architecture armv4t
    911  costs fastmul
    912 end cpu arm7tdmi
    913 
    914 begin cpu arm7tdmi-s
    915  cname arm7tdmis
    916  tune flags CO_PROC
    917  architecture armv4t
    918  costs fastmul
    919 end cpu arm7tdmi-s
    920 
    921 begin cpu arm710t
    922  tune flags WBUF
    923  architecture armv4t
    924  costs fastmul
    925 end cpu arm710t
    926 
    927 begin cpu arm720t
    928  tune flags WBUF
    929  architecture armv4t
    930  costs fastmul
    931 end cpu arm720t
    932 
    933 begin cpu arm740t
    934  tune flags WBUF
    935  architecture armv4t
    936  costs fastmul
    937 end cpu arm740t
    938 
    939 begin cpu arm9
    940  tune flags LDSCHED
    941  architecture armv4t
    942  costs fastmul
    943 end cpu arm9
    944 
    945 begin cpu arm9tdmi
    946  tune flags LDSCHED
    947  architecture armv4t
    948  costs fastmul
    949 end cpu arm9tdmi
    950 
    951 begin cpu arm920
    952  tune flags LDSCHED
    953  architecture armv4t
    954  costs fastmul
    955 end cpu arm920
    956 
    957 begin cpu arm920t
    958  tune flags LDSCHED
    959  architecture armv4t
    960  costs fastmul
    961 end cpu arm920t
    962 
    963 begin cpu arm922t
    964  tune flags LDSCHED
    965  architecture armv4t
    966  costs fastmul
    967 end cpu arm922t
    968 
    969 begin cpu arm940t
    970  tune flags LDSCHED
    971  architecture armv4t
    972  costs fastmul
    973 end cpu arm940t
    974 
    975 begin cpu ep9312
    976  tune flags LDSCHED
    977  architecture armv4t
    978  costs fastmul
    979 end cpu ep9312
    980 
    981 
    982 # V5T Architecture Processors
    983 # These used VFPv1 which isn't supported by GCC
    984 begin cpu arm10tdmi
    985  tune flags LDSCHED
    986  architecture armv5t
    987  costs fastmul
    988 end cpu arm10tdmi
    989 
    990 begin cpu arm1020t
    991  tune flags LDSCHED
    992  architecture armv5t
    993  costs fastmul
    994 end cpu arm1020t
    995 
    996 
    997 # V5TE Architecture Processors
    998 begin cpu arm9e
    999  tune flags LDSCHED
   1000  architecture armv5te
   1001  fpu vfpv2
   1002  option nofp remove ALL_FP
   1003  costs 9e
   1004 end cpu arm9e
   1005 
   1006 begin cpu arm946e-s
   1007  cname arm946es
   1008  tune flags LDSCHED
   1009  architecture armv5te
   1010  fpu vfpv2
   1011  option nofp remove ALL_FP
   1012  costs 9e
   1013 end cpu arm946e-s
   1014 
   1015 begin cpu arm966e-s
   1016  cname arm966es
   1017  tune flags LDSCHED
   1018  architecture armv5te
   1019  fpu vfpv2
   1020  option nofp remove ALL_FP
   1021  costs 9e
   1022 end cpu arm966e-s
   1023 
   1024 begin cpu arm968e-s
   1025  cname arm968es
   1026  tune flags LDSCHED
   1027  architecture armv5te
   1028  fpu vfpv2
   1029  option nofp remove ALL_FP
   1030  costs 9e
   1031 end cpu arm968e-s
   1032 
   1033 begin cpu arm10e
   1034  tune flags LDSCHED
   1035  architecture armv5te
   1036  fpu vfpv2
   1037  option nofp remove ALL_FP
   1038  costs fastmul
   1039 end cpu arm10e
   1040 
   1041 begin cpu arm1020e
   1042  tune flags LDSCHED
   1043  architecture armv5te
   1044  fpu vfpv2
   1045  option nofp remove ALL_FP
   1046  costs fastmul
   1047 end cpu arm1020e
   1048 
   1049 begin cpu arm1022e
   1050  tune flags LDSCHED
   1051  architecture armv5te
   1052  fpu vfpv2
   1053  option nofp remove ALL_FP
   1054  costs fastmul
   1055 end cpu arm1022e
   1056 
   1057 begin cpu xscale
   1058  tune flags LDSCHED XSCALE
   1059  architecture armv5te
   1060  isa xscale
   1061  costs xscale
   1062 end cpu xscale
   1063 
   1064 begin cpu iwmmxt
   1065  tune flags LDSCHED XSCALE
   1066  architecture iwmmxt
   1067  costs xscale
   1068 end cpu iwmmxt
   1069 
   1070 begin cpu iwmmxt2
   1071  tune flags LDSCHED XSCALE
   1072  architecture iwmmxt2
   1073  costs xscale
   1074 end cpu iwmmxt2
   1075 
   1076 begin cpu fa606te
   1077  tune flags LDSCHED
   1078  architecture armv5te
   1079  costs 9e
   1080 end cpu fa606te
   1081 
   1082 begin cpu fa626te
   1083  tune flags LDSCHED
   1084  architecture armv5te
   1085  costs 9e
   1086 end cpu fa626te
   1087 
   1088 begin cpu fmp626
   1089  tune flags LDSCHED
   1090  architecture armv5te
   1091  costs 9e
   1092 end cpu fmp626
   1093 
   1094 begin cpu fa726te
   1095  tune flags LDSCHED
   1096  architecture armv5te
   1097  costs fa726te
   1098 end cpu fa726te
   1099 
   1100 
   1101 # V5TEJ Architecture Processors
   1102 begin cpu arm926ej-s
   1103  cname arm926ejs
   1104  tune flags LDSCHED
   1105  architecture armv5tej
   1106  fpu vfpv2
   1107  option nofp remove ALL_FP
   1108  costs 9e
   1109 end cpu arm926ej-s
   1110 
   1111 begin cpu arm1026ej-s
   1112  cname arm1026ejs
   1113  tune flags LDSCHED
   1114  architecture armv5tej
   1115  fpu vfpv2
   1116  option nofp remove ALL_FP
   1117  costs 9e
   1118 end cpu arm1026ej-s
   1119 
   1120 
   1121 # V6 Architecture Processors
   1122 begin cpu arm1136j-s
   1123  cname arm1136js
   1124  tune flags LDSCHED
   1125  architecture armv6j
   1126  costs 9e
   1127 end cpu arm1136j-s
   1128 
   1129 begin cpu arm1136jf-s
   1130  cname arm1136jfs
   1131  tune flags LDSCHED
   1132  architecture armv6j
   1133  fpu vfpv2
   1134  costs 9e
   1135 end cpu arm1136jf-s
   1136 
   1137 begin cpu arm1176jz-s
   1138  cname arm1176jzs
   1139  tune flags LDSCHED
   1140  architecture armv6kz
   1141  costs 9e
   1142 end cpu arm1176jz-s
   1143 
   1144 begin cpu arm1176jzf-s
   1145  cname arm1176jzfs
   1146  tune flags LDSCHED
   1147  architecture armv6kz
   1148  fpu vfpv2
   1149  costs 9e
   1150 end cpu arm1176jzf-s
   1151 
   1152 begin cpu mpcorenovfp
   1153  tune flags LDSCHED
   1154  architecture armv6k
   1155  costs 9e
   1156 end cpu mpcorenovfp
   1157 
   1158 begin cpu mpcore
   1159  tune flags LDSCHED
   1160  architecture armv6k
   1161  fpu vfpv2
   1162  costs 9e
   1163 end cpu mpcore
   1164 
   1165 begin cpu arm1156t2-s
   1166  cname arm1156t2s
   1167  tune flags LDSCHED
   1168  architecture armv6t2
   1169  costs v6t2
   1170 end cpu arm1156t2-s
   1171 
   1172 begin cpu arm1156t2f-s
   1173  cname arm1156t2fs
   1174  tune flags LDSCHED
   1175  architecture armv6t2
   1176  fpu vfpv2
   1177  costs v6t2
   1178 end cpu arm1156t2f-s
   1179 
   1180 
   1181 # V6M Architecture Processors
   1182 begin cpu cortex-m1
   1183  cname cortexm1
   1184  tune flags LDSCHED
   1185  architecture armv6s-m
   1186  costs v6m
   1187 end cpu cortex-m1
   1188 
   1189 begin cpu cortex-m0
   1190  cname cortexm0
   1191  tune flags LDSCHED
   1192  architecture armv6s-m
   1193  costs v6m
   1194 end cpu cortex-m0
   1195 
   1196 begin cpu cortex-m0plus
   1197  cname cortexm0plus
   1198  tune flags LDSCHED
   1199  architecture armv6s-m
   1200  costs v6m
   1201 end cpu cortex-m0plus
   1202 
   1203 
   1204 # V6M Architecture Processors for small-multiply implementations.
   1205 begin cpu cortex-m1.small-multiply
   1206  cname cortexm1smallmultiply
   1207  tune for cortex-m1
   1208  tune flags LDSCHED SMALLMUL
   1209  architecture armv6s-m
   1210  costs v6m
   1211 end cpu cortex-m1.small-multiply
   1212 
   1213 begin cpu cortex-m0.small-multiply
   1214  cname cortexm0smallmultiply
   1215  tune for cortex-m0
   1216  tune flags LDSCHED SMALLMUL
   1217  architecture armv6s-m
   1218  costs v6m
   1219 end cpu cortex-m0.small-multiply
   1220 
   1221 begin cpu cortex-m0plus.small-multiply
   1222  cname cortexm0plussmallmultiply
   1223  tune for cortex-m0plus
   1224  tune flags LDSCHED SMALLMUL
   1225  architecture armv6s-m
   1226  costs v6m
   1227 end cpu cortex-m0plus.small-multiply
   1228 
   1229 
   1230 # V7 Architecture Processors
   1231 begin cpu generic-armv7-a
   1232  cname genericv7a
   1233  tune flags LDSCHED
   1234  architecture armv7-a
   1235  option mp add mp
   1236  option sec add sec
   1237  fpu vfpv3-d16
   1238  option vfpv3-d16 add VFPv3 FP_DBL
   1239  option vfpv3 add VFPv3 FP_D32
   1240  option vfpv3-d16-fp16 add VFPv3 FP_DBL fp16conv
   1241  option vfpv3-fp16 add VFPv3 FP_D32 fp16conv
   1242  option vfpv4-d16 add VFPv4 FP_DBL
   1243  option vfpv4 add VFPv4 FP_D32
   1244  option simd add VFPv3 NEON
   1245  optalias neon simd
   1246  optalias neon-vfpv3 simd
   1247  option neon-fp16 add VFPv3 NEON fp16conv
   1248  option neon-vfpv4 add VFPv4 NEON
   1249  option nosimd remove ALL_SIMD
   1250  option nofp remove ALL_FP
   1251  costs cortex
   1252 end cpu generic-armv7-a
   1253 
   1254 begin cpu cortex-a5
   1255  cname cortexa5
   1256  tune flags LDSCHED
   1257  architecture armv7-a+mp+sec
   1258  fpu neon-fp16
   1259  option nosimd remove ALL_SIMD
   1260  option nofp remove ALL_FP
   1261  costs cortex_a5
   1262 end cpu cortex-a5
   1263 
   1264 begin cpu cortex-a7
   1265  cname cortexa7
   1266  tune flags LDSCHED
   1267  architecture armv7ve
   1268  fpu neon-vfpv4
   1269  option nosimd remove ALL_SIMD
   1270  option nofp remove ALL_FP
   1271  costs cortex_a7
   1272 end cpu cortex-a7
   1273 
   1274 begin cpu cortex-a8
   1275  cname cortexa8
   1276  tune flags LDSCHED
   1277  architecture armv7-a+sec
   1278  fpu neon-vfpv3
   1279  option nofp remove ALL_FP
   1280  costs cortex_a8
   1281 end cpu cortex-a8
   1282 
   1283 begin cpu cortex-a9
   1284  cname cortexa9
   1285  tune flags LDSCHED
   1286  architecture armv7-a+mp+sec
   1287  fpu neon-fp16
   1288  option nosimd remove ALL_SIMD
   1289  option nofp remove ALL_FP
   1290  costs cortex_a9
   1291 end cpu cortex-a9
   1292 
   1293 begin cpu cortex-a12
   1294  cname cortexa12
   1295  tune for cortex-a17
   1296  tune flags LDSCHED
   1297  architecture armv7ve
   1298  fpu neon-vfpv4
   1299  option nofp remove ALL_FP
   1300  costs cortex_a12
   1301 end cpu cortex-a12
   1302 
   1303 begin cpu cortex-a15
   1304  cname cortexa15
   1305  tune flags LDSCHED
   1306  architecture armv7ve
   1307  fpu neon-vfpv4
   1308  option nofp remove ALL_FP
   1309  costs cortex_a15
   1310 end cpu cortex-a15
   1311 
   1312 begin cpu cortex-a17
   1313  cname cortexa17
   1314  tune flags LDSCHED
   1315  architecture armv7ve
   1316  fpu neon-vfpv4
   1317  option nofp remove ALL_FP
   1318  costs cortex_a12
   1319 end cpu cortex-a17
   1320 
   1321 begin cpu cortex-r4
   1322  cname cortexr4
   1323  tune flags LDSCHED
   1324  architecture armv7-r
   1325  costs cortex
   1326 end cpu cortex-r4
   1327 
   1328 begin cpu cortex-r4f
   1329  cname cortexr4f
   1330  tune flags LDSCHED
   1331  architecture armv7-r
   1332  fpu vfpv3-d16
   1333  costs cortex
   1334 end cpu cortex-r4f
   1335 
   1336 begin cpu cortex-r5
   1337  cname cortexr5
   1338  tune flags LDSCHED
   1339  architecture armv7-r+idiv
   1340  fpu vfpv3-d16
   1341  option nofp.dp remove FP_DBL
   1342  option nofp remove ALL_FP
   1343  costs cortex
   1344 end cpu cortex-r5
   1345 
   1346 begin cpu cortex-r7
   1347  cname cortexr7
   1348  tune flags LDSCHED
   1349  architecture armv7-r+idiv
   1350  fpu vfpv3-d16-fp16
   1351  option nofp.dp remove FP_DBL
   1352  option nofp remove ALL_FP
   1353  costs cortex
   1354 end cpu cortex-r7
   1355 
   1356 begin cpu cortex-r8
   1357  cname cortexr8
   1358  tune for cortex-r7
   1359  tune flags LDSCHED
   1360  architecture armv7-r+idiv
   1361  fpu vfpv3-d16-fp16
   1362  option nofp.dp remove FP_DBL
   1363  option nofp remove ALL_FP
   1364  costs cortex
   1365 end cpu cortex-r8
   1366 
   1367 begin cpu cortex-m7
   1368  cname cortexm7
   1369  tune flags LDSCHED
   1370  architecture armv7e-m
   1371  isa quirk_no_volatile_ce
   1372  fpu fpv5-d16
   1373  option nofp.dp remove FP_DBL
   1374  option nofp remove ALL_FP
   1375  costs cortex_m7
   1376 end cpu cortex-m7
   1377 
   1378 begin cpu cortex-m4
   1379  cname cortexm4
   1380  tune flags LDSCHED
   1381  architecture armv7e-m
   1382  fpu fpv4-sp-d16
   1383  option nofp remove ALL_FP
   1384  costs v7m
   1385 end cpu cortex-m4
   1386 
   1387 begin cpu cortex-m3
   1388  cname cortexm3
   1389  tune flags LDSCHED
   1390  architecture armv7-m
   1391  isa quirk_cm3_ldrd
   1392  costs v7m
   1393 end cpu cortex-m3
   1394 
   1395 begin cpu marvell-pj4
   1396  tune flags LDSCHED
   1397  architecture armv7-a+mp+sec
   1398  costs marvell_pj4
   1399 end cpu marvell-pj4
   1400 
   1401 
   1402 # V7 big.LITTLE implementations
   1403 begin cpu cortex-a15.cortex-a7
   1404  cname cortexa15cortexa7
   1405  tune for cortex-a7
   1406  tune flags LDSCHED
   1407  architecture armv7ve
   1408  fpu neon-vfpv4
   1409  option nofp remove ALL_FP
   1410  costs cortex_a15
   1411 end cpu cortex-a15.cortex-a7
   1412 
   1413 begin cpu cortex-a17.cortex-a7
   1414  cname cortexa17cortexa7
   1415  tune for cortex-a7
   1416  tune flags LDSCHED
   1417  architecture armv7ve
   1418  fpu neon-vfpv4
   1419  option nofp remove ALL_FP
   1420  costs cortex_a12
   1421 end cpu cortex-a17.cortex-a7
   1422 
   1423 
   1424 # V8 A-profile Architecture Processors
   1425 begin cpu cortex-a32
   1426  cname cortexa32
   1427  tune for cortex-a53
   1428  tune flags LDSCHED
   1429  architecture armv8-a+crc
   1430  fpu neon-fp-armv8
   1431  option crypto add FP_ARMv8 CRYPTO
   1432  option nofp remove ALL_FP
   1433  costs cortex_a35
   1434 end cpu cortex-a32
   1435 
   1436 begin cpu cortex-a35
   1437  cname cortexa35
   1438  tune for cortex-a53
   1439  tune flags LDSCHED
   1440  architecture armv8-a+crc
   1441  fpu neon-fp-armv8
   1442  option crypto add FP_ARMv8 CRYPTO
   1443  option nofp remove ALL_FP
   1444  costs cortex_a35
   1445 end cpu cortex-a35
   1446 
   1447 begin cpu cortex-a53
   1448  cname cortexa53
   1449  tune flags LDSCHED
   1450  architecture armv8-a+crc
   1451  fpu neon-fp-armv8
   1452  option crypto add FP_ARMv8 CRYPTO
   1453  option nofp remove ALL_FP
   1454  costs cortex_a53
   1455 end cpu cortex-a53
   1456 
   1457 begin cpu cortex-a57
   1458  cname cortexa57
   1459  tune flags LDSCHED
   1460  architecture armv8-a+crc
   1461  fpu neon-fp-armv8
   1462  option crypto add FP_ARMv8 CRYPTO
   1463  costs cortex_a57
   1464 end cpu cortex-a57
   1465 
   1466 begin cpu cortex-a72
   1467  cname cortexa72
   1468  tune for cortex-a57
   1469  tune flags LDSCHED
   1470  architecture armv8-a+crc
   1471  fpu neon-fp-armv8
   1472  option crypto add FP_ARMv8 CRYPTO
   1473  costs cortex_a57
   1474 end cpu cortex-a72
   1475 
   1476 begin cpu cortex-a73
   1477  cname cortexa73
   1478  tune for cortex-a57
   1479  tune flags LDSCHED
   1480  architecture armv8-a+crc
   1481  fpu neon-fp-armv8
   1482  option crypto add FP_ARMv8 CRYPTO
   1483  costs cortex_a73
   1484 end cpu cortex-a73
   1485 
   1486 begin cpu exynos-m1
   1487  cname exynosm1
   1488  tune flags LDSCHED
   1489  architecture armv8-a+crc
   1490  fpu neon-fp-armv8
   1491  option crypto add FP_ARMv8 CRYPTO
   1492  costs exynosm1
   1493 end cpu exynos-m1
   1494 
   1495 begin cpu xgene1
   1496  tune flags LDSCHED
   1497  architecture armv8-a
   1498  fpu neon-fp-armv8
   1499  option crypto add FP_ARMv8 CRYPTO
   1500  costs xgene1
   1501 end cpu xgene1
   1502 
   1503 # V8 A-profile big.LITTLE implementations
   1504 begin cpu cortex-a57.cortex-a53
   1505  cname cortexa57cortexa53
   1506  tune for cortex-a53
   1507  tune flags LDSCHED
   1508  architecture armv8-a+crc
   1509  fpu neon-fp-armv8
   1510  option crypto add FP_ARMv8 CRYPTO
   1511  costs cortex_a57
   1512 end cpu cortex-a57.cortex-a53
   1513 
   1514 begin cpu cortex-a72.cortex-a53
   1515  cname cortexa72cortexa53
   1516  tune for cortex-a53
   1517  tune flags LDSCHED
   1518  architecture armv8-a+crc
   1519  fpu neon-fp-armv8
   1520  option crypto add FP_ARMv8 CRYPTO
   1521  costs cortex_a57
   1522 end cpu cortex-a72.cortex-a53
   1523 
   1524 begin cpu cortex-a73.cortex-a35
   1525  cname cortexa73cortexa35
   1526  tune for cortex-a53
   1527  tune flags LDSCHED
   1528  architecture armv8-a+crc
   1529  fpu neon-fp-armv8
   1530  option crypto add FP_ARMv8 CRYPTO
   1531  costs cortex_a73
   1532 end cpu cortex-a73.cortex-a35
   1533 
   1534 begin cpu cortex-a73.cortex-a53
   1535  cname cortexa73cortexa53
   1536  tune for cortex-a53
   1537  tune flags LDSCHED
   1538  architecture armv8-a+crc
   1539  fpu neon-fp-armv8
   1540  option crypto add FP_ARMv8 CRYPTO
   1541  costs cortex_a73
   1542 end cpu cortex-a73.cortex-a53
   1543 
   1544 
   1545 # ARMv8.2 A-profile Architecture Processors
   1546 begin cpu cortex-a55
   1547  cname cortexa55
   1548  tune for cortex-a53
   1549  tune flags LDSCHED
   1550  architecture armv8.2-a+fp16+dotprod
   1551  fpu neon-fp-armv8
   1552  option crypto add FP_ARMv8 CRYPTO
   1553  option nofp remove ALL_FP
   1554  costs cortex_a53
   1555 end cpu cortex-a55
   1556 
   1557 begin cpu cortex-a75
   1558  cname cortexa75
   1559  tune for cortex-a57
   1560  tune flags LDSCHED
   1561  architecture armv8.2-a+fp16+dotprod
   1562  fpu neon-fp-armv8
   1563  option crypto add FP_ARMv8 CRYPTO
   1564  costs cortex_a73
   1565 end cpu cortex-a75
   1566 
   1567 
   1568 # ARMv8.2 A-profile ARM DynamIQ big.LITTLE implementations
   1569 begin cpu cortex-a75.cortex-a55
   1570  cname cortexa75cortexa55
   1571  tune for cortex-a53
   1572  tune flags LDSCHED
   1573  architecture armv8.2-a+fp16+dotprod
   1574  fpu neon-fp-armv8
   1575  option crypto add FP_ARMv8 CRYPTO
   1576  costs cortex_a73
   1577 end cpu cortex-a75.cortex-a55
   1578 
   1579 # V8 M-profile implementations.
   1580 begin cpu cortex-m23
   1581  cname cortexm23
   1582  tune flags LDSCHED
   1583  architecture armv8-m.base
   1584  costs v6m
   1585 end cpu cortex-m23
   1586 
   1587 begin cpu cortex-m33
   1588  cname cortexm33
   1589  tune flags LDSCHED
   1590  architecture armv8-m.main+dsp
   1591  fpu fpv5-sp-d16
   1592  option nofp remove ALL_FP
   1593  option nodsp remove armv7em
   1594  costs v7m
   1595 end cpu cortex-m33
   1596 
   1597 # V8 R-profile implementations.
   1598 begin cpu cortex-r52
   1599  cname cortexr52
   1600  tune flags LDSCHED
   1601  architecture armv8-r+crc+simd
   1602  fpu neon-fp-armv8
   1603  option nofp.dp remove FP_DBL ALL_SIMD
   1604  costs cortex
   1605 end cpu cortex-r52
   1606 
   1607 # FPU entries
   1608 # format:
   1609 # begin fpu <name>
   1610 #   isa <isa-flags-list>
   1611 # end fpu <name>
   1612 
   1613 begin fpu vfp
   1614  isa VFPv2 FP_DBL
   1615 end fpu vfp
   1616 
   1617 begin fpu vfpv2
   1618  isa VFPv2 FP_DBL
   1619 end fpu vfpv2
   1620 
   1621 begin fpu vfpv3
   1622  isa VFPv3 FP_D32
   1623 end fpu vfpv3
   1624 
   1625 begin fpu vfpv3-fp16
   1626  isa VFPv3 FP_D32 fp16conv
   1627 end fpu vfpv3-fp16
   1628 
   1629 begin fpu vfpv3-d16
   1630  isa VFPv3 FP_DBL
   1631 end fpu vfpv3-d16
   1632 
   1633 begin fpu vfpv3-d16-fp16
   1634  isa VFPv3 FP_DBL fp16conv
   1635 end fpu vfpv3-d16-fp16
   1636 
   1637 begin fpu vfpv3xd
   1638  isa VFPv3
   1639 end fpu vfpv3xd
   1640 
   1641 begin fpu vfpv3xd-fp16
   1642  isa VFPv3 fp16conv
   1643 end fpu vfpv3xd-fp16
   1644 
   1645 begin fpu neon
   1646  isa VFPv3 NEON
   1647 end fpu neon
   1648 
   1649 begin fpu neon-vfpv3
   1650  isa VFPv3 NEON
   1651 end fpu neon-vfpv3
   1652 
   1653 begin fpu neon-fp16
   1654  isa VFPv3 NEON fp16conv
   1655 end fpu neon-fp16
   1656 
   1657 begin fpu vfpv4
   1658  isa VFPv4 FP_D32
   1659 end fpu vfpv4
   1660 
   1661 begin fpu neon-vfpv4
   1662  isa VFPv4 NEON
   1663 end fpu neon-vfpv4
   1664 
   1665 begin fpu vfpv4-d16
   1666  isa VFPv4 FP_DBL
   1667 end fpu vfpv4-d16
   1668 
   1669 begin fpu fpv4-sp-d16
   1670  isa VFPv4
   1671 end fpu fpv4-sp-d16
   1672 
   1673 begin fpu fpv5-sp-d16
   1674  isa FPv5
   1675 end fpu fpv5-sp-d16
   1676 
   1677 begin fpu fpv5-d16
   1678  isa FPv5 FP_DBL
   1679 end fpu fpv5-d16
   1680 
   1681 begin fpu fp-armv8
   1682  isa FP_ARMv8
   1683 end fpu fp-armv8
   1684 
   1685 begin fpu neon-fp-armv8
   1686  isa FP_ARMv8 NEON
   1687 end fpu neon-fp-armv8
   1688 
   1689 begin fpu crypto-neon-fp-armv8
   1690  isa FP_ARMv8 CRYPTO
   1691 end fpu crypto-neon-fp-armv8
   1692 
   1693 # Compatibility aliases.
   1694 begin fpu vfp3
   1695  isa VFPv3 FP_D32
   1696 end fpu vfp3
   1697