[meta-lsi] [PATCH 07/26] ARMv8-A: Add specific tunes for Cortex-a53 and Cortex-a57

Daniel Dragomir daniel.dragomir at windriver.com
Fri Aug 5 08:33:30 PDT 2016


Specific tunes for armv8a SoCs:
- Cortex-a53 - default tune is cortexa53_64-crypto (for AArch64
  state and with crypto extension). Other versions of 64-bit tunes
  are for BE with and without crypto (crypto enables olso floating
  point and advanced SIMD). For 32-bit states (AArch32) tunes include by default
  hard float, fp-armv8 floating-point, thumb and neon extensions.
  Crypto, thumb and BE are optional.

- Cortex-a57 - default tune is cortexa57_64-crypto (for AArch64
  state and with crypto extension). Other tune versions are similar
  with cortex-a53 ones.

Signed-off-by: Daniel Dragomir <daniel.dragomir at windriver.com>
---
 conf/machine/include/tune-cortexa53.inc | 59 +++++++++++++++++++++++++++++++++
 conf/machine/include/tune-cortexa57.inc | 59 +++++++++++++++++++++++++++++++++
 2 files changed, 118 insertions(+)
 create mode 100644 conf/machine/include/tune-cortexa53.inc
 create mode 100644 conf/machine/include/tune-cortexa57.inc

diff --git a/conf/machine/include/tune-cortexa53.inc b/conf/machine/include/tune-cortexa53.inc
new file mode 100644
index 0000000..bdb4e00
--- /dev/null
+++ b/conf/machine/include/tune-cortexa53.inc
@@ -0,0 +1,59 @@
+DEFAULTTUNE ?= "cortexa53_64-crypto"
+
+require conf/machine/include/arm/arch-armv8a.inc
+
+TUNEVALID[cortexa53] = "Enable Cortex-A53 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa53', bb.utils.contains('TUNE_FEATURES', [ 'crypto', 'aarch64' ], ' -mcpu=cortex-a53+crypto', ' -mcpu=cortex-a53', d), '', d)}"
+
+# AArch64 Little Endian base configs
+AVAILTUNES += "cortexa53_64 cortexa53_64-crypto"
+ARMPKGARCH_tune-cortexa53_64        ?= "cortexa53"
+ARMPKGARCH_tune-cortexa53_64-crypto ?= "cortexa53"
+TUNE_FEATURES_tune-cortexa53_64        = "${TUNE_FEATURES_tune-aarch64}        cortexa53"
+TUNE_FEATURES_tune-cortexa53_64-crypto = "${TUNE_FEATURES_tune-aarch64-crypto} cortexa53"
+PACKAGE_EXTRA_ARCHS_tune-cortexa53_64        = "${PACKAGE_EXTRA_ARCHS_tune-aarch64} cortexa53"
+PACKAGE_EXTRA_ARCHS_tune-cortexa53_64-crypto = "${PACKAGE_EXTRA_ARCHS_tune-aarch64-crypto} cortexa53-crypto"
+BASE_LIB_tune-cortexa53_64        = "${BASE_LIB_tune-aarch64}"
+BASE_LIB_tune-cortexa53_64-crypto = "${BASE_LIB_tune-aarch64}"
+
+# Aarch64 Big Endian base configs
+AVAILTUNES += "cortexa53_64_be cortexa53_64_be-crypto"
+ARMPKGARCH_tune-cortexa53_64_be        ?= "cortexa53"
+ARMPKGARCH_tune-cortexa53_64_be-crypto ?= "cortexa53"
+TUNE_FEATURES_tune-cortexa53_64_be        = "${TUNE_FEATURES_tune-aarch64_be}        cortexa53"
+TUNE_FEATURES_tune-cortexa53_64_be-crypto = "${TUNE_FEATURES_tune-aarch64_be-crypto} cortexa53"
+PACKAGE_EXTRA_ARCHS_tune-cortexa53_64_be        = "${PACKAGE_EXTRA_ARCHS_tune-aarch64_be} cortexa53_be"
+PACKAGE_EXTRA_ARCHS_tune-cortexa53_64_be-crypto = "${PACKAGE_EXTRA_ARCHS_tune-aarch64_be-crypto} cortexa53_be-crypto"
+BASE_LIB_tune-cortexa53_64_be        = "${BASE_LIB_tune-aarch64}"
+BASE_LIB_tune-cortexa53_64_be-crypto = "${BASE_LIB_tune-aarch64}"
+
+
+# Aarch32 Little Endian base configs
+AVAILTUNES += "cortexa53_32 cortexa53_32t cortexa53_32-crypto cortexa53_32t-crypto"
+ARMPKGARCH_tune-cortexa53_32         ?= "cortexa53"
+ARMPKGARCH_tune-cortexa53_32t        ?= "cortexa53"
+ARMPKGARCH_tune-cortexa53_32-crypto  ?= "cortexa53"
+ARMPKGARCH_tune-cortexa53_32t-crypto ?= "cortexa53"
+TUNE_FEATURES_tune-cortexa53_32         = "${TUNE_FEATURES_tune-aarch32}         cortexa53"
+TUNE_FEATURES_tune-cortexa53_32t        = "${TUNE_FEATURES_tune-aarch32t}        cortexa53"
+TUNE_FEATURES_tune-cortexa53_32-crypto  = "${TUNE_FEATURES_tune-aarch32-crypto}  cortexa53"
+TUNE_FEATURES_tune-cortexa53_32t-crypto = "${TUNE_FEATURES_tune-aarch32t-crypto} cortexa53"
+PACKAGE_EXTRA_ARCHS_tune-cortexa53_32         = "${PACKAGE_EXTRA_ARCHS_tune-aarch32} cortexa53hf-neon-fp-armv8"
+PACKAGE_EXTRA_ARCHS_tune-cortexa53_32t        = "${PACKAGE_EXTRA_ARCHS_tune-cortexa53_32} cortexa53t2hf-neon-fp-armv8"
+PACKAGE_EXTRA_ARCHS_tune-cortexa53_32-crypto  = "${PACKAGE_EXTRA_ARCHS_tune-cortexa53_32} cortexa53hf-crypto-neon-fp-armv8"
+PACKAGE_EXTRA_ARCHS_tune-cortexa53_32t-crypto = "${PACKAGE_EXTRA_ARCHS_tune-cortexa53_32-crypto} cortexa53t2hf-crypto-neon-fp-armv8"
+
+# AArch32 Big Endian base configs
+AVAILTUNES += "cortexa53_32b cortexa53_32tb cortexa53_32b-crypto cortexa53_32tb-crypto"
+ARMPKGARCH_tune-cortexa53_32b         ?= "cortexa53"
+ARMPKGARCH_tune-cortexa53_32tb        ?= "cortexa53"
+ARMPKGARCH_tune-cortexa53_32b-crypto  ?= "cortexa53"
+ARMPKGARCH_tune-cortexa53_32tb-crypto ?= "cortexa53"
+TUNE_FEATURES_tune-cortexa53_32b         = "${TUNE_FEATURES_tune-aarch32b}         cortexa53"
+TUNE_FEATURES_tune-cortexa53_32tb        = "${TUNE_FEATURES_tune-aarch32tb}        cortexa53"
+TUNE_FEATURES_tune-cortexa53_32b-crypto  = "${TUNE_FEATURES_tune-aarch32b-crypto}  cortexa53"
+TUNE_FEATURES_tune-cortexa53_32tb-crypto = "${TUNE_FEATURES_tune-aarch32tb-crypto} cortexa53"
+PACKAGE_EXTRA_ARCHS_tune-cortexa53_32b         = "${PACKAGE_EXTRA_ARCHS_tune-aarch32b} cortexa53hfb-neon-fp-armv8"
+PACKAGE_EXTRA_ARCHS_tune-cortexa53_32tb        = "${PACKAGE_EXTRA_ARCHS_tune-cortexa53_32b} cortexa53t2hfb-neon-fp-armv8"
+PACKAGE_EXTRA_ARCHS_tune-cortexa53_32b-crypto  = "${PACKAGE_EXTRA_ARCHS_tune-cortexa53_32b} cortexa53hfb-crypto-neon-fp-armv8"
+PACKAGE_EXTRA_ARCHS_tune-cortexa53_32tb-crypto = "${PACKAGE_EXTRA_ARCHS_tune-cortexa53_32b-crypto} cortexa53t2hfb-crypto-neon-fp-armv8"
diff --git a/conf/machine/include/tune-cortexa57.inc b/conf/machine/include/tune-cortexa57.inc
new file mode 100644
index 0000000..e7bfdfa
--- /dev/null
+++ b/conf/machine/include/tune-cortexa57.inc
@@ -0,0 +1,59 @@
+DEFAULTTUNE ?= "cortexa57_64-crypto"
+
+require conf/machine/include/arm/arch-armv8a.inc
+
+TUNEVALID[cortexa57] = "Enable Cortex-A57 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa57', bb.utils.contains('TUNE_FEATURES', [ 'crypto', 'aarch64' ], ' -mcpu=cortex-a57+crypto', ' -mcpu=cortex-a57', d), '', d)}"
+
+# AArch64 Little Endian base configs
+AVAILTUNES += "cortexa57_64 cortexa57_64-crypto"
+ARMPKGARCH_tune-cortexa57_64        ?= "cortexa57"
+ARMPKGARCH_tune-cortexa57_64-crypto ?= "cortexa57"
+TUNE_FEATURES_tune-cortexa57_64        = "${TUNE_FEATURES_tune-aarch64}        cortexa57"
+TUNE_FEATURES_tune-cortexa57_64-crypto = "${TUNE_FEATURES_tune-aarch64-crypto} cortexa57"
+PACKAGE_EXTRA_ARCHS_tune-cortexa57_64        = "${PACKAGE_EXTRA_ARCHS_tune-aarch64} cortexa57"
+PACKAGE_EXTRA_ARCHS_tune-cortexa57_64-crypto = "${PACKAGE_EXTRA_ARCHS_tune-aarch64-crypto} cortexa57-crypto"
+BASE_LIB_tune-cortexa57_64        = "${BASE_LIB_tune-aarch64}"
+BASE_LIB_tune-cortexa57_64-crypto = "${BASE_LIB_tune-aarch64}"
+
+# Aarch64 Big Endian base configs
+AVAILTUNES += "cortexa57_64_be cortexa57_64_be-crypto"
+ARMPKGARCH_tune-cortexa57_64_be        ?= "cortexa57"
+ARMPKGARCH_tune-cortexa57_64_be-crypto ?= "cortexa57"
+TUNE_FEATURES_tune-cortexa57_64_be        = "${TUNE_FEATURES_tune-aarch64_be}        cortexa57"
+TUNE_FEATURES_tune-cortexa57_64_be-crypto = "${TUNE_FEATURES_tune-aarch64_be-crypto} cortexa57"
+PACKAGE_EXTRA_ARCHS_tune-cortexa57_64_be        = "${PACKAGE_EXTRA_ARCHS_tune-aarch64_be} cortexa57_be"
+PACKAGE_EXTRA_ARCHS_tune-cortexa57_64_be-crypto = "${PACKAGE_EXTRA_ARCHS_tune-aarch64_be-crypto} cortexa57_be-crypto"
+BASE_LIB_tune-cortexa57_64_be        = "${BASE_LIB_tune-aarch64}"
+BASE_LIB_tune-cortexa57_64_be-crypto = "${BASE_LIB_tune-aarch64}"
+
+
+# Aarch32 Little Endian base configs
+AVAILTUNES += "cortexa57_32 cortexa57_32t cortexa57_32-crypto cortexa57_32t-crypto"
+ARMPKGARCH_tune-cortexa57_32         ?= "cortexa57"
+ARMPKGARCH_tune-cortexa57_32t        ?= "cortexa57"
+ARMPKGARCH_tune-cortexa57_32-crypto  ?= "cortexa57"
+ARMPKGARCH_tune-cortexa57_32t-crypto ?= "cortexa57"
+TUNE_FEATURES_tune-cortexa57_32         = "${TUNE_FEATURES_tune-aarch32}         cortexa57"
+TUNE_FEATURES_tune-cortexa57_32t        = "${TUNE_FEATURES_tune-aarch32t}        cortexa57"
+TUNE_FEATURES_tune-cortexa57_32-crypto  = "${TUNE_FEATURES_tune-aarch32-crypto}  cortexa57"
+TUNE_FEATURES_tune-cortexa57_32t-crypto = "${TUNE_FEATURES_tune-aarch32t-crypto} cortexa57"
+PACKAGE_EXTRA_ARCHS_tune-cortexa57_32         = "${PACKAGE_EXTRA_ARCHS_tune-aarch32} cortexa57hf-neon-fp-armv8"
+PACKAGE_EXTRA_ARCHS_tune-cortexa57_32t        = "${PACKAGE_EXTRA_ARCHS_tune-cortexa57_32} cortexa57t2hf-neon-fp-armv8"
+PACKAGE_EXTRA_ARCHS_tune-cortexa57_32-crypto  = "${PACKAGE_EXTRA_ARCHS_tune-cortexa57_32} cortexa57hf-crypto-neon-fp-armv8"
+PACKAGE_EXTRA_ARCHS_tune-cortexa57_32t-crypto = "${PACKAGE_EXTRA_ARCHS_tune-cortexa57_32-crypto} cortexa57t2hf-crypto-neon-fp-armv8"
+
+# AArch32 Big Endian base configs
+AVAILTUNES += "cortexa57_32b cortexa57_32tb cortexa57_32b-crypto cortexa57_32tb-crypto"
+ARMPKGARCH_tune-cortexa57_32b         ?= "cortexa57"
+ARMPKGARCH_tune-cortexa57_32tb        ?= "cortexa57"
+ARMPKGARCH_tune-cortexa57_32b-crypto  ?= "cortexa57"
+ARMPKGARCH_tune-cortexa57_32tb-crypto ?= "cortexa57"
+TUNE_FEATURES_tune-cortexa57_32b         = "${TUNE_FEATURES_tune-aarch32b}         cortexa57"
+TUNE_FEATURES_tune-cortexa57_32tb        = "${TUNE_FEATURES_tune-aarch32tb}        cortexa57"
+TUNE_FEATURES_tune-cortexa57_32b-crypto  = "${TUNE_FEATURES_tune-aarch32b-crypto}  cortexa57"
+TUNE_FEATURES_tune-cortexa57_32tb-crypto = "${TUNE_FEATURES_tune-aarch32tb-crypto} cortexa57"
+PACKAGE_EXTRA_ARCHS_tune-cortexa57_32b         = "${PACKAGE_EXTRA_ARCHS_tune-aarch32b} cortexa57hfb-neon-fp-armv8"
+PACKAGE_EXTRA_ARCHS_tune-cortexa57_32tb        = "${PACKAGE_EXTRA_ARCHS_tune-cortexa57_32b} cortexa57t2hfb-neon-fp-armv8"
+PACKAGE_EXTRA_ARCHS_tune-cortexa57_32b-crypto  = "${PACKAGE_EXTRA_ARCHS_tune-cortexa57_32b} cortexa57hfb-crypto-neon-fp-armv8"
+PACKAGE_EXTRA_ARCHS_tune-cortexa57_32tb-crypto = "${PACKAGE_EXTRA_ARCHS_tune-cortexa57_32b-crypto} cortexa57t2hfb-crypto-neon-fp-armv8"
-- 
2.7.4



More information about the meta-lsi mailing list