public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [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).