Message ID | 20230804170255.2784609-2-raj.khem@gmail.com |
---|---|
State | New |
Headers | show |
Series | [v2,1/6] tunes: Add support for sve instructions on armv8/armv9 | expand |
On Fri, 2023-08-04 at 10:02 -0700, Khem Raj wrote: > Signed-off-by: Khem Raj <raj.khem@gmail.com> > --- > v2: Rebased > > meta/conf/machine/include/arm/arch-armv8-2a.inc | 7 ++++++- > meta/conf/machine/include/arm/arch-armv8-4a.inc | 7 ++++++- > meta/conf/machine/include/arm/arch-armv8-5a.inc | 7 ++++++- > meta/conf/machine/include/arm/arch-armv9a.inc | 7 ++++++- > 4 files changed, 24 insertions(+), 4 deletions(-) > > diff --git a/meta/conf/machine/include/arm/arch-armv8-2a.inc b/meta/conf/machine/include/arm/arch-armv8-2a.inc > index 95368b0af79..6f31e26e34f 100644 > --- a/meta/conf/machine/include/arm/arch-armv8-2a.inc > +++ b/meta/conf/machine/include/arm/arch-armv8-2a.inc > @@ -6,14 +6,19 @@ TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8-2a', ' -march > MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8-2a', 'armv8-2a:', '', d)}" > > require conf/machine/include/arm/arch-armv8a.inc > +require conf/machine/include/arm/feature-arm-sve.inc > > # Little Endian base configs > -AVAILTUNES += "armv8-2a armv8-2a-crypto" > +AVAILTUNES += "armv8-2a armv8-2a-crypto armv8-2a-crypto-sve" > ARMPKGARCH:tune-armv8-2a ?= "armv8-2a" > ARMPKGARCH:tune-armv8-2a-crypto ?= "armv8-2a" > +ARMPKGARCH:tune-armv8-2a-crypto-sve ?= "armv8-2a" > TUNE_FEATURES:tune-armv8-2a = "aarch64 armv8-2a" > TUNE_FEATURES:tune-armv8-2a-crypto = "${TUNE_FEATURES:tune-armv8-2a} crypto" > +TUNE_FEATURES:tune-armv8-2a-crypto-sve = "${TUNE_FEATURES:tune-armv8-2a-crypto} sve" > PACKAGE_EXTRA_ARCHS:tune-armv8-2a = "${PACKAGE_EXTRA_ARCHS:tune-armv8a} armv8-2a" > PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a} armv8-2a-crypto" > +PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto-sve = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto} armv8-2a-crypto-sve" > BASE_LIB:tune-armv8-2a = "lib64" > BASE_LIB:tune-armv8-2a-crypto = "lib64" > +BASE_LIB:tune-armv8-2a-crypto-sve = "lib64" > diff --git a/meta/conf/machine/include/arm/arch-armv8-4a.inc b/meta/conf/machine/include/arm/arch-armv8-4a.inc > index 29feddb64c5..b61d50daa5e 100644 > --- a/meta/conf/machine/include/arm/arch-armv8-4a.inc > +++ b/meta/conf/machine/include/arm/arch-armv8-4a.inc > @@ -6,14 +6,19 @@ TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8-4a', ' -march > MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8-4a', 'armv8-4a:', '', d)}" > > require conf/machine/include/arm/arch-armv8a.inc > +require conf/machine/include/arm/feature-arm-sve.inc > > # Little Endian base configs > -AVAILTUNES += "armv8-4a armv8-4a-crypto" > +AVAILTUNES += "armv8-4a armv8-4a-crypto armv8-4a-crypto-sve" > ARMPKGARCH:tune-armv8-4a ?= "armv8-4a" > ARMPKGARCH:tune-armv8-4a-crypto ?= "armv8-4a" > +ARMPKGARCH:tune-armv8-4a-crypto-sve ?= "armv8-4a" > TUNE_FEATURES:tune-armv8-4a = "aarch64 armv8-4a" > TUNE_FEATURES:tune-armv8-4a-crypto = "${TUNE_FEATURES:tune-armv8-4a} crypto" > +TUNE_FEATURES:tune-armv8-4a-crypto-sve = "${TUNE_FEATURES:tune-armv8-4a-crypto} sve" > PACKAGE_EXTRA_ARCHS:tune-armv8-4a = "${PACKAGE_EXTRA_ARCHS:tune-armv8a} armv8-4a" > PACKAGE_EXTRA_ARCHS:tune-armv8-4a-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8-4a} armv8-4a-crypto" > +PACKAGE_EXTRA_ARCHS:tune-armv8-4a-crypto-sve = "${PACKAGE_EXTRA_ARCHS:tune-armv8-4a-crypto} armv8-4a-crypto-sve" > BASE_LIB:tune-armv8-4a = "lib64" > BASE_LIB:tune-armv8-4a-crypto = "lib64" > +BASE_LIB:tune-armv8-4a-crypto-sve = "lib64" > diff --git a/meta/conf/machine/include/arm/arch-armv8-5a.inc b/meta/conf/machine/include/arm/arch-armv8-5a.inc > index a1bcb7fb9a1..176bc9033c9 100644 > --- a/meta/conf/machine/include/arm/arch-armv8-5a.inc > +++ b/meta/conf/machine/include/arm/arch-armv8-5a.inc > @@ -6,14 +6,19 @@ TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8-5a', ' -march > MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8-5a', 'armv8-5a:', '', d)}" > > require conf/machine/include/arm/arch-armv8a.inc > +require conf/machine/include/arm/feature-arm-sve.inc > > # Little Endian base configs > -AVAILTUNES += "armv8-5a armv8-5a-crypto" > +AVAILTUNES += "armv8-5a armv8-5a-crypto armv8-5a-crypto-sve" > ARMPKGARCH:tune-armv8-5a ?= "armv8-5a" > ARMPKGARCH:tune-armv8-5a-crypto ?= "armv8-5a" > +ARMPKGARCH:tune-armv8-5a-crypto-sve ?= "armv8-5a" > TUNE_FEATURES:tune-armv8-5a = "aarch64 armv8-5a" > TUNE_FEATURES:tune-armv8-5a-crypto = "${TUNE_FEATURES:tune-armv8-5a} crypto" > +TUNE_FEATURES:tune-armv8-5a-crypto-sve = "${TUNE_FEATURES:tune-armv8-5a-crypto} sve" > PACKAGE_EXTRA_ARCHS:tune-armv8-5a = "${PACKAGE_EXTRA_ARCHS:tune-armv8a} armv8-5a" > PACKAGE_EXTRA_ARCHS:tune-armv8-5a-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8-5a} armv8-5a-crypto" > +PACKAGE_EXTRA_ARCHS:tune-armv8-5a-crypto-sve = "${PACKAGE_EXTRA_ARCHS:tune-armv8-5a-crypto} armv8-5a-crypto-sve" > BASE_LIB:tune-armv8-5a = "lib64" > BASE_LIB:tune-armv8-5a-crypto = "lib64" > +BASE_LIB:tune-armv8-5a-crypto-sve = "lib64" > diff --git a/meta/conf/machine/include/arm/arch-armv9a.inc b/meta/conf/machine/include/arm/arch-armv9a.inc > index c38d6cfdf60..6945dea333b 100644 > --- a/meta/conf/machine/include/arm/arch-armv9a.inc > +++ b/meta/conf/machine/include/arm/arch-armv9a.inc > @@ -7,22 +7,27 @@ MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv9a', 'armv9a:', > require conf/machine/include/arm/arch-arm64.inc > require conf/machine/include/arm/feature-arm-crc.inc > require conf/machine/include/arm/feature-arm-crypto.inc > +require conf/machine/include/arm/feature-arm-sve.inc > > # Little Endian base configs > -AVAILTUNES += "armv9a armv9a-crc armv9a-crc-crypto armv9a-crypto" > +AVAILTUNES += "armv9a armv9a-crc armv9a-crc-crypto armv9a-crc-crypto-sve armv9a-crypto" > ARMPKGARCH:tune-armv9a ?= "armv9a" > ARMPKGARCH:tune-armv9a-crc ?= "armv9a" > ARMPKGARCH:tune-armv9a-crypto ?= "armv9a" > ARMPKGARCH:tune-armv9a-crc-crypto ?= "armv9a" > +ARMPKGARCH:tune-armv9a-crc-crypto-sve ?= "armv9a" > TUNE_FEATURES:tune-armv9a = "aarch64 armv9a" > TUNE_FEATURES:tune-armv9a-crc = "${TUNE_FEATURES:tune-armv9a} crc" > TUNE_FEATURES:tune-armv9a-crypto = "${TUNE_FEATURES:tune-armv9a} crypto" > TUNE_FEATURES:tune-armv9a-crc-crypto = "${TUNE_FEATURES:tune-armv9a-crc} crypto" > +TUNE_FEATURES:tune-armv9a-crc-crypto-sve = "${TUNE_FEATURES:tune-armv9a-crc-crypto} sve" > PACKAGE_EXTRA_ARCHS:tune-armv9a = "aarch64 armv9a" > PACKAGE_EXTRA_ARCHS:tune-armv9a-crc = "${PACKAGE_EXTRA_ARCHS:tune-armv9a} armv9a-crc" > PACKAGE_EXTRA_ARCHS:tune-armv9a-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv9a} armv9a-crypto" > PACKAGE_EXTRA_ARCHS:tune-armv9a-crc-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv9a-crc} armv9a-crypto armv9a-crc-crypto" > +PACKAGE_EXTRA_ARCHS:tune-armv9a-crc-crypto-sve = "${PACKAGE_EXTRA_ARCHS:tune-armv9a-crc-crypto} armv9a-crc-crypto-sve" > BASE_LIB:tune-armv9a = "lib64" > BASE_LIB:tune-armv9a-crc = "lib64" > BASE_LIB:tune-armv9a-crypto = "lib64" > BASE_LIB:tune-armv9a-crc-crypto = "lib64" > +BASE_LIB:tune-armv9a-crc-crypto-sve = "lib64" I had a look at: https://marcin.juszkiewicz.com.pl/download/tables/arm-socs.html which suggests that there are 7 processors that support sve and of those, only one doesn't support crypto (assuming that is aes). Of those I can see v8.4 and v9 versions that have it but no 8.2 or 8.5. Perhaps we should just add this for those two for now until someone has a real world cpu with the other combinations? I'd also note that there are few cpus without the crc extension which would probably let us simplify there if we correlate with the actual hardware that exists? Cheers, Richard
diff --git a/meta/conf/machine/include/arm/arch-armv8-2a.inc b/meta/conf/machine/include/arm/arch-armv8-2a.inc index 95368b0af79..6f31e26e34f 100644 --- a/meta/conf/machine/include/arm/arch-armv8-2a.inc +++ b/meta/conf/machine/include/arm/arch-armv8-2a.inc @@ -6,14 +6,19 @@ TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8-2a', ' -march MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8-2a', 'armv8-2a:', '', d)}" require conf/machine/include/arm/arch-armv8a.inc +require conf/machine/include/arm/feature-arm-sve.inc # Little Endian base configs -AVAILTUNES += "armv8-2a armv8-2a-crypto" +AVAILTUNES += "armv8-2a armv8-2a-crypto armv8-2a-crypto-sve" ARMPKGARCH:tune-armv8-2a ?= "armv8-2a" ARMPKGARCH:tune-armv8-2a-crypto ?= "armv8-2a" +ARMPKGARCH:tune-armv8-2a-crypto-sve ?= "armv8-2a" TUNE_FEATURES:tune-armv8-2a = "aarch64 armv8-2a" TUNE_FEATURES:tune-armv8-2a-crypto = "${TUNE_FEATURES:tune-armv8-2a} crypto" +TUNE_FEATURES:tune-armv8-2a-crypto-sve = "${TUNE_FEATURES:tune-armv8-2a-crypto} sve" PACKAGE_EXTRA_ARCHS:tune-armv8-2a = "${PACKAGE_EXTRA_ARCHS:tune-armv8a} armv8-2a" PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a} armv8-2a-crypto" +PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto-sve = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto} armv8-2a-crypto-sve" BASE_LIB:tune-armv8-2a = "lib64" BASE_LIB:tune-armv8-2a-crypto = "lib64" +BASE_LIB:tune-armv8-2a-crypto-sve = "lib64" diff --git a/meta/conf/machine/include/arm/arch-armv8-4a.inc b/meta/conf/machine/include/arm/arch-armv8-4a.inc index 29feddb64c5..b61d50daa5e 100644 --- a/meta/conf/machine/include/arm/arch-armv8-4a.inc +++ b/meta/conf/machine/include/arm/arch-armv8-4a.inc @@ -6,14 +6,19 @@ TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8-4a', ' -march MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8-4a', 'armv8-4a:', '', d)}" require conf/machine/include/arm/arch-armv8a.inc +require conf/machine/include/arm/feature-arm-sve.inc # Little Endian base configs -AVAILTUNES += "armv8-4a armv8-4a-crypto" +AVAILTUNES += "armv8-4a armv8-4a-crypto armv8-4a-crypto-sve" ARMPKGARCH:tune-armv8-4a ?= "armv8-4a" ARMPKGARCH:tune-armv8-4a-crypto ?= "armv8-4a" +ARMPKGARCH:tune-armv8-4a-crypto-sve ?= "armv8-4a" TUNE_FEATURES:tune-armv8-4a = "aarch64 armv8-4a" TUNE_FEATURES:tune-armv8-4a-crypto = "${TUNE_FEATURES:tune-armv8-4a} crypto" +TUNE_FEATURES:tune-armv8-4a-crypto-sve = "${TUNE_FEATURES:tune-armv8-4a-crypto} sve" PACKAGE_EXTRA_ARCHS:tune-armv8-4a = "${PACKAGE_EXTRA_ARCHS:tune-armv8a} armv8-4a" PACKAGE_EXTRA_ARCHS:tune-armv8-4a-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8-4a} armv8-4a-crypto" +PACKAGE_EXTRA_ARCHS:tune-armv8-4a-crypto-sve = "${PACKAGE_EXTRA_ARCHS:tune-armv8-4a-crypto} armv8-4a-crypto-sve" BASE_LIB:tune-armv8-4a = "lib64" BASE_LIB:tune-armv8-4a-crypto = "lib64" +BASE_LIB:tune-armv8-4a-crypto-sve = "lib64" diff --git a/meta/conf/machine/include/arm/arch-armv8-5a.inc b/meta/conf/machine/include/arm/arch-armv8-5a.inc index a1bcb7fb9a1..176bc9033c9 100644 --- a/meta/conf/machine/include/arm/arch-armv8-5a.inc +++ b/meta/conf/machine/include/arm/arch-armv8-5a.inc @@ -6,14 +6,19 @@ TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8-5a', ' -march MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8-5a', 'armv8-5a:', '', d)}" require conf/machine/include/arm/arch-armv8a.inc +require conf/machine/include/arm/feature-arm-sve.inc # Little Endian base configs -AVAILTUNES += "armv8-5a armv8-5a-crypto" +AVAILTUNES += "armv8-5a armv8-5a-crypto armv8-5a-crypto-sve" ARMPKGARCH:tune-armv8-5a ?= "armv8-5a" ARMPKGARCH:tune-armv8-5a-crypto ?= "armv8-5a" +ARMPKGARCH:tune-armv8-5a-crypto-sve ?= "armv8-5a" TUNE_FEATURES:tune-armv8-5a = "aarch64 armv8-5a" TUNE_FEATURES:tune-armv8-5a-crypto = "${TUNE_FEATURES:tune-armv8-5a} crypto" +TUNE_FEATURES:tune-armv8-5a-crypto-sve = "${TUNE_FEATURES:tune-armv8-5a-crypto} sve" PACKAGE_EXTRA_ARCHS:tune-armv8-5a = "${PACKAGE_EXTRA_ARCHS:tune-armv8a} armv8-5a" PACKAGE_EXTRA_ARCHS:tune-armv8-5a-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8-5a} armv8-5a-crypto" +PACKAGE_EXTRA_ARCHS:tune-armv8-5a-crypto-sve = "${PACKAGE_EXTRA_ARCHS:tune-armv8-5a-crypto} armv8-5a-crypto-sve" BASE_LIB:tune-armv8-5a = "lib64" BASE_LIB:tune-armv8-5a-crypto = "lib64" +BASE_LIB:tune-armv8-5a-crypto-sve = "lib64" diff --git a/meta/conf/machine/include/arm/arch-armv9a.inc b/meta/conf/machine/include/arm/arch-armv9a.inc index c38d6cfdf60..6945dea333b 100644 --- a/meta/conf/machine/include/arm/arch-armv9a.inc +++ b/meta/conf/machine/include/arm/arch-armv9a.inc @@ -7,22 +7,27 @@ MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv9a', 'armv9a:', require conf/machine/include/arm/arch-arm64.inc require conf/machine/include/arm/feature-arm-crc.inc require conf/machine/include/arm/feature-arm-crypto.inc +require conf/machine/include/arm/feature-arm-sve.inc # Little Endian base configs -AVAILTUNES += "armv9a armv9a-crc armv9a-crc-crypto armv9a-crypto" +AVAILTUNES += "armv9a armv9a-crc armv9a-crc-crypto armv9a-crc-crypto-sve armv9a-crypto" ARMPKGARCH:tune-armv9a ?= "armv9a" ARMPKGARCH:tune-armv9a-crc ?= "armv9a" ARMPKGARCH:tune-armv9a-crypto ?= "armv9a" ARMPKGARCH:tune-armv9a-crc-crypto ?= "armv9a" +ARMPKGARCH:tune-armv9a-crc-crypto-sve ?= "armv9a" TUNE_FEATURES:tune-armv9a = "aarch64 armv9a" TUNE_FEATURES:tune-armv9a-crc = "${TUNE_FEATURES:tune-armv9a} crc" TUNE_FEATURES:tune-armv9a-crypto = "${TUNE_FEATURES:tune-armv9a} crypto" TUNE_FEATURES:tune-armv9a-crc-crypto = "${TUNE_FEATURES:tune-armv9a-crc} crypto" +TUNE_FEATURES:tune-armv9a-crc-crypto-sve = "${TUNE_FEATURES:tune-armv9a-crc-crypto} sve" PACKAGE_EXTRA_ARCHS:tune-armv9a = "aarch64 armv9a" PACKAGE_EXTRA_ARCHS:tune-armv9a-crc = "${PACKAGE_EXTRA_ARCHS:tune-armv9a} armv9a-crc" PACKAGE_EXTRA_ARCHS:tune-armv9a-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv9a} armv9a-crypto" PACKAGE_EXTRA_ARCHS:tune-armv9a-crc-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv9a-crc} armv9a-crypto armv9a-crc-crypto" +PACKAGE_EXTRA_ARCHS:tune-armv9a-crc-crypto-sve = "${PACKAGE_EXTRA_ARCHS:tune-armv9a-crc-crypto} armv9a-crc-crypto-sve" BASE_LIB:tune-armv9a = "lib64" BASE_LIB:tune-armv9a-crc = "lib64" BASE_LIB:tune-armv9a-crypto = "lib64" BASE_LIB:tune-armv9a-crc-crypto = "lib64" +BASE_LIB:tune-armv9a-crc-crypto-sve = "lib64"
Signed-off-by: Khem Raj <raj.khem@gmail.com> --- v2: Rebased meta/conf/machine/include/arm/arch-armv8-2a.inc | 7 ++++++- meta/conf/machine/include/arm/arch-armv8-4a.inc | 7 ++++++- meta/conf/machine/include/arm/arch-armv8-5a.inc | 7 ++++++- meta/conf/machine/include/arm/arch-armv9a.inc | 7 ++++++- 4 files changed, 24 insertions(+), 4 deletions(-)