On 17 October 2022 15:29:33 CEST, Christophe Lyon via Gcc-patches 
<gcc-patches@gcc.gnu.org> wrote:
>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.parvathan...@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.parvathan...@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 ;-)

Don't you have to sbitmap_free the thing, short of using an auto_sbitmap?

thanks,

>
>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 via email to