From: Daniel Dragomir <daniel.dragomir@windriver.com>
To: <openembedded-core@lists.openembedded.org>
Cc: otavio.salvador@ossystems.com.br
Subject: [PATCH][master] Add tune for 32-bit ARMv8-a
Date: Mon, 7 Mar 2016 16:34:51 +0200 [thread overview]
Message-ID: <1457361291-14009-2-git-send-email-daniel.dragomir@windriver.com> (raw)
In-Reply-To: <1457361291-14009-1-git-send-email-daniel.dragomir@windriver.com>
This patch adds tunes for 32-bit armv8 platforms. The user can select
the vector floating-point instruction set: vfpv4 or fp-armv8
and the thumb, neon, crc and crypto extensions.
Signed-off-by: Daniel Dragomir <daniel.dragomir@windriver.com>
---
meta/conf/machine/include/arm/arch-armv8a.inc | 111 +++++++++++++++++++++
.../conf/machine/include/arm/feature-arm-thumb.inc | 1 +
2 files changed, 112 insertions(+)
create mode 100644 meta/conf/machine/include/arm/arch-armv8a.inc
diff --git a/meta/conf/machine/include/arm/arch-armv8a.inc b/meta/conf/machine/include/arm/arch-armv8a.inc
new file mode 100644
index 0000000..d4fb830
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv8a.inc
@@ -0,0 +1,111 @@
+DEFAULTTUNE ?= "armv8a"
+
+TUNEVALID[armv8a] = "Enable instructions for ARMv8-a"
+TUNECONFLICTS[armv8a] = "armv4 armv5 armv6 armv7 armv7a armv7ve"
+
+TUNEVALID[crc] = "Enable CRC instructions for ARMv8-a"
+ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "crc", "-crc", "", d)}"
+
+TUNEVALID[crypto] = "Enable ARMv8 crypto extension."
+ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "crypto", "-crypto", "", d)}"
+
+TUNEVALID[fp-armv8] = "Enable ARMv8 Vector Floating Point unit."
+ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "fp-armv8", "-fp-armv8", "", d)}"
+
+TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "armv8a", bb.utils.contains("TUNE_FEATURES", "crc", " -march=armv8-a+crc", " -march=armv8-a", d), "", d)}"
+
+TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "fp-armv8", bb.utils.contains("TUNE_FEATURES", "neon", bb.utils.contains("TUNE_FEATURES", "crypto", " -mfpu=crypto-neon-fp-armv8", " -mfpu=neon-fp-armv8", d), " -mfpu=fp-armv8", d), "", d)}"
+
+MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "armv8a", "armv8a:", "" ,d)}"
+
+require conf/machine/include/arm/arch-armv7ve.inc
+
+# Little Endian base configs
+AVAILTUNES += "armv8a armv8at armv8a-neon armv8at-neon armv8a-vfpv4 armv8at-vfpv4 armv8a-vfpv4-neon armv8at-vfpv4-neon armv8a-fp-armv8 armv8at-fp-armv8 armv8a-fp-armv8-neon armv8at-fp-armv8-neon armv8a-crypto-fp-armv8-neon armv8at-crypto-fp-armv8-neon"
+ARMPKGARCH_tune-armv8a ?= "armv8a"
+ARMPKGARCH_tune-armv8at ?= "armv8a"
+ARMPKGARCH_tune-armv8a-neon ?= "armv8a"
+ARMPKGARCH_tune-armv8at-neon ?= "armv8a"
+ARMPKGARCH_tune-armv8a-vfpv4 ?= "armv8a"
+ARMPKGARCH_tune-armv8at-vfpv4 ?= "armv8a"
+ARMPKGARCH_tune-armv8a-vfpv4-neon ?= "armv8a"
+ARMPKGARCH_tune-armv8at-vfpv4-neon ?= "armv8a"
+ARMPKGARCH_tune-armv8a-fp-armv8 ?= "armv8a"
+ARMPKGARCH_tune-armv8at-fp-armv8 ?= "armv8a"
+ARMPKGARCH_tune-armv8a-fp-armv8-neon ?= "armv8a"
+ARMPKGARCH_tune-armv8at-fp-armv8-neon ?= "armv8a"
+ARMPKGARCH_tune-armv8a-crypto-fp-armv8-neon ?= "armv8a"
+ARMPKGARCH_tune-armv8at-crypto-fp-armv8-neon ?= "armv8a"
+TUNE_FEATURES_tune-armv8a = "arm armv8a vfp"
+TUNE_FEATURES_tune-armv8at = "${TUNE_FEATURES_tune-armv8a} thumb"
+TUNE_FEATURES_tune-armv8a-neon = "${TUNE_FEATURES_tune-armv8a} neon"
+TUNE_FEATURES_tune-armv8at-neon = "${TUNE_FEATURES_tune-armv8at} neon"
+TUNE_FEATURES_tune-armv8a-vfpv4 = "${TUNE_FEATURES_tune-armv8a} vfpv4"
+TUNE_FEATURES_tune-armv8at-vfpv4 = "${TUNE_FEATURES_tune-armv8at} vfpv4"
+TUNE_FEATURES_tune-armv8a-vfpv4-neon = "${TUNE_FEATURES_tune-armv8a-neon} vfpv4"
+TUNE_FEATURES_tune-armv8at-vfpv4-neon = "${TUNE_FEATURES_tune-armv8at-neon} vfpv4"
+TUNE_FEATURES_tune-armv8a-fp-armv8 = "${TUNE_FEATURES_tune-armv8a} fp-armv8"
+TUNE_FEATURES_tune-armv8at-fp-armv8 = "${TUNE_FEATURES_tune-armv8at} fp-armv8"
+TUNE_FEATURES_tune-armv8a-fp-armv8-neon = "${TUNE_FEATURES_tune-armv8a-neon} fp-armv8"
+TUNE_FEATURES_tune-armv8at-fp-armv8-neon = "${TUNE_FEATURES_tune-armv8at-neon} fp-armv8"
+TUNE_FEATURES_tune-armv8a-crypto-fp-armv8-neon = "${TUNE_FEATURES_tune-armv8a-fp-armv8-neon} crypto"
+TUNE_FEATURES_tune-armv8at-crypto-fp-armv8-neon = "${TUNE_FEATURES_tune-armv8at-fp-armv8-neon} crypto"
+PACKAGE_EXTRA_ARCHS_tune-armv8a = "${PACKAGE_EXTRA_ARCHS_tune-armv7ve} armv8a armv8a-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv8at = "${PACKAGE_EXTRA_ARCHS_tune-armv7vet2} armv8a armv8a-vfp armv8at2-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv8a} armv8a-neon"
+PACKAGE_EXTRA_ARCHS_tune-armv8at-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv8at} armv8a-neon armv8at2-neon"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a} armv8a-vfpv4"
+PACKAGE_EXTRA_ARCHS_tune-armv8at-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv8at} armv8a-vfpv4 armv8at2-vfpv4"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-vfpv4-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-vfpv4} armv8a-neon armv8a-neon-vfpv4"
+PACKAGE_EXTRA_ARCHS_tune-armv8at-vfpv4-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv8at-vfpv4} armv8a-neon armv8at2-neon armv8a-neon-vfpv4 armv8at2-neon-vfpv4"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a} armv8a-fp-armv8"
+PACKAGE_EXTRA_ARCHS_tune-armv8at-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8at} armv8a-fp-armv8 armv8at2-fp-armv8"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-fp-armv8-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-fp-armv8} armv8a-neon armv8a-fp-armv8-neon"
+PACKAGE_EXTRA_ARCHS_tune-armv8at-fp-armv8-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv8at-fp-armv8} armv8a-neon armv8at2-neon armv8a-fp-armv8-neon armv8at2-fp-armv8-neon"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-crypto-fp-armv8-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-fp-armv8-neon} armv8a-crypto-fp-armv8-neon"
+PACKAGE_EXTRA_ARCHS_tune-armv8at-crypto-fp-armv8-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv8at-fp-armv8-neon} armv8a-crypto-fp-armv8-neon armv8at2-crypto-fp-armv8-neon"
+
+# CRC configs
+AVAILTUNES += "armv8a-crc armv8at-crc armv8a-crc-neon armv8at-crc-neon armv8a-crc-vfpv4 armv8at-crc-vfpv4 armv8a-crc-vfpv4-neon armv8at-crc-vfpv4-neon armv8a-crc-fp-armv8 armv8at-crc-fp-armv8 armv8a-crc-fp-armv8-neon armv8at-crc-fp-armv8-neon armv8a-crc-crypto-fp-armv8-neon armv8at-crc-crypto-fp-armv8-neon"
+ARMPKGARCH_tune-armv8a-crc ?= "armv8a"
+ARMPKGARCH_tune-armv8at-crc ?= "armv8a"
+ARMPKGARCH_tune-armv8a-crc-neon ?= "armv8a"
+ARMPKGARCH_tune-armv8at-crc-neon ?= "armv8a"
+ARMPKGARCH_tune-armv8a-crc-vfpv4 ?= "armv8a"
+ARMPKGARCH_tune-armv8at-crc-vfpv4 ?= "armv8a"
+ARMPKGARCH_tune-armv8a-crc-vfpv4-neon ?= "armv8a"
+ARMPKGARCH_tune-armv8at-crc-vfpv4-neon ?= "armv8a"
+ARMPKGARCH_tune-armv8a-crc-fp-armv8 ?= "armv8a"
+ARMPKGARCH_tune-armv8at-crc-fp-armv8 ?= "armv8a"
+ARMPKGARCH_tune-armv8a-crc-fp-armv8-neon ?= "armv8a"
+ARMPKGARCH_tune-armv8at-crc-fp-armv8-neon ?= "armv8a"
+ARMPKGARCH_tune-armv8a-crc-crypto-fp-armv8-neon ?= "armv8a"
+ARMPKGARCH_tune-armv8at-crc-crypto-fp-armv8-neon ?= "armv8a"
+TUNE_FEATURES_tune-armv8a-crc = "${TUNE_FEATURES_tune-armv8a} crc"
+TUNE_FEATURES_tune-armv8at-crc = "${TUNE_FEATURES_tune-armv8at} crc"
+TUNE_FEATURES_tune-armv8a-crc-neon = "${TUNE_FEATURES_tune-armv8a-neon} crc"
+TUNE_FEATURES_tune-armv8at-crc-neon = "${TUNE_FEATURES_tune-armv8at-neon} crc"
+TUNE_FEATURES_tune-armv8a-crc-vfpv4 = "${TUNE_FEATURES_tune-armv8a-vfpv4} crc"
+TUNE_FEATURES_tune-armv8at-crc-vfpv4 = "${TUNE_FEATURES_tune-armv8at-vfpv4} crc"
+TUNE_FEATURES_tune-armv8a-crc-vfpv4-neon = "${TUNE_FEATURES_tune-armv8a-vfpv4-neon} crc"
+TUNE_FEATURES_tune-armv8at-crc-vfpv4-neon = "${TUNE_FEATURES_tune-armv8at-vfpv4-neon} crc"
+TUNE_FEATURES_tune-armv8a-crc-fp-armv8 = "${TUNE_FEATURES_tune-armv8a-fp-armv8} crc"
+TUNE_FEATURES_tune-armv8at-crc-fp-armv8 = "${TUNE_FEATURES_tune-armv8at-fp-armv8} crc"
+TUNE_FEATURES_tune-armv8a-crc-fp-armv8-neon = "${TUNE_FEATURES_tune-armv8a-fp-armv8-neon} crc"
+TUNE_FEATURES_tune-armv8at-crc-fp-armv8-neon = "${TUNE_FEATURES_tune-armv8at-fp-armv8-neon} crc"
+TUNE_FEATURES_tune-armv8a-crc-crypto-fp-armv8-neon = "${TUNE_FEATURES_tune-armv8a-crypto-fp-armv8-neon} crc"
+TUNE_FEATURES_tune-armv8at-crc-crypto-fp-armv8-neon = "${TUNE_FEATURES_tune-armv8at-crypto-fp-armv8-neon} crc"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-crc = "${PACKAGE_EXTRA_ARCHS_tune-armv8a} armv8a-crc-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv8at-crc = "${PACKAGE_EXTRA_ARCHS_tune-armv8at} armv8a-crc-vfp armv8at2-crc-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-neon} armv8a-crc-neon"
+PACKAGE_EXTRA_ARCHS_tune-armv8at-crc-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv8at-neon} armv8a-crc-neon armv8at2-crc-neon"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-vfpv4} armv8a-crc-vfpv4"
+PACKAGE_EXTRA_ARCHS_tune-armv8at-crc-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv8at-vfpv4} armv8a-crc-vfpv4 armv8at2-crc-vfpv4"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-vfpv4-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-vfpv4-neon} armv8a-crc-neon armv8a-crc-vfpv4-neon"
+PACKAGE_EXTRA_ARCHS_tune-armv8at-crc-vfpv4-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv8at-vfpv4-neon} armv8a-crc-neon armv8at2-crc-neon armv8a-crc-vfpv4-neon armv8at2-crc-vfpv4-neon"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-fp-armv8} armv8a-crc-fp-armv8"
+PACKAGE_EXTRA_ARCHS_tune-armv8at-crc-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8at-fp-armv8} armv8a-crc-fp-armv8 armv8at2-crc-fp-armv8"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-fp-armv8-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-fp-armv8-neon} armv8a-crc-fp-armv8-neon"
+PACKAGE_EXTRA_ARCHS_tune-armv8at-crc-fp-armv8-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv8at-fp-armv8-neon} armv8a-crc-fp-armv8-neon armv8at2-crc-fp-armv8-neon"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-crypto-fp-armv8-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crypto-fp-armv8-neon} armv8a-crc-crypto-fp-armv8-neon"
+PACKAGE_EXTRA_ARCHS_tune-armv8at-crc-crypto-fp-armv8-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv8at-crypto-fp-armv8-neon} armv8a-crc-crypto-fp-armv8-neon armv8at2-crc-crypto-fp-armv8-neon"
diff --git a/meta/conf/machine/include/arm/feature-arm-thumb.inc b/meta/conf/machine/include/arm/feature-arm-thumb.inc
index dfb9d7e..94d269f 100644
--- a/meta/conf/machine/include/arm/feature-arm-thumb.inc
+++ b/meta/conf/machine/include/arm/feature-arm-thumb.inc
@@ -7,6 +7,7 @@ ARM_THUMB_SUFFIX .= "${@bb.utils.contains('TUNE_FEATURES', 'armv7a', 't2', '', d
ARM_THUMB_SUFFIX .= "${@bb.utils.contains('TUNE_FEATURES', 'armv7r', 't2', '', d)}"
ARM_THUMB_SUFFIX .= "${@bb.utils.contains('TUNE_FEATURES', 'armv7m', 't2', '', d)}"
ARM_THUMB_SUFFIX .= "${@bb.utils.contains('TUNE_FEATURES', 'armv7ve', 't2', '', d)}"
+ARM_THUMB_SUFFIX .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8a', 't2', '', d)}"
# If the device supports ARM, then respect ARM_THUMB_OPT (which can be "arm" or "thumb")
# If the defice doesn't support ARM, then always set "thumb" even when
--
1.9.1
next prev parent reply other threads:[~2016-03-07 14:35 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-07 14:34 [master][PATCH] ARMv8 32-bit compiler tunings Daniel Dragomir
2016-03-07 14:34 ` Daniel Dragomir [this message]
2016-03-08 0:55 ` [PATCH][master] Add tune for 32-bit ARMv8-a Otavio Salvador
2016-03-08 2:26 ` Otavio Salvador
2016-03-08 11:37 ` Dragomir Daniel
2016-03-08 11:53 ` Otavio Salvador
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1457361291-14009-2-git-send-email-daniel.dragomir@windriver.com \
--to=daniel.dragomir@windriver.com \
--cc=openembedded-core@lists.openembedded.org \
--cc=otavio.salvador@ossystems.com.br \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox