[OE-core] [PATCHv2] Add tune for 32-bit ARMv8-a

Andrei Gherzan andrei at gherzan.ro
Wed Mar 2 15:49:58 UTC 2016


On Wed, Mar 2, 2016 at 11:35 AM, Dragomir Daniel <
daniel.dragomir at windriver.com> wrote:

> Hi Andrei,
>
>
> On 03/02/2016 02:17 AM, Andrei Gherzan wrote:
>
> Hi Daniel,
>
> On Sat, Feb 27, 2016 at 1:44 PM, Daniel Dragomir <
> <daniel.dragomir at windriver.com>daniel.dragomir at windriver.com> wrote:
>
>> This patch adds tunes for 32-bit armv8 platforms. The user can select
>> the vector floating-point instruction set: vfpv3, vfpv4 or fp-armv8
>> and the Neon, crc and crypto extensions.
>>
>> Also, fix some parsing failures for armv7a*-neon-vfpv4 tunes.
>>
>> Signed-off-by: Daniel Dragomir < <daniel.dragomir at windriver.com>
>> daniel.dragomir at windriver.com>
>> Signed-off-by: Cristian Bercaru <cristian.bercaru at windriver.com>
>> ---
>>  meta/conf/machine/include/arm/arch-armv7a.inc |  4 +-
>>  meta/conf/machine/include/arm/arch-armv8a.inc | 75
>> +++++++++++++++++++++++++++
>>  2 files changed, 77 insertions(+), 2 deletions(-)
>>  create mode 100644 meta/conf/machine/include/arm/arch-armv8a.inc
>>
>> diff --git a/meta/conf/machine/include/arm/arch-armv7a.inc
>> b/meta/conf/machine/include/arm/arch-armv7a.inc
>> index d3b6f64..ff6bc29 100644
>> --- a/meta/conf/machine/include/arm/arch-armv7a.inc
>> +++ b/meta/conf/machine/include/arm/arch-armv7a.inc
>> @@ -65,8 +65,8 @@ PACKAGE_EXTRA_ARCHS_tune-armv7ahf-vfpv3 =
>> "${PACKAGE_EXTRA_ARCHS_tune-armv7ahf-v
>>  PACKAGE_EXTRA_ARCHS_tune-armv7athf-vfpv3 =
>> "${PACKAGE_EXTRA_ARCHS_tune-armv7athf-vfpv3d16} armv7ahf-vfp-vfpv3d16-vfpv3
>> armv7at2hf-vfp-vfpv3d16-vfpv3"
>>  PACKAGE_EXTRA_ARCHS_tune-armv7ahf-neon =
>> "${PACKAGE_EXTRA_ARCHS_tune-armv7ahf} armv7ahf-vfp-neon"
>>  PACKAGE_EXTRA_ARCHS_tune-armv7athf-neon =
>> "${PACKAGE_EXTRA_ARCHS_tune-armv7athf} armv7ahf-vfp-neon
>> armv7at2hf-vfp-neon"
>> -PACKAGE_EXTRA_ARCHS_tune-armv7ahf-neon-vfpv4 =
>> "${PACKAGE_EXTRA_ARCHS_tune-armv7ahf-neon} armv7ahf-vfp-neon-vfpv4"
>> -PACKAGE_EXTRA_ARCHS_tune-armv7athf-neon-vfpv4 =
>> "${PACKAGE_EXTRA_ARCHS_tune-armv7athf-neon} armv7ahf-vfp-neon-vfpv4
>> armv7at2hf-vfp-neon-vfpv4"
>> +PACKAGE_EXTRA_ARCHS_tune-armv7ahf-neon-vfpv4 =
>> "${PACKAGE_EXTRA_ARCHS_tune-armv7ahf-neon} armv7ahf-vfp-vfpv4-neon"
>> +PACKAGE_EXTRA_ARCHS_tune-armv7athf-neon-vfpv4 =
>> "${PACKAGE_EXTRA_ARCHS_tune-armv7athf-neon} armv7ahf-vfp-vfpv4-neon
>> armv7at2hf-vfp-neon-vfpv4"
>>
>>  # Big Endian
>>  AVAILTUNES += "armv7ab armv7atb armv7ab-vfpv3d16 armv7atb-vfpv3d16
>> armv7ab-vfpv3 armv7atb-vfpv3 armv7ab-neon armv7atb-neon"
>> diff --git a/meta/conf/machine/include/arm/arch-armv8a.inc
>> b/meta/conf/machine/include/arm/arch-armv8a.inc
>> new file mode 100644
>> index 0000000..2d8dd73
>> --- /dev/null
>> +++ b/meta/conf/machine/include/arm/arch-armv8a.inc
>> @@ -0,0 +1,75 @@
>> +DEFAULTTUNE ?= "armv8a"
>> +
>> +TUNEVALID[armv8a] = "Enable instructions for ARMv8-a"
>> +TUNECONFLICTS[armv8a] = "armv4 armv5 armv6 armv7 armv7a"
>> +
>> +TUNEVALID[crc] = "Enable CRC instrucitons for ARMv8-a"
>>
>
> Small typo here: instrucitons .
>
>
> Thanks! Didn't noticed :)
>
>
Welcome.


>
>
>
>> +ARMPKGSFX_FPU .= "${@bb.utils.contains(" <$%7B at bb.utils.contains(>TUNE_FEATURES",
>> "crc", "-crc", "", d)}"
>> +
>> +TUNEVALID[crypto] = "Enable ARMv8 crypto extension."
>> +ARMPKGSFX_FPU .= "${@bb.utils.contains(" <$%7B at bb.utils.contains(>TUNE_FEATURES",
>> "crypto", "-crypto", "", d)}"
>> +
>> +TUNEVALID[fp-armv8] = "Enable ARMv8 Vector Floating Point unit."
>> +ARMPKGSFX_FPU .= "${@bb.utils.contains(" <$%7B at bb.utils.contains(>TUNE_FEATURES",
>> "fp-armv8", "-fp-armv8", "", d)}"
>> +
>> +TUNE_CCARGS .= "${@bb.utils.contains(" <$%7B at bb.utils.contains(>TUNE_FEATURES",
>> "armv8a", bb.utils.contains("TUNE_FEATURES", "crc", " -march=armv8-a+crc",
>> " -march=armv8-a", d), "", d)}"
>> +
>> +TUNE_CCARGS .= "${@bb.utils.contains(" <$%7B at bb.utils.contains(>TUNE_FEATURES",
>> "fp-armv8", bb.utils.contains("TUNE_FEATURES", "neon",
>> bb.utils.contains("TUNE_FEATURES", "crypto", " -mfpu=crypto-neon-fp-armv8",
>> " -mfpu=neon-fp-armv8", d), " -mfpu=fp-armv8", d), "", d)}"
>> +
>> +MACHINEOVERRIDES =. "${@bb.utils.contains(" <$%7B at bb.utils.contains(>TUNE_FEATURES",
>> "armv8a", "armv8a:", "" ,d)}"
>> +
>> +require conf/machine/include/arm/arch-armv7a.inc
>> +
>> +# Little Endian base configs
>> +AVAILTUNES += "armv8a armv8a-vfpv3 armv8a-neon armv8a-vfpv4
>> armv8a-vfpv4-neon armv8a-fp-armv8 armv8a-fp-armv8-neon
>> armv8a-crypto-fp-armv8-neon"
>> +ARMPKGARCH_tune-armv8a ?= "armv8a"
>> +ARMPKGARCH_tune-armv8a-vfpv3 ?= "armv8a"
>> +ARMPKGARCH_tune-armv8a-neon ?= "armv8a"
>> +ARMPKGARCH_tune-armv8a-vfpv4 ?= "armv8a"
>> +ARMPKGARCH_tune-armv8a-vfpv4-neon ?= "armv8a"
>> +ARMPKGARCH_tune-armv8a-fp-armv8 ?= "armv8a"
>> +ARMPKGARCH_tune-armv8a-fp-armv8-neon ?= "armv8a"
>> +ARMPKGARCH_tune-armv8a-crypto-fp-armv8-neon ?= "armv8a"
>> +TUNE_FEATURES_tune-armv8a ?= "arm armv8a vfp"
>> +TUNE_FEATURES_tune-armv8a-vfpv3 ?= "${TUNE_FEATURES_tune-armv8a} vfpv3"
>> +TUNE_FEATURES_tune-armv8a-neon ?= "${TUNE_FEATURES_tune-armv8a} neon"
>> +TUNE_FEATURES_tune-armv8a-vfpv4 ?= "${TUNE_FEATURES_tune-armv8a} vfpv4"
>> +TUNE_FEATURES_tune-armv8a-vfpv4-neon ?= "${TUNE_FEATURES_tune-armv8a}
>> neon vfpv4"
>> +TUNE_FEATURES_tune-armv8a-fp-armv8 ?= "${TUNE_FEATURES_tune-armv8a}
>> fp-armv8"
>> +TUNE_FEATURES_tune-armv8a-fp-armv8-neon ?= "${TUNE_FEATURES_tune-armv8a}
>> neon fp-armv8"
>> +TUNE_FEATURES_tune-armv8a-crypto-fp-armv8-neon ?=
>> "${TUNE_FEATURES_tune-armv8a} crypto neon fp-armv8"
>> +PACKAGE_EXTRA_ARCHS_tune-armv8a = "${PACKAGE_EXTRA_ARCHS_tune-armv7a}
>> armv8a armv8a-vfp"
>> +PACKAGE_EXTRA_ARCHS_tune-armv8a-vfpv3 =
>> "${PACKAGE_EXTRA_ARCHS_tune-armv8a} armv8a-vfp-vfpv3"
>> +PACKAGE_EXTRA_ARCHS_tune-armv8a-neon =
>> "${PACKAGE_EXTRA_ARCHS_tune-armv8a-vfpv3} armv8a-vfp-neon"
>> +PACKAGE_EXTRA_ARCHS_tune-armv8a-vfpv4 =
>> "${PACKAGE_EXTRA_ARCHS_tune-armv8a-vfpv3} armv8a-vfp-vfpv4"
>> +PACKAGE_EXTRA_ARCHS_tune-armv8a-vfpv4-neon =
>> "${PACKAGE_EXTRA_ARCHS_tune-armv8a-vfpv4} armv8a-vfp-neon
>> armv8a-vfp-vfpv4-neon"
>> +PACKAGE_EXTRA_ARCHS_tune-armv8a-fp-armv8 =
>> "${PACKAGE_EXTRA_ARCHS_tune-armv8a} armv8a-fp-armv8-vfp"
>> +PACKAGE_EXTRA_ARCHS_tune-armv8a-fp-armv8-neon =
>> "${PACKAGE_EXTRA_ARCHS_tune-armv8a-fp-armv8} armv8a-vfp-neon
>> armv8a-fp-armv8-vfp-neon"
>> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crypto-fp-armv8-neon =
>> "${PACKAGE_EXTRA_ARCHS_tune-armv8a-fp-armv8-neon}
>> armv8a-crypto-fp-armv8-vfp-neon"
>> +
>> +# CRC configs
>> +AVAILTUNES += "armv8a-crc armv8a-crc-vfpv3 armv8a-crc-neon
>> armv8a-crc-vfpv4 armv8a-crc-vfpv4-neon armv8a-crc-fp-armv8
>> armv8a-crc-fp-armv8-neon armv8a-crc-crypto-fp-armv8-neon"
>> +ARMPKGARCH_tune-armv8a-crc ?= "armv8a"
>> +ARMPKGARCH_tune-armv8a-crc-vfpv3 ?= "armv8a"
>> +ARMPKGARCH_tune-armv8a-crc-neon ?= "armv8a"
>> +ARMPKGARCH_tune-armv8a-crc-vfpv4 ?= "armv8a"
>> +ARMPKGARCH_tune-armv8a-crc-vfpv4-neon ?= "armv8a"
>> +ARMPKGARCH_tune-armv8a-crc-fp-armv8 ?= "armv8a"
>> +ARMPKGARCH_tune-armv8a-crc-fp-armv8-neon ?= "armv8a"
>> +ARMPKGARCH_tune-armv8a-crc-crypto-fp-armv8-neon ?= "armv8a"
>> +TUNE_FEATURES_tune-armv8a-crc ?= "${TUNE_FEATURES_tune-armv8a} crc"
>> +TUNE_FEATURES_tune-armv8a-crc-vfpv3 ?=
>> "${TUNE_FEATURES_tune-armv8a-vfpv3} crc"
>> +TUNE_FEATURES_tune-armv8a-crc-neon ?= "${TUNE_FEATURES_tune-armv8a-neon}
>> crc"
>> +TUNE_FEATURES_tune-armv8a-crc-vfpv4 ?=
>> "${TUNE_FEATURES_tune-armv8a-vfpv4} crc"
>> +TUNE_FEATURES_tune-armv8a-crc-vfpv4-neon ?=
>> "${TUNE_FEATURES_tune-armv8a-vfpv4-neon} crc"
>> +TUNE_FEATURES_tune-armv8a-crc-fp-armv8 ?=
>> "${TUNE_FEATURES_tune-armv8a-fp-armv8} crc"
>> +TUNE_FEATURES_tune-armv8a-crc-fp-armv8-neon ?=
>> "${TUNE_FEATURES_tune-armv8a-fp-armv8-neon} crc"
>> +TUNE_FEATURES_tune-armv8a-crc-crypto-fp-armv8-neon ?=
>> "${TUNE_FEATURES_tune-armv8a-crypto-fp-armv8-neon} crc"
>> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crc =
>> "${PACKAGE_EXTRA_ARCHS_tune-armv8a} armv8a-crc-vfp"
>> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-vfpv3 =
>> "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc} armv8a-vfp-vfpv3
>> armv8a-crc-vfp-vfpv3"
>> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-neon =
>> "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-vfpv3} armv8a-vfp-neon
>> armv8a-crc-vfp-neon"
>> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-vfpv4 =
>> "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-vfpv3} armv8a-vfp-vfpv4
>> armv8a-crc-vfp-vfpv4"
>> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-vfpv4-neon =
>> "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-vfpv4} armv8a-vfp-neon
>> armv8a-crc-vfp-neon armv8a-vfp-vfpv4-neon armv8a-crc-vfp-vfpv4-neon"
>> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-fp-armv8 =
>> "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc} armv8a-vfp-fp-armv8
>> armv8a-crc-fp-armv8-vfp"
>> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-fp-armv8-neon =
>> "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-fp-armv8} armv8a-vfp-neon
>> armv8a-vfp-neon-fp-armv8 armv8a-crc-fp-armv8-vfp-neon"
>> +PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-crypto-fp-armv8-neon =
>> "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-fp-armv8-neon}
>> armv8a-vfp-crypto-neon-fp-armv8 armv8a-crc-crypto-fp-armv8-vfp-neon"
>>
>>
> Any plans for 64 bit version?
>
> Andrei
>
>
> Yes, we have plans to add specific tunes for armv8 64bit too, but after we
> finish for 32bit.
> For the moment, for 64bit, we simply include arch-armv8.inc witch only
> require arch-arm64.inc.
>
>
I am aware of those tunes but they don't include all the features. Thanks
for the heads up. I was about to look into these but I'll wait for you to
push it and will review.

Cheers!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20160302/5ea46c04/attachment-0002.html>


More information about the Openembedded-core mailing list