From 583a9919adb8ea6b52d9e758339afaa0034b5d3f Mon Sep 17 00:00:00 2001 From: Kirill Yukhin Date: Mon, 17 Feb 2014 11:26:08 +0000 Subject: [PATCH] avx512fintrin.h (_mm512_maskz_permutexvar_epi64): Swap arguments order in builtin. gcc/ * config/i386/avx512fintrin.h (_mm512_maskz_permutexvar_epi64): Swap arguments order in builtin. (_mm512_permutexvar_epi64): Ditto. (_mm512_mask_permutexvar_epi64): Ditto (_mm512_maskz_permutexvar_epi32): Ditto (_mm512_permutexvar_epi32): Ditto (_mm512_mask_permutexvar_epi32): Ditto gcc/testsuite/ * gcc.target/i386/avx512f-vpermd-2.c: Fix reference calculations. * gcc.target/i386/avx512f-vpermpd-2.c: Ditto. * gcc.target/i386/avx512f-vpermps-2.c: Ditto. * gcc.target/i386/avx512f-vpermq-var-2.c: Ditto. Co-Authored-By: Ilya Tocar From-SVN: r207821 --- gcc/ChangeLog | 11 +++++++++ gcc/config/i386/avx512fintrin.h | 24 +++++++++---------- gcc/testsuite/ChangeLog | 8 +++++++ .../gcc.target/i386/avx512f-vpermd-2.c | 2 +- .../gcc.target/i386/avx512f-vpermpd-2.c | 4 ++-- .../gcc.target/i386/avx512f-vpermps-2.c | 4 ++-- .../gcc.target/i386/avx512f-vpermq-var-2.c | 2 +- 7 files changed, 37 insertions(+), 18 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a448f37cb72..f05956d62ab 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2014-02-17 Kirill Yukhin + Ilya Tocar + + * config/i386/avx512fintrin.h (_mm512_maskz_permutexvar_epi64): Swap + arguments order in builtin. + (_mm512_permutexvar_epi64): Ditto. + (_mm512_mask_permutexvar_epi64): Ditto + (_mm512_maskz_permutexvar_epi32): Ditto + (_mm512_permutexvar_epi32): Ditto + (_mm512_mask_permutexvar_epi32): Ditto + 2014-02-16 Bill Schmidt * config/rs6000/altivec.md (p8_vmrgew): Handle little endian diff --git a/gcc/config/i386/avx512fintrin.h b/gcc/config/i386/avx512fintrin.h index d53a40d17cb..b3a4f3a41ff 100644 --- a/gcc/config/i386/avx512fintrin.h +++ b/gcc/config/i386/avx512fintrin.h @@ -6148,8 +6148,8 @@ extern __inline __m512i __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_maskz_permutexvar_epi64 (__mmask8 __M, __m512i __X, __m512i __Y) { - return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __X, - (__v8di) __Y, + return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y, + (__v8di) __X, (__v8di) _mm512_setzero_si512 (), __M); @@ -6159,8 +6159,8 @@ extern __inline __m512i __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_permutexvar_epi64 (__m512i __X, __m512i __Y) { - return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __X, - (__v8di) __Y, + return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y, + (__v8di) __X, (__v8di) _mm512_setzero_si512 (), (__mmask8) -1); @@ -6171,8 +6171,8 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_mask_permutexvar_epi64 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y) { - return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __X, - (__v8di) __Y, + return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y, + (__v8di) __X, (__v8di) __W, __M); } @@ -6181,8 +6181,8 @@ extern __inline __m512i __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_maskz_permutexvar_epi32 (__mmask16 __M, __m512i __X, __m512i __Y) { - return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __X, - (__v16si) __Y, + return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y, + (__v16si) __X, (__v16si) _mm512_setzero_si512 (), __M); @@ -6192,8 +6192,8 @@ extern __inline __m512i __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_permutexvar_epi32 (__m512i __X, __m512i __Y) { - return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __X, - (__v16si) __Y, + return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y, + (__v16si) __X, (__v16si) _mm512_setzero_si512 (), (__mmask16) -1); @@ -6204,8 +6204,8 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_mask_permutexvar_epi32 (__m512i __W, __mmask16 __M, __m512i __X, __m512i __Y) { - return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __X, - (__v16si) __Y, + return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y, + (__v16si) __X, (__v16si) __W, __M); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 442d6936a29..a4d88770747 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2014-02-17 Kirill Yukhin + Ilya Tocar + + * gcc.target/i386/avx512f-vpermd-2.c: Fix reference calculations. + * gcc.target/i386/avx512f-vpermpd-2.c: Ditto. + * gcc.target/i386/avx512f-vpermps-2.c: Ditto. + * gcc.target/i386/avx512f-vpermq-var-2.c: Ditto. + 2014-02-16 Richard Sandiford * lib/target-supports.exp diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermd-2.c index db5fd09e7d3..1c494e3d1d5 100644 --- a/gcc/testsuite/gcc.target/i386/avx512f-vpermd-2.c +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermd-2.c @@ -11,7 +11,7 @@ #include "avx512f-mask-type.h" static void -CALC (int *src1, int *mask, int *dst) +CALC (int *mask, int *src1, int *dst) { int i; diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermpd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermpd-2.c index 3d168beba58..00d171b790d 100644 --- a/gcc/testsuite/gcc.target/i386/avx512f-vpermpd-2.c +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermpd-2.c @@ -10,7 +10,7 @@ #include "avx512f-mask-type.h" static void -CALC (double *s1, long long *mask, double *r) +CALC (long long *mask, double *s1, double *r) { int i; @@ -41,7 +41,7 @@ TEST (void) res2.x = INTRINSIC (_mask_permutexvar_pd) (res2.x, mask, src2.x, src1.x); res3.x = INTRINSIC (_maskz_permutexvar_pd) (mask, src2.x, src1.x); - CALC (src1.a, src2.a, res_ref); + CALC (src2.a, src1.a, res_ref); if (UNION_CHECK (AVX512F_LEN, d) (res1, res_ref)) abort (); diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermps-2.c index 618294868bc..53081c48e9c 100644 --- a/gcc/testsuite/gcc.target/i386/avx512f-vpermps-2.c +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermps-2.c @@ -10,7 +10,7 @@ #include "avx512f-mask-type.h" static void -CALC (float *s1, int *mask, float *r) +CALC (int *mask, float *s1, float *r) { int i; @@ -41,7 +41,7 @@ TEST (void) res2.x = INTRINSIC (_mask_permutexvar_ps) (res2.x, mask, src2.x, src1.x); res3.x = INTRINSIC (_maskz_permutexvar_ps) (mask, src2.x, src1.x); - CALC (src1.a, src2.a, res_ref); + CALC (src2.a, src1.a, res_ref); if (UNION_CHECK (AVX512F_LEN, ) (res1, res_ref)) abort (); diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermq-var-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermq-var-2.c index 2733e175b56..ff330a571b7 100644 --- a/gcc/testsuite/gcc.target/i386/avx512f-vpermq-var-2.c +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermq-var-2.c @@ -11,7 +11,7 @@ #include "avx512f-mask-type.h" static void -CALC (long long *src1, long long *mask, long long *dst) +CALC (long long *mask, long long *src1, long long *dst) { int i; -- 2.30.2