diff options
author | Craig Topper <craig.topper@intel.com> | 2018-05-15 03:17:52 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@intel.com> | 2018-05-15 03:17:52 +0000 |
commit | 9d146bbaf7e68be600330e42aac3daa21855d80d (patch) | |
tree | f603df9e1f54962ac4fe7bf46482d3f833420a0a /clang/lib | |
parent | 60ff7dab00b6f333cf00186b05155495844a2bdd (diff) | |
download | bcm5719-llvm-9d146bbaf7e68be600330e42aac3daa21855d80d.tar.gz bcm5719-llvm-9d146bbaf7e68be600330e42aac3daa21855d80d.zip |
[X86] Revert part of r332266: Use __builtin_convertvector to replace some of the avx512 truncate builtins.
The masking doesn't work right in the backend for the ones that produce byte or word elements without avx512bw.
llvm-svn: 332322
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Headers/avx512fintrin.h | 33 | ||||
-rw-r--r-- | clang/lib/Headers/avx512vlintrin.h | 11 |
2 files changed, 20 insertions, 24 deletions
diff --git a/clang/lib/Headers/avx512fintrin.h b/clang/lib/Headers/avx512fintrin.h index 24a4e9fef24..ee5fb5ae0be 100644 --- a/clang/lib/Headers/avx512fintrin.h +++ b/clang/lib/Headers/avx512fintrin.h @@ -7607,17 +7607,16 @@ _mm512_cvtepi32_epi8 (__m512i __A) static __inline__ __m128i __DEFAULT_FN_ATTRS _mm512_mask_cvtepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A) { - return (__m128i)__builtin_ia32_selectb_128((__mmask8)__M, - (__v16qi)_mm512_cvtepi32_epi8(__A), - (__v16qi)__O); + return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A, + (__v16qi) __O, __M); } static __inline__ __m128i __DEFAULT_FN_ATTRS _mm512_maskz_cvtepi32_epi8 (__mmask16 __M, __m512i __A) { - return (__m128i)__builtin_ia32_selectb_128((__mmask8)__M, - (__v16qi)_mm512_cvtepi32_epi8(__A), - (__v16qi)_mm_setzero_si128()); + return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A, + (__v16qi) _mm_setzero_si128 (), + __M); } static __inline__ void __DEFAULT_FN_ATTRS @@ -7635,17 +7634,16 @@ _mm512_cvtepi32_epi16 (__m512i __A) static __inline__ __m256i __DEFAULT_FN_ATTRS _mm512_mask_cvtepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A) { - return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M, - (__v16hi)_mm512_cvtepi32_epi16(__A), - (__v16hi)__O); + return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A, + (__v16hi) __O, __M); } static __inline__ __m256i __DEFAULT_FN_ATTRS _mm512_maskz_cvtepi32_epi16 (__mmask16 __M, __m512i __A) { - return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M, - (__v16hi)_mm512_cvtepi32_epi16(__A), - (__v16hi)_mm256_setzero_si256()); + return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A, + (__v16hi) _mm256_setzero_si256 (), + __M); } static __inline__ void __DEFAULT_FN_ATTRS @@ -7720,17 +7718,16 @@ _mm512_cvtepi64_epi16 (__m512i __A) static __inline__ __m128i __DEFAULT_FN_ATTRS _mm512_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A) { - return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M, - (__v8hi)_mm512_cvtepi64_epi16(__A), - (__v8hi)__O); + return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A, + (__v8hi) __O, __M); } static __inline__ __m128i __DEFAULT_FN_ATTRS _mm512_maskz_cvtepi64_epi16 (__mmask8 __M, __m512i __A) { - return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M, - (__v8hi)_mm512_cvtepi64_epi16(__A), - (__v8hi)_mm_setzero_si128()); + return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A, + (__v8hi) _mm_setzero_si128 (), + __M); } static __inline__ void __DEFAULT_FN_ATTRS diff --git a/clang/lib/Headers/avx512vlintrin.h b/clang/lib/Headers/avx512vlintrin.h index 07429953f91..de89cfdfacb 100644 --- a/clang/lib/Headers/avx512vlintrin.h +++ b/clang/lib/Headers/avx512vlintrin.h @@ -7633,17 +7633,16 @@ _mm256_cvtepi32_epi16 (__m256i __A) static __inline__ __m128i __DEFAULT_FN_ATTRS _mm256_mask_cvtepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A) { - return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M, - (__v8hi)_mm256_cvtepi32_epi16(__A), - (__v8hi)__O); + return (__m128i) __builtin_ia32_pmovdw256_mask ((__v8si) __A, + (__v8hi) __O, __M); } static __inline__ __m128i __DEFAULT_FN_ATTRS _mm256_maskz_cvtepi32_epi16 (__mmask8 __M, __m256i __A) { - return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M, - (__v8hi)_mm256_cvtepi32_epi16(__A), - (__v8hi)_mm_setzero_si128()); + return (__m128i) __builtin_ia32_pmovdw256_mask ((__v8si) __A, + (__v8hi) _mm_setzero_si128 (), + __M); } static __inline__ void __DEFAULT_FN_ATTRS |