* [PATCH] ARMv8 32-bit compiler tunings
@ 2015-12-04 17:20 Cristian Bercaru
2015-12-04 17:20 ` [PATCH] add tunings for 32-bit ARMv8-a Cristian Bercaru
2015-12-09 15:31 ` [PATCH] ARMv8 32-bit compiler tunings Cristian Bercaru
0 siblings, 2 replies; 5+ messages in thread
From: Cristian Bercaru @ 2015-12-04 17:20 UTC (permalink / raw)
To: poky; +Cc: Daniel Dragomir
Hello!
Starting with linux-yocto-4.1, Intel provides kernel support for its
ARM v8 Axxia platforms, both on 32-bit and 64-bit.
Poky already contains arm 64-bit compiler tunings, so I added 32-bit
tunings based on those for armv7.
The patch that I send you is a draft. Please review it and if it's ok
I will return with thumb and big-endian tunings.
Thank you,
Cristian Bercaru (1):
add tunings for 32-bit ARMv8-a
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
--
1.7.9.5
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH] add tunings for 32-bit ARMv8-a
2015-12-04 17:20 [PATCH] ARMv8 32-bit compiler tunings Cristian Bercaru
@ 2015-12-04 17:20 ` Cristian Bercaru
2015-12-09 15:47 ` Martin Jansa
2015-12-09 15:31 ` [PATCH] ARMv8 32-bit compiler tunings Cristian Bercaru
1 sibling, 1 reply; 5+ messages in thread
From: Cristian Bercaru @ 2015-12-04 17:20 UTC (permalink / raw)
To: poky; +Cc: Daniel Dragomir
This patch adds tunes for 32-bit armv8 platforms. The used 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>
---
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.7.9.5
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] ARMv8 32-bit compiler tunings
2015-12-04 17:20 [PATCH] ARMv8 32-bit compiler tunings Cristian Bercaru
2015-12-04 17:20 ` [PATCH] add tunings for 32-bit ARMv8-a Cristian Bercaru
@ 2015-12-09 15:31 ` Cristian Bercaru
1 sibling, 0 replies; 5+ messages in thread
From: Cristian Bercaru @ 2015-12-09 15:31 UTC (permalink / raw)
To: poky; +Cc: Daniel Dragomir
So, what do you guys think about my patch? Is the armv8a support a
valuable addition to poky?
Cristian
On 12/04/2015 07:20 PM, Cristian Bercaru wrote:
> Hello!
>
> Starting with linux-yocto-4.1, Intel provides kernel support for its
> ARM v8 Axxia platforms, both on 32-bit and 64-bit.
> Poky already contains arm 64-bit compiler tunings, so I added 32-bit
> tunings based on those for armv7.
>
> The patch that I send you is a draft. Please review it and if it's ok
> I will return with thumb and big-endian tunings.
>
> Thank you,
> Cristian Bercaru (1):
> add tunings for 32-bit ARMv8-a
>
> 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
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] add tunings for 32-bit ARMv8-a
2015-12-04 17:20 ` [PATCH] add tunings for 32-bit ARMv8-a Cristian Bercaru
@ 2015-12-09 15:47 ` Martin Jansa
0 siblings, 0 replies; 5+ messages in thread
From: Martin Jansa @ 2015-12-09 15:47 UTC (permalink / raw)
To: Cristian Bercaru; +Cc: Daniel Dragomir, poky
[-- Attachment #1: Type: text/plain, Size: 12300 bytes --]
On Fri, Dec 04, 2015 at 07:20:42PM +0200, Cristian Bercaru wrote:
> This patch adds tunes for 32-bit armv8 platforms. The used can select
> the vector floating-point instruction set: vfpv3, vfpv4 or fp-armv8
> and the Neon, crc and crypto extensions.
Wrong ML, it belongs to oe-core ML.
Please check this patchset:
http://git.openembedded.org/openembedded-core-contrib/log/?h=jansa/tune3
and test script provided in:
http://git.openembedded.org/openembedded-core-contrib/log/?h=jansa/tune2-test
It was sent couple months ago, you can find the discussion in various
threads, e.g.:
http://lists.openembedded.org/pipermail/openembedded-core/2015-October/111318.html
http://lists.openembedded.org/pipermail/openembedded-core/2015-November/112907.html
It fixes some of these issues and simplifies implementing the rest.
> Signed-off-by: Cristian Bercaru <cristian.bercaru@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."
feature-arm-vfp.inc is included in armv5.inc, so it makes a lot of these
features added to TUNEVALID actually invalid for armv[56] MACHINEs.
> 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.7.9.5
>
> --
> _______________________________________________
> poky mailing list
> poky@yoctoproject.org
> https://lists.yoctoproject.org/listinfo/poky
--
Martin 'JaMa' Jansa jabber: Martin.Jansa@gmail.com
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 188 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH] ARMv8 32-bit compiler tunings
@ 2016-02-16 14:28 Daniel Dragomir
0 siblings, 0 replies; 5+ messages in thread
From: Daniel Dragomir @ 2016-02-16 14:28 UTC (permalink / raw)
To: openembedded-core
Hello!
Starting with linux-yocto-4.1, Intel provides kernel support for its
ARM v8 Axxia platforms, both on 32-bit and 64-bit.
Poky already contains arm 64-bit compiler tunings, so I added 32-bit
tunings based on those for armv7.
The patch that I send you is a draft. Please review it and if it's ok
I will return with thumb and big-endian tunings.
Thank you,
Cristian Bercaru (1):
add tunings for 32-bit ARMv8-a
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
--
1.9.1
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2016-02-16 14:28 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-12-04 17:20 [PATCH] ARMv8 32-bit compiler tunings Cristian Bercaru
2015-12-04 17:20 ` [PATCH] add tunings for 32-bit ARMv8-a Cristian Bercaru
2015-12-09 15:47 ` Martin Jansa
2015-12-09 15:31 ` [PATCH] ARMv8 32-bit compiler tunings Cristian Bercaru
2016-02-16 14:28 Daniel Dragomir
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.