Commit 583a9919 by Kirill Yukhin Committed by Kirill Yukhin

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 <ilya.tocar@intel.com>

From-SVN: r207821
parent 6c01e96e
2014-02-17 Kirill Yukhin <kirill.yukhin@intel.com>
Ilya Tocar <ilya.tocar@intel.com>
* 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 <wschmidt@linux.vnet.ibm.com> 2014-02-16 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* config/rs6000/altivec.md (p8_vmrgew): Handle little endian * config/rs6000/altivec.md (p8_vmrgew): Handle little endian
......
...@@ -6148,8 +6148,8 @@ extern __inline __m512i ...@@ -6148,8 +6148,8 @@ extern __inline __m512i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm512_maskz_permutexvar_epi64 (__mmask8 __M, __m512i __X, __m512i __Y) _mm512_maskz_permutexvar_epi64 (__mmask8 __M, __m512i __X, __m512i __Y)
{ {
return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __X, return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
(__v8di) __Y, (__v8di) __X,
(__v8di) (__v8di)
_mm512_setzero_si512 (), _mm512_setzero_si512 (),
__M); __M);
...@@ -6159,8 +6159,8 @@ extern __inline __m512i ...@@ -6159,8 +6159,8 @@ extern __inline __m512i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm512_permutexvar_epi64 (__m512i __X, __m512i __Y) _mm512_permutexvar_epi64 (__m512i __X, __m512i __Y)
{ {
return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __X, return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
(__v8di) __Y, (__v8di) __X,
(__v8di) (__v8di)
_mm512_setzero_si512 (), _mm512_setzero_si512 (),
(__mmask8) -1); (__mmask8) -1);
...@@ -6171,8 +6171,8 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ...@@ -6171,8 +6171,8 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm512_mask_permutexvar_epi64 (__m512i __W, __mmask8 __M, __m512i __X, _mm512_mask_permutexvar_epi64 (__m512i __W, __mmask8 __M, __m512i __X,
__m512i __Y) __m512i __Y)
{ {
return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __X, return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
(__v8di) __Y, (__v8di) __X,
(__v8di) __W, (__v8di) __W,
__M); __M);
} }
...@@ -6181,8 +6181,8 @@ extern __inline __m512i ...@@ -6181,8 +6181,8 @@ extern __inline __m512i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm512_maskz_permutexvar_epi32 (__mmask16 __M, __m512i __X, __m512i __Y) _mm512_maskz_permutexvar_epi32 (__mmask16 __M, __m512i __X, __m512i __Y)
{ {
return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __X, return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
(__v16si) __Y, (__v16si) __X,
(__v16si) (__v16si)
_mm512_setzero_si512 (), _mm512_setzero_si512 (),
__M); __M);
...@@ -6192,8 +6192,8 @@ extern __inline __m512i ...@@ -6192,8 +6192,8 @@ extern __inline __m512i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm512_permutexvar_epi32 (__m512i __X, __m512i __Y) _mm512_permutexvar_epi32 (__m512i __X, __m512i __Y)
{ {
return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __X, return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
(__v16si) __Y, (__v16si) __X,
(__v16si) (__v16si)
_mm512_setzero_si512 (), _mm512_setzero_si512 (),
(__mmask16) -1); (__mmask16) -1);
...@@ -6204,8 +6204,8 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ...@@ -6204,8 +6204,8 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm512_mask_permutexvar_epi32 (__m512i __W, __mmask16 __M, __m512i __X, _mm512_mask_permutexvar_epi32 (__m512i __W, __mmask16 __M, __m512i __X,
__m512i __Y) __m512i __Y)
{ {
return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __X, return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
(__v16si) __Y, (__v16si) __X,
(__v16si) __W, (__v16si) __W,
__M); __M);
} }
......
2014-02-17 Kirill Yukhin <kirill.yukhin@intel.com>
Ilya Tocar <ilya.tocar@intel.com>
* 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 <rdsandiford@googlemail.com> 2014-02-16 Richard Sandiford <rdsandiford@googlemail.com>
* lib/target-supports.exp * lib/target-supports.exp
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
#include "avx512f-mask-type.h" #include "avx512f-mask-type.h"
static void static void
CALC (int *src1, int *mask, int *dst) CALC (int *mask, int *src1, int *dst)
{ {
int i; int i;
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
#include "avx512f-mask-type.h" #include "avx512f-mask-type.h"
static void static void
CALC (double *s1, long long *mask, double *r) CALC (long long *mask, double *s1, double *r)
{ {
int i; int i;
...@@ -41,7 +41,7 @@ TEST (void) ...@@ -41,7 +41,7 @@ TEST (void)
res2.x = INTRINSIC (_mask_permutexvar_pd) (res2.x, mask, src2.x, src1.x); res2.x = INTRINSIC (_mask_permutexvar_pd) (res2.x, mask, src2.x, src1.x);
res3.x = INTRINSIC (_maskz_permutexvar_pd) (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)) if (UNION_CHECK (AVX512F_LEN, d) (res1, res_ref))
abort (); abort ();
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
#include "avx512f-mask-type.h" #include "avx512f-mask-type.h"
static void static void
CALC (float *s1, int *mask, float *r) CALC (int *mask, float *s1, float *r)
{ {
int i; int i;
...@@ -41,7 +41,7 @@ TEST (void) ...@@ -41,7 +41,7 @@ TEST (void)
res2.x = INTRINSIC (_mask_permutexvar_ps) (res2.x, mask, src2.x, src1.x); res2.x = INTRINSIC (_mask_permutexvar_ps) (res2.x, mask, src2.x, src1.x);
res3.x = INTRINSIC (_maskz_permutexvar_ps) (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)) if (UNION_CHECK (AVX512F_LEN, ) (res1, res_ref))
abort (); abort ();
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
#include "avx512f-mask-type.h" #include "avx512f-mask-type.h"
static void static void
CALC (long long *src1, long long *mask, long long *dst) CALC (long long *mask, long long *src1, long long *dst)
{ {
int i; int i;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment