diff mbox

[ARM/testsuite,6/7] Force soft float in ARMv6-M and ARMv8-M Baseline options

Message ID e09398ac-1055-3771-75f3-96f278040f0a@foss.arm.com
State New
Headers show

Commit Message

Thomas Preudhomme Sept. 22, 2016, 2:51 p.m. UTC
Sorry, noticed an error in the patch. It was not caught during testing because 
GCC was built with --with-mode=thumb. Correct patch attached.

Best regards,

Thomas

On 22/09/16 14:49, Thomas Preudhomme wrote:
> Hi,
>
> ARMv6-M and ARMv8-M Baseline only support soft float ABI. Therefore, the
> arm_arch_v8m_base add option should pass -mfloat-abi=soft, much like -mthumb is
> passed for architectures that only support Thumb instruction set. This patch
> adds -mfloat-abi=soft to both arm_arch_v6m and arm_arch_v8m_base add options.
> Patch is in attachment.
>
> ChangeLog entry is as follows:
>
> *** gcc/testsuite/ChangeLog ***
>
> 2016-07-15  Thomas Preud'homme  <thomas.preudhomme@arm.com>
>
>         * lib/target-supports.exp (add_options_for_arm_arch_v6m): Add
>         -mfloat-abi=soft option.
>         (add_options_for_arm_arch_v8m_base): Likewise.
>
>
> Is this ok for trunk?
>
> Best regards,
>
> Thomas

Comments

Richard Earnshaw (lists) Sept. 22, 2016, 3:47 p.m. UTC | #1
On 22/09/16 15:51, Thomas Preudhomme wrote:
> Sorry, noticed an error in the patch. It was not caught during testing
> because GCC was built with --with-mode=thumb. Correct patch attached.
> 
> Best regards,
> 
> Thomas
> 
> On 22/09/16 14:49, Thomas Preudhomme wrote:
>> Hi,
>>
>> ARMv6-M and ARMv8-M Baseline only support soft float ABI. Therefore, the
>> arm_arch_v8m_base add option should pass -mfloat-abi=soft, much like
>> -mthumb is
>> passed for architectures that only support Thumb instruction set. This
>> patch
>> adds -mfloat-abi=soft to both arm_arch_v6m and arm_arch_v8m_base add
>> options.
>> Patch is in attachment.
>>
>> ChangeLog entry is as follows:
>>
>> *** gcc/testsuite/ChangeLog ***
>>
>> 2016-07-15  Thomas Preud'homme  <thomas.preudhomme@arm.com>
>>
>>         * lib/target-supports.exp (add_options_for_arm_arch_v6m): Add
>>         -mfloat-abi=soft option.
>>         (add_options_for_arm_arch_v8m_base): Likewise.
>>
>>
>> Is this ok for trunk?
>>
>> Best regards,
>>
>> Thomas
> 
> 6_softfloat_testing_v6m_v8m_baseline.patch
> 
> 
> diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
> index 0dabea0850124947a7fe333e0b94c4077434f278..b5d72f1283be6a6e4736a1d20936e169c1384398 100644
> --- a/gcc/testsuite/lib/target-supports.exp
> +++ b/gcc/testsuite/lib/target-supports.exp
> @@ -3540,24 +3540,25 @@ proc check_effective_target_arm_fp16_hw { } {
>  # Usage: /* { dg-require-effective-target arm_arch_v5_ok } */
>  #        /* { dg-add-options arm_arch_v5 } */
>  #	 /* { dg-require-effective-target arm_arch_v5_multilib } */
> -foreach { armfunc armflag armdef } { v4 "-march=armv4 -marm" __ARM_ARCH_4__
> -				     v4t "-march=armv4t" __ARM_ARCH_4T__
> -				     v5 "-march=armv5 -marm" __ARM_ARCH_5__
> -				     v5t "-march=armv5t" __ARM_ARCH_5T__
> -				     v5te "-march=armv5te" __ARM_ARCH_5TE__
> -				     v6 "-march=armv6" __ARM_ARCH_6__
> -				     v6k "-march=armv6k" __ARM_ARCH_6K__
> -				     v6t2 "-march=armv6t2" __ARM_ARCH_6T2__
> -				     v6z "-march=armv6z" __ARM_ARCH_6Z__
> -				     v6m "-march=armv6-m -mthumb" __ARM_ARCH_6M__
> -				     v7a "-march=armv7-a" __ARM_ARCH_7A__
> -				     v7r "-march=armv7-r" __ARM_ARCH_7R__
> -				     v7m "-march=armv7-m -mthumb" __ARM_ARCH_7M__
> -				     v7em "-march=armv7e-m -mthumb" __ARM_ARCH_7EM__
> -				     v8a "-march=armv8-a" __ARM_ARCH_8A__
> -				     v8_1a "-march=armv8.1a" __ARM_ARCH_8A__
> -				     v8m_base "-march=armv8-m.base -mthumb" __ARM_ARCH_8M_BASE__
> -				     v8m_main "-march=armv8-m.main -mthumb" __ARM_ARCH_8M_MAIN__ } {
> +foreach { armfunc armflag armdef } {
> +	v4 "-march=armv4 -marm" __ARM_ARCH_4__
> +	v4t "-march=armv4t" __ARM_ARCH_4T__
> +	v5 "-march=armv5 -marm" __ARM_ARCH_5__
> +	v5t "-march=armv5t" __ARM_ARCH_5T__
> +	v5te "-march=armv5te" __ARM_ARCH_5TE__
> +	v6 "-march=armv6" __ARM_ARCH_6__
> +	v6k "-march=armv6k" __ARM_ARCH_6K__
> +	v6t2 "-march=armv6t2" __ARM_ARCH_6T2__
> +	v6z "-march=armv6z" __ARM_ARCH_6Z__
> +	v6m "-march=armv6-m -mthumb -mfloat-abi=soft" __ARM_ARCH_6M__
> +	v7a "-march=armv7-a" __ARM_ARCH_7A__
> +	v7r "-march=armv7-r" __ARM_ARCH_7R__
> +	v7m "-march=armv7-m -mthumb" __ARM_ARCH_7M__
> +	v7em "-march=armv7e-m -mthumb" __ARM_ARCH_7EM__
> +	v8a "-march=armv8-a" __ARM_ARCH_8A__
> +	v8_1a "-march=armv8.1a" __ARM_ARCH_8A__
> +	v8m_base "-march=armv8-m.base -mthumb -mfloat-abi=soft" __ARM_ARCH_8M_BASE__
> +	v8m_main "-march=armv8-m.main -mthumb" __ARM_ARCH_8M_MAIN__ } {
>      eval [string map [list FUNC $armfunc FLAG $armflag DEF $armdef ] {
>  	proc check_effective_target_arm_arch_FUNC_ok { } {
>  	    if { [ string match "*-marm*" "FLAG" ] &&
> 

I think if you're going to do this you need to also check that changing
the ABI in this way isn't incompatible with other aspects of how the
user has invoked dejagnu.

R.
Thomas Preudhomme Sept. 22, 2016, 4:15 p.m. UTC | #2
On 22/09/16 16:47, Richard Earnshaw (lists) wrote:
> On 22/09/16 15:51, Thomas Preudhomme wrote:
>> Sorry, noticed an error in the patch. It was not caught during testing
>> because GCC was built with --with-mode=thumb. Correct patch attached.
>>
>> Best regards,
>>
>> Thomas
>>
>> On 22/09/16 14:49, Thomas Preudhomme wrote:
>>> Hi,
>>>
>>> ARMv6-M and ARMv8-M Baseline only support soft float ABI. Therefore, the
>>> arm_arch_v8m_base add option should pass -mfloat-abi=soft, much like
>>> -mthumb is
>>> passed for architectures that only support Thumb instruction set. This
>>> patch
>>> adds -mfloat-abi=soft to both arm_arch_v6m and arm_arch_v8m_base add
>>> options.
>>> Patch is in attachment.
>>>
>>> ChangeLog entry is as follows:
>>>
>>> *** gcc/testsuite/ChangeLog ***
>>>
>>> 2016-07-15  Thomas Preud'homme  <thomas.preudhomme@arm.com>
>>>
>>>         * lib/target-supports.exp (add_options_for_arm_arch_v6m): Add
>>>         -mfloat-abi=soft option.
>>>         (add_options_for_arm_arch_v8m_base): Likewise.
>>>
>>>
>>> Is this ok for trunk?
>>>
>>> Best regards,
>>>
>>> Thomas
>>
>> 6_softfloat_testing_v6m_v8m_baseline.patch
>>
>>
>> diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
>> index 0dabea0850124947a7fe333e0b94c4077434f278..b5d72f1283be6a6e4736a1d20936e169c1384398 100644
>> --- a/gcc/testsuite/lib/target-supports.exp
>> +++ b/gcc/testsuite/lib/target-supports.exp
>> @@ -3540,24 +3540,25 @@ proc check_effective_target_arm_fp16_hw { } {
>>  # Usage: /* { dg-require-effective-target arm_arch_v5_ok } */
>>  #        /* { dg-add-options arm_arch_v5 } */
>>  #	 /* { dg-require-effective-target arm_arch_v5_multilib } */
>> -foreach { armfunc armflag armdef } { v4 "-march=armv4 -marm" __ARM_ARCH_4__
>> -				     v4t "-march=armv4t" __ARM_ARCH_4T__
>> -				     v5 "-march=armv5 -marm" __ARM_ARCH_5__
>> -				     v5t "-march=armv5t" __ARM_ARCH_5T__
>> -				     v5te "-march=armv5te" __ARM_ARCH_5TE__
>> -				     v6 "-march=armv6" __ARM_ARCH_6__
>> -				     v6k "-march=armv6k" __ARM_ARCH_6K__
>> -				     v6t2 "-march=armv6t2" __ARM_ARCH_6T2__
>> -				     v6z "-march=armv6z" __ARM_ARCH_6Z__
>> -				     v6m "-march=armv6-m -mthumb" __ARM_ARCH_6M__
>> -				     v7a "-march=armv7-a" __ARM_ARCH_7A__
>> -				     v7r "-march=armv7-r" __ARM_ARCH_7R__
>> -				     v7m "-march=armv7-m -mthumb" __ARM_ARCH_7M__
>> -				     v7em "-march=armv7e-m -mthumb" __ARM_ARCH_7EM__
>> -				     v8a "-march=armv8-a" __ARM_ARCH_8A__
>> -				     v8_1a "-march=armv8.1a" __ARM_ARCH_8A__
>> -				     v8m_base "-march=armv8-m.base -mthumb" __ARM_ARCH_8M_BASE__
>> -				     v8m_main "-march=armv8-m.main -mthumb" __ARM_ARCH_8M_MAIN__ } {
>> +foreach { armfunc armflag armdef } {
>> +	v4 "-march=armv4 -marm" __ARM_ARCH_4__
>> +	v4t "-march=armv4t" __ARM_ARCH_4T__
>> +	v5 "-march=armv5 -marm" __ARM_ARCH_5__
>> +	v5t "-march=armv5t" __ARM_ARCH_5T__
>> +	v5te "-march=armv5te" __ARM_ARCH_5TE__
>> +	v6 "-march=armv6" __ARM_ARCH_6__
>> +	v6k "-march=armv6k" __ARM_ARCH_6K__
>> +	v6t2 "-march=armv6t2" __ARM_ARCH_6T2__
>> +	v6z "-march=armv6z" __ARM_ARCH_6Z__
>> +	v6m "-march=armv6-m -mthumb -mfloat-abi=soft" __ARM_ARCH_6M__
>> +	v7a "-march=armv7-a" __ARM_ARCH_7A__
>> +	v7r "-march=armv7-r" __ARM_ARCH_7R__
>> +	v7m "-march=armv7-m -mthumb" __ARM_ARCH_7M__
>> +	v7em "-march=armv7e-m -mthumb" __ARM_ARCH_7EM__
>> +	v8a "-march=armv8-a" __ARM_ARCH_8A__
>> +	v8_1a "-march=armv8.1a" __ARM_ARCH_8A__
>> +	v8m_base "-march=armv8-m.base -mthumb -mfloat-abi=soft" __ARM_ARCH_8M_BASE__
>> +	v8m_main "-march=armv8-m.main -mthumb" __ARM_ARCH_8M_MAIN__ } {
>>      eval [string map [list FUNC $armfunc FLAG $armflag DEF $armdef ] {
>>  	proc check_effective_target_arm_arch_FUNC_ok { } {
>>  	    if { [ string match "*-marm*" "FLAG" ] &&
>>
>
> I think if you're going to do this you need to also check that changing
> the ABI in this way isn't incompatible with other aspects of how the
> user has invoked dejagnu.

So should this check also be done for all the target for which -mthumb is passed 
or is there a difference between the two situations?

Best regards,

Thomas
Thomas Preudhomme Oct. 3, 2016, 4:46 p.m. UTC | #3
On 22/09/16 17:15, Thomas Preudhomme wrote:
> On 22/09/16 16:47, Richard Earnshaw (lists) wrote:
>> On 22/09/16 15:51, Thomas Preudhomme wrote:
>>> Sorry, noticed an error in the patch. It was not caught during testing
>>> because GCC was built with --with-mode=thumb. Correct patch attached.
>>>
>>> Best regards,
>>>
>>> Thomas
>>>
>>> On 22/09/16 14:49, Thomas Preudhomme wrote:
>>>> Hi,
>>>>
>>>> ARMv6-M and ARMv8-M Baseline only support soft float ABI. Therefore, the
>>>> arm_arch_v8m_base add option should pass -mfloat-abi=soft, much like
>>>> -mthumb is
>>>> passed for architectures that only support Thumb instruction set. This
>>>> patch
>>>> adds -mfloat-abi=soft to both arm_arch_v6m and arm_arch_v8m_base add
>>>> options.
>>>> Patch is in attachment.
>>>>
>>>> ChangeLog entry is as follows:
>>>>
>>>> *** gcc/testsuite/ChangeLog ***
>>>>
>>>> 2016-07-15  Thomas Preud'homme  <thomas.preudhomme@arm.com>
>>>>
>>>>         * lib/target-supports.exp (add_options_for_arm_arch_v6m): Add
>>>>         -mfloat-abi=soft option.
>>>>         (add_options_for_arm_arch_v8m_base): Likewise.
>>>>
>>>>
>>>> Is this ok for trunk?
>>>>
>>>> Best regards,
>>>>
>>>> Thomas
>>>
>>> 6_softfloat_testing_v6m_v8m_baseline.patch
>>>
>>>
>>> diff --git a/gcc/testsuite/lib/target-supports.exp
>>> b/gcc/testsuite/lib/target-supports.exp
>>> index
>>> 0dabea0850124947a7fe333e0b94c4077434f278..b5d72f1283be6a6e4736a1d20936e169c1384398
>>> 100644
>>> --- a/gcc/testsuite/lib/target-supports.exp
>>> +++ b/gcc/testsuite/lib/target-supports.exp
>>> @@ -3540,24 +3540,25 @@ proc check_effective_target_arm_fp16_hw { } {
>>>  # Usage: /* { dg-require-effective-target arm_arch_v5_ok } */
>>>  #        /* { dg-add-options arm_arch_v5 } */
>>>  #     /* { dg-require-effective-target arm_arch_v5_multilib } */
>>> -foreach { armfunc armflag armdef } { v4 "-march=armv4 -marm" __ARM_ARCH_4__
>>> -                     v4t "-march=armv4t" __ARM_ARCH_4T__
>>> -                     v5 "-march=armv5 -marm" __ARM_ARCH_5__
>>> -                     v5t "-march=armv5t" __ARM_ARCH_5T__
>>> -                     v5te "-march=armv5te" __ARM_ARCH_5TE__
>>> -                     v6 "-march=armv6" __ARM_ARCH_6__
>>> -                     v6k "-march=armv6k" __ARM_ARCH_6K__
>>> -                     v6t2 "-march=armv6t2" __ARM_ARCH_6T2__
>>> -                     v6z "-march=armv6z" __ARM_ARCH_6Z__
>>> -                     v6m "-march=armv6-m -mthumb" __ARM_ARCH_6M__
>>> -                     v7a "-march=armv7-a" __ARM_ARCH_7A__
>>> -                     v7r "-march=armv7-r" __ARM_ARCH_7R__
>>> -                     v7m "-march=armv7-m -mthumb" __ARM_ARCH_7M__
>>> -                     v7em "-march=armv7e-m -mthumb" __ARM_ARCH_7EM__
>>> -                     v8a "-march=armv8-a" __ARM_ARCH_8A__
>>> -                     v8_1a "-march=armv8.1a" __ARM_ARCH_8A__
>>> -                     v8m_base "-march=armv8-m.base -mthumb"
>>> __ARM_ARCH_8M_BASE__
>>> -                     v8m_main "-march=armv8-m.main -mthumb"
>>> __ARM_ARCH_8M_MAIN__ } {
>>> +foreach { armfunc armflag armdef } {
>>> +    v4 "-march=armv4 -marm" __ARM_ARCH_4__
>>> +    v4t "-march=armv4t" __ARM_ARCH_4T__
>>> +    v5 "-march=armv5 -marm" __ARM_ARCH_5__
>>> +    v5t "-march=armv5t" __ARM_ARCH_5T__
>>> +    v5te "-march=armv5te" __ARM_ARCH_5TE__
>>> +    v6 "-march=armv6" __ARM_ARCH_6__
>>> +    v6k "-march=armv6k" __ARM_ARCH_6K__
>>> +    v6t2 "-march=armv6t2" __ARM_ARCH_6T2__
>>> +    v6z "-march=armv6z" __ARM_ARCH_6Z__
>>> +    v6m "-march=armv6-m -mthumb -mfloat-abi=soft" __ARM_ARCH_6M__
>>> +    v7a "-march=armv7-a" __ARM_ARCH_7A__
>>> +    v7r "-march=armv7-r" __ARM_ARCH_7R__
>>> +    v7m "-march=armv7-m -mthumb" __ARM_ARCH_7M__
>>> +    v7em "-march=armv7e-m -mthumb" __ARM_ARCH_7EM__
>>> +    v8a "-march=armv8-a" __ARM_ARCH_8A__
>>> +    v8_1a "-march=armv8.1a" __ARM_ARCH_8A__
>>> +    v8m_base "-march=armv8-m.base -mthumb -mfloat-abi=soft"
>>> __ARM_ARCH_8M_BASE__
>>> +    v8m_main "-march=armv8-m.main -mthumb" __ARM_ARCH_8M_MAIN__ } {
>>>      eval [string map [list FUNC $armfunc FLAG $armflag DEF $armdef ] {
>>>      proc check_effective_target_arm_arch_FUNC_ok { } {
>>>          if { [ string match "*-marm*" "FLAG" ] &&
>>>
>>
>> I think if you're going to do this you need to also check that changing
>> the ABI in this way isn't incompatible with other aspects of how the
>> user has invoked dejagnu.
>
> So should this check also be done for all the target for which -mthumb is passed
> or is there a difference between the two situations?

Ping?

Best regards,

Thomas
diff mbox

Patch

diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 0dabea0850124947a7fe333e0b94c4077434f278..b5d72f1283be6a6e4736a1d20936e169c1384398 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -3540,24 +3540,25 @@  proc check_effective_target_arm_fp16_hw { } {
 # Usage: /* { dg-require-effective-target arm_arch_v5_ok } */
 #        /* { dg-add-options arm_arch_v5 } */
 #	 /* { dg-require-effective-target arm_arch_v5_multilib } */
-foreach { armfunc armflag armdef } { v4 "-march=armv4 -marm" __ARM_ARCH_4__
-				     v4t "-march=armv4t" __ARM_ARCH_4T__
-				     v5 "-march=armv5 -marm" __ARM_ARCH_5__
-				     v5t "-march=armv5t" __ARM_ARCH_5T__
-				     v5te "-march=armv5te" __ARM_ARCH_5TE__
-				     v6 "-march=armv6" __ARM_ARCH_6__
-				     v6k "-march=armv6k" __ARM_ARCH_6K__
-				     v6t2 "-march=armv6t2" __ARM_ARCH_6T2__
-				     v6z "-march=armv6z" __ARM_ARCH_6Z__
-				     v6m "-march=armv6-m -mthumb" __ARM_ARCH_6M__
-				     v7a "-march=armv7-a" __ARM_ARCH_7A__
-				     v7r "-march=armv7-r" __ARM_ARCH_7R__
-				     v7m "-march=armv7-m -mthumb" __ARM_ARCH_7M__
-				     v7em "-march=armv7e-m -mthumb" __ARM_ARCH_7EM__
-				     v8a "-march=armv8-a" __ARM_ARCH_8A__
-				     v8_1a "-march=armv8.1a" __ARM_ARCH_8A__
-				     v8m_base "-march=armv8-m.base -mthumb" __ARM_ARCH_8M_BASE__
-				     v8m_main "-march=armv8-m.main -mthumb" __ARM_ARCH_8M_MAIN__ } {
+foreach { armfunc armflag armdef } {
+	v4 "-march=armv4 -marm" __ARM_ARCH_4__
+	v4t "-march=armv4t" __ARM_ARCH_4T__
+	v5 "-march=armv5 -marm" __ARM_ARCH_5__
+	v5t "-march=armv5t" __ARM_ARCH_5T__
+	v5te "-march=armv5te" __ARM_ARCH_5TE__
+	v6 "-march=armv6" __ARM_ARCH_6__
+	v6k "-march=armv6k" __ARM_ARCH_6K__
+	v6t2 "-march=armv6t2" __ARM_ARCH_6T2__
+	v6z "-march=armv6z" __ARM_ARCH_6Z__
+	v6m "-march=armv6-m -mthumb -mfloat-abi=soft" __ARM_ARCH_6M__
+	v7a "-march=armv7-a" __ARM_ARCH_7A__
+	v7r "-march=armv7-r" __ARM_ARCH_7R__
+	v7m "-march=armv7-m -mthumb" __ARM_ARCH_7M__
+	v7em "-march=armv7e-m -mthumb" __ARM_ARCH_7EM__
+	v8a "-march=armv8-a" __ARM_ARCH_8A__
+	v8_1a "-march=armv8.1a" __ARM_ARCH_8A__
+	v8m_base "-march=armv8-m.base -mthumb -mfloat-abi=soft" __ARM_ARCH_8M_BASE__
+	v8m_main "-march=armv8-m.main -mthumb" __ARM_ARCH_8M_MAIN__ } {
     eval [string map [list FUNC $armfunc FLAG $armflag DEF $armdef ] {
 	proc check_effective_target_arm_arch_FUNC_ok { } {
 	    if { [ string match "*-marm*" "FLAG" ] &&