add tunings for 32-bit ARMv8-a

Submitted by Daniel Dragomir on Feb. 16, 2016, 2:28 p.m. | Patch ID: 115599

Details

Message ID 1455632918-31605-2-git-send-email-daniel.dragomir@windriver.com
State New
Headers show

Commit Message

Daniel Dragomir Feb. 16, 2016, 2:28 p.m.
From: Cristian Bercaru <cristian.bercaru@windriver.com>

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.

Signed-off-by: Cristian Bercaru <cristian.bercaru@windriver.com>
Signed-off-by: Daniel Dragomir <daniel.dragomir@windriver.com>
---
 meta/conf/machine/include/arm/arch-armv7a.inc      |  1 -
 meta/conf/machine/include/arm/arch-armv8a.inc      | 65 ++++++++++++++++++++++
 meta/conf/machine/include/arm/feature-arm-neon.inc |  3 -
 meta/conf/machine/include/arm/feature-arm-vfp.inc  | 59 ++++++++++++++++----
 4 files changed, 112 insertions(+), 16 deletions(-)
 create mode 100644 meta/conf/machine/include/arm/arch-armv8a.inc
 delete mode 100644 meta/conf/machine/include/arm/feature-arm-neon.inc

Patch hide | download patch | download mbox

diff --git a/meta/conf/machine/include/arm/arch-armv7a.inc b/meta/conf/machine/include/arm/arch-armv7a.inc
index d3b6f64..ac85fda 100644
--- a/meta/conf/machine/include/arm/arch-armv7a.inc
+++ b/meta/conf/machine/include/arm/arch-armv7a.inc
@@ -6,7 +6,6 @@  TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "armv7a", " -march=armv7-a
 MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "armv7a", "armv7a:", "" ,d)}"
 
 require conf/machine/include/arm/arch-armv6.inc
-require conf/machine/include/arm/feature-arm-neon.inc
 
 # Little Endian base configs
 AVAILTUNES += "armv7a armv7at armv7a-vfpv3d16 armv7at-vfpv3d16 armv7a-vfpv3 armv7at-vfpv3 armv7a-neon armv7at-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..1b062b8
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv8a.inc
@@ -0,0 +1,65 @@ 
+DEFAULTTUNE ?= "armv8a"
+
+TUNEVALID[armv8a] = "Enable instructions for ARMv8-a"
+TUNEVALID[crc] = "Enable CRC instrucitons for ARMv8-a"
+TUNECONFLICTS[armv8a] = "armv4 armv5 armv6 armv7 armv7a"
+TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "armv8a", " -march=armv8-a", "", d)}"
+TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "crc", "+crc", "", 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-neon-vfpv4 armv8a-fp-armv8 armv8a-neon-fp-armv8 armv8a-crypto-neon-fp-armv8"
+ARMPKGARCH_tune-armv8a ?= "armv8a"
+ARMPKGARCH_tune-armv8a-vfpv3 ?= "armv8a"
+ARMPKGARCH_tune-armv8a-neon ?= "armv8a"
+ARMPKGARCH_tune-armv8a-vfpv4 ?= "armv8a"
+ARMPKGARCH_tune-armv8a-neon-vfpv4 ?= "armv8a"
+ARMPKGARCH_tune-armv8a-fp-armv8 ?= "armv8a"
+ARMPKGARCH_tune-armv8a-neon-fp-armv8 ?= "armv8a"
+ARMPKGARCH_tune-armv8a-crypto-neon-fp-armv8 ?= "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-neon-vfpv4 ?= "${TUNE_FEATURES_tune-armv8a} neon vfpv4"
+TUNE_FEATURES_tune-armv8a-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a} fp-armv8"
+TUNE_FEATURES_tune-armv8a-neon-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a} neon fp-armv8"
+TUNE_FEATURES_tune-armv8a-crypto-neon-fp-armv8 ?= "${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-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-vfpv4} armv8a-vfp-neon armv8a-vfp-neon-vfpv4"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a} armv8a-vfp-fp-armv8"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-neon-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-fp-armv8} armv8a-vfp-neon-fp-armv8"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-crypto-neon-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-neon-fp-armv8} armv8a-vfp-crypto-neon-fp-armv8"
+
+# CRC configs
+AVAILTUNES += "armv8a-crc armv8a-crc-vfpv3 armv8a-crc-neon armv8a-crc-vfpv4 armv8a-crc-neon-vfpv4 armv8a-crc-fp-armv8 armv8a-crc-neon-fp-armv8 armv8a-crc-crypto-neon-fp-armv8"
+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-neon-vfpv4 ?= "armv8a"
+ARMPKGARCH_tune-armv8a-crc-fp-armv8 ?= "armv8a"
+ARMPKGARCH_tune-armv8a-crc-neon-fp-armv8 ?= "armv8a"
+ARMPKGARCH_tune-armv8a-crc-crypto-neon-fp-armv8 ?= "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-neon-vfpv4 ?= "${TUNE_FEATURES_tune-armv8a-neon-vfpv4} crc"
+TUNE_FEATURES_tune-armv8a-crc-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a-fp-armv8} crc"
+TUNE_FEATURES_tune-armv8a-crc-neon-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a-neon-fp-armv8} crc"
+TUNE_FEATURES_tune-armv8a-crc-crypto-neon-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a-crypto-neon-fp-armv8} 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-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-vfpv4} armv8a-vfp-neon armv8a-crc-vfp-neon armv8a-vfp-neon-vfpv4 armv8a-crc-vfp-neon-vfpv4"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc} armv8a-vfp-fp-armv8 armv8a-vfp-fp-crc-armv8"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-neon-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-fp-armv8} armv8a-vfp-neon-fp-armv8 armv8a-crc-vfp-neon-fp-armv8"
+PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-crypto-neon-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-neon-fp-armv8} armv8a-vfp-crypto-neon-fp-armv8 armv8a-crc-vfp-crypto-neon-fp-armv8"
+
diff --git a/meta/conf/machine/include/arm/feature-arm-neon.inc b/meta/conf/machine/include/arm/feature-arm-neon.inc
deleted file mode 100644
index e8b2b85..0000000
--- a/meta/conf/machine/include/arm/feature-arm-neon.inc
+++ /dev/null
@@ -1,3 +0,0 @@ 
-TUNEVALID[neon] = "Enable Neon SIMD accelerator unit."
-TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "neon", bb.utils.contains("TUNE_FEATURES", "vfpv4", " -mfpu=neon-vfpv4", " -mfpu=neon", d), "" , d)}"
-ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "neon", "-neon", "", d)}"
diff --git a/meta/conf/machine/include/arm/feature-arm-vfp.inc b/meta/conf/machine/include/arm/feature-arm-vfp.inc
index 3dfbeac..12a4e81 100644
--- a/meta/conf/machine/include/arm/feature-arm-vfp.inc
+++ b/meta/conf/machine/include/arm/feature-arm-vfp.inc
@@ -1,17 +1,52 @@ 
 TUNEVALID[vfp] = "Enable Vector Floating Point (vfp) unit."
-ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfp", "-vfp", "" ,d)}"
-
 TUNEVALID[vfpv3d16] = "Enable Vector Floating Point Version 3 with 16 registers (vfpv3-d16) unit."
-TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv3d16", " -mfpu=vfpv3-d16", "", d)}"
-ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv3d16", "-vfpv3d16", "" ,d)}"
-
 TUNEVALID[vfpv3] = "Enable Vector Floating Point Version 3 with 32 registers (vfpv3) unit."
-TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv3", " -mfpu=vfpv3", "", d)}"
-ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv3", "-vfpv3", "" ,d)}"
-
 TUNEVALID[vfpv4] = "Enable Vector Floating Point Version 4 (vfpv4) unit."
-ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv4", "-vfpv4", "" ,d)}"
-
+TUNEVALID[fp-armv8] = "Enable ARMv8 Vector Floating Point unit."
+TUNEVALID[neon] = "Enable vfpv3 and Neon SIMD accelerator unit."
+TUNEVALID[crypto] = "Enable ARMv8 crypto extension."
 TUNEVALID[callconvention-hard] = "Enable EABI hard float call convention, requires VFP."
-TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "vfp", bb.utils.contains("TUNE_FEATURES", "callconvention-hard", " -mfloat-abi=hard", " -mfloat-abi=softfp", d), "" ,d)}"
-ARMPKGSFX_EABI .= "${@bb.utils.contains("TUNE_FEATURES", [ "callconvention-hard", "vfp" ], "hf", "", d)}"
+
+python () {
+	if bb.utils.contains("TUNE_FEATURES", "crc", True, False, d):
+		d.appendVar("ARMPKGSFX_FPU", "-crc")
+
+	if bb.utils.contains("TUNE_FEATURES", "vfp", True, False, d):
+		d.appendVar("ARMPKGSFX_FPU", "-vfp")
+
+	if bb.utils.contains("TUNE_FEATURES", "vfpv3d16", True, False, d):
+		d.appendVar("TUNE_CCARGS", " -mfpu=vfpv3-d16")
+		d.appendVar("ARMPKGSFX_FPU", "-vfpv3d16")
+
+	if bb.utils.contains("TUNE_FEATURES", "vfpv3", True, False, d):
+			d.appendVar("TUNE_CCARGS", " -mfpu=vfpv3")
+			d.appendVar("ARMPKGSFX_FPU", "-vfpv3")
+	elif bb.utils.contains("TUNE_FEATURES", "vfpv4", True, False, d):
+		if bb.utils.contains("TUNE_FEATURES", "neon", True, False, d):
+			d.appendVar("TUNE_CCARGS", " -mfpu=neon-vfpv4")
+			d.appendVar("ARMPKGSFX_FPU", "-neon-vfpv4")
+		else:
+			d.appendVar("TUNE_CCARGS", " -mfpu=vfpv4")
+			d.appendVar("ARMPKGSFX_FPU", "-vfpv4")
+	elif bb.utils.contains("TUNE_FEATURES", "fp-armv8", True, False, d):
+		if bb.utils.contains("TUNE_FEATURES", "neon", True, False, d):
+			if bb.utils.contains("TUNE_FEATURES", "crypto", True, False, d):
+				d.appendVar("TUNE_CCARGS", " -mfpu=crypto-neon-fp-armv8")
+				d.appendVar("ARMPKGSFX_FPU", "-crypto-neon-fp-armv8")
+			else:
+				d.appendVar("TUNE_CCARGS", " -mfpu=neon-fp-armv8")
+				d.appendVar("ARMPKGSFX_FPU", "-neon-fp-armv8")
+		else:
+			d.appendVar("TUNE_CCARGS", " -mfpu=fp-armv8")
+			d.appendVar("ARMPKGSFX_FPU", "-fp-armv8")
+	elif bb.utils.contains("TUNE_FEATURES", "neon", True, False, d):
+		d.appendVar("TUNE_CCARGS", " -mfpu=neon")
+		d.appendVar("ARMPKGSFX_FPU", "-neon")
+
+	if bb.utils.contains("TUNE_FEATURES", "callconvention-hard", True, False, d):
+		d.appendVar("TUNE_CCARGS", " -mfloat-abi=hard")
+	else:
+		d.appendVar("TUNE_CCARGS", " -mfloat-abi=softfp")
+	if bb.utils.contains("TUNE_FEATURES", [ "vfp", "callconvention-hard" ], True, False, d):
+		d.appendVar("ARMPKGSFX_EABI", "hf")
+}

Comments

Mark Hatle Feb. 16, 2016, 2:50 p.m.
On 2/16/16 9:28 AM, Daniel Dragomir wrote:
> From: Cristian Bercaru <cristian.bercaru@windriver.com>
> 
> 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.
> 
> Signed-off-by: Cristian Bercaru <cristian.bercaru@windriver.com>
> Signed-off-by: Daniel Dragomir <daniel.dragomir@windriver.com>
> ---
>  meta/conf/machine/include/arm/arch-armv7a.inc      |  1 -
>  meta/conf/machine/include/arm/arch-armv8a.inc      | 65 ++++++++++++++++++++++
>  meta/conf/machine/include/arm/feature-arm-neon.inc |  3 -
>  meta/conf/machine/include/arm/feature-arm-vfp.inc  | 59 ++++++++++++++++----
>  4 files changed, 112 insertions(+), 16 deletions(-)
>  create mode 100644 meta/conf/machine/include/arm/arch-armv8a.inc
>  delete mode 100644 meta/conf/machine/include/arm/feature-arm-neon.inc
> 
> diff --git a/meta/conf/machine/include/arm/arch-armv7a.inc b/meta/conf/machine/include/arm/arch-armv7a.inc
> index d3b6f64..ac85fda 100644
> --- a/meta/conf/machine/include/arm/arch-armv7a.inc
> +++ b/meta/conf/machine/include/arm/arch-armv7a.inc
> @@ -6,7 +6,6 @@ TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "armv7a", " -march=armv7-a
>  MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "armv7a", "armv7a:", "" ,d)}"
>  
>  require conf/machine/include/arm/arch-armv6.inc
> -require conf/machine/include/arm/feature-arm-neon.inc
>  
>  # Little Endian base configs
>  AVAILTUNES += "armv7a armv7at armv7a-vfpv3d16 armv7at-vfpv3d16 armv7a-vfpv3 armv7at-vfpv3 armv7a-neon armv7at-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..1b062b8
> --- /dev/null
> +++ b/meta/conf/machine/include/arm/arch-armv8a.inc
> @@ -0,0 +1,65 @@
> +DEFAULTTUNE ?= "armv8a"
> +
> +TUNEVALID[armv8a] = "Enable instructions for ARMv8-a"
> +TUNEVALID[crc] = "Enable CRC instrucitons for ARMv8-a"
> +TUNECONFLICTS[armv8a] = "armv4 armv5 armv6 armv7 armv7a"
> +TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "armv8a", " -march=armv8-a", "", d)}"
> +TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "crc", "+crc", "", d)}"

I assume the idea here is to get -march=armv8-a or -march=armv8-a+crc correct?

My concern here is that there is nothing defined that forces the CRC feature to
also require armv8.  I'd definitely prefer if there was a check that BOTH armv8a
and crc was set before doing the +crc.  (I've been burned by this in the past.)

> +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-neon-vfpv4 armv8a-fp-armv8 armv8a-neon-fp-armv8 armv8a-crypto-neon-fp-armv8"
> +ARMPKGARCH_tune-armv8a ?= "armv8a"
> +ARMPKGARCH_tune-armv8a-vfpv3 ?= "armv8a"
> +ARMPKGARCH_tune-armv8a-neon ?= "armv8a"
> +ARMPKGARCH_tune-armv8a-vfpv4 ?= "armv8a"
> +ARMPKGARCH_tune-armv8a-neon-vfpv4 ?= "armv8a"
> +ARMPKGARCH_tune-armv8a-fp-armv8 ?= "armv8a"
> +ARMPKGARCH_tune-armv8a-neon-fp-armv8 ?= "armv8a"
> +ARMPKGARCH_tune-armv8a-crypto-neon-fp-armv8 ?= "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-neon-vfpv4 ?= "${TUNE_FEATURES_tune-armv8a} neon vfpv4"
> +TUNE_FEATURES_tune-armv8a-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a} fp-armv8"
> +TUNE_FEATURES_tune-armv8a-neon-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a} neon fp-armv8"
> +TUNE_FEATURES_tune-armv8a-crypto-neon-fp-armv8 ?= "${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-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-vfpv4} armv8a-vfp-neon armv8a-vfp-neon-vfpv4"
> +PACKAGE_EXTRA_ARCHS_tune-armv8a-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a} armv8a-vfp-fp-armv8"
> +PACKAGE_EXTRA_ARCHS_tune-armv8a-neon-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-fp-armv8} armv8a-vfp-neon-fp-armv8"
> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crypto-neon-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-neon-fp-armv8} armv8a-vfp-crypto-neon-fp-armv8"
> +
> +# CRC configs
> +AVAILTUNES += "armv8a-crc armv8a-crc-vfpv3 armv8a-crc-neon armv8a-crc-vfpv4 armv8a-crc-neon-vfpv4 armv8a-crc-fp-armv8 armv8a-crc-neon-fp-armv8 armv8a-crc-crypto-neon-fp-armv8"
> +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-neon-vfpv4 ?= "armv8a"
> +ARMPKGARCH_tune-armv8a-crc-fp-armv8 ?= "armv8a"
> +ARMPKGARCH_tune-armv8a-crc-neon-fp-armv8 ?= "armv8a"
> +ARMPKGARCH_tune-armv8a-crc-crypto-neon-fp-armv8 ?= "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-neon-vfpv4 ?= "${TUNE_FEATURES_tune-armv8a-neon-vfpv4} crc"
> +TUNE_FEATURES_tune-armv8a-crc-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a-fp-armv8} crc"
> +TUNE_FEATURES_tune-armv8a-crc-neon-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a-neon-fp-armv8} crc"
> +TUNE_FEATURES_tune-armv8a-crc-crypto-neon-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a-crypto-neon-fp-armv8} 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-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-vfpv4} armv8a-vfp-neon armv8a-crc-vfp-neon armv8a-vfp-neon-vfpv4 armv8a-crc-vfp-neon-vfpv4"
> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc} armv8a-vfp-fp-armv8 armv8a-vfp-fp-crc-armv8"
> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-neon-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-fp-armv8} armv8a-vfp-neon-fp-armv8 armv8a-crc-vfp-neon-fp-armv8"
> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-crypto-neon-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-neon-fp-armv8} armv8a-vfp-crypto-neon-fp-armv8 armv8a-crc-vfp-crypto-neon-fp-armv8"
> +

I'll leave the changes below for others to comment on.  I'm not against them,
but I do expect some others may have concerns.

--Mark

> diff --git a/meta/conf/machine/include/arm/feature-arm-neon.inc b/meta/conf/machine/include/arm/feature-arm-neon.inc
> deleted file mode 100644
> index e8b2b85..0000000
> --- a/meta/conf/machine/include/arm/feature-arm-neon.inc
> +++ /dev/null
> @@ -1,3 +0,0 @@
> -TUNEVALID[neon] = "Enable Neon SIMD accelerator unit."
> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "neon", bb.utils.contains("TUNE_FEATURES", "vfpv4", " -mfpu=neon-vfpv4", " -mfpu=neon", d), "" , d)}"
> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "neon", "-neon", "", d)}"
> diff --git a/meta/conf/machine/include/arm/feature-arm-vfp.inc b/meta/conf/machine/include/arm/feature-arm-vfp.inc
> index 3dfbeac..12a4e81 100644
> --- a/meta/conf/machine/include/arm/feature-arm-vfp.inc
> +++ b/meta/conf/machine/include/arm/feature-arm-vfp.inc
> @@ -1,17 +1,52 @@
>  TUNEVALID[vfp] = "Enable Vector Floating Point (vfp) unit."
> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfp", "-vfp", "" ,d)}"
> -
>  TUNEVALID[vfpv3d16] = "Enable Vector Floating Point Version 3 with 16 registers (vfpv3-d16) unit."
> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv3d16", " -mfpu=vfpv3-d16", "", d)}"
> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv3d16", "-vfpv3d16", "" ,d)}"
> -
>  TUNEVALID[vfpv3] = "Enable Vector Floating Point Version 3 with 32 registers (vfpv3) unit."
> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv3", " -mfpu=vfpv3", "", d)}"
> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv3", "-vfpv3", "" ,d)}"
> -
>  TUNEVALID[vfpv4] = "Enable Vector Floating Point Version 4 (vfpv4) unit."
> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv4", "-vfpv4", "" ,d)}"
> -
> +TUNEVALID[fp-armv8] = "Enable ARMv8 Vector Floating Point unit."
> +TUNEVALID[neon] = "Enable vfpv3 and Neon SIMD accelerator unit."
> +TUNEVALID[crypto] = "Enable ARMv8 crypto extension."
>  TUNEVALID[callconvention-hard] = "Enable EABI hard float call convention, requires VFP."
> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "vfp", bb.utils.contains("TUNE_FEATURES", "callconvention-hard", " -mfloat-abi=hard", " -mfloat-abi=softfp", d), "" ,d)}"
> -ARMPKGSFX_EABI .= "${@bb.utils.contains("TUNE_FEATURES", [ "callconvention-hard", "vfp" ], "hf", "", d)}"
> +
> +python () {
> +	if bb.utils.contains("TUNE_FEATURES", "crc", True, False, d):
> +		d.appendVar("ARMPKGSFX_FPU", "-crc")
> +
> +	if bb.utils.contains("TUNE_FEATURES", "vfp", True, False, d):
> +		d.appendVar("ARMPKGSFX_FPU", "-vfp")
> +
> +	if bb.utils.contains("TUNE_FEATURES", "vfpv3d16", True, False, d):
> +		d.appendVar("TUNE_CCARGS", " -mfpu=vfpv3-d16")
> +		d.appendVar("ARMPKGSFX_FPU", "-vfpv3d16")
> +
> +	if bb.utils.contains("TUNE_FEATURES", "vfpv3", True, False, d):
> +			d.appendVar("TUNE_CCARGS", " -mfpu=vfpv3")
> +			d.appendVar("ARMPKGSFX_FPU", "-vfpv3")
> +	elif bb.utils.contains("TUNE_FEATURES", "vfpv4", True, False, d):
> +		if bb.utils.contains("TUNE_FEATURES", "neon", True, False, d):
> +			d.appendVar("TUNE_CCARGS", " -mfpu=neon-vfpv4")
> +			d.appendVar("ARMPKGSFX_FPU", "-neon-vfpv4")
> +		else:
> +			d.appendVar("TUNE_CCARGS", " -mfpu=vfpv4")
> +			d.appendVar("ARMPKGSFX_FPU", "-vfpv4")
> +	elif bb.utils.contains("TUNE_FEATURES", "fp-armv8", True, False, d):
> +		if bb.utils.contains("TUNE_FEATURES", "neon", True, False, d):
> +			if bb.utils.contains("TUNE_FEATURES", "crypto", True, False, d):
> +				d.appendVar("TUNE_CCARGS", " -mfpu=crypto-neon-fp-armv8")
> +				d.appendVar("ARMPKGSFX_FPU", "-crypto-neon-fp-armv8")
> +			else:
> +				d.appendVar("TUNE_CCARGS", " -mfpu=neon-fp-armv8")
> +				d.appendVar("ARMPKGSFX_FPU", "-neon-fp-armv8")
> +		else:
> +			d.appendVar("TUNE_CCARGS", " -mfpu=fp-armv8")
> +			d.appendVar("ARMPKGSFX_FPU", "-fp-armv8")
> +	elif bb.utils.contains("TUNE_FEATURES", "neon", True, False, d):
> +		d.appendVar("TUNE_CCARGS", " -mfpu=neon")
> +		d.appendVar("ARMPKGSFX_FPU", "-neon")
> +
> +	if bb.utils.contains("TUNE_FEATURES", "callconvention-hard", True, False, d):
> +		d.appendVar("TUNE_CCARGS", " -mfloat-abi=hard")
> +	else:
> +		d.appendVar("TUNE_CCARGS", " -mfloat-abi=softfp")
> +	if bb.utils.contains("TUNE_FEATURES", [ "vfp", "callconvention-hard" ], True, False, d):
> +		d.appendVar("ARMPKGSFX_EABI", "hf")
> +}
>
Martin Jansa Feb. 16, 2016, 2:54 p.m.
On Tue, Feb 16, 2016 at 04:28:38PM +0200, Daniel Dragomir wrote:
> From: Cristian Bercaru <cristian.bercaru@windriver.com>
> 
> 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.

This adds TUNEVALID for various tune features which aren't valid for
armv7a and lower (keep in mind that feature-arm-vfp.inc is included from arch-armv5.inc)

Did you test this with tune-test script to at least confirm that it at
least still parses for all arm* DEFAULTTUNEs?

> Signed-off-by: Cristian Bercaru <cristian.bercaru@windriver.com>
> Signed-off-by: Daniel Dragomir <daniel.dragomir@windriver.com>
> ---
>  meta/conf/machine/include/arm/arch-armv7a.inc      |  1 -
>  meta/conf/machine/include/arm/arch-armv8a.inc      | 65 ++++++++++++++++++++++
>  meta/conf/machine/include/arm/feature-arm-neon.inc |  3 -
>  meta/conf/machine/include/arm/feature-arm-vfp.inc  | 59 ++++++++++++++++----
>  4 files changed, 112 insertions(+), 16 deletions(-)
>  create mode 100644 meta/conf/machine/include/arm/arch-armv8a.inc
>  delete mode 100644 meta/conf/machine/include/arm/feature-arm-neon.inc
> 
> diff --git a/meta/conf/machine/include/arm/arch-armv7a.inc b/meta/conf/machine/include/arm/arch-armv7a.inc
> index d3b6f64..ac85fda 100644
> --- a/meta/conf/machine/include/arm/arch-armv7a.inc
> +++ b/meta/conf/machine/include/arm/arch-armv7a.inc
> @@ -6,7 +6,6 @@ TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "armv7a", " -march=armv7-a
>  MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "armv7a", "armv7a:", "" ,d)}"
>  
>  require conf/machine/include/arm/arch-armv6.inc
> -require conf/machine/include/arm/feature-arm-neon.inc
>  
>  # Little Endian base configs
>  AVAILTUNES += "armv7a armv7at armv7a-vfpv3d16 armv7at-vfpv3d16 armv7a-vfpv3 armv7at-vfpv3 armv7a-neon armv7at-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..1b062b8
> --- /dev/null
> +++ b/meta/conf/machine/include/arm/arch-armv8a.inc
> @@ -0,0 +1,65 @@
> +DEFAULTTUNE ?= "armv8a"
> +
> +TUNEVALID[armv8a] = "Enable instructions for ARMv8-a"
> +TUNEVALID[crc] = "Enable CRC instrucitons for ARMv8-a"
> +TUNECONFLICTS[armv8a] = "armv4 armv5 armv6 armv7 armv7a"
> +TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "armv8a", " -march=armv8-a", "", d)}"
> +TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "crc", "+crc", "", 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-neon-vfpv4 armv8a-fp-armv8 armv8a-neon-fp-armv8 armv8a-crypto-neon-fp-armv8"
> +ARMPKGARCH_tune-armv8a ?= "armv8a"
> +ARMPKGARCH_tune-armv8a-vfpv3 ?= "armv8a"
> +ARMPKGARCH_tune-armv8a-neon ?= "armv8a"
> +ARMPKGARCH_tune-armv8a-vfpv4 ?= "armv8a"
> +ARMPKGARCH_tune-armv8a-neon-vfpv4 ?= "armv8a"
> +ARMPKGARCH_tune-armv8a-fp-armv8 ?= "armv8a"
> +ARMPKGARCH_tune-armv8a-neon-fp-armv8 ?= "armv8a"
> +ARMPKGARCH_tune-armv8a-crypto-neon-fp-armv8 ?= "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-neon-vfpv4 ?= "${TUNE_FEATURES_tune-armv8a} neon vfpv4"
> +TUNE_FEATURES_tune-armv8a-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a} fp-armv8"
> +TUNE_FEATURES_tune-armv8a-neon-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a} neon fp-armv8"
> +TUNE_FEATURES_tune-armv8a-crypto-neon-fp-armv8 ?= "${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-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-vfpv4} armv8a-vfp-neon armv8a-vfp-neon-vfpv4"
> +PACKAGE_EXTRA_ARCHS_tune-armv8a-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a} armv8a-vfp-fp-armv8"
> +PACKAGE_EXTRA_ARCHS_tune-armv8a-neon-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-fp-armv8} armv8a-vfp-neon-fp-armv8"
> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crypto-neon-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-neon-fp-armv8} armv8a-vfp-crypto-neon-fp-armv8"
> +
> +# CRC configs
> +AVAILTUNES += "armv8a-crc armv8a-crc-vfpv3 armv8a-crc-neon armv8a-crc-vfpv4 armv8a-crc-neon-vfpv4 armv8a-crc-fp-armv8 armv8a-crc-neon-fp-armv8 armv8a-crc-crypto-neon-fp-armv8"
> +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-neon-vfpv4 ?= "armv8a"
> +ARMPKGARCH_tune-armv8a-crc-fp-armv8 ?= "armv8a"
> +ARMPKGARCH_tune-armv8a-crc-neon-fp-armv8 ?= "armv8a"
> +ARMPKGARCH_tune-armv8a-crc-crypto-neon-fp-armv8 ?= "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-neon-vfpv4 ?= "${TUNE_FEATURES_tune-armv8a-neon-vfpv4} crc"
> +TUNE_FEATURES_tune-armv8a-crc-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a-fp-armv8} crc"
> +TUNE_FEATURES_tune-armv8a-crc-neon-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a-neon-fp-armv8} crc"
> +TUNE_FEATURES_tune-armv8a-crc-crypto-neon-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a-crypto-neon-fp-armv8} 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-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-vfpv4} armv8a-vfp-neon armv8a-crc-vfp-neon armv8a-vfp-neon-vfpv4 armv8a-crc-vfp-neon-vfpv4"
> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc} armv8a-vfp-fp-armv8 armv8a-vfp-fp-crc-armv8"
> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-neon-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-fp-armv8} armv8a-vfp-neon-fp-armv8 armv8a-crc-vfp-neon-fp-armv8"
> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-crypto-neon-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-neon-fp-armv8} armv8a-vfp-crypto-neon-fp-armv8 armv8a-crc-vfp-crypto-neon-fp-armv8"
> +
> diff --git a/meta/conf/machine/include/arm/feature-arm-neon.inc b/meta/conf/machine/include/arm/feature-arm-neon.inc
> deleted file mode 100644
> index e8b2b85..0000000
> --- a/meta/conf/machine/include/arm/feature-arm-neon.inc
> +++ /dev/null
> @@ -1,3 +0,0 @@
> -TUNEVALID[neon] = "Enable Neon SIMD accelerator unit."
> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "neon", bb.utils.contains("TUNE_FEATURES", "vfpv4", " -mfpu=neon-vfpv4", " -mfpu=neon", d), "" , d)}"
> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "neon", "-neon", "", d)}"
> diff --git a/meta/conf/machine/include/arm/feature-arm-vfp.inc b/meta/conf/machine/include/arm/feature-arm-vfp.inc
> index 3dfbeac..12a4e81 100644
> --- a/meta/conf/machine/include/arm/feature-arm-vfp.inc
> +++ b/meta/conf/machine/include/arm/feature-arm-vfp.inc
> @@ -1,17 +1,52 @@
>  TUNEVALID[vfp] = "Enable Vector Floating Point (vfp) unit."
> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfp", "-vfp", "" ,d)}"
> -
>  TUNEVALID[vfpv3d16] = "Enable Vector Floating Point Version 3 with 16 registers (vfpv3-d16) unit."
> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv3d16", " -mfpu=vfpv3-d16", "", d)}"
> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv3d16", "-vfpv3d16", "" ,d)}"
> -
>  TUNEVALID[vfpv3] = "Enable Vector Floating Point Version 3 with 32 registers (vfpv3) unit."
> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv3", " -mfpu=vfpv3", "", d)}"
> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv3", "-vfpv3", "" ,d)}"
> -
>  TUNEVALID[vfpv4] = "Enable Vector Floating Point Version 4 (vfpv4) unit."
> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv4", "-vfpv4", "" ,d)}"
> -
> +TUNEVALID[fp-armv8] = "Enable ARMv8 Vector Floating Point unit."
> +TUNEVALID[neon] = "Enable vfpv3 and Neon SIMD accelerator unit."
> +TUNEVALID[crypto] = "Enable ARMv8 crypto extension."
>  TUNEVALID[callconvention-hard] = "Enable EABI hard float call convention, requires VFP."
> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "vfp", bb.utils.contains("TUNE_FEATURES", "callconvention-hard", " -mfloat-abi=hard", " -mfloat-abi=softfp", d), "" ,d)}"
> -ARMPKGSFX_EABI .= "${@bb.utils.contains("TUNE_FEATURES", [ "callconvention-hard", "vfp" ], "hf", "", d)}"
> +
> +python () {
> +	if bb.utils.contains("TUNE_FEATURES", "crc", True, False, d):
> +		d.appendVar("ARMPKGSFX_FPU", "-crc")
> +
> +	if bb.utils.contains("TUNE_FEATURES", "vfp", True, False, d):
> +		d.appendVar("ARMPKGSFX_FPU", "-vfp")
> +
> +	if bb.utils.contains("TUNE_FEATURES", "vfpv3d16", True, False, d):
> +		d.appendVar("TUNE_CCARGS", " -mfpu=vfpv3-d16")
> +		d.appendVar("ARMPKGSFX_FPU", "-vfpv3d16")
> +
> +	if bb.utils.contains("TUNE_FEATURES", "vfpv3", True, False, d):
> +			d.appendVar("TUNE_CCARGS", " -mfpu=vfpv3")
> +			d.appendVar("ARMPKGSFX_FPU", "-vfpv3")
> +	elif bb.utils.contains("TUNE_FEATURES", "vfpv4", True, False, d):
> +		if bb.utils.contains("TUNE_FEATURES", "neon", True, False, d):
> +			d.appendVar("TUNE_CCARGS", " -mfpu=neon-vfpv4")
> +			d.appendVar("ARMPKGSFX_FPU", "-neon-vfpv4")
> +		else:
> +			d.appendVar("TUNE_CCARGS", " -mfpu=vfpv4")
> +			d.appendVar("ARMPKGSFX_FPU", "-vfpv4")
> +	elif bb.utils.contains("TUNE_FEATURES", "fp-armv8", True, False, d):
> +		if bb.utils.contains("TUNE_FEATURES", "neon", True, False, d):
> +			if bb.utils.contains("TUNE_FEATURES", "crypto", True, False, d):
> +				d.appendVar("TUNE_CCARGS", " -mfpu=crypto-neon-fp-armv8")
> +				d.appendVar("ARMPKGSFX_FPU", "-crypto-neon-fp-armv8")
> +			else:
> +				d.appendVar("TUNE_CCARGS", " -mfpu=neon-fp-armv8")
> +				d.appendVar("ARMPKGSFX_FPU", "-neon-fp-armv8")
> +		else:
> +			d.appendVar("TUNE_CCARGS", " -mfpu=fp-armv8")
> +			d.appendVar("ARMPKGSFX_FPU", "-fp-armv8")
> +	elif bb.utils.contains("TUNE_FEATURES", "neon", True, False, d):
> +		d.appendVar("TUNE_CCARGS", " -mfpu=neon")
> +		d.appendVar("ARMPKGSFX_FPU", "-neon")
> +
> +	if bb.utils.contains("TUNE_FEATURES", "callconvention-hard", True, False, d):
> +		d.appendVar("TUNE_CCARGS", " -mfloat-abi=hard")
> +	else:
> +		d.appendVar("TUNE_CCARGS", " -mfloat-abi=softfp")
> +	if bb.utils.contains("TUNE_FEATURES", [ "vfp", "callconvention-hard" ], True, False, d):
> +		d.appendVar("ARMPKGSFX_EABI", "hf")
> +}
> -- 
> 1.9.1
> 
> -- 
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
Daniel Dragomir Feb. 16, 2016, 4:08 p.m.
On 02/16/2016 04:54 PM, Martin Jansa wrote:
> On Tue, Feb 16, 2016 at 04:28:38PM +0200, Daniel Dragomir wrote:
>> From: Cristian Bercaru <cristian.bercaru@windriver.com>
>>
>> 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.
> This adds TUNEVALID for various tune features which aren't valid for
> armv7a and lower (keep in mind that feature-arm-vfp.inc is included from arch-armv5.inc)
>
> Did you test this with tune-test script to at least confirm that it at
> least still parses for all arm* DEFAULTTUNEs?
>

I just took over my colleague work and I need to continue it.
Tunnings are new for meand I'm looking for a review about the actual 
approach
from my colleague for adding ARMv8-a tunning for 32-bit.

No, I didn't ran such script.
Can you please tell me how to run it or at least where is this located.
It's scripts/tune/test.sh from
http://git.openembedded.org/openembedded-core-contrib/log/?h=jansa/tune2-test 
?
It's there any Readme for it?

Thanks,
Daniel

>> Signed-off-by: Cristian Bercaru <cristian.bercaru@windriver.com>
>> Signed-off-by: Daniel Dragomir <daniel.dragomir@windriver.com>
>> ---
>>   meta/conf/machine/include/arm/arch-armv7a.inc      |  1 -
>>   meta/conf/machine/include/arm/arch-armv8a.inc      | 65 ++++++++++++++++++++++
>>   meta/conf/machine/include/arm/feature-arm-neon.inc |  3 -
>>   meta/conf/machine/include/arm/feature-arm-vfp.inc  | 59 ++++++++++++++++----
>>   4 files changed, 112 insertions(+), 16 deletions(-)
>>   create mode 100644 meta/conf/machine/include/arm/arch-armv8a.inc
>>   delete mode 100644 meta/conf/machine/include/arm/feature-arm-neon.inc
>>
>> diff --git a/meta/conf/machine/include/arm/arch-armv7a.inc b/meta/conf/machine/include/arm/arch-armv7a.inc
>> index d3b6f64..ac85fda 100644
>> --- a/meta/conf/machine/include/arm/arch-armv7a.inc
>> +++ b/meta/conf/machine/include/arm/arch-armv7a.inc
>> @@ -6,7 +6,6 @@ TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "armv7a", " -march=armv7-a
>>   MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "armv7a", "armv7a:", "" ,d)}"
>>   
>>   require conf/machine/include/arm/arch-armv6.inc
>> -require conf/machine/include/arm/feature-arm-neon.inc
>>   
>>   # Little Endian base configs
>>   AVAILTUNES += "armv7a armv7at armv7a-vfpv3d16 armv7at-vfpv3d16 armv7a-vfpv3 armv7at-vfpv3 armv7a-neon armv7at-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..1b062b8
>> --- /dev/null
>> +++ b/meta/conf/machine/include/arm/arch-armv8a.inc
>> @@ -0,0 +1,65 @@
>> +DEFAULTTUNE ?= "armv8a"
>> +
>> +TUNEVALID[armv8a] = "Enable instructions for ARMv8-a"
>> +TUNEVALID[crc] = "Enable CRC instrucitons for ARMv8-a"
>> +TUNECONFLICTS[armv8a] = "armv4 armv5 armv6 armv7 armv7a"
>> +TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "armv8a", " -march=armv8-a", "", d)}"
>> +TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "crc", "+crc", "", 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-neon-vfpv4 armv8a-fp-armv8 armv8a-neon-fp-armv8 armv8a-crypto-neon-fp-armv8"
>> +ARMPKGARCH_tune-armv8a ?= "armv8a"
>> +ARMPKGARCH_tune-armv8a-vfpv3 ?= "armv8a"
>> +ARMPKGARCH_tune-armv8a-neon ?= "armv8a"
>> +ARMPKGARCH_tune-armv8a-vfpv4 ?= "armv8a"
>> +ARMPKGARCH_tune-armv8a-neon-vfpv4 ?= "armv8a"
>> +ARMPKGARCH_tune-armv8a-fp-armv8 ?= "armv8a"
>> +ARMPKGARCH_tune-armv8a-neon-fp-armv8 ?= "armv8a"
>> +ARMPKGARCH_tune-armv8a-crypto-neon-fp-armv8 ?= "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-neon-vfpv4 ?= "${TUNE_FEATURES_tune-armv8a} neon vfpv4"
>> +TUNE_FEATURES_tune-armv8a-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a} fp-armv8"
>> +TUNE_FEATURES_tune-armv8a-neon-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a} neon fp-armv8"
>> +TUNE_FEATURES_tune-armv8a-crypto-neon-fp-armv8 ?= "${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-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-vfpv4} armv8a-vfp-neon armv8a-vfp-neon-vfpv4"
>> +PACKAGE_EXTRA_ARCHS_tune-armv8a-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a} armv8a-vfp-fp-armv8"
>> +PACKAGE_EXTRA_ARCHS_tune-armv8a-neon-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-fp-armv8} armv8a-vfp-neon-fp-armv8"
>> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crypto-neon-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-neon-fp-armv8} armv8a-vfp-crypto-neon-fp-armv8"
>> +
>> +# CRC configs
>> +AVAILTUNES += "armv8a-crc armv8a-crc-vfpv3 armv8a-crc-neon armv8a-crc-vfpv4 armv8a-crc-neon-vfpv4 armv8a-crc-fp-armv8 armv8a-crc-neon-fp-armv8 armv8a-crc-crypto-neon-fp-armv8"
>> +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-neon-vfpv4 ?= "armv8a"
>> +ARMPKGARCH_tune-armv8a-crc-fp-armv8 ?= "armv8a"
>> +ARMPKGARCH_tune-armv8a-crc-neon-fp-armv8 ?= "armv8a"
>> +ARMPKGARCH_tune-armv8a-crc-crypto-neon-fp-armv8 ?= "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-neon-vfpv4 ?= "${TUNE_FEATURES_tune-armv8a-neon-vfpv4} crc"
>> +TUNE_FEATURES_tune-armv8a-crc-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a-fp-armv8} crc"
>> +TUNE_FEATURES_tune-armv8a-crc-neon-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a-neon-fp-armv8} crc"
>> +TUNE_FEATURES_tune-armv8a-crc-crypto-neon-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a-crypto-neon-fp-armv8} 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-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-vfpv4} armv8a-vfp-neon armv8a-crc-vfp-neon armv8a-vfp-neon-vfpv4 armv8a-crc-vfp-neon-vfpv4"
>> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc} armv8a-vfp-fp-armv8 armv8a-vfp-fp-crc-armv8"
>> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-neon-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-fp-armv8} armv8a-vfp-neon-fp-armv8 armv8a-crc-vfp-neon-fp-armv8"
>> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-crypto-neon-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-neon-fp-armv8} armv8a-vfp-crypto-neon-fp-armv8 armv8a-crc-vfp-crypto-neon-fp-armv8"
>> +
>> diff --git a/meta/conf/machine/include/arm/feature-arm-neon.inc b/meta/conf/machine/include/arm/feature-arm-neon.inc
>> deleted file mode 100644
>> index e8b2b85..0000000
>> --- a/meta/conf/machine/include/arm/feature-arm-neon.inc
>> +++ /dev/null
>> @@ -1,3 +0,0 @@
>> -TUNEVALID[neon] = "Enable Neon SIMD accelerator unit."
>> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "neon", bb.utils.contains("TUNE_FEATURES", "vfpv4", " -mfpu=neon-vfpv4", " -mfpu=neon", d), "" , d)}"
>> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "neon", "-neon", "", d)}"
>> diff --git a/meta/conf/machine/include/arm/feature-arm-vfp.inc b/meta/conf/machine/include/arm/feature-arm-vfp.inc
>> index 3dfbeac..12a4e81 100644
>> --- a/meta/conf/machine/include/arm/feature-arm-vfp.inc
>> +++ b/meta/conf/machine/include/arm/feature-arm-vfp.inc
>> @@ -1,17 +1,52 @@
>>   TUNEVALID[vfp] = "Enable Vector Floating Point (vfp) unit."
>> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfp", "-vfp", "" ,d)}"
>> -
>>   TUNEVALID[vfpv3d16] = "Enable Vector Floating Point Version 3 with 16 registers (vfpv3-d16) unit."
>> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv3d16", " -mfpu=vfpv3-d16", "", d)}"
>> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv3d16", "-vfpv3d16", "" ,d)}"
>> -
>>   TUNEVALID[vfpv3] = "Enable Vector Floating Point Version 3 with 32 registers (vfpv3) unit."
>> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv3", " -mfpu=vfpv3", "", d)}"
>> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv3", "-vfpv3", "" ,d)}"
>> -
>>   TUNEVALID[vfpv4] = "Enable Vector Floating Point Version 4 (vfpv4) unit."
>> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv4", "-vfpv4", "" ,d)}"
>> -
>> +TUNEVALID[fp-armv8] = "Enable ARMv8 Vector Floating Point unit."
>> +TUNEVALID[neon] = "Enable vfpv3 and Neon SIMD accelerator unit."
>> +TUNEVALID[crypto] = "Enable ARMv8 crypto extension."
>>   TUNEVALID[callconvention-hard] = "Enable EABI hard float call convention, requires VFP."
>> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "vfp", bb.utils.contains("TUNE_FEATURES", "callconvention-hard", " -mfloat-abi=hard", " -mfloat-abi=softfp", d), "" ,d)}"
>> -ARMPKGSFX_EABI .= "${@bb.utils.contains("TUNE_FEATURES", [ "callconvention-hard", "vfp" ], "hf", "", d)}"
>> +
>> +python () {
>> +	if bb.utils.contains("TUNE_FEATURES", "crc", True, False, d):
>> +		d.appendVar("ARMPKGSFX_FPU", "-crc")
>> +
>> +	if bb.utils.contains("TUNE_FEATURES", "vfp", True, False, d):
>> +		d.appendVar("ARMPKGSFX_FPU", "-vfp")
>> +
>> +	if bb.utils.contains("TUNE_FEATURES", "vfpv3d16", True, False, d):
>> +		d.appendVar("TUNE_CCARGS", " -mfpu=vfpv3-d16")
>> +		d.appendVar("ARMPKGSFX_FPU", "-vfpv3d16")
>> +
>> +	if bb.utils.contains("TUNE_FEATURES", "vfpv3", True, False, d):
>> +			d.appendVar("TUNE_CCARGS", " -mfpu=vfpv3")
>> +			d.appendVar("ARMPKGSFX_FPU", "-vfpv3")
>> +	elif bb.utils.contains("TUNE_FEATURES", "vfpv4", True, False, d):
>> +		if bb.utils.contains("TUNE_FEATURES", "neon", True, False, d):
>> +			d.appendVar("TUNE_CCARGS", " -mfpu=neon-vfpv4")
>> +			d.appendVar("ARMPKGSFX_FPU", "-neon-vfpv4")
>> +		else:
>> +			d.appendVar("TUNE_CCARGS", " -mfpu=vfpv4")
>> +			d.appendVar("ARMPKGSFX_FPU", "-vfpv4")
>> +	elif bb.utils.contains("TUNE_FEATURES", "fp-armv8", True, False, d):
>> +		if bb.utils.contains("TUNE_FEATURES", "neon", True, False, d):
>> +			if bb.utils.contains("TUNE_FEATURES", "crypto", True, False, d):
>> +				d.appendVar("TUNE_CCARGS", " -mfpu=crypto-neon-fp-armv8")
>> +				d.appendVar("ARMPKGSFX_FPU", "-crypto-neon-fp-armv8")
>> +			else:
>> +				d.appendVar("TUNE_CCARGS", " -mfpu=neon-fp-armv8")
>> +				d.appendVar("ARMPKGSFX_FPU", "-neon-fp-armv8")
>> +		else:
>> +			d.appendVar("TUNE_CCARGS", " -mfpu=fp-armv8")
>> +			d.appendVar("ARMPKGSFX_FPU", "-fp-armv8")
>> +	elif bb.utils.contains("TUNE_FEATURES", "neon", True, False, d):
>> +		d.appendVar("TUNE_CCARGS", " -mfpu=neon")
>> +		d.appendVar("ARMPKGSFX_FPU", "-neon")
>> +
>> +	if bb.utils.contains("TUNE_FEATURES", "callconvention-hard", True, False, d):
>> +		d.appendVar("TUNE_CCARGS", " -mfloat-abi=hard")
>> +	else:
>> +		d.appendVar("TUNE_CCARGS", " -mfloat-abi=softfp")
>> +	if bb.utils.contains("TUNE_FEATURES", [ "vfp", "callconvention-hard" ], True, False, d):
>> +		d.appendVar("ARMPKGSFX_EABI", "hf")
>> +}
>> -- 
>> 1.9.1
>>
>> -- 
>> _______________________________________________
>> Openembedded-core mailing list
>> Openembedded-core@lists.openembedded.org
>> http://lists.openembedded.org/mailman/listinfo/openembedded-core
Martin Jansa Feb. 16, 2016, 4:20 p.m.
On Tue, Feb 16, 2016 at 06:08:45PM +0200, Dragomir Daniel wrote:
> 
> 
> On 02/16/2016 04:54 PM, Martin Jansa wrote:
> > On Tue, Feb 16, 2016 at 04:28:38PM +0200, Daniel Dragomir wrote:
> >> From: Cristian Bercaru <cristian.bercaru@windriver.com>
> >>
> >> 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.
> > This adds TUNEVALID for various tune features which aren't valid for
> > armv7a and lower (keep in mind that feature-arm-vfp.inc is included from arch-armv5.inc)
> >
> > Did you test this with tune-test script to at least confirm that it at
> > least still parses for all arm* DEFAULTTUNEs?
> >
> 
> I just took over my colleague work and I need to continue it.
> Tunnings are new for meand I'm looking for a review about the actual 
> approach
> from my colleague for adding ARMv8-a tunning for 32-bit.
> 
> No, I didn't ran such script.
> Can you please tell me how to run it or at least where is this located.
> It's scripts/tune/test.sh from
> http://git.openembedded.org/openembedded-core-contrib/log/?h=jansa/tune2-test 
> ?
> It's there any Readme for it?

There isn't one, basically run the script (update it if needed) and push
your results somewhere (ideally in branch which contains results from
jansa/tune2-test so that it shows only the smaller diffs in parsed
results.

It was shortly discussed in previous tune thread:
http://lists.openembedded.org/pipermail/openembedded-core/2016-February/117395.html

> 
> Thanks,
> Daniel
> 
> >> Signed-off-by: Cristian Bercaru <cristian.bercaru@windriver.com>
> >> Signed-off-by: Daniel Dragomir <daniel.dragomir@windriver.com>
> >> ---
> >>   meta/conf/machine/include/arm/arch-armv7a.inc      |  1 -
> >>   meta/conf/machine/include/arm/arch-armv8a.inc      | 65 ++++++++++++++++++++++
> >>   meta/conf/machine/include/arm/feature-arm-neon.inc |  3 -
> >>   meta/conf/machine/include/arm/feature-arm-vfp.inc  | 59 ++++++++++++++++----
> >>   4 files changed, 112 insertions(+), 16 deletions(-)
> >>   create mode 100644 meta/conf/machine/include/arm/arch-armv8a.inc
> >>   delete mode 100644 meta/conf/machine/include/arm/feature-arm-neon.inc
> >>
> >> diff --git a/meta/conf/machine/include/arm/arch-armv7a.inc b/meta/conf/machine/include/arm/arch-armv7a.inc
> >> index d3b6f64..ac85fda 100644
> >> --- a/meta/conf/machine/include/arm/arch-armv7a.inc
> >> +++ b/meta/conf/machine/include/arm/arch-armv7a.inc
> >> @@ -6,7 +6,6 @@ TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "armv7a", " -march=armv7-a
> >>   MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "armv7a", "armv7a:", "" ,d)}"
> >>   
> >>   require conf/machine/include/arm/arch-armv6.inc
> >> -require conf/machine/include/arm/feature-arm-neon.inc
> >>   
> >>   # Little Endian base configs
> >>   AVAILTUNES += "armv7a armv7at armv7a-vfpv3d16 armv7at-vfpv3d16 armv7a-vfpv3 armv7at-vfpv3 armv7a-neon armv7at-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..1b062b8
> >> --- /dev/null
> >> +++ b/meta/conf/machine/include/arm/arch-armv8a.inc
> >> @@ -0,0 +1,65 @@
> >> +DEFAULTTUNE ?= "armv8a"
> >> +
> >> +TUNEVALID[armv8a] = "Enable instructions for ARMv8-a"
> >> +TUNEVALID[crc] = "Enable CRC instrucitons for ARMv8-a"
> >> +TUNECONFLICTS[armv8a] = "armv4 armv5 armv6 armv7 armv7a"
> >> +TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "armv8a", " -march=armv8-a", "", d)}"
> >> +TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "crc", "+crc", "", 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-neon-vfpv4 armv8a-fp-armv8 armv8a-neon-fp-armv8 armv8a-crypto-neon-fp-armv8"
> >> +ARMPKGARCH_tune-armv8a ?= "armv8a"
> >> +ARMPKGARCH_tune-armv8a-vfpv3 ?= "armv8a"
> >> +ARMPKGARCH_tune-armv8a-neon ?= "armv8a"
> >> +ARMPKGARCH_tune-armv8a-vfpv4 ?= "armv8a"
> >> +ARMPKGARCH_tune-armv8a-neon-vfpv4 ?= "armv8a"
> >> +ARMPKGARCH_tune-armv8a-fp-armv8 ?= "armv8a"
> >> +ARMPKGARCH_tune-armv8a-neon-fp-armv8 ?= "armv8a"
> >> +ARMPKGARCH_tune-armv8a-crypto-neon-fp-armv8 ?= "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-neon-vfpv4 ?= "${TUNE_FEATURES_tune-armv8a} neon vfpv4"
> >> +TUNE_FEATURES_tune-armv8a-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a} fp-armv8"
> >> +TUNE_FEATURES_tune-armv8a-neon-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a} neon fp-armv8"
> >> +TUNE_FEATURES_tune-armv8a-crypto-neon-fp-armv8 ?= "${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-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-vfpv4} armv8a-vfp-neon armv8a-vfp-neon-vfpv4"
> >> +PACKAGE_EXTRA_ARCHS_tune-armv8a-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a} armv8a-vfp-fp-armv8"
> >> +PACKAGE_EXTRA_ARCHS_tune-armv8a-neon-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-fp-armv8} armv8a-vfp-neon-fp-armv8"
> >> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crypto-neon-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-neon-fp-armv8} armv8a-vfp-crypto-neon-fp-armv8"
> >> +
> >> +# CRC configs
> >> +AVAILTUNES += "armv8a-crc armv8a-crc-vfpv3 armv8a-crc-neon armv8a-crc-vfpv4 armv8a-crc-neon-vfpv4 armv8a-crc-fp-armv8 armv8a-crc-neon-fp-armv8 armv8a-crc-crypto-neon-fp-armv8"
> >> +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-neon-vfpv4 ?= "armv8a"
> >> +ARMPKGARCH_tune-armv8a-crc-fp-armv8 ?= "armv8a"
> >> +ARMPKGARCH_tune-armv8a-crc-neon-fp-armv8 ?= "armv8a"
> >> +ARMPKGARCH_tune-armv8a-crc-crypto-neon-fp-armv8 ?= "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-neon-vfpv4 ?= "${TUNE_FEATURES_tune-armv8a-neon-vfpv4} crc"
> >> +TUNE_FEATURES_tune-armv8a-crc-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a-fp-armv8} crc"
> >> +TUNE_FEATURES_tune-armv8a-crc-neon-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a-neon-fp-armv8} crc"
> >> +TUNE_FEATURES_tune-armv8a-crc-crypto-neon-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a-crypto-neon-fp-armv8} 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-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-vfpv4} armv8a-vfp-neon armv8a-crc-vfp-neon armv8a-vfp-neon-vfpv4 armv8a-crc-vfp-neon-vfpv4"
> >> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc} armv8a-vfp-fp-armv8 armv8a-vfp-fp-crc-armv8"
> >> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-neon-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-fp-armv8} armv8a-vfp-neon-fp-armv8 armv8a-crc-vfp-neon-fp-armv8"
> >> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-crypto-neon-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-neon-fp-armv8} armv8a-vfp-crypto-neon-fp-armv8 armv8a-crc-vfp-crypto-neon-fp-armv8"
> >> +
> >> diff --git a/meta/conf/machine/include/arm/feature-arm-neon.inc b/meta/conf/machine/include/arm/feature-arm-neon.inc
> >> deleted file mode 100644
> >> index e8b2b85..0000000
> >> --- a/meta/conf/machine/include/arm/feature-arm-neon.inc
> >> +++ /dev/null
> >> @@ -1,3 +0,0 @@
> >> -TUNEVALID[neon] = "Enable Neon SIMD accelerator unit."
> >> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "neon", bb.utils.contains("TUNE_FEATURES", "vfpv4", " -mfpu=neon-vfpv4", " -mfpu=neon", d), "" , d)}"
> >> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "neon", "-neon", "", d)}"
> >> diff --git a/meta/conf/machine/include/arm/feature-arm-vfp.inc b/meta/conf/machine/include/arm/feature-arm-vfp.inc
> >> index 3dfbeac..12a4e81 100644
> >> --- a/meta/conf/machine/include/arm/feature-arm-vfp.inc
> >> +++ b/meta/conf/machine/include/arm/feature-arm-vfp.inc
> >> @@ -1,17 +1,52 @@
> >>   TUNEVALID[vfp] = "Enable Vector Floating Point (vfp) unit."
> >> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfp", "-vfp", "" ,d)}"
> >> -
> >>   TUNEVALID[vfpv3d16] = "Enable Vector Floating Point Version 3 with 16 registers (vfpv3-d16) unit."
> >> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv3d16", " -mfpu=vfpv3-d16", "", d)}"
> >> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv3d16", "-vfpv3d16", "" ,d)}"
> >> -
> >>   TUNEVALID[vfpv3] = "Enable Vector Floating Point Version 3 with 32 registers (vfpv3) unit."
> >> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv3", " -mfpu=vfpv3", "", d)}"
> >> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv3", "-vfpv3", "" ,d)}"
> >> -
> >>   TUNEVALID[vfpv4] = "Enable Vector Floating Point Version 4 (vfpv4) unit."
> >> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv4", "-vfpv4", "" ,d)}"
> >> -
> >> +TUNEVALID[fp-armv8] = "Enable ARMv8 Vector Floating Point unit."
> >> +TUNEVALID[neon] = "Enable vfpv3 and Neon SIMD accelerator unit."
> >> +TUNEVALID[crypto] = "Enable ARMv8 crypto extension."
> >>   TUNEVALID[callconvention-hard] = "Enable EABI hard float call convention, requires VFP."
> >> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "vfp", bb.utils.contains("TUNE_FEATURES", "callconvention-hard", " -mfloat-abi=hard", " -mfloat-abi=softfp", d), "" ,d)}"
> >> -ARMPKGSFX_EABI .= "${@bb.utils.contains("TUNE_FEATURES", [ "callconvention-hard", "vfp" ], "hf", "", d)}"
> >> +
> >> +python () {
> >> +	if bb.utils.contains("TUNE_FEATURES", "crc", True, False, d):
> >> +		d.appendVar("ARMPKGSFX_FPU", "-crc")
> >> +
> >> +	if bb.utils.contains("TUNE_FEATURES", "vfp", True, False, d):
> >> +		d.appendVar("ARMPKGSFX_FPU", "-vfp")
> >> +
> >> +	if bb.utils.contains("TUNE_FEATURES", "vfpv3d16", True, False, d):
> >> +		d.appendVar("TUNE_CCARGS", " -mfpu=vfpv3-d16")
> >> +		d.appendVar("ARMPKGSFX_FPU", "-vfpv3d16")
> >> +
> >> +	if bb.utils.contains("TUNE_FEATURES", "vfpv3", True, False, d):
> >> +			d.appendVar("TUNE_CCARGS", " -mfpu=vfpv3")
> >> +			d.appendVar("ARMPKGSFX_FPU", "-vfpv3")
> >> +	elif bb.utils.contains("TUNE_FEATURES", "vfpv4", True, False, d):
> >> +		if bb.utils.contains("TUNE_FEATURES", "neon", True, False, d):
> >> +			d.appendVar("TUNE_CCARGS", " -mfpu=neon-vfpv4")
> >> +			d.appendVar("ARMPKGSFX_FPU", "-neon-vfpv4")
> >> +		else:
> >> +			d.appendVar("TUNE_CCARGS", " -mfpu=vfpv4")
> >> +			d.appendVar("ARMPKGSFX_FPU", "-vfpv4")
> >> +	elif bb.utils.contains("TUNE_FEATURES", "fp-armv8", True, False, d):
> >> +		if bb.utils.contains("TUNE_FEATURES", "neon", True, False, d):
> >> +			if bb.utils.contains("TUNE_FEATURES", "crypto", True, False, d):
> >> +				d.appendVar("TUNE_CCARGS", " -mfpu=crypto-neon-fp-armv8")
> >> +				d.appendVar("ARMPKGSFX_FPU", "-crypto-neon-fp-armv8")
> >> +			else:
> >> +				d.appendVar("TUNE_CCARGS", " -mfpu=neon-fp-armv8")
> >> +				d.appendVar("ARMPKGSFX_FPU", "-neon-fp-armv8")
> >> +		else:
> >> +			d.appendVar("TUNE_CCARGS", " -mfpu=fp-armv8")
> >> +			d.appendVar("ARMPKGSFX_FPU", "-fp-armv8")
> >> +	elif bb.utils.contains("TUNE_FEATURES", "neon", True, False, d):
> >> +		d.appendVar("TUNE_CCARGS", " -mfpu=neon")
> >> +		d.appendVar("ARMPKGSFX_FPU", "-neon")
> >> +
> >> +	if bb.utils.contains("TUNE_FEATURES", "callconvention-hard", True, False, d):
> >> +		d.appendVar("TUNE_CCARGS", " -mfloat-abi=hard")
> >> +	else:
> >> +		d.appendVar("TUNE_CCARGS", " -mfloat-abi=softfp")
> >> +	if bb.utils.contains("TUNE_FEATURES", [ "vfp", "callconvention-hard" ], True, False, d):
> >> +		d.appendVar("ARMPKGSFX_EABI", "hf")
> >> +}
> >> -- 
> >> 1.9.1
> >>
> >> -- 
> >> _______________________________________________
> >> Openembedded-core mailing list
> >> Openembedded-core@lists.openembedded.org
> >> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>
Andre McCurdy Feb. 16, 2016, 8:20 p.m.
On Tue, Feb 16, 2016 at 6:28 AM, Daniel Dragomir
<daniel.dragomir@windriver.com> wrote:
> From: Cristian Bercaru <cristian.bercaru@windriver.com>
>
> 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.

Are there any armv8 implementations which only support vfpv3?

> Signed-off-by: Cristian Bercaru <cristian.bercaru@windriver.com>
> Signed-off-by: Daniel Dragomir <daniel.dragomir@windriver.com>
> ---
>  meta/conf/machine/include/arm/arch-armv7a.inc      |  1 -
>  meta/conf/machine/include/arm/arch-armv8a.inc      | 65 ++++++++++++++++++++++
>  meta/conf/machine/include/arm/feature-arm-neon.inc |  3 -
>  meta/conf/machine/include/arm/feature-arm-vfp.inc  | 59 ++++++++++++++++----
>  4 files changed, 112 insertions(+), 16 deletions(-)
>  create mode 100644 meta/conf/machine/include/arm/arch-armv8a.inc
>  delete mode 100644 meta/conf/machine/include/arm/feature-arm-neon.inc
>
> diff --git a/meta/conf/machine/include/arm/arch-armv7a.inc b/meta/conf/machine/include/arm/arch-armv7a.inc
> index d3b6f64..ac85fda 100644
> --- a/meta/conf/machine/include/arm/arch-armv7a.inc
> +++ b/meta/conf/machine/include/arm/arch-armv7a.inc
> @@ -6,7 +6,6 @@ TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "armv7a", " -march=armv7-a
>  MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "armv7a", "armv7a:", "" ,d)}"
>
>  require conf/machine/include/arm/arch-armv6.inc
> -require conf/machine/include/arm/feature-arm-neon.inc
>
>  # Little Endian base configs
>  AVAILTUNES += "armv7a armv7at armv7a-vfpv3d16 armv7at-vfpv3d16 armv7a-vfpv3 armv7at-vfpv3 armv7a-neon armv7at-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..1b062b8
> --- /dev/null
> +++ b/meta/conf/machine/include/arm/arch-armv8a.inc
> @@ -0,0 +1,65 @@
> +DEFAULTTUNE ?= "armv8a"
> +
> +TUNEVALID[armv8a] = "Enable instructions for ARMv8-a"
> +TUNEVALID[crc] = "Enable CRC instrucitons for ARMv8-a"
> +TUNECONFLICTS[armv8a] = "armv4 armv5 armv6 armv7 armv7a"
> +TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "armv8a", " -march=armv8-a", "", d)}"
> +TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "crc", "+crc", "", 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-neon-vfpv4 armv8a-fp-armv8 armv8a-neon-fp-armv8 armv8a-crypto-neon-fp-armv8"
> +ARMPKGARCH_tune-armv8a ?= "armv8a"
> +ARMPKGARCH_tune-armv8a-vfpv3 ?= "armv8a"
> +ARMPKGARCH_tune-armv8a-neon ?= "armv8a"
> +ARMPKGARCH_tune-armv8a-vfpv4 ?= "armv8a"
> +ARMPKGARCH_tune-armv8a-neon-vfpv4 ?= "armv8a"
> +ARMPKGARCH_tune-armv8a-fp-armv8 ?= "armv8a"
> +ARMPKGARCH_tune-armv8a-neon-fp-armv8 ?= "armv8a"
> +ARMPKGARCH_tune-armv8a-crypto-neon-fp-armv8 ?= "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-neon-vfpv4 ?= "${TUNE_FEATURES_tune-armv8a} neon vfpv4"
> +TUNE_FEATURES_tune-armv8a-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a} fp-armv8"
> +TUNE_FEATURES_tune-armv8a-neon-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a} neon fp-armv8"
> +TUNE_FEATURES_tune-armv8a-crypto-neon-fp-armv8 ?= "${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-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-vfpv4} armv8a-vfp-neon armv8a-vfp-neon-vfpv4"
> +PACKAGE_EXTRA_ARCHS_tune-armv8a-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a} armv8a-vfp-fp-armv8"
> +PACKAGE_EXTRA_ARCHS_tune-armv8a-neon-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-fp-armv8} armv8a-vfp-neon-fp-armv8"
> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crypto-neon-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-neon-fp-armv8} armv8a-vfp-crypto-neon-fp-armv8"
> +
> +# CRC configs
> +AVAILTUNES += "armv8a-crc armv8a-crc-vfpv3 armv8a-crc-neon armv8a-crc-vfpv4 armv8a-crc-neon-vfpv4 armv8a-crc-fp-armv8 armv8a-crc-neon-fp-armv8 armv8a-crc-crypto-neon-fp-armv8"
> +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-neon-vfpv4 ?= "armv8a"
> +ARMPKGARCH_tune-armv8a-crc-fp-armv8 ?= "armv8a"
> +ARMPKGARCH_tune-armv8a-crc-neon-fp-armv8 ?= "armv8a"
> +ARMPKGARCH_tune-armv8a-crc-crypto-neon-fp-armv8 ?= "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-neon-vfpv4 ?= "${TUNE_FEATURES_tune-armv8a-neon-vfpv4} crc"
> +TUNE_FEATURES_tune-armv8a-crc-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a-fp-armv8} crc"
> +TUNE_FEATURES_tune-armv8a-crc-neon-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a-neon-fp-armv8} crc"
> +TUNE_FEATURES_tune-armv8a-crc-crypto-neon-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a-crypto-neon-fp-armv8} 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-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-vfpv4} armv8a-vfp-neon armv8a-crc-vfp-neon armv8a-vfp-neon-vfpv4 armv8a-crc-vfp-neon-vfpv4"
> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc} armv8a-vfp-fp-armv8 armv8a-vfp-fp-crc-armv8"
> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-neon-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-fp-armv8} armv8a-vfp-neon-fp-armv8 armv8a-crc-vfp-neon-fp-armv8"
> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-crypto-neon-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-neon-fp-armv8} armv8a-vfp-crypto-neon-fp-armv8 armv8a-crc-vfp-crypto-neon-fp-armv8"
> +
> diff --git a/meta/conf/machine/include/arm/feature-arm-neon.inc b/meta/conf/machine/include/arm/feature-arm-neon.inc
> deleted file mode 100644
> index e8b2b85..0000000
> --- a/meta/conf/machine/include/arm/feature-arm-neon.inc
> +++ /dev/null
> @@ -1,3 +0,0 @@
> -TUNEVALID[neon] = "Enable Neon SIMD accelerator unit."
> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "neon", bb.utils.contains("TUNE_FEATURES", "vfpv4", " -mfpu=neon-vfpv4", " -mfpu=neon", d), "" , d)}"
> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "neon", "-neon", "", d)}"
> diff --git a/meta/conf/machine/include/arm/feature-arm-vfp.inc b/meta/conf/machine/include/arm/feature-arm-vfp.inc
> index 3dfbeac..12a4e81 100644
> --- a/meta/conf/machine/include/arm/feature-arm-vfp.inc
> +++ b/meta/conf/machine/include/arm/feature-arm-vfp.inc
> @@ -1,17 +1,52 @@
>  TUNEVALID[vfp] = "Enable Vector Floating Point (vfp) unit."
> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfp", "-vfp", "" ,d)}"
> -
>  TUNEVALID[vfpv3d16] = "Enable Vector Floating Point Version 3 with 16 registers (vfpv3-d16) unit."
> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv3d16", " -mfpu=vfpv3-d16", "", d)}"
> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv3d16", "-vfpv3d16", "" ,d)}"
> -
>  TUNEVALID[vfpv3] = "Enable Vector Floating Point Version 3 with 32 registers (vfpv3) unit."
> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv3", " -mfpu=vfpv3", "", d)}"
> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv3", "-vfpv3", "" ,d)}"
> -
>  TUNEVALID[vfpv4] = "Enable Vector Floating Point Version 4 (vfpv4) unit."
> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv4", "-vfpv4", "" ,d)}"
> -
> +TUNEVALID[fp-armv8] = "Enable ARMv8 Vector Floating Point unit."
> +TUNEVALID[neon] = "Enable vfpv3 and Neon SIMD accelerator unit."
> +TUNEVALID[crypto] = "Enable ARMv8 crypto extension."
>  TUNEVALID[callconvention-hard] = "Enable EABI hard float call convention, requires VFP."
> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "vfp", bb.utils.contains("TUNE_FEATURES", "callconvention-hard", " -mfloat-abi=hard", " -mfloat-abi=softfp", d), "" ,d)}"
> -ARMPKGSFX_EABI .= "${@bb.utils.contains("TUNE_FEATURES", [ "callconvention-hard", "vfp" ], "hf", "", d)}"
> +
> +python () {
> +       if bb.utils.contains("TUNE_FEATURES", "crc", True, False, d):
> +               d.appendVar("ARMPKGSFX_FPU", "-crc")
> +
> +       if bb.utils.contains("TUNE_FEATURES", "vfp", True, False, d):
> +               d.appendVar("ARMPKGSFX_FPU", "-vfp")
> +
> +       if bb.utils.contains("TUNE_FEATURES", "vfpv3d16", True, False, d):
> +               d.appendVar("TUNE_CCARGS", " -mfpu=vfpv3-d16")
> +               d.appendVar("ARMPKGSFX_FPU", "-vfpv3d16")
> +
> +       if bb.utils.contains("TUNE_FEATURES", "vfpv3", True, False, d):
> +                       d.appendVar("TUNE_CCARGS", " -mfpu=vfpv3")
> +                       d.appendVar("ARMPKGSFX_FPU", "-vfpv3")
> +       elif bb.utils.contains("TUNE_FEATURES", "vfpv4", True, False, d):
> +               if bb.utils.contains("TUNE_FEATURES", "neon", True, False, d):
> +                       d.appendVar("TUNE_CCARGS", " -mfpu=neon-vfpv4")
> +                       d.appendVar("ARMPKGSFX_FPU", "-neon-vfpv4")
> +               else:
> +                       d.appendVar("TUNE_CCARGS", " -mfpu=vfpv4")
> +                       d.appendVar("ARMPKGSFX_FPU", "-vfpv4")
> +       elif bb.utils.contains("TUNE_FEATURES", "fp-armv8", True, False, d):
> +               if bb.utils.contains("TUNE_FEATURES", "neon", True, False, d):
> +                       if bb.utils.contains("TUNE_FEATURES", "crypto", True, False, d):
> +                               d.appendVar("TUNE_CCARGS", " -mfpu=crypto-neon-fp-armv8")
> +                               d.appendVar("ARMPKGSFX_FPU", "-crypto-neon-fp-armv8")
> +                       else:
> +                               d.appendVar("TUNE_CCARGS", " -mfpu=neon-fp-armv8")
> +                               d.appendVar("ARMPKGSFX_FPU", "-neon-fp-armv8")
> +               else:
> +                       d.appendVar("TUNE_CCARGS", " -mfpu=fp-armv8")
> +                       d.appendVar("ARMPKGSFX_FPU", "-fp-armv8")
> +       elif bb.utils.contains("TUNE_FEATURES", "neon", True, False, d):
> +               d.appendVar("TUNE_CCARGS", " -mfpu=neon")
> +               d.appendVar("ARMPKGSFX_FPU", "-neon")
> +
> +       if bb.utils.contains("TUNE_FEATURES", "callconvention-hard", True, False, d):
> +               d.appendVar("TUNE_CCARGS", " -mfloat-abi=hard")

Hardfloat also needs to be conditional on the chip supporting vfp.

> +       else:
> +               d.appendVar("TUNE_CCARGS", " -mfloat-abi=softfp")
> +       if bb.utils.contains("TUNE_FEATURES", [ "vfp", "callconvention-hard" ], True, False, d):
> +               d.appendVar("ARMPKGSFX_EABI", "hf")
> +}
> --
> 1.9.1
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
Daniel Dragomir Feb. 18, 2016, 1:28 p.m.
On 02/16/2016 06:20 PM, Martin Jansa wrote:
> On Tue, Feb 16, 2016 at 06:08:45PM +0200, Dragomir Daniel wrote:
>>
>> On 02/16/2016 04:54 PM, Martin Jansa wrote:
>>> On Tue, Feb 16, 2016 at 04:28:38PM +0200, Daniel Dragomir wrote:
>>>> From: Cristian Bercaru <cristian.bercaru@windriver.com>
>>>>
>>>> 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.
>>> This adds TUNEVALID for various tune features which aren't valid for
>>> armv7a and lower (keep in mind that feature-arm-vfp.inc is included from arch-armv5.inc)
>>>
>>> Did you test this with tune-test script to at least confirm that it at
>>> least still parses for all arm* DEFAULTTUNEs?
>>>
>> I just took over my colleague work and I need to continue it.
>> Tunnings are new for meand I'm looking for a review about the actual
>> approach
>> from my colleague for adding ARMv8-a tunning for 32-bit.
>>
>> No, I didn't ran such script.
>> Can you please tell me how to run it or at least where is this located.
>> It's scripts/tune/test.sh from
>> http://git.openembedded.org/openembedded-core-contrib/log/?h=jansa/tune2-test
>> ?
>> It's there any Readme for it?
> There isn't one, basically run the script (update it if needed) and push
> your results somewhere (ideally in branch which contains results from
> jansa/tune2-test so that it shows only the smaller diffs in parsed
> results.
>
> It was shortly discussed in previous tune thread:
> http://lists.openembedded.org/pipermail/openembedded-core/2016-February/117395.html

Hi Martin,
I ran the script and I got many errors (log.fake*). I pushed the result 
in a public personal repo:
https://github.com/ddragomi/tune_test/tree/master/tune

I put my results over yours from openembedded-core-contrib to see diffs 
better. You can see the commit here:
https://github.com/ddragomi/tune_test/commit/bb08541020f211d6e1579069a58bb28eb2456b87

Don't know why, but there are fewer combinations for machine and tune. I 
did this: pull openembedded-core (apply patch) and bitbake, source 
oe-init-build-env, copied your scrip and ran for the build created by 
default. Did I made something wrong?

Thanks,
Daniel

>> Thanks,
>> Daniel
>>
>>>> Signed-off-by: Cristian Bercaru <cristian.bercaru@windriver.com>
>>>> Signed-off-by: Daniel Dragomir <daniel.dragomir@windriver.com>
>>>> ---
>>>>    meta/conf/machine/include/arm/arch-armv7a.inc      |  1 -
>>>>    meta/conf/machine/include/arm/arch-armv8a.inc      | 65 ++++++++++++++++++++++
>>>>    meta/conf/machine/include/arm/feature-arm-neon.inc |  3 -
>>>>    meta/conf/machine/include/arm/feature-arm-vfp.inc  | 59 ++++++++++++++++----
>>>>    4 files changed, 112 insertions(+), 16 deletions(-)
>>>>    create mode 100644 meta/conf/machine/include/arm/arch-armv8a.inc
>>>>    delete mode 100644 meta/conf/machine/include/arm/feature-arm-neon.inc
>>>>
>>>> diff --git a/meta/conf/machine/include/arm/arch-armv7a.inc b/meta/conf/machine/include/arm/arch-armv7a.inc
>>>> index d3b6f64..ac85fda 100644
>>>> --- a/meta/conf/machine/include/arm/arch-armv7a.inc
>>>> +++ b/meta/conf/machine/include/arm/arch-armv7a.inc
>>>> @@ -6,7 +6,6 @@ TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "armv7a", " -march=armv7-a
>>>>    MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "armv7a", "armv7a:", "" ,d)}"
>>>>    
>>>>    require conf/machine/include/arm/arch-armv6.inc
>>>> -require conf/machine/include/arm/feature-arm-neon.inc
>>>>    
>>>>    # Little Endian base configs
>>>>    AVAILTUNES += "armv7a armv7at armv7a-vfpv3d16 armv7at-vfpv3d16 armv7a-vfpv3 armv7at-vfpv3 armv7a-neon armv7at-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..1b062b8
>>>> --- /dev/null
>>>> +++ b/meta/conf/machine/include/arm/arch-armv8a.inc
>>>> @@ -0,0 +1,65 @@
>>>> +DEFAULTTUNE ?= "armv8a"
>>>> +
>>>> +TUNEVALID[armv8a] = "Enable instructions for ARMv8-a"
>>>> +TUNEVALID[crc] = "Enable CRC instrucitons for ARMv8-a"
>>>> +TUNECONFLICTS[armv8a] = "armv4 armv5 armv6 armv7 armv7a"
>>>> +TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "armv8a", " -march=armv8-a", "", d)}"
>>>> +TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "crc", "+crc", "", 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-neon-vfpv4 armv8a-fp-armv8 armv8a-neon-fp-armv8 armv8a-crypto-neon-fp-armv8"
>>>> +ARMPKGARCH_tune-armv8a ?= "armv8a"
>>>> +ARMPKGARCH_tune-armv8a-vfpv3 ?= "armv8a"
>>>> +ARMPKGARCH_tune-armv8a-neon ?= "armv8a"
>>>> +ARMPKGARCH_tune-armv8a-vfpv4 ?= "armv8a"
>>>> +ARMPKGARCH_tune-armv8a-neon-vfpv4 ?= "armv8a"
>>>> +ARMPKGARCH_tune-armv8a-fp-armv8 ?= "armv8a"
>>>> +ARMPKGARCH_tune-armv8a-neon-fp-armv8 ?= "armv8a"
>>>> +ARMPKGARCH_tune-armv8a-crypto-neon-fp-armv8 ?= "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-neon-vfpv4 ?= "${TUNE_FEATURES_tune-armv8a} neon vfpv4"
>>>> +TUNE_FEATURES_tune-armv8a-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a} fp-armv8"
>>>> +TUNE_FEATURES_tune-armv8a-neon-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a} neon fp-armv8"
>>>> +TUNE_FEATURES_tune-armv8a-crypto-neon-fp-armv8 ?= "${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-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-vfpv4} armv8a-vfp-neon armv8a-vfp-neon-vfpv4"
>>>> +PACKAGE_EXTRA_ARCHS_tune-armv8a-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a} armv8a-vfp-fp-armv8"
>>>> +PACKAGE_EXTRA_ARCHS_tune-armv8a-neon-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-fp-armv8} armv8a-vfp-neon-fp-armv8"
>>>> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crypto-neon-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-neon-fp-armv8} armv8a-vfp-crypto-neon-fp-armv8"
>>>> +
>>>> +# CRC configs
>>>> +AVAILTUNES += "armv8a-crc armv8a-crc-vfpv3 armv8a-crc-neon armv8a-crc-vfpv4 armv8a-crc-neon-vfpv4 armv8a-crc-fp-armv8 armv8a-crc-neon-fp-armv8 armv8a-crc-crypto-neon-fp-armv8"
>>>> +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-neon-vfpv4 ?= "armv8a"
>>>> +ARMPKGARCH_tune-armv8a-crc-fp-armv8 ?= "armv8a"
>>>> +ARMPKGARCH_tune-armv8a-crc-neon-fp-armv8 ?= "armv8a"
>>>> +ARMPKGARCH_tune-armv8a-crc-crypto-neon-fp-armv8 ?= "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-neon-vfpv4 ?= "${TUNE_FEATURES_tune-armv8a-neon-vfpv4} crc"
>>>> +TUNE_FEATURES_tune-armv8a-crc-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a-fp-armv8} crc"
>>>> +TUNE_FEATURES_tune-armv8a-crc-neon-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a-neon-fp-armv8} crc"
>>>> +TUNE_FEATURES_tune-armv8a-crc-crypto-neon-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a-crypto-neon-fp-armv8} 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-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-vfpv4} armv8a-vfp-neon armv8a-crc-vfp-neon armv8a-vfp-neon-vfpv4 armv8a-crc-vfp-neon-vfpv4"
>>>> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc} armv8a-vfp-fp-armv8 armv8a-vfp-fp-crc-armv8"
>>>> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-neon-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-fp-armv8} armv8a-vfp-neon-fp-armv8 armv8a-crc-vfp-neon-fp-armv8"
>>>> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-crypto-neon-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-neon-fp-armv8} armv8a-vfp-crypto-neon-fp-armv8 armv8a-crc-vfp-crypto-neon-fp-armv8"
>>>> +
>>>> diff --git a/meta/conf/machine/include/arm/feature-arm-neon.inc b/meta/conf/machine/include/arm/feature-arm-neon.inc
>>>> deleted file mode 100644
>>>> index e8b2b85..0000000
>>>> --- a/meta/conf/machine/include/arm/feature-arm-neon.inc
>>>> +++ /dev/null
>>>> @@ -1,3 +0,0 @@
>>>> -TUNEVALID[neon] = "Enable Neon SIMD accelerator unit."
>>>> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "neon", bb.utils.contains("TUNE_FEATURES", "vfpv4", " -mfpu=neon-vfpv4", " -mfpu=neon", d), "" , d)}"
>>>> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "neon", "-neon", "", d)}"
>>>> diff --git a/meta/conf/machine/include/arm/feature-arm-vfp.inc b/meta/conf/machine/include/arm/feature-arm-vfp.inc
>>>> index 3dfbeac..12a4e81 100644
>>>> --- a/meta/conf/machine/include/arm/feature-arm-vfp.inc
>>>> +++ b/meta/conf/machine/include/arm/feature-arm-vfp.inc
>>>> @@ -1,17 +1,52 @@
>>>>    TUNEVALID[vfp] = "Enable Vector Floating Point (vfp) unit."
>>>> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfp", "-vfp", "" ,d)}"
>>>> -
>>>>    TUNEVALID[vfpv3d16] = "Enable Vector Floating Point Version 3 with 16 registers (vfpv3-d16) unit."
>>>> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv3d16", " -mfpu=vfpv3-d16", "", d)}"
>>>> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv3d16", "-vfpv3d16", "" ,d)}"
>>>> -
>>>>    TUNEVALID[vfpv3] = "Enable Vector Floating Point Version 3 with 32 registers (vfpv3) unit."
>>>> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv3", " -mfpu=vfpv3", "", d)}"
>>>> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv3", "-vfpv3", "" ,d)}"
>>>> -
>>>>    TUNEVALID[vfpv4] = "Enable Vector Floating Point Version 4 (vfpv4) unit."
>>>> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv4", "-vfpv4", "" ,d)}"
>>>> -
>>>> +TUNEVALID[fp-armv8] = "Enable ARMv8 Vector Floating Point unit."
>>>> +TUNEVALID[neon] = "Enable vfpv3 and Neon SIMD accelerator unit."
>>>> +TUNEVALID[crypto] = "Enable ARMv8 crypto extension."
>>>>    TUNEVALID[callconvention-hard] = "Enable EABI hard float call convention, requires VFP."
>>>> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "vfp", bb.utils.contains("TUNE_FEATURES", "callconvention-hard", " -mfloat-abi=hard", " -mfloat-abi=softfp", d), "" ,d)}"
>>>> -ARMPKGSFX_EABI .= "${@bb.utils.contains("TUNE_FEATURES", [ "callconvention-hard", "vfp" ], "hf", "", d)}"
>>>> +
>>>> +python () {
>>>> +	if bb.utils.contains("TUNE_FEATURES", "crc", True, False, d):
>>>> +		d.appendVar("ARMPKGSFX_FPU", "-crc")
>>>> +
>>>> +	if bb.utils.contains("TUNE_FEATURES", "vfp", True, False, d):
>>>> +		d.appendVar("ARMPKGSFX_FPU", "-vfp")
>>>> +
>>>> +	if bb.utils.contains("TUNE_FEATURES", "vfpv3d16", True, False, d):
>>>> +		d.appendVar("TUNE_CCARGS", " -mfpu=vfpv3-d16")
>>>> +		d.appendVar("ARMPKGSFX_FPU", "-vfpv3d16")
>>>> +
>>>> +	if bb.utils.contains("TUNE_FEATURES", "vfpv3", True, False, d):
>>>> +			d.appendVar("TUNE_CCARGS", " -mfpu=vfpv3")
>>>> +			d.appendVar("ARMPKGSFX_FPU", "-vfpv3")
>>>> +	elif bb.utils.contains("TUNE_FEATURES", "vfpv4", True, False, d):
>>>> +		if bb.utils.contains("TUNE_FEATURES", "neon", True, False, d):
>>>> +			d.appendVar("TUNE_CCARGS", " -mfpu=neon-vfpv4")
>>>> +			d.appendVar("ARMPKGSFX_FPU", "-neon-vfpv4")
>>>> +		else:
>>>> +			d.appendVar("TUNE_CCARGS", " -mfpu=vfpv4")
>>>> +			d.appendVar("ARMPKGSFX_FPU", "-vfpv4")
>>>> +	elif bb.utils.contains("TUNE_FEATURES", "fp-armv8", True, False, d):
>>>> +		if bb.utils.contains("TUNE_FEATURES", "neon", True, False, d):
>>>> +			if bb.utils.contains("TUNE_FEATURES", "crypto", True, False, d):
>>>> +				d.appendVar("TUNE_CCARGS", " -mfpu=crypto-neon-fp-armv8")
>>>> +				d.appendVar("ARMPKGSFX_FPU", "-crypto-neon-fp-armv8")
>>>> +			else:
>>>> +				d.appendVar("TUNE_CCARGS", " -mfpu=neon-fp-armv8")
>>>> +				d.appendVar("ARMPKGSFX_FPU", "-neon-fp-armv8")
>>>> +		else:
>>>> +			d.appendVar("TUNE_CCARGS", " -mfpu=fp-armv8")
>>>> +			d.appendVar("ARMPKGSFX_FPU", "-fp-armv8")
>>>> +	elif bb.utils.contains("TUNE_FEATURES", "neon", True, False, d):
>>>> +		d.appendVar("TUNE_CCARGS", " -mfpu=neon")
>>>> +		d.appendVar("ARMPKGSFX_FPU", "-neon")
>>>> +
>>>> +	if bb.utils.contains("TUNE_FEATURES", "callconvention-hard", True, False, d):
>>>> +		d.appendVar("TUNE_CCARGS", " -mfloat-abi=hard")
>>>> +	else:
>>>> +		d.appendVar("TUNE_CCARGS", " -mfloat-abi=softfp")
>>>> +	if bb.utils.contains("TUNE_FEATURES", [ "vfp", "callconvention-hard" ], True, False, d):
>>>> +		d.appendVar("ARMPKGSFX_EABI", "hf")
>>>> +}
>>>> -- 
>>>> 1.9.1
>>>>
>>>> -- 
>>>> _______________________________________________
>>>> Openembedded-core mailing list
>>>> Openembedded-core@lists.openembedded.org
>>>> http://lists.openembedded.org/mailman/listinfo/openembedded-core
Martin Jansa Feb. 23, 2016, 3:04 p.m.
On Tue, Feb 16, 2016 at 05:20:20PM +0100, Martin Jansa wrote:
> On Tue, Feb 16, 2016 at 06:08:45PM +0200, Dragomir Daniel wrote:
> > 
> > 
> > On 02/16/2016 04:54 PM, Martin Jansa wrote:
> > > On Tue, Feb 16, 2016 at 04:28:38PM +0200, Daniel Dragomir wrote:
> > >> From: Cristian Bercaru <cristian.bercaru@windriver.com>
> > >>
> > >> 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.
> > > This adds TUNEVALID for various tune features which aren't valid for
> > > armv7a and lower (keep in mind that feature-arm-vfp.inc is included from arch-armv5.inc)
> > >
> > > Did you test this with tune-test script to at least confirm that it at
> > > least still parses for all arm* DEFAULTTUNEs?
> > >
> > 
> > I just took over my colleague work and I need to continue it.
> > Tunnings are new for meand I'm looking for a review about the actual 
> > approach
> > from my colleague for adding ARMv8-a tunning for 32-bit.
> > 
> > No, I didn't ran such script.
> > Can you please tell me how to run it or at least where is this located.
> > It's scripts/tune/test.sh from
> > http://git.openembedded.org/openembedded-core-contrib/log/?h=jansa/tune2-test 
> > ?
> > It's there any Readme for it?
> 
> There isn't one, basically run the script (update it if needed) and push
> your results somewhere (ideally in branch which contains results from
> jansa/tune2-test so that it shows only the smaller diffs in parsed
> results.
> 
> It was shortly discussed in previous tune thread:
> http://lists.openembedded.org/pipermail/openembedded-core/2016-February/117395.html

Sorry I haven't received your reply
https://www.mail-archive.com/openembedded-core@lists.openembedded.org/msg77197.html

I've imported your changes to:
http://git.openembedded.org/openembedded-core-contrib/commit/?h=jansa/tune-test&id=37f4a8ca7f9744520168e9407f1857e1dee3cbca

There are too many failures, can you try to run the script without your
patch first to see if it's already broken in current oe-core/master and
then again with your patch to see smaller diff?

Few tune files were removed since my last testing, but that doesn't
explain why most DEFAULTTUNEs fail in your test with:
  Error, the PACKAGE_ARCHS variable does not contain TUNE_PKGARCH (arm1136jfs).
or similar.

Thanks

> 
> > 
> > Thanks,
> > Daniel
> > 
> > >> Signed-off-by: Cristian Bercaru <cristian.bercaru@windriver.com>
> > >> Signed-off-by: Daniel Dragomir <daniel.dragomir@windriver.com>
> > >> ---
> > >>   meta/conf/machine/include/arm/arch-armv7a.inc      |  1 -
> > >>   meta/conf/machine/include/arm/arch-armv8a.inc      | 65 ++++++++++++++++++++++
> > >>   meta/conf/machine/include/arm/feature-arm-neon.inc |  3 -
> > >>   meta/conf/machine/include/arm/feature-arm-vfp.inc  | 59 ++++++++++++++++----
> > >>   4 files changed, 112 insertions(+), 16 deletions(-)
> > >>   create mode 100644 meta/conf/machine/include/arm/arch-armv8a.inc
> > >>   delete mode 100644 meta/conf/machine/include/arm/feature-arm-neon.inc
> > >>
> > >> diff --git a/meta/conf/machine/include/arm/arch-armv7a.inc b/meta/conf/machine/include/arm/arch-armv7a.inc
> > >> index d3b6f64..ac85fda 100644
> > >> --- a/meta/conf/machine/include/arm/arch-armv7a.inc
> > >> +++ b/meta/conf/machine/include/arm/arch-armv7a.inc
> > >> @@ -6,7 +6,6 @@ TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "armv7a", " -march=armv7-a
> > >>   MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "armv7a", "armv7a:", "" ,d)}"
> > >>   
> > >>   require conf/machine/include/arm/arch-armv6.inc
> > >> -require conf/machine/include/arm/feature-arm-neon.inc
> > >>   
> > >>   # Little Endian base configs
> > >>   AVAILTUNES += "armv7a armv7at armv7a-vfpv3d16 armv7at-vfpv3d16 armv7a-vfpv3 armv7at-vfpv3 armv7a-neon armv7at-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..1b062b8
> > >> --- /dev/null
> > >> +++ b/meta/conf/machine/include/arm/arch-armv8a.inc
> > >> @@ -0,0 +1,65 @@
> > >> +DEFAULTTUNE ?= "armv8a"
> > >> +
> > >> +TUNEVALID[armv8a] = "Enable instructions for ARMv8-a"
> > >> +TUNEVALID[crc] = "Enable CRC instrucitons for ARMv8-a"
> > >> +TUNECONFLICTS[armv8a] = "armv4 armv5 armv6 armv7 armv7a"
> > >> +TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "armv8a", " -march=armv8-a", "", d)}"
> > >> +TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "crc", "+crc", "", 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-neon-vfpv4 armv8a-fp-armv8 armv8a-neon-fp-armv8 armv8a-crypto-neon-fp-armv8"
> > >> +ARMPKGARCH_tune-armv8a ?= "armv8a"
> > >> +ARMPKGARCH_tune-armv8a-vfpv3 ?= "armv8a"
> > >> +ARMPKGARCH_tune-armv8a-neon ?= "armv8a"
> > >> +ARMPKGARCH_tune-armv8a-vfpv4 ?= "armv8a"
> > >> +ARMPKGARCH_tune-armv8a-neon-vfpv4 ?= "armv8a"
> > >> +ARMPKGARCH_tune-armv8a-fp-armv8 ?= "armv8a"
> > >> +ARMPKGARCH_tune-armv8a-neon-fp-armv8 ?= "armv8a"
> > >> +ARMPKGARCH_tune-armv8a-crypto-neon-fp-armv8 ?= "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-neon-vfpv4 ?= "${TUNE_FEATURES_tune-armv8a} neon vfpv4"
> > >> +TUNE_FEATURES_tune-armv8a-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a} fp-armv8"
> > >> +TUNE_FEATURES_tune-armv8a-neon-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a} neon fp-armv8"
> > >> +TUNE_FEATURES_tune-armv8a-crypto-neon-fp-armv8 ?= "${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-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-vfpv4} armv8a-vfp-neon armv8a-vfp-neon-vfpv4"
> > >> +PACKAGE_EXTRA_ARCHS_tune-armv8a-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a} armv8a-vfp-fp-armv8"
> > >> +PACKAGE_EXTRA_ARCHS_tune-armv8a-neon-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-fp-armv8} armv8a-vfp-neon-fp-armv8"
> > >> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crypto-neon-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-neon-fp-armv8} armv8a-vfp-crypto-neon-fp-armv8"
> > >> +
> > >> +# CRC configs
> > >> +AVAILTUNES += "armv8a-crc armv8a-crc-vfpv3 armv8a-crc-neon armv8a-crc-vfpv4 armv8a-crc-neon-vfpv4 armv8a-crc-fp-armv8 armv8a-crc-neon-fp-armv8 armv8a-crc-crypto-neon-fp-armv8"
> > >> +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-neon-vfpv4 ?= "armv8a"
> > >> +ARMPKGARCH_tune-armv8a-crc-fp-armv8 ?= "armv8a"
> > >> +ARMPKGARCH_tune-armv8a-crc-neon-fp-armv8 ?= "armv8a"
> > >> +ARMPKGARCH_tune-armv8a-crc-crypto-neon-fp-armv8 ?= "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-neon-vfpv4 ?= "${TUNE_FEATURES_tune-armv8a-neon-vfpv4} crc"
> > >> +TUNE_FEATURES_tune-armv8a-crc-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a-fp-armv8} crc"
> > >> +TUNE_FEATURES_tune-armv8a-crc-neon-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a-neon-fp-armv8} crc"
> > >> +TUNE_FEATURES_tune-armv8a-crc-crypto-neon-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a-crypto-neon-fp-armv8} 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-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-vfpv4} armv8a-vfp-neon armv8a-crc-vfp-neon armv8a-vfp-neon-vfpv4 armv8a-crc-vfp-neon-vfpv4"
> > >> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc} armv8a-vfp-fp-armv8 armv8a-vfp-fp-crc-armv8"
> > >> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-neon-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-fp-armv8} armv8a-vfp-neon-fp-armv8 armv8a-crc-vfp-neon-fp-armv8"
> > >> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-crypto-neon-fp-armv8 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-neon-fp-armv8} armv8a-vfp-crypto-neon-fp-armv8 armv8a-crc-vfp-crypto-neon-fp-armv8"
> > >> +
> > >> diff --git a/meta/conf/machine/include/arm/feature-arm-neon.inc b/meta/conf/machine/include/arm/feature-arm-neon.inc
> > >> deleted file mode 100644
> > >> index e8b2b85..0000000
> > >> --- a/meta/conf/machine/include/arm/feature-arm-neon.inc
> > >> +++ /dev/null
> > >> @@ -1,3 +0,0 @@
> > >> -TUNEVALID[neon] = "Enable Neon SIMD accelerator unit."
> > >> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "neon", bb.utils.contains("TUNE_FEATURES", "vfpv4", " -mfpu=neon-vfpv4", " -mfpu=neon", d), "" , d)}"
> > >> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "neon", "-neon", "", d)}"
> > >> diff --git a/meta/conf/machine/include/arm/feature-arm-vfp.inc b/meta/conf/machine/include/arm/feature-arm-vfp.inc
> > >> index 3dfbeac..12a4e81 100644
> > >> --- a/meta/conf/machine/include/arm/feature-arm-vfp.inc
> > >> +++ b/meta/conf/machine/include/arm/feature-arm-vfp.inc
> > >> @@ -1,17 +1,52 @@
> > >>   TUNEVALID[vfp] = "Enable Vector Floating Point (vfp) unit."
> > >> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfp", "-vfp", "" ,d)}"
> > >> -
> > >>   TUNEVALID[vfpv3d16] = "Enable Vector Floating Point Version 3 with 16 registers (vfpv3-d16) unit."
> > >> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv3d16", " -mfpu=vfpv3-d16", "", d)}"
> > >> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv3d16", "-vfpv3d16", "" ,d)}"
> > >> -
> > >>   TUNEVALID[vfpv3] = "Enable Vector Floating Point Version 3 with 32 registers (vfpv3) unit."
> > >> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv3", " -mfpu=vfpv3", "", d)}"
> > >> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv3", "-vfpv3", "" ,d)}"
> > >> -
> > >>   TUNEVALID[vfpv4] = "Enable Vector Floating Point Version 4 (vfpv4) unit."
> > >> -ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv4", "-vfpv4", "" ,d)}"
> > >> -
> > >> +TUNEVALID[fp-armv8] = "Enable ARMv8 Vector Floating Point unit."
> > >> +TUNEVALID[neon] = "Enable vfpv3 and Neon SIMD accelerator unit."
> > >> +TUNEVALID[crypto] = "Enable ARMv8 crypto extension."
> > >>   TUNEVALID[callconvention-hard] = "Enable EABI hard float call convention, requires VFP."
> > >> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "vfp", bb.utils.contains("TUNE_FEATURES", "callconvention-hard", " -mfloat-abi=hard", " -mfloat-abi=softfp", d), "" ,d)}"
> > >> -ARMPKGSFX_EABI .= "${@bb.utils.contains("TUNE_FEATURES", [ "callconvention-hard", "vfp" ], "hf", "", d)}"
> > >> +
> > >> +python () {
> > >> +	if bb.utils.contains("TUNE_FEATURES", "crc", True, False, d):
> > >> +		d.appendVar("ARMPKGSFX_FPU", "-crc")
> > >> +
> > >> +	if bb.utils.contains("TUNE_FEATURES", "vfp", True, False, d):
> > >> +		d.appendVar("ARMPKGSFX_FPU", "-vfp")
> > >> +
> > >> +	if bb.utils.contains("TUNE_FEATURES", "vfpv3d16", True, False, d):
> > >> +		d.appendVar("TUNE_CCARGS", " -mfpu=vfpv3-d16")
> > >> +		d.appendVar("ARMPKGSFX_FPU", "-vfpv3d16")
> > >> +
> > >> +	if bb.utils.contains("TUNE_FEATURES", "vfpv3", True, False, d):
> > >> +			d.appendVar("TUNE_CCARGS", " -mfpu=vfpv3")
> > >> +			d.appendVar("ARMPKGSFX_FPU", "-vfpv3")
> > >> +	elif bb.utils.contains("TUNE_FEATURES", "vfpv4", True, False, d):
> > >> +		if bb.utils.contains("TUNE_FEATURES", "neon", True, False, d):
> > >> +			d.appendVar("TUNE_CCARGS", " -mfpu=neon-vfpv4")
> > >> +			d.appendVar("ARMPKGSFX_FPU", "-neon-vfpv4")
> > >> +		else:
> > >> +			d.appendVar("TUNE_CCARGS", " -mfpu=vfpv4")
> > >> +			d.appendVar("ARMPKGSFX_FPU", "-vfpv4")
> > >> +	elif bb.utils.contains("TUNE_FEATURES", "fp-armv8", True, False, d):
> > >> +		if bb.utils.contains("TUNE_FEATURES", "neon", True, False, d):
> > >> +			if bb.utils.contains("TUNE_FEATURES", "crypto", True, False, d):
> > >> +				d.appendVar("TUNE_CCARGS", " -mfpu=crypto-neon-fp-armv8")
> > >> +				d.appendVar("ARMPKGSFX_FPU", "-crypto-neon-fp-armv8")
> > >> +			else:
> > >> +				d.appendVar("TUNE_CCARGS", " -mfpu=neon-fp-armv8")
> > >> +				d.appendVar("ARMPKGSFX_FPU", "-neon-fp-armv8")
> > >> +		else:
> > >> +			d.appendVar("TUNE_CCARGS", " -mfpu=fp-armv8")
> > >> +			d.appendVar("ARMPKGSFX_FPU", "-fp-armv8")
> > >> +	elif bb.utils.contains("TUNE_FEATURES", "neon", True, False, d):
> > >> +		d.appendVar("TUNE_CCARGS", " -mfpu=neon")
> > >> +		d.appendVar("ARMPKGSFX_FPU", "-neon")
> > >> +
> > >> +	if bb.utils.contains("TUNE_FEATURES", "callconvention-hard", True, False, d):
> > >> +		d.appendVar("TUNE_CCARGS", " -mfloat-abi=hard")
> > >> +	else:
> > >> +		d.appendVar("TUNE_CCARGS", " -mfloat-abi=softfp")
> > >> +	if bb.utils.contains("TUNE_FEATURES", [ "vfp", "callconvention-hard" ], True, False, d):
> > >> +		d.appendVar("ARMPKGSFX_EABI", "hf")
> > >> +}
> > >> -- 
> > >> 1.9.1
> > >>
> > >> -- 
> > >> _______________________________________________
> > >> Openembedded-core mailing list
> > >> Openembedded-core@lists.openembedded.org
> > >> http://lists.openembedded.org/mailman/listinfo/openembedded-core
> > 
> 
> -- 
> Martin 'JaMa' Jansa     jabber: Martin.Jansa@gmail.com