diff options
author | Craig Topper <craig.topper@intel.com> | 2018-05-20 23:34:10 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@intel.com> | 2018-05-20 23:34:10 +0000 |
commit | 4029c7ddda99ecbfa144f0afec44a192c442b6e5 (patch) | |
tree | 029adc3e5da2febe18e068bfa8cb9b86fb634bde /lib/Headers/avx512vlbwintrin.h | |
parent | f229fdd1fea6723217ed3bab0eecc8426e9e7911 (diff) |
[X86] Remove mask arguments from permvar builtins/intrinsics. Use a select in IR instead.
Someday maybe we'll use selects for all the builtins.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@332825 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Headers/avx512vlbwintrin.h')
-rw-r--r-- | lib/Headers/avx512vlbwintrin.h | 38 |
1 files changed, 14 insertions, 24 deletions
diff --git a/lib/Headers/avx512vlbwintrin.h b/lib/Headers/avx512vlbwintrin.h index 36b19b99ab..6c2d3eadc9 100644 --- a/lib/Headers/avx512vlbwintrin.h +++ b/lib/Headers/avx512vlbwintrin.h @@ -2664,58 +2664,48 @@ _mm_maskz_set1_epi16 (__mmask8 __M, short __A) static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_permutexvar_epi16 (__m128i __A, __m128i __B) { - return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B, - (__v8hi) __A, - (__v8hi) _mm_undefined_si128 (), - (__mmask8) -1); + return (__m128i)__builtin_ia32_permvarhi128((__v8hi) __B, (__v8hi) __A); } 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, - (__v8hi) _mm_setzero_si128 (), - (__mmask8) __M); + return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M, + (__v8hi)_mm_permutexvar_epi16(__A, __B), + (__v8hi) _mm_setzero_si128()); } 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, - (__v8hi) __W, - (__mmask8) __M); + return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M, + (__v8hi)_mm_permutexvar_epi16(__A, __B), + (__v8hi)__W); } static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_permutexvar_epi16 (__m256i __A, __m256i __B) { - return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B, - (__v16hi) __A, - (__v16hi) _mm256_undefined_si256 (), - (__mmask16) -1); + return (__m256i)__builtin_ia32_permvarhi256((__v16hi) __B, (__v16hi) __A); } 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, - (__v16hi) _mm256_setzero_si256 (), - (__mmask16) __M); + return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M, + (__v16hi)_mm256_permutexvar_epi16(__A, __B), + (__v16hi)_mm256_setzero_si256()); } 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, - (__v16hi) __W, - (__mmask16) __M); + return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M, + (__v16hi)_mm256_permutexvar_epi16(__A, __B), + (__v16hi)__W); } #define _mm_mask_alignr_epi8(W, U, A, B, N) __extension__ ({ \ |