* [PATCH] math: x86: Use prefix for FP_INIT_ROUNDMODE
@ 2022-09-01 13:02 Adhemerval Zanella
2022-09-01 16:42 ` H.J. Lu
2022-09-03 2:00 ` H.J. Lu
0 siblings, 2 replies; 5+ messages in thread
From: Adhemerval Zanella @ 2022-09-01 13:02 UTC (permalink / raw)
To: libc-alpha
Not all compilers support the inline asm prefix '%v' to emit the avx
instruction if AVX is enable. Use a prefix instead.
Checked on x86_64-linux-gnu and i686-linux-gnu.
---
sysdeps/x86/fpu/sfp-machine.h | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/sysdeps/x86/fpu/sfp-machine.h b/sysdeps/x86/fpu/sfp-machine.h
index 5892f4f5fe..006eebe257 100644
--- a/sysdeps/x86/fpu/sfp-machine.h
+++ b/sysdeps/x86/fpu/sfp-machine.h
@@ -39,9 +39,15 @@ typedef unsigned int UTItype __attribute__ ((mode (TI)));
# define FP_RND_MASK 0x6000
+# ifdef __AVX__
+# define AVX_INSN_PREFIX "v"
+# else
+# define AVX_INSN_PREFIX ""
+# endif
+
# define FP_INIT_ROUNDMODE \
do { \
- __asm__ __volatile__ ("%vstmxcsr\t%0" : "=m" (_fcw)); \
+ __asm__ __volatile__ (AVX_INSN_PREFIX "stmxcsr\t%0" : "=m" (_fcw)); \
} while (0)
#else
# define _FP_W_TYPE_SIZE 32
--
2.34.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] math: x86: Use prefix for FP_INIT_ROUNDMODE
2022-09-01 13:02 [PATCH] math: x86: Use prefix for FP_INIT_ROUNDMODE Adhemerval Zanella
@ 2022-09-01 16:42 ` H.J. Lu
2022-09-01 16:49 ` H.J. Lu
2022-09-03 2:00 ` H.J. Lu
1 sibling, 1 reply; 5+ messages in thread
From: H.J. Lu @ 2022-09-01 16:42 UTC (permalink / raw)
To: Adhemerval Zanella; +Cc: libc-alpha
On Thu, Sep 1, 2022 at 6:03 AM Adhemerval Zanella via Libc-alpha
<libc-alpha@sourceware.org> wrote:
>
> Not all compilers support the inline asm prefix '%v' to emit the avx
> instruction if AVX is enable. Use a prefix instead.
>
> Checked on x86_64-linux-gnu and i686-linux-gnu.
> ---
> sysdeps/x86/fpu/sfp-machine.h | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/sysdeps/x86/fpu/sfp-machine.h b/sysdeps/x86/fpu/sfp-machine.h
> index 5892f4f5fe..006eebe257 100644
> --- a/sysdeps/x86/fpu/sfp-machine.h
> +++ b/sysdeps/x86/fpu/sfp-machine.h
> @@ -39,9 +39,15 @@ typedef unsigned int UTItype __attribute__ ((mode (TI)));
>
> # define FP_RND_MASK 0x6000
>
> +# ifdef __AVX__
> +# define AVX_INSN_PREFIX "v"
> +# else
> +# define AVX_INSN_PREFIX ""
> +# endif
> +
> # define FP_INIT_ROUNDMODE \
> do { \
> - __asm__ __volatile__ ("%vstmxcsr\t%0" : "=m" (_fcw)); \
> + __asm__ __volatile__ (AVX_INSN_PREFIX "stmxcsr\t%0" : "=m" (_fcw)); \
> } while (0)
> #else
> # define _FP_W_TYPE_SIZE 32
> --
> 2.34.1
>
Should we use __builtin_ia32_stmxcsr instead?
--
H.J.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] math: x86: Use prefix for FP_INIT_ROUNDMODE
2022-09-01 16:42 ` H.J. Lu
@ 2022-09-01 16:49 ` H.J. Lu
2022-09-01 17:29 ` Adhemerval Zanella Netto
0 siblings, 1 reply; 5+ messages in thread
From: H.J. Lu @ 2022-09-01 16:49 UTC (permalink / raw)
To: Adhemerval Zanella; +Cc: libc-alpha
On Thu, Sep 1, 2022 at 9:42 AM H.J. Lu <hjl.tools@gmail.com> wrote:
>
> On Thu, Sep 1, 2022 at 6:03 AM Adhemerval Zanella via Libc-alpha
> <libc-alpha@sourceware.org> wrote:
> >
> > Not all compilers support the inline asm prefix '%v' to emit the avx
> > instruction if AVX is enable. Use a prefix instead.
> >
> > Checked on x86_64-linux-gnu and i686-linux-gnu.
> > ---
> > sysdeps/x86/fpu/sfp-machine.h | 8 +++++++-
> > 1 file changed, 7 insertions(+), 1 deletion(-)
> >
> > diff --git a/sysdeps/x86/fpu/sfp-machine.h b/sysdeps/x86/fpu/sfp-machine.h
> > index 5892f4f5fe..006eebe257 100644
> > --- a/sysdeps/x86/fpu/sfp-machine.h
> > +++ b/sysdeps/x86/fpu/sfp-machine.h
> > @@ -39,9 +39,15 @@ typedef unsigned int UTItype __attribute__ ((mode (TI)));
> >
> > # define FP_RND_MASK 0x6000
> >
> > +# ifdef __AVX__
> > +# define AVX_INSN_PREFIX "v"
> > +# else
> > +# define AVX_INSN_PREFIX ""
> > +# endif
> > +
> > # define FP_INIT_ROUNDMODE \
> > do { \
> > - __asm__ __volatile__ ("%vstmxcsr\t%0" : "=m" (_fcw)); \
> > + __asm__ __volatile__ (AVX_INSN_PREFIX "stmxcsr\t%0" : "=m" (_fcw)); \
> > } while (0)
> > #else
> > # define _FP_W_TYPE_SIZE 32
> > --
> > 2.34.1
> >
>
> Should we use __builtin_ia32_stmxcsr instead?
>
__builtin_ia32_stmxcsr requires extra instructions.
--
H.J.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] math: x86: Use prefix for FP_INIT_ROUNDMODE
2022-09-01 16:49 ` H.J. Lu
@ 2022-09-01 17:29 ` Adhemerval Zanella Netto
0 siblings, 0 replies; 5+ messages in thread
From: Adhemerval Zanella Netto @ 2022-09-01 17:29 UTC (permalink / raw)
To: H.J. Lu; +Cc: libc-alpha
On 01/09/22 13:49, H.J. Lu wrote:
> On Thu, Sep 1, 2022 at 9:42 AM H.J. Lu <hjl.tools@gmail.com> wrote:
>>
>> On Thu, Sep 1, 2022 at 6:03 AM Adhemerval Zanella via Libc-alpha
>> <libc-alpha@sourceware.org> wrote:
>>>
>>> Not all compilers support the inline asm prefix '%v' to emit the avx
>>> instruction if AVX is enable. Use a prefix instead.
>>>
>>> Checked on x86_64-linux-gnu and i686-linux-gnu.
>>> ---
>>> sysdeps/x86/fpu/sfp-machine.h | 8 +++++++-
>>> 1 file changed, 7 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/sysdeps/x86/fpu/sfp-machine.h b/sysdeps/x86/fpu/sfp-machine.h
>>> index 5892f4f5fe..006eebe257 100644
>>> --- a/sysdeps/x86/fpu/sfp-machine.h
>>> +++ b/sysdeps/x86/fpu/sfp-machine.h
>>> @@ -39,9 +39,15 @@ typedef unsigned int UTItype __attribute__ ((mode (TI)));
>>>
>>> # define FP_RND_MASK 0x6000
>>>
>>> +# ifdef __AVX__
>>> +# define AVX_INSN_PREFIX "v"
>>> +# else
>>> +# define AVX_INSN_PREFIX ""
>>> +# endif
>>> +
>>> # define FP_INIT_ROUNDMODE \
>>> do { \
>>> - __asm__ __volatile__ ("%vstmxcsr\t%0" : "=m" (_fcw)); \
>>> + __asm__ __volatile__ (AVX_INSN_PREFIX "stmxcsr\t%0" : "=m" (_fcw)); \
>>> } while (0)
>>> #else
>>> # define _FP_W_TYPE_SIZE 32
>>> --
>>> 2.34.1
>>>
>>
>> Should we use __builtin_ia32_stmxcsr instead?
>>
>
> __builtin_ia32_stmxcsr requires extra instructions.
>
I don't have a strong option, although in theory builtins would play nice in
general code generation.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] math: x86: Use prefix for FP_INIT_ROUNDMODE
2022-09-01 13:02 [PATCH] math: x86: Use prefix for FP_INIT_ROUNDMODE Adhemerval Zanella
2022-09-01 16:42 ` H.J. Lu
@ 2022-09-03 2:00 ` H.J. Lu
1 sibling, 0 replies; 5+ messages in thread
From: H.J. Lu @ 2022-09-03 2:00 UTC (permalink / raw)
To: Adhemerval Zanella; +Cc: GNU C Library
On Thu, Sep 1, 2022 at 6:03 AM Adhemerval Zanella via Libc-alpha
<libc-alpha@sourceware.org> wrote:
>
> Not all compilers support the inline asm prefix '%v' to emit the avx
> instruction if AVX is enable. Use a prefix instead.
>
> Checked on x86_64-linux-gnu and i686-linux-gnu.
> ---
> sysdeps/x86/fpu/sfp-machine.h | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/sysdeps/x86/fpu/sfp-machine.h b/sysdeps/x86/fpu/sfp-machine.h
> index 5892f4f5fe..006eebe257 100644
> --- a/sysdeps/x86/fpu/sfp-machine.h
> +++ b/sysdeps/x86/fpu/sfp-machine.h
> @@ -39,9 +39,15 @@ typedef unsigned int UTItype __attribute__ ((mode (TI)));
>
> # define FP_RND_MASK 0x6000
>
> +# ifdef __AVX__
> +# define AVX_INSN_PREFIX "v"
> +# else
> +# define AVX_INSN_PREFIX ""
> +# endif
> +
> # define FP_INIT_ROUNDMODE \
> do { \
> - __asm__ __volatile__ ("%vstmxcsr\t%0" : "=m" (_fcw)); \
> + __asm__ __volatile__ (AVX_INSN_PREFIX "stmxcsr\t%0" : "=m" (_fcw)); \
> } while (0)
> #else
> # define _FP_W_TYPE_SIZE 32
> --
> 2.34.1
>
LGTM.
Thanks.
--
H.J.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2022-09-03 2:01 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-01 13:02 [PATCH] math: x86: Use prefix for FP_INIT_ROUNDMODE Adhemerval Zanella
2022-09-01 16:42 ` H.J. Lu
2022-09-01 16:49 ` H.J. Lu
2022-09-01 17:29 ` Adhemerval Zanella Netto
2022-09-03 2:00 ` H.J. Lu
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).