On Wed, Jul 3, 2024, 9:37 PM Richard Biener <richard.guent...@gmail.com>
wrote:

> On Wed, Jul 3, 2024 at 9:25 AM liuhongt <hongtao....@intel.com> wrote:
> >
> > The patch can avoid SIGILL on non-AVX512 machine due to kmovd is
> > generated in dynamic check.
> >
> > Committed as an obvious fix.
>
> Hmm, now all avx512 tests SIGILL when testing with -m32:
>
> Dump of assembler code for function __get_cpuid_count:
> => 0x08049500 <+0>:     kmovd  %eax,%k2
>    0x08049504 <+4>:     kmovd  %edx,%k1
>    0x08049508 <+8>:     pushf
>    0x08049509 <+9>:     pushf
>    0x0804950a <+10>:    pop    %eax
>    0x0804950b <+11>:    mov    %eax,%edx
>
> looks like __get_cpuid_count is no longer inlined but AVX512 is in
> effect for it.
>
> Maybe use #pragma GCC target around the includes instead?
>

Can the built-in cpu supports be used?


> > gcc/testsuite/ChangeLog:
> >
> >         PR target/115748
> >         * gcc.target/i386/avx512-check.h: Move runtime check into a
> >         separate function and guard it with target ("no-avx").
> > ---
> >  gcc/testsuite/gcc.target/i386/avx512-check.h | 14 +++++++++++++-
> >  1 file changed, 13 insertions(+), 1 deletion(-)
> >
> > diff --git a/gcc/testsuite/gcc.target/i386/avx512-check.h
> b/gcc/testsuite/gcc.target/i386/avx512-check.h
> > index 0ad9064f637..71858a33dac 100644
> > --- a/gcc/testsuite/gcc.target/i386/avx512-check.h
> > +++ b/gcc/testsuite/gcc.target/i386/avx512-check.h
> > @@ -34,8 +34,9 @@ check_osxsave (void)
> >    return (ecx & bit_OSXSAVE) != 0;
> >  }
> >
> > +__attribute__((noipa,target("no-avx")))
> >  int
> > -main ()
> > +avx512_runtime_support_p ()
> >  {
> >    unsigned int eax, ebx, ecx, edx;
> >
> > @@ -100,6 +101,17 @@ main ()
> >        && (edx & bit_AVX512VP2INTERSECT)
> >  #endif
> >        && avx512f_os_support ())
> > +    {
> > +      return 1;
> > +    }
> > +
> > +  return 0;
> > +}
> > +
> > +int
> > +main ()
> > +{
> > +  if (avx512_runtime_support_p ())
> >      {
> >        DO_TEST ();
> >  #ifdef DEBUG
> > --
> > 2.31.1
> >
>

Reply via email to