igorb created this revision. igorb added reviewers: m_zuckerman, AsafBadouh, delena. igorb added a subscriber: cfe-commits. igorb set the repository for this revision to rL LLVM.
[Clang][AVX512][intrinsics] Fix vperm{w|d|q|ps|pd} intrinsics. Index is first argument to buildin function. Repository: rL LLVM http://reviews.llvm.org/D20321 Files: lib/Headers/avx512bwintrin.h lib/Headers/avx512fintrin.h lib/Headers/avx512vlbwintrin.h lib/Headers/avx512vlintrin.h
Index: lib/Headers/avx512vlintrin.h =================================================================== --- lib/Headers/avx512vlintrin.h +++ lib/Headers/avx512vlintrin.h @@ -9100,111 +9100,111 @@ static __inline__ __m256d __DEFAULT_FN_ATTRS _mm256_permutexvar_pd (__m256i __X, __m256d __Y) { - return (__m256d) __builtin_ia32_permvardf256_mask ((__v4df) __Y, - (__v4di) __X, + return (__m256d) __builtin_ia32_permvardf256_mask ((__v4df) __X /* idx */, + (__v4di) __Y, (__v4df) _mm256_undefined_si256 (), (__mmask8) -1); } static __inline__ __m256d __DEFAULT_FN_ATTRS _mm256_mask_permutexvar_pd (__m256d __W, __mmask8 __U, __m256i __X, __m256d __Y) { - return (__m256d) __builtin_ia32_permvardf256_mask ((__v4df) __Y, - (__v4di) __X, + return (__m256d) __builtin_ia32_permvardf256_mask ((__v4df) __X /* idx */, + (__v4di) __Y, (__v4df) __W, (__mmask8) __U); } static __inline__ __m256d __DEFAULT_FN_ATTRS _mm256_maskz_permutexvar_pd (__mmask8 __U, __m256i __X, __m256d __Y) { - return (__m256d) __builtin_ia32_permvardf256_mask ((__v4df) __Y, - (__v4di) __X, + return (__m256d) __builtin_ia32_permvardf256_mask ((__v4df) __X /* idx */, + (__v4di) __Y, (__v4df) _mm256_setzero_pd (), (__mmask8) __U); } static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_maskz_permutexvar_epi64 (__mmask8 __M, __m256i __X, __m256i __Y) { - return (__m256i) __builtin_ia32_permvardi256_mask ((__v4di) __Y, - (__v4di) __X, + return (__m256i) __builtin_ia32_permvardi256_mask ((__v4di) __X /* idx */, + (__v4di) __Y, (__v4di) _mm256_setzero_si256 (), (__mmask8) __M); } static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_permutexvar_epi64 (__mmask8 __M, __m256i __X, __m256i __Y) { - return (__m256i) __builtin_ia32_permvardi256_mask ((__v4di) __Y, - (__v4di) __X, + return (__m256i) __builtin_ia32_permvardi256_mask ((__v4di) __X /* idx */, + (__v4di) __Y, (__v4di) _mm256_undefined_si256 (), (__mmask8) -1); } static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_mask_permutexvar_epi64 (__m256i __W, __mmask8 __M, __m256i __X, __m256i __Y) { - return (__m256i) __builtin_ia32_permvardi256_mask ((__v4di) __Y, - (__v4di) __X, + return (__m256i) __builtin_ia32_permvardi256_mask ((__v4di) __X /* idx */, + (__v4di) __Y, (__v4di) __W, __M); } static __inline__ __m256 __DEFAULT_FN_ATTRS _mm256_mask_permutexvar_ps (__m256 __W, __mmask8 __U, __m256i __X, __m256 __Y) { - return (__m256) __builtin_ia32_permvarsf256_mask ((__v8sf) __Y, - (__v8si) __X, + return (__m256) __builtin_ia32_permvarsf256_mask ((__v8sf) __X /* idx */, + (__v8si) __Y, (__v8sf) __W, (__mmask8) __U); } static __inline__ __m256 __DEFAULT_FN_ATTRS _mm256_maskz_permutexvar_ps (__mmask8 __U, __m256i __X, __m256 __Y) { - return (__m256) __builtin_ia32_permvarsf256_mask ((__v8sf) __Y, - (__v8si) __X, + return (__m256) __builtin_ia32_permvarsf256_mask ((__v8sf) __X /* idx */, + (__v8si) __Y, (__v8sf) _mm256_setzero_ps (), (__mmask8) __U); } static __inline__ __m256 __DEFAULT_FN_ATTRS _mm256_permutexvar_ps (__m256i __X, __m256 __Y) { - return (__m256) __builtin_ia32_permvarsf256_mask ((__v8sf) __Y, - (__v8si) __X, + return (__m256) __builtin_ia32_permvarsf256_mask ((__v8sf) __X /* idx */, + (__v8si) __Y, (__v8sf) _mm256_undefined_si256 (), (__mmask8) -1); } static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_maskz_permutexvar_epi32 (__mmask8 __M, __m256i __X, __m256i __Y) { - return (__m256i) __builtin_ia32_permvarsi256_mask ((__v8si) __Y, - (__v8si) __X, + return (__m256i) __builtin_ia32_permvarsi256_mask ((__v8si) __X /* idx */, + (__v8si) __Y, (__v8si) _mm256_setzero_si256 (), __M); } static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_mask_permutexvar_epi32 (__m256i __W, __mmask8 __M, __m256i __X, __m256i __Y) { - return (__m256i) __builtin_ia32_permvarsi256_mask ((__v8si) __Y, - (__v8si) __X, + return (__m256i) __builtin_ia32_permvarsi256_mask ((__v8si) __X /* idx */, + (__v8si) __Y, (__v8si) __W, (__mmask8) __M); } static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_permutexvar_epi32 (__m256i __X, __m256i __Y) { - return (__m256i) __builtin_ia32_permvarsi256_mask ((__v8si) __Y, - (__v8si) __X, + return (__m256i) __builtin_ia32_permvarsi256_mask ((__v8si) __X /* idx */, + (__v8si) __Y, (__v8si) _mm256_undefined_si256(), (__mmask8) -1); } Index: lib/Headers/avx512vlbwintrin.h =================================================================== --- lib/Headers/avx512vlbwintrin.h +++ lib/Headers/avx512vlbwintrin.h @@ -3316,56 +3316,56 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_permutexvar_epi16 (__m128i __A, __m128i __B) { - return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B, - (__v8hi) __A, + return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __A /* idx */, + (__v8hi) __B, (__v8hi) _mm_undefined_si128 (), (__mmask8) -1); } static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_maskz_permutexvar_epi16 (__mmask8 __M, __m128i __A, __m128i __B) { - return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B, - (__v8hi) __A, + return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __A /* idx */, + (__v8hi) __B, (__v8hi) _mm_setzero_si128 (), (__mmask8) __M); } static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_mask_permutexvar_epi16 (__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) { - return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B, - (__v8hi) __A, + return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __A /* idx */, + (__v8hi) __B, (__v8hi) __W, (__mmask8) __M); } static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_permutexvar_epi16 (__m256i __A, __m256i __B) { - return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B, - (__v16hi) __A, + return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __A /* idx */, + (__v16hi) __B, (__v16hi) _mm256_undefined_si256 (), (__mmask16) -1); } static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_maskz_permutexvar_epi16 (__mmask16 __M, __m256i __A, __m256i __B) { - return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B, - (__v16hi) __A, + return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __A/* idx */, + (__v16hi) __B, (__v16hi) _mm256_setzero_si256 (), (__mmask16) __M); } static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_mask_permutexvar_epi16 (__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) { - return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B, - (__v16hi) __A, + return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __A /* idx */, + (__v16hi) __B, (__v16hi) __W, (__mmask16) __M); } Index: lib/Headers/avx512fintrin.h =================================================================== --- lib/Headers/avx512fintrin.h +++ lib/Headers/avx512fintrin.h @@ -8385,109 +8385,109 @@ static __inline__ __m512d __DEFAULT_FN_ATTRS _mm512_permutexvar_pd (__m512i __X, __m512d __Y) { - return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y, - (__v8di) __X, + return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __X /* idx */, + (__v8di) __Y, (__v8df) _mm512_undefined_pd (), (__mmask8) -1); } static __inline__ __m512d __DEFAULT_FN_ATTRS _mm512_mask_permutexvar_pd (__m512d __W, __mmask8 __U, __m512i __X, __m512d __Y) { - return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y, - (__v8di) __X, + return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __X /* idx */, + (__v8di) __Y, (__v8df) __W, (__mmask8) __U); } static __inline__ __m512d __DEFAULT_FN_ATTRS _mm512_maskz_permutexvar_pd (__mmask8 __U, __m512i __X, __m512d __Y) { - return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y, - (__v8di) __X, + return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __X /* idx */, + (__v8di) __Y, (__v8df) _mm512_setzero_pd (), (__mmask8) __U); } static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_permutexvar_epi64 (__mmask8 __M, __m512i __X, __m512i __Y) { - return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y, - (__v8di) __X, + return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __X /* idx */, + (__v8di) __Y, (__v8di) _mm512_setzero_si512 (), __M); } static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_permutexvar_epi64 (__m512i __X, __m512i __Y) { - return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y, - (__v8di) __X, + return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __X /* idx */, + (__v8di) __Y, (__v8di) _mm512_undefined_epi32 (), (__mmask8) -1); } static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_mask_permutexvar_epi64 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y) { - return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y, - (__v8di) __X, + return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __X /* idx */, + (__v8di) __Y, (__v8di) __W, __M); } static __inline__ __m512 __DEFAULT_FN_ATTRS _mm512_permutexvar_ps (__m512i __X, __m512 __Y) { - return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y, - (__v16si) __X, + return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __X /* idx */, + (__v16si) __Y, (__v16sf) _mm512_undefined_ps (), (__mmask16) -1); } static __inline__ __m512 __DEFAULT_FN_ATTRS _mm512_mask_permutexvar_ps (__m512 __W, __mmask16 __U, __m512i __X, __m512 __Y) { - return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y, - (__v16si) __X, + return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __X /* idx */, + (__v16si) __Y, (__v16sf) __W, (__mmask16) __U); } static __inline__ __m512 __DEFAULT_FN_ATTRS _mm512_maskz_permutexvar_ps (__mmask16 __U, __m512i __X, __m512 __Y) { - return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y, - (__v16si) __X, + return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __X /* idx */, + (__v16si) __Y, (__v16sf) _mm512_setzero_ps (), (__mmask16) __U); } static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_permutexvar_epi32 (__mmask16 __M, __m512i __X, __m512i __Y) { - return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y, - (__v16si) __X, + return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __X /* idx */, + (__v16si) __Y, (__v16si) _mm512_setzero_si512 (), __M); } static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_permutexvar_epi32 (__m512i __X, __m512i __Y) { - return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y, - (__v16si) __X, + return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __X /* idx */, + (__v16si) __Y, (__v16si) _mm512_undefined_epi32 (), (__mmask16) -1); } static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_mask_permutexvar_epi32 (__m512i __W, __mmask16 __M, __m512i __X, __m512i __Y) { - return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y, - (__v16si) __X, + return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __X /* idx */, + (__v16si) __Y, (__v16si) __W, __M); } Index: lib/Headers/avx512bwintrin.h =================================================================== --- lib/Headers/avx512bwintrin.h +++ lib/Headers/avx512bwintrin.h @@ -2148,28 +2148,28 @@ static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_permutexvar_epi16 (__m512i __A, __m512i __B) { - return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B, - (__v32hi) __A, + return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __A /* idx */, + (__v32hi) __B, (__v32hi) _mm512_undefined_epi32 (), (__mmask32) -1); } static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_permutexvar_epi16 (__mmask32 __M, __m512i __A, __m512i __B) { - return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B, - (__v32hi) __A, + return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __A /* idx */, + (__v32hi) __B, (__v32hi) _mm512_setzero_hi(), (__mmask32) __M); } static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_mask_permutexvar_epi16 (__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) { - return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B, - (__v32hi) __A, + return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __A /* idx */, + (__v32hi) __B, (__v32hi) __W, (__mmask32) __M); }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits