From: Dragomir Daniel <daniel.dragomir@windriver.com>
To: Andrei Gherzan <andrei@gherzan.ro>
Cc: openembedded <openembedded-core@lists.openembedded.org>
Subject: Re: [PATCHv2] Add tune for 32-bit ARMv8-a
Date: Wed, 2 Mar 2016 12:35:46 +0200 [thread overview]
Message-ID: <56D6C202.5000008@windriver.com> (raw)
In-Reply-To: <CAK18fxG3L6W942-Q6qQD+9o7QtWTq7yW+wp9iDgBGvAKyDEaKQ@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 9720 bytes --]
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@windriver.com <mailto:daniel.dragomir@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@windriver.com
> <mailto:daniel.dragomir@windriver.com>>
> Signed-off-by: Cristian Bercaru <cristian.bercaru at windriver.com
> <http://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 :)
> +ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "crc",
> "-crc", "", d)}"
> +
> +TUNEVALID[crypto] = "Enable ARMv8 crypto extension."
> +ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "crypto",
> "-crypto", "", d)}"
> +
> +TUNEVALID[fp-armv8] = "Enable ARMv8 Vector Floating Point unit."
> +ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES",
> "fp-armv8", "-fp-armv8", "", d)}"
> +
> +TUNE_CCARGS .= "${@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("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("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.
Regards,
Daniel
[-- Attachment #2: Type: text/html, Size: 14460 bytes --]
next prev parent reply other threads:[~2016-03-02 10:36 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-27 12:44 [PATCHv2] ARMv8 32-bit compiler tunings Daniel Dragomir
2016-02-27 12:44 ` [PATCHv2] Add tune for 32-bit ARMv8-a Daniel Dragomir
2016-03-01 0:02 ` Andre McCurdy
2016-03-01 16:33 ` Dragomir Daniel
2016-03-01 19:12 ` Andre McCurdy
2016-03-02 10:25 ` Dragomir Daniel
2016-03-02 0:17 ` Andrei Gherzan
2016-03-02 10:35 ` Dragomir Daniel [this message]
2016-03-02 15:49 ` Andrei Gherzan
2016-02-27 13:14 ` [PATCHv2] ARMv8 32-bit compiler tunings Dragomir Daniel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=56D6C202.5000008@windriver.com \
--to=daniel.dragomir@windriver.com \
--cc=andrei@gherzan.ro \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox