Hi Andrei,
On 03/02/2016 02:17 AM, Andrei Gherzan wrote:
Hi Daniel,
On Sat, Feb 27, 2016 at 1:44 PM, Daniel Dragomir
<[email protected] <mailto:[email protected]>>
wrote:
This patch adds tunes for 32-bit armv8 platforms. The user can select
the vector floating-point instruction set: vfpv3, vfpv4 or fp-armv8
and the Neon, crc and crypto extensions.
Also, fix some parsing failures for armv7a*-neon-vfpv4 tunes.
Signed-off-by: Daniel Dragomir <[email protected]
<mailto:[email protected]>>
Signed-off-by: Cristian Bercaru <cristian.bercaru at windriver.com
<http://windriver.com>>
---
meta/conf/machine/include/arm/arch-armv7a.inc | 4 +-
meta/conf/machine/include/arm/arch-armv8a.inc | 75
+++++++++++++++++++++++++++
2 files changed, 77 insertions(+), 2 deletions(-)
create mode 100644 meta/conf/machine/include/arm/arch-armv8a.inc
diff --git a/meta/conf/machine/include/arm/arch-armv7a.inc
b/meta/conf/machine/include/arm/arch-armv7a.inc
index d3b6f64..ff6bc29 100644
--- a/meta/conf/machine/include/arm/arch-armv7a.inc
+++ b/meta/conf/machine/include/arm/arch-armv7a.inc
@@ -65,8 +65,8 @@ PACKAGE_EXTRA_ARCHS_tune-armv7ahf-vfpv3 =
"${PACKAGE_EXTRA_ARCHS_tune-armv7ahf-v
PACKAGE_EXTRA_ARCHS_tune-armv7athf-vfpv3 =
"${PACKAGE_EXTRA_ARCHS_tune-armv7athf-vfpv3d16}
armv7ahf-vfp-vfpv3d16-vfpv3 armv7at2hf-vfp-vfpv3d16-vfpv3"
PACKAGE_EXTRA_ARCHS_tune-armv7ahf-neon =
"${PACKAGE_EXTRA_ARCHS_tune-armv7ahf} armv7ahf-vfp-neon"
PACKAGE_EXTRA_ARCHS_tune-armv7athf-neon =
"${PACKAGE_EXTRA_ARCHS_tune-armv7athf} armv7ahf-vfp-neon
armv7at2hf-vfp-neon"
-PACKAGE_EXTRA_ARCHS_tune-armv7ahf-neon-vfpv4 =
"${PACKAGE_EXTRA_ARCHS_tune-armv7ahf-neon} armv7ahf-vfp-neon-vfpv4"
-PACKAGE_EXTRA_ARCHS_tune-armv7athf-neon-vfpv4 =
"${PACKAGE_EXTRA_ARCHS_tune-armv7athf-neon}
armv7ahf-vfp-neon-vfpv4 armv7at2hf-vfp-neon-vfpv4"
+PACKAGE_EXTRA_ARCHS_tune-armv7ahf-neon-vfpv4 =
"${PACKAGE_EXTRA_ARCHS_tune-armv7ahf-neon} armv7ahf-vfp-vfpv4-neon"
+PACKAGE_EXTRA_ARCHS_tune-armv7athf-neon-vfpv4 =
"${PACKAGE_EXTRA_ARCHS_tune-armv7athf-neon}
armv7ahf-vfp-vfpv4-neon armv7at2hf-vfp-neon-vfpv4"
# Big Endian
AVAILTUNES += "armv7ab armv7atb armv7ab-vfpv3d16
armv7atb-vfpv3d16 armv7ab-vfpv3 armv7atb-vfpv3 armv7ab-neon
armv7atb-neon"
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..2d8dd73
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv8a.inc
@@ -0,0 +1,75 @@
+DEFAULTTUNE ?= "armv8a"
+
+TUNEVALID[armv8a] = "Enable instructions for ARMv8-a"
+TUNECONFLICTS[armv8a] = "armv4 armv5 armv6 armv7 armv7a"
+
+TUNEVALID[crc] = "Enable CRC instrucitons for ARMv8-a"
Small typo here: instrucitons .
Thanks! Didn't noticed :)
+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-armv7a.inc
+
+# Little Endian base configs
+AVAILTUNES += "armv8a armv8a-vfpv3 armv8a-neon armv8a-vfpv4
armv8a-vfpv4-neon armv8a-fp-armv8 armv8a-fp-armv8-neon
armv8a-crypto-fp-armv8-neon"
+ARMPKGARCH_tune-armv8a ?= "armv8a"
+ARMPKGARCH_tune-armv8a-vfpv3 ?= "armv8a"
+ARMPKGARCH_tune-armv8a-neon ?= "armv8a"
+ARMPKGARCH_tune-armv8a-vfpv4 ?= "armv8a"
+ARMPKGARCH_tune-armv8a-vfpv4-neon ?= "armv8a"
+ARMPKGARCH_tune-armv8a-fp-armv8 ?= "armv8a"
+ARMPKGARCH_tune-armv8a-fp-armv8-neon ?= "armv8a"
+ARMPKGARCH_tune-armv8a-crypto-fp-armv8-neon ?= "armv8a"
+TUNE_FEATURES_tune-armv8a ?= "arm armv8a vfp"
+TUNE_FEATURES_tune-armv8a-vfpv3 ?= "${TUNE_FEATURES_tune-armv8a}
vfpv3"
+TUNE_FEATURES_tune-armv8a-neon ?= "${TUNE_FEATURES_tune-armv8a} neon"
+TUNE_FEATURES_tune-armv8a-vfpv4 ?= "${TUNE_FEATURES_tune-armv8a}
vfpv4"
+TUNE_FEATURES_tune-armv8a-vfpv4-neon ?=
"${TUNE_FEATURES_tune-armv8a} neon vfpv4"
+TUNE_FEATURES_tune-armv8a-fp-armv8 ?=
"${TUNE_FEATURES_tune-armv8a} fp-armv8"
+TUNE_FEATURES_tune-armv8a-fp-armv8-neon ?=
"${TUNE_FEATURES_tune-armv8a} neon fp-armv8"
+TUNE_FEATURES_tune-armv8a-crypto-fp-armv8-neon ?=
"${TUNE_FEATURES_tune-armv8a} crypto neon fp-armv8"
+PACKAGE_EXTRA_ARCHS_tune-armv8a =
"${PACKAGE_EXTRA_ARCHS_tune-armv7a} armv8a armv8a-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-vfpv3 =
"${PACKAGE_EXTRA_ARCHS_tune-armv8a} armv8a-vfp-vfpv3"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-neon =
"${PACKAGE_EXTRA_ARCHS_tune-armv8a-vfpv3} armv8a-vfp-neon"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-vfpv4 =
"${PACKAGE_EXTRA_ARCHS_tune-armv8a-vfpv3} armv8a-vfp-vfpv4"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-vfpv4-neon =
"${PACKAGE_EXTRA_ARCHS_tune-armv8a-vfpv4} armv8a-vfp-neon
armv8a-vfp-vfpv4-neon"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-fp-armv8 =
"${PACKAGE_EXTRA_ARCHS_tune-armv8a} armv8a-fp-armv8-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-fp-armv8-neon =
"${PACKAGE_EXTRA_ARCHS_tune-armv8a-fp-armv8} armv8a-vfp-neon
armv8a-fp-armv8-vfp-neon"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-crypto-fp-armv8-neon =
"${PACKAGE_EXTRA_ARCHS_tune-armv8a-fp-armv8-neon}
armv8a-crypto-fp-armv8-vfp-neon"
+
+# CRC configs
+AVAILTUNES += "armv8a-crc armv8a-crc-vfpv3 armv8a-crc-neon
armv8a-crc-vfpv4 armv8a-crc-vfpv4-neon armv8a-crc-fp-armv8
armv8a-crc-fp-armv8-neon armv8a-crc-crypto-fp-armv8-neon"
+ARMPKGARCH_tune-armv8a-crc ?= "armv8a"
+ARMPKGARCH_tune-armv8a-crc-vfpv3 ?= "armv8a"
+ARMPKGARCH_tune-armv8a-crc-neon ?= "armv8a"
+ARMPKGARCH_tune-armv8a-crc-vfpv4 ?= "armv8a"
+ARMPKGARCH_tune-armv8a-crc-vfpv4-neon ?= "armv8a"
+ARMPKGARCH_tune-armv8a-crc-fp-armv8 ?= "armv8a"
+ARMPKGARCH_tune-armv8a-crc-fp-armv8-neon ?= "armv8a"
+ARMPKGARCH_tune-armv8a-crc-crypto-fp-armv8-neon ?= "armv8a"
+TUNE_FEATURES_tune-armv8a-crc ?= "${TUNE_FEATURES_tune-armv8a} crc"
+TUNE_FEATURES_tune-armv8a-crc-vfpv3 ?=
"${TUNE_FEATURES_tune-armv8a-vfpv3} crc"
+TUNE_FEATURES_tune-armv8a-crc-neon ?=
"${TUNE_FEATURES_tune-armv8a-neon} crc"
+TUNE_FEATURES_tune-armv8a-crc-vfpv4 ?=
"${TUNE_FEATURES_tune-armv8a-vfpv4} crc"
+TUNE_FEATURES_tune-armv8a-crc-vfpv4-neon ?=
"${TUNE_FEATURES_tune-armv8a-vfpv4-neon} crc"
+TUNE_FEATURES_tune-armv8a-crc-fp-armv8 ?=
"${TUNE_FEATURES_tune-armv8a-fp-armv8} crc"
+TUNE_FEATURES_tune-armv8a-crc-fp-armv8-neon ?=
"${TUNE_FEATURES_tune-armv8a-fp-armv8-neon} crc"
+TUNE_FEATURES_tune-armv8a-crc-crypto-fp-armv8-neon ?=
"${TUNE_FEATURES_tune-armv8a-crypto-fp-armv8-neon} crc"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-crc =
"${PACKAGE_EXTRA_ARCHS_tune-armv8a} armv8a-crc-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-vfpv3 =
"${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc} armv8a-vfp-vfpv3
armv8a-crc-vfp-vfpv3"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-neon =
"${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-vfpv3} armv8a-vfp-neon
armv8a-crc-vfp-neon"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-vfpv4 =
"${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-vfpv3} armv8a-vfp-vfpv4
armv8a-crc-vfp-vfpv4"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-vfpv4-neon =
"${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-vfpv4} armv8a-vfp-neon
armv8a-crc-vfp-neon armv8a-vfp-vfpv4-neon armv8a-crc-vfp-vfpv4-neon"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-fp-armv8 =
"${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc} armv8a-vfp-fp-armv8
armv8a-crc-fp-armv8-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-fp-armv8-neon =
"${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-fp-armv8} armv8a-vfp-neon
armv8a-vfp-neon-fp-armv8 armv8a-crc-fp-armv8-vfp-neon"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-crypto-fp-armv8-neon =
"${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-fp-armv8-neon}
armv8a-vfp-crypto-neon-fp-armv8 armv8a-crc-crypto-fp-armv8-vfp-neon"
Any plans for 64 bit version?
Andrei
Yes, we have plans to add specific tunes for armv8 64bit too, but after
we finish for 32bit.
For the moment, for 64bit, we simply include arch-armv8.inc witch only
require arch-arm64.inc.
Regards,
Daniel
--
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core