public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Christophe Lyon <christophe.lyon@arm.com>
To: Srinath Parvathaneni <srinath.parvathaneni@arm.com>,
	gcc-patches@gcc.gnu.org
Cc: richard.earnshaw@arm.com
Subject: Re: [GCC][PATCH] arm: Add cde feature support for Cortex-M55 CPU.
Date: Mon, 17 Oct 2022 15:29:33 +0200	[thread overview]
Message-ID: <6bc253d0-a642-e89e-0897-e8cb2fc8ce2c@arm.com> (raw)
In-Reply-To: <af86e552-974d-4233-8943-4dd155b00594@AZ-NEU-EX04.Arm.com>

Hi Srinath,


On 10/10/22 10:20, Srinath Parvathaneni via Gcc-patches wrote:
> Hi,
> 
> This patch adds cde feature (optional) support for Cortex-M55 CPU, please refer
> [1] for more details. To use this feature we need to specify +cdecpN
> (e.g. -mcpu=cortex-m55+cdecp<N>), where N is the coprocessor number 0 to 7.
> 
> Bootstrapped for arm-none-linux-gnueabihf target, regression tested
> on arm-none-eabi target and found no regressions.
> 
> [1] https://developer.arm.com/documentation/101051/0101/?lang=en (version: r1p1).
> 
> Ok for master?
> 
> Regards,
> Srinath.
> 
> gcc/ChangeLog:
> 
> 2022-10-07  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
> 
>          * common/config/arm/arm-common.cc (arm_canon_arch_option_1): Ignore cde
>          options for mlibarch.
>          * config/arm/arm-cpus.in (begin cpu cortex-m55): Add cde options.
>          * doc/invoke.texi (CDE): Document options for Cortex-M55 CPU.
> 
> gcc/testsuite/ChangeLog:
> 
> 2022-10-07  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
> 
>          * gcc.target/arm/multilib.exp: Add multilib tests for Cortex-M55 CPU.
> 
> 
> ###############     Attachment also inlined for ease of reply    ###############
> 
> 
> diff --git a/gcc/common/config/arm/arm-common.cc b/gcc/common/config/arm/arm-common.cc
> index c38812f1ea6a690cd19b0dc74d963c4f5ae155ca..b6f955b3c012475f398382e72c9a3966412991ec 100644
> --- a/gcc/common/config/arm/arm-common.cc
> +++ b/gcc/common/config/arm/arm-common.cc
> @@ -753,6 +753,15 @@ arm_canon_arch_option_1 (int argc, const char **argv, bool arch_for_multilib)
>         arm_initialize_isa (target_isa, selected_cpu->common.isa_bits);
>         arm_parse_option_features (target_isa, &selected_cpu->common,
>   				 strchr (cpu, '+'));
> +      if (arch_for_multilib)
> +	{
> +	  const enum isa_feature removable_bits[] = {ISA_IGNORE_FOR_MULTILIB,
> +						     isa_nobit};
> +	  sbitmap isa_bits = sbitmap_alloc (isa_num_bits);
> +	  arm_initialize_isa (isa_bits, removable_bits);
> +	  bitmap_and_compl (target_isa, target_isa, isa_bits);
> +	}
> +

I can see the piece of code you add here is exactly the same as the one 
a few lines above when handling "if (arch)". Can this be moved below and 
thus be common to the two cases, or does it have to be performed before 
bitmap_ior of fpu_isa?

Also, IIUC, CDE was already optional for other CPUs (M33, M35P, 
star-mc1), so the hunk above fixes a latent bug when handling multilibs 
for these CPUs too? If so, maybe worth splitting the patch into two 
parts since the above is not strictly related to M55?

But I'm not a maintainer ;-)

Thanks,

Christophe

>         if (fpu && strcmp (fpu, "auto") != 0)
>   	{
>   	  /* The easiest and safest way to remove the default fpu
> diff --git a/gcc/config/arm/arm-cpus.in b/gcc/config/arm/arm-cpus.in
> index 5a63bc548e54dbfdce5d1df425bd615d81895d80..aa02c04c4924662f3ddd58e6967392ba3f4b4a87 100644
> --- a/gcc/config/arm/arm-cpus.in
> +++ b/gcc/config/arm/arm-cpus.in
> @@ -1633,6 +1633,14 @@ begin cpu cortex-m55
>    option nomve remove mve mve_float
>    option nofp remove ALL_FP mve_float
>    option nodsp remove MVE mve_float
> + option cdecp0 add cdecp0
> + option cdecp1 add cdecp1
> + option cdecp2 add cdecp2
> + option cdecp3 add cdecp3
> + option cdecp4 add cdecp4
> + option cdecp5 add cdecp5
> + option cdecp6 add cdecp6
> + option cdecp7 add cdecp7
>    isa quirk_no_asmcpu quirk_vlldm
>    costs v7m
>    vendor 41
> diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
> index aa5655764a0360959f9c1061749d2cc9ebd23489..26857f7a90e42d925bc6908686ac78138a53c4ad 100644
> --- a/gcc/doc/invoke.texi
> +++ b/gcc/doc/invoke.texi
> @@ -21698,6 +21698,10 @@ floating-point instructions on @samp{cortex-m55}.
>   Disable the M-Profile Vector Extension (MVE) single precision floating-point
>   instructions on @samp{cortex-m55}.
>   
> +@item +cdecp0, +cdecp1, ... , +cdecp7
> +Enable the Custom Datapath Extension (CDE) on selected coprocessors according
> +to the numbers given in the options in the range 0 to 7 on @samp{cortex-m55}.
> +
>   @item  +nofp
>   Disables the floating-point instructions on @samp{arm9e},
>   @samp{arm946e-s}, @samp{arm966e-s}, @samp{arm968e-s}, @samp{arm10e},
> diff --git a/gcc/testsuite/gcc.target/arm/multilib.exp b/gcc/testsuite/gcc.target/arm/multilib.exp
> index 2fa648c61dafebb663969198bf7849400a7547f6..7a977bff58b7b68bfe9e49d7602989a39caa6534 100644
> --- a/gcc/testsuite/gcc.target/arm/multilib.exp
> +++ b/gcc/testsuite/gcc.target/arm/multilib.exp
> @@ -851,6 +851,18 @@ if {[multilib_config "rmprofile"] } {
>   	{-mcpu=cortex-m55+nomve+nofp -mfpu=auto -mfloat-abi=softfp} "thumb/v8-m.main/nofp"
>   	{-mcpu=cortex-m55+nodsp+nofp -mfpu=auto -mfloat-abi=soft} "thumb/v8-m.main/nofp"
>   	{-mcpu=cortex-m55+nodsp+nofp -mfpu=auto -mfloat-abi=softfp} "thumb/v8-m.main/nofp"
> +	{-mcpu=cortex-m55 -mfloat-abi=hard -mfpu=auto} "thumb/v8-m.main+dp/hard"
> +	{-mcpu=cortex-m55+cdecp0 -mfloat-abi=hard -mfpu=auto} "thumb/v8-m.main+dp/hard"
> +	{-mcpu=cortex-m55+nomve+cdecp0 -mfloat-abi=hard -mfpu=auto} "thumb/v8-m.main+dp/hard"
> +	{-mcpu=cortex-m55+cdecp0+cdecp1+cdecp2+cdecp3+cdecp4+cdecp5+cdecp6+cdecp7 -mfloat-abi=hard -mfpu=auto} "thumb/v8-m.main+dp/hard"
> +	{-mcpu=cortex-m55 -mfloat-abi=softfp -mfpu=auto} "thumb/v8-m.main+dp/softfp"
> +	{-mcpu=cortex-m55+cdecp0 -mfloat-abi=softfp -mfpu=auto} "thumb/v8-m.main+dp/softfp"
> +	{-mcpu=cortex-m55+nomve+cdecp0 -mfloat-abi=softfp -mfpu=auto} "thumb/v8-m.main+dp/softfp"
> +	{-mcpu=cortex-m55+cdecp0+cdecp1+cdecp2+cdecp3+cdecp4+cdecp5+cdecp6+cdecp7 -mfloat-abi=softfp -mfpu=auto} "thumb/v8-m.main+dp/softfp"
> +	{-mcpu=cortex-m55 -mfloat-abi=soft -mfpu=auto} "thumb/v8-m.main/nofp"
> +	{-mcpu=cortex-m55+cdecp0 -mfloat-abi=soft -mfpu=auto} "thumb/v8-m.main/nofp"
> +	{-mcpu=cortex-m55+nomve+cdecp0 -mfloat-abi=soft -mfpu=auto} "thumb/v8-m.main/nofp"
> +	{-mcpu=cortex-m55+cdecp0+cdecp1+cdecp2+cdecp3+cdecp4+cdecp5+cdecp6+cdecp7 -mfloat-abi=soft -mfpu=auto} "thumb/v8-m.main/nofp"
>   	{-march=armv8-m.main+cdecp0 -mfpu=auto -mfloat-abi=soft} "thumb/v8-m.main/nofp"
>   	{-march=armv8-m.main+fp+cdecp0 -mfpu=auto -mfloat-abi=soft} "thumb/v8-m.main/nofp"
>   	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=auto -mfloat-abi=soft} "thumb/v8-m.main/nofp"
> 
> 
> 

  reply	other threads:[~2022-10-17 13:29 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-10  8:20 Srinath Parvathaneni
2022-10-17 13:29 ` Christophe Lyon [this message]
2022-10-17 15:25   ` Bernhard Reutner-Fischer
2022-10-31 12:38   ` [GCC][PATCH v2] " Srinath Parvathaneni
2022-12-06 11:32     ` Srinath Parvathaneni
2023-01-11 16:41       ` Srinath Parvathaneni
2023-01-13 11:21     ` Richard Earnshaw

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=6bc253d0-a642-e89e-0897-e8cb2fc8ce2c@arm.com \
    --to=christophe.lyon@arm.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=richard.earnshaw@arm.com \
    --cc=srinath.parvathaneni@arm.com \
    /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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).