* [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] 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
* 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
* [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 -- strict thread matches above, loose matches on Subject: below -- 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.