Message ID | 961392e8-08ad-571a-6029-642185fc556d@foss.arm.com |
---|---|
State | Superseded |
Headers | show |
On Nov 28, 2016, at 8:52 AM, Thomas Preudhomme <thomas.preudhomme@foss.arm.com> wrote: > > Ping? Ok. > On 17/11/16 20:42, Thomas Preudhomme wrote: >> Ping? >> >> Best regards, >> >> Thomas >> >> On 08/11/16 13:35, Thomas Preudhomme wrote: >>> Ping, >>> >>> Best regards, >>> >>> Thomas >>> >>> On 02/11/16 10:04, Thomas Preudhomme wrote: >>>> Ping? >>>> >>>> Best regards, >>>> >>>> Thomas >>>> >>>> On 28/10/16 10:49, 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. >>>>> >>>>> The reason this patch was made is that without it dg-require-effective-target >>>>> arm_arch_v8m_base_ok evaluates to true for an arm-none-linux-gnueabihf >>>>> toolchain >>>>> but then any testcase containing a function for such a target (such as the >>>>> atomic-op-* in gcc.target/arm) will error out because ARMv8-M Baseline does not >>>>> support hard float ABI. >>>>> >>>>> I see 2 ways to fix this: >>>>> >>>>> 1) the approach taken in this patch, ie saying that to select ARMv8-M baseline >>>>> architecture you need the right -march, -mthumb but also the right float ABI. >>>>> >>>>> Note that the comment at the top of that procedure says: >>>>> # Creates a series of routines that return 1 if the given architecture >>>>> # can be selected and a routine to give the flags to select that architecture >>>>> >>>>> 2) Add a function to the assembly that is used to test support for the >>>>> architecture. >>>>> >>>>> The reason I favor the first one is that it enables more test while the second >>>>> test would just skip ARMv6-M and ARMv8-M Baseline tests for >>>>> arm-none-linux-gnueabihf toolchains. >>>>> >>>>> Is this patch ok for trunk? >>>>> >>>>> Best regards, >>>>> >>>>> Thomas
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index b5a9faab5a47d01371c6402a5b07d34071dbc34b..ce2fc0af116a4ffbec272642dff21ed5797a3028 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -3679,25 +3679,26 @@ 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__ - v8_2a "-march=armv8.2a" __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__ + v8_2a "-march=armv8.2a" __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" ] &&