Message ID | 20180929134920.GA22163@gmail.com |
---|---|
State | New |
Headers | show |
Series | i386: Replace __m512 with __m512d in _mm512_abs_pd | expand |
On Sat, Sep 29, 2018 at 3:49 PM H.J. Lu <hjl.tools@gmail.com> wrote: > > _mm512_abs_pd takes __m512d, not __m512. > > OK for trunk and release branches? > > Thanks. > > > H.J. > -- > gcc/ > > PR target/87467 > * config/i386/avx512fintrin.h (_mm512_abs_pd): Replace __m512 > with __m512d. > > gcc/testsuite/ > > * gcc.target/i386/pr87467.c: New test. OK everywhere. Thanks, Uros. > --- > gcc/config/i386/avx512fintrin.h | 2 +- > gcc/testsuite/gcc.target/i386/pr87467.c | 11 +++++++++++ > 2 files changed, 12 insertions(+), 1 deletion(-) > create mode 100644 gcc/testsuite/gcc.target/i386/pr87467.c > > diff --git a/gcc/config/i386/avx512fintrin.h b/gcc/config/i386/avx512fintrin.h > index 80525f9fb4d..599701e10b3 100644 > --- a/gcc/config/i386/avx512fintrin.h > +++ b/gcc/config/i386/avx512fintrin.h > @@ -7798,7 +7798,7 @@ _mm512_mask_abs_ps (__m512 __W, __mmask16 __U, __m512 __A) > > extern __inline __m512d > __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) > -_mm512_abs_pd (__m512 __A) > +_mm512_abs_pd (__m512d __A) > { > return (__m512d) _mm512_and_epi64 ((__m512i) __A, > _mm512_set1_epi64 (0x7fffffffffffffffLL)); > diff --git a/gcc/testsuite/gcc.target/i386/pr87467.c b/gcc/testsuite/gcc.target/i386/pr87467.c > new file mode 100644 > index 00000000000..6a298d1746e > --- /dev/null > +++ b/gcc/testsuite/gcc.target/i386/pr87467.c > @@ -0,0 +1,11 @@ > +/* { dg-do compile } */ > +/* { dg-options "-mavx512f -O2" } */ > +/* { dg-final { scan-assembler-times "vpandq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ > + > +#include <immintrin.h> > + > +__m512d > +avx512f_test (__m512d x) > +{ > + return _mm512_abs_pd (x); > +} > -- > 2.17.1 >
diff --git a/gcc/config/i386/avx512fintrin.h b/gcc/config/i386/avx512fintrin.h index 80525f9fb4d..599701e10b3 100644 --- a/gcc/config/i386/avx512fintrin.h +++ b/gcc/config/i386/avx512fintrin.h @@ -7798,7 +7798,7 @@ _mm512_mask_abs_ps (__m512 __W, __mmask16 __U, __m512 __A) extern __inline __m512d __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_abs_pd (__m512 __A) +_mm512_abs_pd (__m512d __A) { return (__m512d) _mm512_and_epi64 ((__m512i) __A, _mm512_set1_epi64 (0x7fffffffffffffffLL)); diff --git a/gcc/testsuite/gcc.target/i386/pr87467.c b/gcc/testsuite/gcc.target/i386/pr87467.c new file mode 100644 index 00000000000..6a298d1746e --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr87467.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpandq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ + +#include <immintrin.h> + +__m512d +avx512f_test (__m512d x) +{ + return _mm512_abs_pd (x); +}