Mercurial > hg > CbC > CbC_gcc
diff gcc/config/arm/arm-cpus.in @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | 84e7813d76e9 |
children |
line wrap: on
line diff
--- a/gcc/config/arm/arm-cpus.in Thu Oct 25 07:37:49 2018 +0900 +++ b/gcc/config/arm/arm-cpus.in Thu Feb 13 11:34:05 2020 +0900 @@ -1,6 +1,6 @@ # CPU, FPU and architecture specifications for ARM. # -# Copyright (C) 2011-2018 Free Software Foundation, Inc. +# Copyright (C) 2011-2020 Free Software Foundation, Inc. # # This file is part of GCC. # @@ -87,6 +87,12 @@ # Architecture rel 7. define feature armv7 +# MP extension to ArmV7-A +define feature mp + +# SEC extension to ArmV7-A +define feature sec + # ARM division instructions. define feature adiv @@ -114,9 +120,18 @@ # Architecture rel 8.4. define feature armv8_4 +# Architecture rel 8.5. +define feature armv8_5 + +# Architecture rel 8.6. +define feature armv8_6 + # M-Profile security extensions. define feature cmse +# Architecture rel 8.1-M. +define feature armv8_1m_main + # Floating point and Neon extensions. # VFPv1 is not supported in GCC. @@ -174,6 +189,24 @@ # (Very) slow multiply operations. Should probably be a tuning bit. define feature smallmul +# Speculation Barrier Instruction for v8-A architectures, added by +# default to v8.5-A +define feature sb + +# Execution and Data Prediction Restriction Instruction for +# v8-A architectures, added by default from v8.5-A +define feature predres + +# M-profile Vector Extension feature bits +define feature mve +define feature mve_float + +# 8-bit Integer Matrix Multiply extension. Optional from v8.2-A. +define feature i8mm + +# Brain half-precision floating-point extension. Optional from v8.2-A. +define feature bf16 + # Feature groups. Conventionally all (or mostly) upper case. # ALL_FPU lists all the feature bits associated with the floating-point # unit; these will all be removed if the floating-point unit is disabled @@ -196,37 +229,40 @@ # strip off 32 D-registers, but does not remove support for # double-precision FP. define fgroup ALL_SIMD_INTERNAL fp_d32 neon ALL_CRYPTO -define fgroup ALL_SIMD ALL_SIMD_INTERNAL dotprod fp16fml +define fgroup ALL_SIMD_EXTERNAL dotprod fp16fml i8mm +define fgroup ALL_SIMD ALL_SIMD_INTERNAL ALL_SIMD_EXTERNAL # List of all FPU bits to strip out if -mfpu is used to override the # default. fp16 is deliberately missing from this list. define fgroup ALL_FPU_INTERNAL vfpv2 vfpv3 vfpv4 fpv5 fp16conv fp_dbl ALL_SIMD_INTERNAL - # Similarly, but including fp16 and other extensions that aren't part of # -mfpu support. -define fgroup ALL_FP fp16 ALL_FPU_INTERNAL +define fgroup ALL_FPU_EXTERNAL fp16 bf16 + +# Everything related to the FPU extensions (FP or SIMD). +define fgroup ALL_FP ALL_FPU_EXTERNAL ALL_FPU_INTERNAL ALL_SIMD -define fgroup ARMv4 armv4 notm -define fgroup ARMv4t ARMv4 thumb -define fgroup ARMv5t ARMv4t armv5t -define fgroup ARMv5te ARMv5t armv5te -define fgroup ARMv5tej ARMv5te -define fgroup ARMv6 ARMv5te armv6 be8 -define fgroup ARMv6j ARMv6 -define fgroup ARMv6k ARMv6 armv6k -define fgroup ARMv6z ARMv6 -define fgroup ARMv6kz ARMv6k quirk_armv6kz -define fgroup ARMv6zk ARMv6k -define fgroup ARMv6t2 ARMv6 thumb2 +define fgroup ARMv4 armv4 notm +define fgroup ARMv4t ARMv4 thumb +define fgroup ARMv5t ARMv4t armv5t +define fgroup ARMv5te ARMv5t armv5te +define fgroup ARMv5tej ARMv5te +define fgroup ARMv6 ARMv5te armv6 be8 +define fgroup ARMv6j ARMv6 +define fgroup ARMv6k ARMv6 armv6k +define fgroup ARMv6z ARMv6 +define fgroup ARMv6kz ARMv6k quirk_armv6kz +define fgroup ARMv6zk ARMv6k +define fgroup ARMv6t2 ARMv6 thumb2 # This is suspect. ARMv6-m doesn't really pull in any useful features # from ARMv5* or ARMv6. -define fgroup ARMv6m armv4 thumb armv5t armv5te armv6 be8 +define fgroup ARMv6m armv4 thumb armv5t armv5te armv6 be8 # This is suspect, the 'common' ARMv7 subset excludes the thumb2 'DSP' and # integer SIMD instructions that are in ARMv6T2. */ define fgroup ARMv7 ARMv6m thumb2 armv7 define fgroup ARMv7a ARMv7 notm armv6k -define fgroup ARMv7ve ARMv7a adiv tdiv lpae +define fgroup ARMv7ve ARMv7a adiv tdiv lpae mp sec define fgroup ARMv7r ARMv7a tdiv define fgroup ARMv7m ARMv7 tdiv define fgroup ARMv7em ARMv7m armv7em @@ -235,9 +271,12 @@ define fgroup ARMv8_2a ARMv8_1a armv8_2 define fgroup ARMv8_3a ARMv8_2a armv8_3 define fgroup ARMv8_4a ARMv8_3a armv8_4 +define fgroup ARMv8_5a ARMv8_4a armv8_5 sb predres +define fgroup ARMv8_6a ARMv8_5a armv8_6 define fgroup ARMv8m_base ARMv6m armv8 cmse tdiv define fgroup ARMv8m_main ARMv7m armv8 cmse define fgroup ARMv8r ARMv8a +define fgroup ARMv8_1m_main ARMv8m_main armv8_1m_main # Useful combinations. define fgroup VFPv2 vfpv2 @@ -397,7 +436,7 @@ end arch armv6s-m begin arch armv7 - tune for cortex-a8 + tune for cortex-a53 tune flags CO_PROC base 7 isa ARMv7 @@ -408,11 +447,13 @@ end arch armv7 begin arch armv7-a - tune for cortex-a8 + tune for cortex-a53 tune flags CO_PROC base 7A profile A isa ARMv7a + option mp add mp + option sec add sec # fp => VFPv3-d16, simd => neon-vfpv3 option fp add VFPv3 FP_DBL optalias vfpv3-d16 fp @@ -431,7 +472,7 @@ end arch armv7-a begin arch armv7ve - tune for cortex-a8 + tune for cortex-a53 tune flags CO_PROC base 7A profile A @@ -464,6 +505,8 @@ optalias vfpv3xd fp.sp option fp add VFPv3 FP_DBL optalias vfpv3-d16 fp + option vfpv3xd-fp16 add VFPv3 fp16conv + option vfpv3-d16-fp16 add VFPv3 FP_DBL fp16conv option idiv add adiv option nofp remove ALL_FP option noidiv remove adiv @@ -505,6 +548,8 @@ option crypto add FP_ARMv8 CRYPTO option nocrypto remove ALL_CRYPTO option nofp remove ALL_FP + option sb add sb + option predres add predres end arch armv8-a begin arch armv8.1-a @@ -517,6 +562,8 @@ option crypto add FP_ARMv8 CRYPTO option nocrypto remove ALL_CRYPTO option nofp remove ALL_FP + option sb add sb + option predres add predres end arch armv8.1-a begin arch armv8.2-a @@ -532,6 +579,10 @@ option nocrypto remove ALL_CRYPTO option nofp remove ALL_FP option dotprod add FP_ARMv8 DOTPROD + option sb add sb + option predres add predres + option i8mm add i8mm FP_ARMv8 NEON + option bf16 add bf16 FP_ARMv8 NEON end arch armv8.2-a begin arch armv8.3-a @@ -547,6 +598,10 @@ option nocrypto remove ALL_CRYPTO option nofp remove ALL_FP option dotprod add FP_ARMv8 DOTPROD + option sb add sb + option predres add predres + option i8mm add i8mm FP_ARMv8 NEON + option bf16 add bf16 FP_ARMv8 NEON end arch armv8.3-a begin arch armv8.4-a @@ -560,8 +615,42 @@ option crypto add FP_ARMv8 CRYPTO DOTPROD option nocrypto remove ALL_CRYPTO option nofp remove ALL_FP + option sb add sb + option predres add predres + option i8mm add i8mm FP_ARMv8 DOTPROD + option bf16 add bf16 FP_ARMv8 DOTPROD end arch armv8.4-a +begin arch armv8.5-a + tune for cortex-a53 + tune flags CO_PROC + base 8A + profile A + isa ARMv8_5a + option simd add FP_ARMv8 DOTPROD + option fp16 add fp16 fp16fml FP_ARMv8 DOTPROD + option crypto add FP_ARMv8 CRYPTO DOTPROD + option nocrypto remove ALL_CRYPTO + option nofp remove ALL_FP + option i8mm add i8mm FP_ARMv8 DOTPROD + option bf16 add bf16 FP_ARMv8 DOTPROD +end arch armv8.5-a + +begin arch armv8.6-a + tune for cortex-a53 + tune flags CO_PROC + base 8A + profile A + isa ARMv8_6a + option simd add FP_ARMv8 DOTPROD + option fp16 add fp16 fp16fml FP_ARMv8 DOTPROD + option crypto add FP_ARMv8 CRYPTO DOTPROD + option nocrypto remove ALL_CRYPTO + option nofp remove ALL_FP + option i8mm add i8mm FP_ARMv8 DOTPROD + option bf16 add bf16 FP_ARMv8 DOTPROD +end arch armv8.6-a + begin arch armv8-m.base tune for cortex-m23 base 8M_BASE @@ -599,6 +688,21 @@ option nofp remove ALL_FP end arch armv8-r +begin arch armv8.1-m.main + tune for cortex-m7 + tune flags CO_PROC + base 8M_MAIN + profile M + isa ARMv8_1m_main +# fp => FPv5-sp-d16; fp.dp => FPv5-d16 + option dsp add armv7em + option fp add FPv5 fp16 + option fp.dp add FPv5 FP_DBL fp16 + option nofp remove ALL_FP + option mve add mve armv7em + option mve.fp add mve FPv5 fp16 mve_float armv7em +end arch armv8.1-m.main + begin arch iwmmxt tune for iwmmxt tune flags LDSCHED STRONG XSCALE @@ -617,6 +721,7 @@ # format: # begin cpu <name> # [cname <c-compatible-name>] +# [alias <name>+] # [tune for <cpu-name>] # [tune flags <list>] # architecture <name> @@ -630,6 +735,9 @@ # # If omitted, cname is formed from transforming the cpuname to convert # non-valid punctuation characters to '_'. +# Any number of alias names may be specified for a CPU. If the name starts +# with a '!' then it will be recognized as a valid name, but will not +# be printed in any help text listing permitted CPUs. # If specified, tune for specifies a CPU target to use for tuning this core. # isa flags are appended to those defined by the architecture. # Each add option must have a distinct feature set and each remove @@ -658,29 +766,12 @@ end cpu arm810 begin cpu strongarm + alias strongarm110 !strongarm1100 !strongarm1110 tune flags LDSCHED STRONG architecture armv4 costs strongarm end cpu strongarm -begin cpu strongarm110 - tune flags LDSCHED STRONG - architecture armv4 - costs strongarm -end cpu strongarm110 - -begin cpu strongarm1100 - tune flags LDSCHED STRONG - architecture armv4 - costs strongarm -end cpu strongarm1100 - -begin cpu strongarm1110 - tune flags LDSCHED STRONG - architecture armv4 - costs strongarm -end cpu strongarm1110 - begin cpu fa526 tune flags LDSCHED architecture armv4 @@ -696,36 +787,19 @@ # V4T Architecture Processors begin cpu arm7tdmi + alias arm7tdmi-s tune flags CO_PROC architecture armv4t costs fastmul end cpu arm7tdmi -begin cpu arm7tdmi-s - cname arm7tdmis - tune flags CO_PROC - architecture armv4t - costs fastmul -end cpu arm7tdmi-s - begin cpu arm710t + alias arm720t arm740t tune flags WBUF architecture armv4t costs fastmul end cpu arm710t -begin cpu arm720t - tune flags WBUF - architecture armv4t - costs fastmul -end cpu arm720t - -begin cpu arm740t - tune flags WBUF - architecture armv4t - costs fastmul -end cpu arm740t - begin cpu arm9 tune flags LDSCHED architecture armv4t @@ -738,105 +812,41 @@ costs fastmul end cpu arm9tdmi -begin cpu arm920 - tune flags LDSCHED - architecture armv4t - costs fastmul -end cpu arm920 - begin cpu arm920t + alias arm920 arm922t arm940t ep9312 tune flags LDSCHED architecture armv4t costs fastmul end cpu arm920t -begin cpu arm922t - tune flags LDSCHED - architecture armv4t - costs fastmul -end cpu arm922t - -begin cpu arm940t - tune flags LDSCHED - architecture armv4t - costs fastmul -end cpu arm940t - -begin cpu ep9312 - tune flags LDSCHED - architecture armv4t - costs fastmul -end cpu ep9312 - # V5T Architecture Processors # These used VFPv1 which isn't supported by GCC begin cpu arm10tdmi + alias arm1020t tune flags LDSCHED architecture armv5t costs fastmul end cpu arm10tdmi -begin cpu arm1020t - tune flags LDSCHED - architecture armv5t - costs fastmul -end cpu arm1020t - # V5TE Architecture Processors begin cpu arm9e + alias arm946e-s arm966e-s arm968e-s tune flags LDSCHED architecture armv5te+fp option nofp remove ALL_FP costs 9e end cpu arm9e -begin cpu arm946e-s - cname arm946es - tune flags LDSCHED - architecture armv5te+fp - option nofp remove ALL_FP - costs 9e -end cpu arm946e-s - -begin cpu arm966e-s - cname arm966es - tune flags LDSCHED - architecture armv5te+fp - option nofp remove ALL_FP - costs 9e -end cpu arm966e-s - -begin cpu arm968e-s - cname arm968es - tune flags LDSCHED - architecture armv5te+fp - option nofp remove ALL_FP - costs 9e -end cpu arm968e-s - begin cpu arm10e + alias arm1020e arm1022e tune flags LDSCHED architecture armv5te+fp option nofp remove ALL_FP costs fastmul end cpu arm10e -begin cpu arm1020e - tune flags LDSCHED - architecture armv5te+fp - option nofp remove ALL_FP - costs fastmul -end cpu arm1020e - -begin cpu arm1022e - tune flags LDSCHED - architecture armv5te+fp - option nofp remove ALL_FP - costs fastmul -end cpu arm1022e - begin cpu xscale tune flags LDSCHED XSCALE architecture armv5te @@ -1025,6 +1035,8 @@ cname genericv7a tune flags LDSCHED architecture armv7-a+fp + option mp add mp + option sec add sec option vfpv3-d16 add VFPv3 FP_DBL option vfpv3 add VFPv3 FP_D32 option vfpv3-d16-fp16 add VFPv3 FP_DBL fp16conv @@ -1044,7 +1056,7 @@ begin cpu cortex-a5 cname cortexa5 tune flags LDSCHED - architecture armv7-a+neon-fp16 + architecture armv7-a+mp+sec+neon-fp16 option nosimd remove ALL_SIMD option nofp remove ALL_FP costs cortex_a5 @@ -1066,7 +1078,7 @@ begin cpu cortex-a8 cname cortexa8 tune flags LDSCHED - architecture armv7-a+simd + architecture armv7-a+sec+simd option nofp remove ALL_FP costs cortex_a8 vendor 41 @@ -1076,7 +1088,7 @@ begin cpu cortex-a9 cname cortexa9 tune flags LDSCHED - architecture armv7-a+neon-fp16 + architecture armv7-a+mp+sec+neon-fp16 option nosimd remove ALL_SIMD option nofp remove ALL_FP costs cortex_a9 @@ -1145,7 +1157,8 @@ begin cpu cortex-r7 cname cortexr7 tune flags LDSCHED - architecture armv7-r+idiv+fp + architecture armv7-r+idiv+vfpv3-d16-fp16 + option nofp.dp remove FP_DBL option nofp remove ALL_FP costs cortex vendor 41 @@ -1156,7 +1169,8 @@ cname cortexr8 tune for cortex-r7 tune flags LDSCHED - architecture armv7-r+idiv+fp + architecture armv7-r+idiv+vfpv3-d16-fp16 + option nofp.dp remove FP_DBL option nofp remove ALL_FP costs cortex vendor 41 @@ -1195,7 +1209,7 @@ begin cpu marvell-pj4 tune flags LDSCHED - architecture armv7-a + architecture armv7-a+mp+sec+fp costs marvell_pj4 end cpu marvell-pj4 @@ -1346,7 +1360,7 @@ cname cortexa55 tune for cortex-a53 tune flags LDSCHED - architecture armv8.2-a+fp16+dotprod+simd + architecture armv8.2-a+fp16+dotprod option crypto add FP_ARMv8 CRYPTO option nofp remove ALL_FP costs cortex_a53 @@ -1358,7 +1372,7 @@ cname cortexa75 tune for cortex-a57 tune flags LDSCHED - architecture armv8.2-a+fp16+dotprod+simd + architecture armv8.2-a+fp16+dotprod option crypto add FP_ARMv8 CRYPTO costs cortex_a73 vendor 41 @@ -1369,19 +1383,53 @@ cname cortexa76 tune for cortex-a57 tune flags LDSCHED - architecture armv8.2-a+fp16+dotprod+simd + architecture armv8.2-a+fp16+dotprod option crypto add FP_ARMv8 CRYPTO costs cortex_a57 vendor 41 part d0b end cpu cortex-a76 +begin cpu cortex-a76ae + cname cortexa76ae + tune for cortex-a57 + tune flags LDSCHED + architecture armv8.2-a+fp16+dotprod + option crypto add FP_ARMv8 CRYPTO + costs cortex_a57 + vendor 41 + part d0e +end cpu cortex-a76ae + +begin cpu cortex-a77 + cname cortexa77 + tune for cortex-a57 + tune flags LDSCHED + architecture armv8.2-a+fp16+dotprod + option crypto add FP_ARMv8 CRYPTO + costs cortex_a57 + vendor 41 + part d0d +end cpu cortex-a77 + +begin cpu neoverse-n1 + cname neoversen1 + alias !ares + tune for cortex-a57 + tune flags LDSCHED + architecture armv8.2-a+fp16+dotprod + option crypto add FP_ARMv8 CRYPTO + costs cortex_a57 + vendor 41 + part d0c +end cpu neoverse-n1 + # ARMv8.2 A-profile ARM DynamIQ big.LITTLE implementations begin cpu cortex-a75.cortex-a55 cname cortexa75cortexa55 tune for cortex-a53 tune flags LDSCHED - architecture armv8.2-a+fp16+dotprod+simd + architecture armv8.2-a+fp16+dotprod option crypto add FP_ARMv8 CRYPTO costs cortex_a73 end cpu cortex-a75.cortex-a55 @@ -1390,7 +1438,7 @@ cname cortexa76cortexa55 tune for cortex-a53 tune flags LDSCHED - architecture armv8.2-a+fp16+dotprod+simd + architecture armv8.2-a+fp16+dotprod option crypto add FP_ARMv8 CRYPTO costs cortex_a57 end cpu cortex-a76.cortex-a55 @@ -1412,6 +1460,15 @@ costs v7m end cpu cortex-m33 +begin cpu cortex-m35p + cname cortexm35p + tune flags LDSCHED + architecture armv8-m.main+dsp+fp + option nofp remove ALL_FP + option nodsp remove armv7em + costs v7m +end cpu cortex-m35p + # V8 R-profile implementations. begin cpu cortex-r52 cname cortexr52