* [PATCH] testsuite: Make sure double-precision is supported in g++.dg/eh/arm-vfp-unwind.C
@ 2021-08-26 15:53 Christophe Lyon
2021-09-06 7:23 ` Christophe LYON
2021-09-15 11:02 ` Richard Earnshaw
0 siblings, 2 replies; 11+ messages in thread
From: Christophe Lyon @ 2021-08-26 15:53 UTC (permalink / raw)
To: gcc-patches
g++.dg/eh/arm-vfp-unwind.C uses an asm statement relying on
double-precision FPU support, but does not make sure it is actually
supported by the target.
Check (__ARM_FP & 8) to ensure this.
2021-08-26 Christophe Lyon <christophe.lyon@foss.st.com>
gcc/testsuite/
* g++.dg/eh/arm-vfp-unwind.C: Check __ARM_FP.
---
gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
index 62263c0c3b0..90d20081d78 100644
--- a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
+++ b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
@@ -3,7 +3,7 @@
/* Test to catch off-by-one errors in arm/pr-support.c. */
-#if defined (__VFP_FP__) && !defined (__SOFTFP__)
+#if defined (__VFP_FP__) && !defined (__SOFTFP__) && (__ARM_FP & 8)
#include <iostream>
#include <stdlib.h>
--
2.25.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] testsuite: Make sure double-precision is supported in g++.dg/eh/arm-vfp-unwind.C
2021-08-26 15:53 [PATCH] testsuite: Make sure double-precision is supported in g++.dg/eh/arm-vfp-unwind.C Christophe Lyon
@ 2021-09-06 7:23 ` Christophe LYON
2021-09-13 7:52 ` Christophe LYON
2021-09-15 11:02 ` Richard Earnshaw
1 sibling, 1 reply; 11+ messages in thread
From: Christophe LYON @ 2021-09-06 7:23 UTC (permalink / raw)
To: gcc Patches
ping?
On 26/08/2021 17:53, Christophe Lyon wrote:
> g++.dg/eh/arm-vfp-unwind.C uses an asm statement relying on
> double-precision FPU support, but does not make sure it is actually
> supported by the target.
> Check (__ARM_FP & 8) to ensure this.
>
> 2021-08-26 Christophe Lyon <christophe.lyon@foss.st.com>
>
> gcc/testsuite/
> * g++.dg/eh/arm-vfp-unwind.C: Check __ARM_FP.
> ---
> gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
> index 62263c0c3b0..90d20081d78 100644
> --- a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
> +++ b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
> @@ -3,7 +3,7 @@
>
> /* Test to catch off-by-one errors in arm/pr-support.c. */
>
> -#if defined (__VFP_FP__) && !defined (__SOFTFP__)
> +#if defined (__VFP_FP__) && !defined (__SOFTFP__) && (__ARM_FP & 8)
>
> #include <iostream>
> #include <stdlib.h>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] testsuite: Make sure double-precision is supported in g++.dg/eh/arm-vfp-unwind.C
2021-09-06 7:23 ` Christophe LYON
@ 2021-09-13 7:52 ` Christophe LYON
0 siblings, 0 replies; 11+ messages in thread
From: Christophe LYON @ 2021-09-13 7:52 UTC (permalink / raw)
To: gcc Patches
ping?
On 06/09/2021 09:23, Christophe LYON wrote:
> ping?
>
> On 26/08/2021 17:53, Christophe Lyon wrote:
>> g++.dg/eh/arm-vfp-unwind.C uses an asm statement relying on
>> double-precision FPU support, but does not make sure it is actually
>> supported by the target.
>> Check (__ARM_FP & 8) to ensure this.
>>
>> 2021-08-26 Christophe Lyon <christophe.lyon@foss.st.com>
>>
>> gcc/testsuite/
>> * g++.dg/eh/arm-vfp-unwind.C: Check __ARM_FP.
>> ---
>> gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
>> b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
>> index 62263c0c3b0..90d20081d78 100644
>> --- a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
>> +++ b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
>> @@ -3,7 +3,7 @@
>> /* Test to catch off-by-one errors in arm/pr-support.c. */
>> -#if defined (__VFP_FP__) && !defined (__SOFTFP__)
>> +#if defined (__VFP_FP__) && !defined (__SOFTFP__) && (__ARM_FP & 8)
>> #include <iostream>
>> #include <stdlib.h>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] testsuite: Make sure double-precision is supported in g++.dg/eh/arm-vfp-unwind.C
2021-08-26 15:53 [PATCH] testsuite: Make sure double-precision is supported in g++.dg/eh/arm-vfp-unwind.C Christophe Lyon
2021-09-06 7:23 ` Christophe LYON
@ 2021-09-15 11:02 ` Richard Earnshaw
2021-09-15 12:26 ` Christophe LYON
1 sibling, 1 reply; 11+ messages in thread
From: Richard Earnshaw @ 2021-09-15 11:02 UTC (permalink / raw)
To: Christophe Lyon, gcc-patches
On 26/08/2021 16:53, Christophe Lyon via Gcc-patches wrote:
> g++.dg/eh/arm-vfp-unwind.C uses an asm statement relying on
> double-precision FPU support, but does not make sure it is actually
> supported by the target.
> Check (__ARM_FP & 8) to ensure this.
>
> 2021-08-26 Christophe Lyon <christophe.lyon@foss.st.com>
>
> gcc/testsuite/
> * g++.dg/eh/arm-vfp-unwind.C: Check __ARM_FP.
> ---
> gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
> index 62263c0c3b0..90d20081d78 100644
> --- a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
> +++ b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
> @@ -3,7 +3,7 @@
>
> /* Test to catch off-by-one errors in arm/pr-support.c. */
>
> -#if defined (__VFP_FP__) && !defined (__SOFTFP__)
> +#if defined (__VFP_FP__) && !defined (__SOFTFP__) && (__ARM_FP & 8)
>
> #include <iostream>
> #include <stdlib.h>
>
Wouldn't it be better to have an alternate to the asm for the case where
we only have single-precision float? Something like (untested):
static void donkey ()
{
#if __ARM_FP & 8
asm volatile ("fcpyd d9, %P0" : : "w" (1.2345) : "d9");
#else
asm volatile ("fcpys s18, %P0" : : "w" (1.2345f) : "s18");
#endif
throw 1;
}
R.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] testsuite: Make sure double-precision is supported in g++.dg/eh/arm-vfp-unwind.C
2021-09-15 11:02 ` Richard Earnshaw
@ 2021-09-15 12:26 ` Christophe LYON
2021-09-15 12:49 ` Richard Earnshaw
0 siblings, 1 reply; 11+ messages in thread
From: Christophe LYON @ 2021-09-15 12:26 UTC (permalink / raw)
To: Richard Earnshaw, gcc-patches
On 15/09/2021 13:02, Richard Earnshaw wrote:
>
>
> On 26/08/2021 16:53, Christophe Lyon via Gcc-patches wrote:
>> g++.dg/eh/arm-vfp-unwind.C uses an asm statement relying on
>> double-precision FPU support, but does not make sure it is actually
>> supported by the target.
>> Check (__ARM_FP & 8) to ensure this.
>>
>> 2021-08-26 Christophe Lyon <christophe.lyon@foss.st.com>
>>
>> gcc/testsuite/
>> * g++.dg/eh/arm-vfp-unwind.C: Check __ARM_FP.
>> ---
>> gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
>> b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
>> index 62263c0c3b0..90d20081d78 100644
>> --- a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
>> +++ b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
>> @@ -3,7 +3,7 @@
>> /* Test to catch off-by-one errors in arm/pr-support.c. */
>> -#if defined (__VFP_FP__) && !defined (__SOFTFP__)
>> +#if defined (__VFP_FP__) && !defined (__SOFTFP__) && (__ARM_FP & 8)
>> #include <iostream>
>> #include <stdlib.h>
>>
>
> Wouldn't it be better to have an alternate to the asm for the case
> where we only have single-precision float? Something like (untested):
>
> static void donkey ()
> {
> #if __ARM_FP & 8
> asm volatile ("fcpyd d9, %P0" : : "w" (1.2345) : "d9");
> #else
> asm volatile ("fcpys s18, %P0" : : "w" (1.2345f) : "s18");
> #endif
> throw 1;
> }
I tried similar things but they failed on some testing configurations.
Let me try your version, I'll let you know if there is any fallout.
Christophe
>
> R.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] testsuite: Make sure double-precision is supported in g++.dg/eh/arm-vfp-unwind.C
2021-09-15 12:26 ` Christophe LYON
@ 2021-09-15 12:49 ` Richard Earnshaw
2021-09-15 16:13 ` Christophe Lyon
0 siblings, 1 reply; 11+ messages in thread
From: Richard Earnshaw @ 2021-09-15 12:49 UTC (permalink / raw)
To: Christophe LYON, gcc-patches
On 15/09/2021 13:26, Christophe LYON via Gcc-patches wrote:
>
> On 15/09/2021 13:02, Richard Earnshaw wrote:
>>
>>
>> On 26/08/2021 16:53, Christophe Lyon via Gcc-patches wrote:
>>> g++.dg/eh/arm-vfp-unwind.C uses an asm statement relying on
>>> double-precision FPU support, but does not make sure it is actually
>>> supported by the target.
>>> Check (__ARM_FP & 8) to ensure this.
>>>
>>> 2021-08-26 Christophe Lyon <christophe.lyon@foss.st.com>
>>>
>>> gcc/testsuite/
>>> * g++.dg/eh/arm-vfp-unwind.C: Check __ARM_FP.
>>> ---
>>> gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C | 2 +-
>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
>>> b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
>>> index 62263c0c3b0..90d20081d78 100644
>>> --- a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
>>> +++ b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
>>> @@ -3,7 +3,7 @@
>>> /* Test to catch off-by-one errors in arm/pr-support.c. */
>>> -#if defined (__VFP_FP__) && !defined (__SOFTFP__)
>>> +#if defined (__VFP_FP__) && !defined (__SOFTFP__) && (__ARM_FP & 8)
>>> #include <iostream>
>>> #include <stdlib.h>
>>>
>>
>> Wouldn't it be better to have an alternate to the asm for the case
>> where we only have single-precision float? Something like (untested):
>>
>> static void donkey ()
>> {
>> #if __ARM_FP & 8
>> asm volatile ("fcpyd d9, %P0" : : "w" (1.2345) : "d9");
>> #else
>> asm volatile ("fcpys s18, %P0" : : "w" (1.2345f) : "s18");
>> #endif
>> throw 1;
>> }
>
>
> I tried similar things but they failed on some testing configurations.
>
> Let me try your version, I'll let you know if there is any fallout.
Of course, the asm syntax should be converted to the new 'unified
syntax' form ie vmov.f{32,64}.
R.
>
> Christophe
>
>
>>
>> R.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] testsuite: Make sure double-precision is supported in g++.dg/eh/arm-vfp-unwind.C
2021-09-15 12:49 ` Richard Earnshaw
@ 2021-09-15 16:13 ` Christophe Lyon
2021-09-15 16:43 ` Richard Earnshaw
0 siblings, 1 reply; 11+ messages in thread
From: Christophe Lyon @ 2021-09-15 16:13 UTC (permalink / raw)
To: Richard Earnshaw; +Cc: Christophe LYON, GCC Patches
On Wed, Sep 15, 2021 at 2:49 PM Richard Earnshaw via Gcc-patches <
gcc-patches@gcc.gnu.org> wrote:
>
>
> On 15/09/2021 13:26, Christophe LYON via Gcc-patches wrote:
> >
> > On 15/09/2021 13:02, Richard Earnshaw wrote:
> >>
> >>
> >> On 26/08/2021 16:53, Christophe Lyon via Gcc-patches wrote:
> >>> g++.dg/eh/arm-vfp-unwind.C uses an asm statement relying on
> >>> double-precision FPU support, but does not make sure it is actually
> >>> supported by the target.
> >>> Check (__ARM_FP & 8) to ensure this.
> >>>
> >>> 2021-08-26 Christophe Lyon <christophe.lyon@foss.st.com>
> >>>
> >>> gcc/testsuite/
> >>> * g++.dg/eh/arm-vfp-unwind.C: Check __ARM_FP.
> >>> ---
> >>> gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C | 2 +-
> >>> 1 file changed, 1 insertion(+), 1 deletion(-)
> >>>
> >>> diff --git a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
> >>> b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
> >>> index 62263c0c3b0..90d20081d78 100644
> >>> --- a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
> >>> +++ b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
> >>> @@ -3,7 +3,7 @@
> >>> /* Test to catch off-by-one errors in arm/pr-support.c. */
> >>> -#if defined (__VFP_FP__) && !defined (__SOFTFP__)
> >>> +#if defined (__VFP_FP__) && !defined (__SOFTFP__) && (__ARM_FP & 8)
> >>> #include <iostream>
> >>> #include <stdlib.h>
> >>>
> >>
> >> Wouldn't it be better to have an alternate to the asm for the case
> >> where we only have single-precision float? Something like (untested):
> >>
> >> static void donkey ()
> >> {
> >> #if __ARM_FP & 8
> >> asm volatile ("fcpyd d9, %P0" : : "w" (1.2345) : "d9");
> >> #else
> >> asm volatile ("fcpys s18, %P0" : : "w" (1.2345f) : "s18");
> >> #endif
> >> throw 1;
> >> }
> >
> >
> > I tried similar things but they failed on some testing configurations.
> >
> > Let me try your version, I'll let you know if there is any fallout.
>
> Of course, the asm syntax should be converted to the new 'unified
> syntax' form ie vmov.f{32,64}.
>
>
The problem is that %P expects a double-precision register.
It seems there's nothing to print a single-precision register, or rather %p
(small p)
rejects s18 too.
> R.
>
> >
> > Christophe
> >
> >
> >>
> >> R.
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] testsuite: Make sure double-precision is supported in g++.dg/eh/arm-vfp-unwind.C
2021-09-15 16:13 ` Christophe Lyon
@ 2021-09-15 16:43 ` Richard Earnshaw
2021-09-16 9:12 ` Christophe LYON
0 siblings, 1 reply; 11+ messages in thread
From: Richard Earnshaw @ 2021-09-15 16:43 UTC (permalink / raw)
To: Christophe Lyon; +Cc: GCC Patches
On 15/09/2021 17:13, Christophe Lyon via Gcc-patches wrote:
> On Wed, Sep 15, 2021 at 2:49 PM Richard Earnshaw via Gcc-patches <
> gcc-patches@gcc.gnu.org> wrote:
>
>>
>>
>> On 15/09/2021 13:26, Christophe LYON via Gcc-patches wrote:
>>>
>>> On 15/09/2021 13:02, Richard Earnshaw wrote:
>>>>
>>>>
>>>> On 26/08/2021 16:53, Christophe Lyon via Gcc-patches wrote:
>>>>> g++.dg/eh/arm-vfp-unwind.C uses an asm statement relying on
>>>>> double-precision FPU support, but does not make sure it is actually
>>>>> supported by the target.
>>>>> Check (__ARM_FP & 8) to ensure this.
>>>>>
>>>>> 2021-08-26 Christophe Lyon <christophe.lyon@foss.st.com>
>>>>>
>>>>> gcc/testsuite/
>>>>> * g++.dg/eh/arm-vfp-unwind.C: Check __ARM_FP.
>>>>> ---
>>>>> gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C | 2 +-
>>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
>>>>> b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
>>>>> index 62263c0c3b0..90d20081d78 100644
>>>>> --- a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
>>>>> +++ b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
>>>>> @@ -3,7 +3,7 @@
>>>>> /* Test to catch off-by-one errors in arm/pr-support.c. */
>>>>> -#if defined (__VFP_FP__) && !defined (__SOFTFP__)
>>>>> +#if defined (__VFP_FP__) && !defined (__SOFTFP__) && (__ARM_FP & 8)
>>>>> #include <iostream>
>>>>> #include <stdlib.h>
>>>>>
>>>>
>>>> Wouldn't it be better to have an alternate to the asm for the case
>>>> where we only have single-precision float? Something like (untested):
>>>>
>>>> static void donkey ()
>>>> {
>>>> #if __ARM_FP & 8
>>>> asm volatile ("fcpyd d9, %P0" : : "w" (1.2345) : "d9");
>>>> #else
>>>> asm volatile ("fcpys s18, %P0" : : "w" (1.2345f) : "s18");
>>>> #endif
>>>> throw 1;
>>>> }
>>>
>>>
>>> I tried similar things but they failed on some testing configurations.
>>>
>>> Let me try your version, I'll let you know if there is any fallout.
>>
>> Of course, the asm syntax should be converted to the new 'unified
>> syntax' form ie vmov.f{32,64}.
>>
>>
> The problem is that %P expects a double-precision register.
> It seems there's nothing to print a single-precision register, or rather %p
> (small p)
> rejects s18 too.
>
>
I said it was untested :)
You want something like
#if __ARM_FP & 8
asm volatile ("vmov.f64 d9, %P0" : : "w" (1.2345) : "d9");
#else
asm volatile ("vmov.f32 s18, %0" : : "t" (1.2345f) : "s18");
#endif
(there's no need for a modifier on the single-precision register name).
>
>> R.
>>
>>>
>>> Christophe
>>>
>>>
>>>>
>>>> R.
>>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] testsuite: Make sure double-precision is supported in g++.dg/eh/arm-vfp-unwind.C
2021-09-15 16:43 ` Richard Earnshaw
@ 2021-09-16 9:12 ` Christophe LYON
2021-09-16 9:19 ` Richard Earnshaw
0 siblings, 1 reply; 11+ messages in thread
From: Christophe LYON @ 2021-09-16 9:12 UTC (permalink / raw)
To: gcc-patches
On 15/09/2021 18:43, Richard Earnshaw via Gcc-patches wrote:
>
>
> On 15/09/2021 17:13, Christophe Lyon via Gcc-patches wrote:
>> On Wed, Sep 15, 2021 at 2:49 PM Richard Earnshaw via Gcc-patches <
>> gcc-patches@gcc.gnu.org> wrote:
>>
>>>
>>>
>>> On 15/09/2021 13:26, Christophe LYON via Gcc-patches wrote:
>>>>
>>>> On 15/09/2021 13:02, Richard Earnshaw wrote:
>>>>>
>>>>>
>>>>> On 26/08/2021 16:53, Christophe Lyon via Gcc-patches wrote:
>>>>>> g++.dg/eh/arm-vfp-unwind.C uses an asm statement relying on
>>>>>> double-precision FPU support, but does not make sure it is actually
>>>>>> supported by the target.
>>>>>> Check (__ARM_FP & 8) to ensure this.
>>>>>>
>>>>>> 2021-08-26 Christophe Lyon <christophe.lyon@foss.st.com>
>>>>>>
>>>>>> gcc/testsuite/
>>>>>> * g++.dg/eh/arm-vfp-unwind.C: Check __ARM_FP.
>>>>>> ---
>>>>>> gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C | 2 +-
>>>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>>
>>>>>> diff --git a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
>>>>>> b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
>>>>>> index 62263c0c3b0..90d20081d78 100644
>>>>>> --- a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
>>>>>> +++ b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
>>>>>> @@ -3,7 +3,7 @@
>>>>>> /* Test to catch off-by-one errors in arm/pr-support.c. */
>>>>>> -#if defined (__VFP_FP__) && !defined (__SOFTFP__)
>>>>>> +#if defined (__VFP_FP__) && !defined (__SOFTFP__) && (__ARM_FP & 8)
>>>>>> #include <iostream>
>>>>>> #include <stdlib.h>
>>>>>>
>>>>>
>>>>> Wouldn't it be better to have an alternate to the asm for the case
>>>>> where we only have single-precision float? Something like
>>>>> (untested):
>>>>>
>>>>> static void donkey ()
>>>>> {
>>>>> #if __ARM_FP & 8
>>>>> asm volatile ("fcpyd d9, %P0" : : "w" (1.2345) : "d9");
>>>>> #else
>>>>> asm volatile ("fcpys s18, %P0" : : "w" (1.2345f) : "s18");
>>>>> #endif
>>>>> throw 1;
>>>>> }
>>>>
>>>>
>>>> I tried similar things but they failed on some testing configurations.
>>>>
>>>> Let me try your version, I'll let you know if there is any fallout.
>>>
>>> Of course, the asm syntax should be converted to the new 'unified
>>> syntax' form ie vmov.f{32,64}.
>>>
>>>
>> The problem is that %P expects a double-precision register.
>> It seems there's nothing to print a single-precision register, or
>> rather %p
>> (small p)
>> rejects s18 too.
>>
>>
> I said it was untested :)
In fact, I now remember I tried similar things and everything failed,
hence my proposal at the start of this thread :-)
>
> You want something like
>
> #if __ARM_FP & 8
> asm volatile ("vmov.f64 d9, %P0" : : "w" (1.2345) : "d9");
> #else
> asm volatile ("vmov.f32 s18, %0" : : "t" (1.2345f) : "s18");
> #endif
>
> (there's no need for a modifier on the single-precision register name).
Ha! I missed the magic "t".
I confirm this fixes the issues that motivated my original patch.
Do you want me to commit it?
Thanks
Christophe
>
>>
>>> R.
>>>
>>>>
>>>> Christophe
>>>>
>>>>
>>>>>
>>>>> R.
>>>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] testsuite: Make sure double-precision is supported in g++.dg/eh/arm-vfp-unwind.C
2021-09-16 9:12 ` Christophe LYON
@ 2021-09-16 9:19 ` Richard Earnshaw
2021-09-16 9:35 ` Christophe Lyon
0 siblings, 1 reply; 11+ messages in thread
From: Richard Earnshaw @ 2021-09-16 9:19 UTC (permalink / raw)
To: Christophe LYON, gcc-patches
On 16/09/2021 10:12, Christophe LYON via Gcc-patches wrote:
>
> On 15/09/2021 18:43, Richard Earnshaw via Gcc-patches wrote:
>>
>>
>> On 15/09/2021 17:13, Christophe Lyon via Gcc-patches wrote:
>>> On Wed, Sep 15, 2021 at 2:49 PM Richard Earnshaw via Gcc-patches <
>>> gcc-patches@gcc.gnu.org> wrote:
>>>
>>>>
>>>>
>>>> On 15/09/2021 13:26, Christophe LYON via Gcc-patches wrote:
>>>>>
>>>>> On 15/09/2021 13:02, Richard Earnshaw wrote:
>>>>>>
>>>>>>
>>>>>> On 26/08/2021 16:53, Christophe Lyon via Gcc-patches wrote:
>>>>>>> g++.dg/eh/arm-vfp-unwind.C uses an asm statement relying on
>>>>>>> double-precision FPU support, but does not make sure it is actually
>>>>>>> supported by the target.
>>>>>>> Check (__ARM_FP & 8) to ensure this.
>>>>>>>
>>>>>>> 2021-08-26 Christophe Lyon <christophe.lyon@foss.st.com>
>>>>>>>
>>>>>>> gcc/testsuite/
>>>>>>> * g++.dg/eh/arm-vfp-unwind.C: Check __ARM_FP.
>>>>>>> ---
>>>>>>> gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C | 2 +-
>>>>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>>>
>>>>>>> diff --git a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
>>>>>>> b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
>>>>>>> index 62263c0c3b0..90d20081d78 100644
>>>>>>> --- a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
>>>>>>> +++ b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
>>>>>>> @@ -3,7 +3,7 @@
>>>>>>> /* Test to catch off-by-one errors in arm/pr-support.c. */
>>>>>>> -#if defined (__VFP_FP__) && !defined (__SOFTFP__)
>>>>>>> +#if defined (__VFP_FP__) && !defined (__SOFTFP__) && (__ARM_FP & 8)
>>>>>>> #include <iostream>
>>>>>>> #include <stdlib.h>
>>>>>>>
>>>>>>
>>>>>> Wouldn't it be better to have an alternate to the asm for the case
>>>>>> where we only have single-precision float? Something like
>>>>>> (untested):
>>>>>>
>>>>>> static void donkey ()
>>>>>> {
>>>>>> #if __ARM_FP & 8
>>>>>> asm volatile ("fcpyd d9, %P0" : : "w" (1.2345) : "d9");
>>>>>> #else
>>>>>> asm volatile ("fcpys s18, %P0" : : "w" (1.2345f) : "s18");
>>>>>> #endif
>>>>>> throw 1;
>>>>>> }
>>>>>
>>>>>
>>>>> I tried similar things but they failed on some testing configurations.
>>>>>
>>>>> Let me try your version, I'll let you know if there is any fallout.
>>>>
>>>> Of course, the asm syntax should be converted to the new 'unified
>>>> syntax' form ie vmov.f{32,64}.
>>>>
>>>>
>>> The problem is that %P expects a double-precision register.
>>> It seems there's nothing to print a single-precision register, or
>>> rather %p
>>> (small p)
>>> rejects s18 too.
>>>
>>>
>> I said it was untested :)
>
> In fact, I now remember I tried similar things and everything failed,
> hence my proposal at the start of this thread :-)
>
>
>>
>> You want something like
>>
>> #if __ARM_FP & 8
>> asm volatile ("vmov.f64 d9, %P0" : : "w" (1.2345) : "d9");
>> #else
>> asm volatile ("vmov.f32 s18, %0" : : "t" (1.2345f) : "s18");
>> #endif
>>
>> (there's no need for a modifier on the single-precision register name).
>
> Ha! I missed the magic "t".
>
> I confirm this fixes the issues that motivated my original patch.
>
> Do you want me to commit it?
Yes, please.
R.
>
>
> Thanks
>
> Christophe
>
>
>>
>>>
>>>> R.
>>>>
>>>>>
>>>>> Christophe
>>>>>
>>>>>
>>>>>>
>>>>>> R.
>>>>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] testsuite: Make sure double-precision is supported in g++.dg/eh/arm-vfp-unwind.C
2021-09-16 9:19 ` Richard Earnshaw
@ 2021-09-16 9:35 ` Christophe Lyon
0 siblings, 0 replies; 11+ messages in thread
From: Christophe Lyon @ 2021-09-16 9:35 UTC (permalink / raw)
To: Richard Earnshaw; +Cc: Christophe LYON, GCC Patches
On Thu, Sep 16, 2021 at 11:21 AM Richard Earnshaw via Gcc-patches <
gcc-patches@gcc.gnu.org> wrote:
>
>
> On 16/09/2021 10:12, Christophe LYON via Gcc-patches wrote:
> >
> > On 15/09/2021 18:43, Richard Earnshaw via Gcc-patches wrote:
> >>
> >>
> >> On 15/09/2021 17:13, Christophe Lyon via Gcc-patches wrote:
> >>> On Wed, Sep 15, 2021 at 2:49 PM Richard Earnshaw via Gcc-patches <
> >>> gcc-patches@gcc.gnu.org> wrote:
> >>>
> >>>>
> >>>>
> >>>> On 15/09/2021 13:26, Christophe LYON via Gcc-patches wrote:
> >>>>>
> >>>>> On 15/09/2021 13:02, Richard Earnshaw wrote:
> >>>>>>
> >>>>>>
> >>>>>> On 26/08/2021 16:53, Christophe Lyon via Gcc-patches wrote:
> >>>>>>> g++.dg/eh/arm-vfp-unwind.C uses an asm statement relying on
> >>>>>>> double-precision FPU support, but does not make sure it is actually
> >>>>>>> supported by the target.
> >>>>>>> Check (__ARM_FP & 8) to ensure this.
> >>>>>>>
> >>>>>>> 2021-08-26 Christophe Lyon <christophe.lyon@foss.st.com>
> >>>>>>>
> >>>>>>> gcc/testsuite/
> >>>>>>> * g++.dg/eh/arm-vfp-unwind.C: Check __ARM_FP.
> >>>>>>> ---
> >>>>>>> gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C | 2 +-
> >>>>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
> >>>>>>>
> >>>>>>> diff --git a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
> >>>>>>> b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
> >>>>>>> index 62263c0c3b0..90d20081d78 100644
> >>>>>>> --- a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
> >>>>>>> +++ b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
> >>>>>>> @@ -3,7 +3,7 @@
> >>>>>>> /* Test to catch off-by-one errors in arm/pr-support.c. */
> >>>>>>> -#if defined (__VFP_FP__) && !defined (__SOFTFP__)
> >>>>>>> +#if defined (__VFP_FP__) && !defined (__SOFTFP__) && (__ARM_FP &
> 8)
> >>>>>>> #include <iostream>
> >>>>>>> #include <stdlib.h>
> >>>>>>>
> >>>>>>
> >>>>>> Wouldn't it be better to have an alternate to the asm for the case
> >>>>>> where we only have single-precision float? Something like
> >>>>>> (untested):
> >>>>>>
> >>>>>> static void donkey ()
> >>>>>> {
> >>>>>> #if __ARM_FP & 8
> >>>>>> asm volatile ("fcpyd d9, %P0" : : "w" (1.2345) : "d9");
> >>>>>> #else
> >>>>>> asm volatile ("fcpys s18, %P0" : : "w" (1.2345f) : "s18");
> >>>>>> #endif
> >>>>>> throw 1;
> >>>>>> }
> >>>>>
> >>>>>
> >>>>> I tried similar things but they failed on some testing
> configurations.
> >>>>>
> >>>>> Let me try your version, I'll let you know if there is any fallout.
> >>>>
> >>>> Of course, the asm syntax should be converted to the new 'unified
> >>>> syntax' form ie vmov.f{32,64}.
> >>>>
> >>>>
> >>> The problem is that %P expects a double-precision register.
> >>> It seems there's nothing to print a single-precision register, or
> >>> rather %p
> >>> (small p)
> >>> rejects s18 too.
> >>>
> >>>
> >> I said it was untested :)
> >
> > In fact, I now remember I tried similar things and everything failed,
> > hence my proposal at the start of this thread :-)
> >
> >
> >>
> >> You want something like
> >>
> >> #if __ARM_FP & 8
> >> asm volatile ("vmov.f64 d9, %P0" : : "w" (1.2345) : "d9");
> >> #else
> >> asm volatile ("vmov.f32 s18, %0" : : "t" (1.2345f) : "s18");
> >> #endif
> >>
> >> (there's no need for a modifier on the single-precision register name).
> >
> > Ha! I missed the magic "t".
> >
> > I confirm this fixes the issues that motivated my original patch.
> >
> > Do you want me to commit it?
>
> Yes, please.
>
> Ack, done as r12-3571-g8e2c293f02745d47948fff19615064e4b34c1776
R.
>
> >
> >
> > Thanks
> >
> > Christophe
> >
> >
> >>
> >>>
> >>>> R.
> >>>>
> >>>>>
> >>>>> Christophe
> >>>>>
> >>>>>
> >>>>>>
> >>>>>> R.
> >>>>
>
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2021-09-16 9:35 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-26 15:53 [PATCH] testsuite: Make sure double-precision is supported in g++.dg/eh/arm-vfp-unwind.C Christophe Lyon
2021-09-06 7:23 ` Christophe LYON
2021-09-13 7:52 ` Christophe LYON
2021-09-15 11:02 ` Richard Earnshaw
2021-09-15 12:26 ` Christophe LYON
2021-09-15 12:49 ` Richard Earnshaw
2021-09-15 16:13 ` Christophe Lyon
2021-09-15 16:43 ` Richard Earnshaw
2021-09-16 9:12 ` Christophe LYON
2021-09-16 9:19 ` Richard Earnshaw
2021-09-16 9:35 ` Christophe Lyon
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).