Index: include/clang/Basic/BuiltinsX86.def =================================================================== --- include/clang/Basic/BuiltinsX86.def +++ include/clang/Basic/BuiltinsX86.def @@ -945,8 +945,6 @@ TARGET_BUILTIN(__builtin_ia32_pminuq512_mask, "V8LLiV8LLiV8LLiV8LLiUc", "", "avx512f") TARGET_BUILTIN(__builtin_ia32_pmuldq512, "V8LLiV16iV16i", "", "avx512f") TARGET_BUILTIN(__builtin_ia32_pmuludq512, "V8LLiV16iV16i", "", "avx512f") -TARGET_BUILTIN(__builtin_ia32_ptestmd512, "UsV16iV16iUs", "", "avx512f") -TARGET_BUILTIN(__builtin_ia32_ptestmq512, "UcV8LLiV8LLiUc", "", "avx512f") TARGET_BUILTIN(__builtin_ia32_loaddqusi512_mask, "V16iiC*V16iUs", "", "avx512f") TARGET_BUILTIN(__builtin_ia32_loaddqudi512_mask, "V8LLiLLiC*V8LLiUc", "", "avx512f") TARGET_BUILTIN(__builtin_ia32_loadups512_mask, "V16ffC*V16fUs", "", "avx512f") @@ -1458,28 +1456,6 @@ TARGET_BUILTIN(__builtin_ia32_vpermt2varpd512_maskz, "V8dV8LLiV8dV8dUc","","avx512f") TARGET_BUILTIN(__builtin_ia32_vpermt2varps512_maskz, "V16fV16iV16fV16fUs","","avx512f") TARGET_BUILTIN(__builtin_ia32_vpermt2varq512_maskz, "V8LLiV8LLiV8LLiV8LLiUc","","avx512f") -TARGET_BUILTIN(__builtin_ia32_ptestmb512, "ULLiV64cV64cULLi","","avx512bw") -TARGET_BUILTIN(__builtin_ia32_ptestmw512, "UiV32sV32sUi","","avx512bw") -TARGET_BUILTIN(__builtin_ia32_ptestnmb512, "ULLiV64cV64cULLi","","avx512bw") -TARGET_BUILTIN(__builtin_ia32_ptestnmw512, "UiV32sV32sUi","","avx512bw") -TARGET_BUILTIN(__builtin_ia32_ptestmb128, "UsV16cV16cUs","","avx512bw,avx512vl") -TARGET_BUILTIN(__builtin_ia32_ptestmb256, "UiV32cV32cUi","","avx512bw,avx512vl") -TARGET_BUILTIN(__builtin_ia32_ptestmw128, "UcV8sV8sUc","","avx512bw,avx512vl") -TARGET_BUILTIN(__builtin_ia32_ptestmw256, "UsV16sV16sUs","","avx512bw,avx512vl") -TARGET_BUILTIN(__builtin_ia32_ptestnmb128, "UsV16cV16cUs","","avx512bw,avx512vl") -TARGET_BUILTIN(__builtin_ia32_ptestnmb256, "UiV32cV32cUi","","avx512bw,avx512vl") -TARGET_BUILTIN(__builtin_ia32_ptestnmw128, "UcV8sV8sUc","","avx512bw,avx512vl") -TARGET_BUILTIN(__builtin_ia32_ptestnmw256, "UsV16sV16sUs","","avx512bw,avx512vl") -TARGET_BUILTIN(__builtin_ia32_ptestmd128, "UcV4iV4iUc","","avx512vl") -TARGET_BUILTIN(__builtin_ia32_ptestmd256, "UcV8iV8iUc","","avx512vl") -TARGET_BUILTIN(__builtin_ia32_ptestmq128, "UcV2LLiV2LLiUc","","avx512vl") -TARGET_BUILTIN(__builtin_ia32_ptestmq256, "UcV4LLiV4LLiUc","","avx512vl") -TARGET_BUILTIN(__builtin_ia32_ptestnmd128, "UcV4iV4iUc","","avx512vl") -TARGET_BUILTIN(__builtin_ia32_ptestnmd256, "UcV8iV8iUc","","avx512vl") -TARGET_BUILTIN(__builtin_ia32_ptestnmq128, "UcV2LLiV2LLiUc","","avx512vl") -TARGET_BUILTIN(__builtin_ia32_ptestnmq256, "UcV4LLiV4LLiUc","","avx512vl") -TARGET_BUILTIN(__builtin_ia32_ptestnmd512, "UsV16iV16iUs","","avx512f") -TARGET_BUILTIN(__builtin_ia32_ptestnmq512, "UcV8LLiV8LLiUc","","avx512f") TARGET_BUILTIN(__builtin_ia32_rndscalesd_round_mask, "V2dV2dV2dV2dUcIiIi","","avx512f") TARGET_BUILTIN(__builtin_ia32_rndscaless_round_mask, "V4fV4fV4fV4fUcIiIi","","avx512f") TARGET_BUILTIN(__builtin_ia32_scalefpd512_mask, "V8dV8dV8dV8dUcIi","","avx512f") Index: lib/Headers/avx512bwintrin.h =================================================================== --- lib/Headers/avx512bwintrin.h +++ lib/Headers/avx512bwintrin.h @@ -1917,61 +1917,56 @@ static __inline__ __mmask64 __DEFAULT_FN_ATTRS _mm512_test_epi8_mask (__m512i __A, __m512i __B) { - return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A, - (__v64qi) __B, - (__mmask64) -1); + return _mm512_cmpneq_epi8_mask (_mm512_and_epi32 (__A, __B), + _mm512_setzero_qi()); } static __inline__ __mmask64 __DEFAULT_FN_ATTRS _mm512_mask_test_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B) { - return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A, - (__v64qi) __B, __U); + return _mm512_mask_cmpneq_epi8_mask (__U, _mm512_and_epi32 (__A, __B), + _mm512_setzero_qi()); } static __inline__ __mmask32 __DEFAULT_FN_ATTRS _mm512_test_epi16_mask (__m512i __A, __m512i __B) { - return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A, - (__v32hi) __B, - (__mmask32) -1); + return _mm512_cmpneq_epi16_mask (_mm512_and_epi32 (__A, __B), + _mm512_setzero_qi()); } static __inline__ __mmask32 __DEFAULT_FN_ATTRS _mm512_mask_test_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B) { - return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A, - (__v32hi) __B, __U); + return _mm512_mask_cmpneq_epi16_mask (__U, _mm512_and_epi32 (__A, __B), + _mm512_setzero_qi()); } static __inline__ __mmask64 __DEFAULT_FN_ATTRS _mm512_testn_epi8_mask (__m512i __A, __m512i __B) { - return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A, - (__v64qi) __B, - (__mmask64) -1); + return _mm512_cmpeq_epi8_mask (_mm512_and_epi32 (__A, __B), _mm512_setzero_qi()); } static __inline__ __mmask64 __DEFAULT_FN_ATTRS _mm512_mask_testn_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B) { - return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A, - (__v64qi) __B, __U); + return _mm512_mask_cmpeq_epi8_mask (__U, _mm512_and_epi32 (__A, __B), + _mm512_setzero_qi()); } static __inline__ __mmask32 __DEFAULT_FN_ATTRS _mm512_testn_epi16_mask (__m512i __A, __m512i __B) { - return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A, - (__v32hi) __B, - (__mmask32) -1); + return _mm512_cmpeq_epi16_mask (_mm512_and_epi32 (__A, __B), + _mm512_setzero_qi()); } static __inline__ __mmask32 __DEFAULT_FN_ATTRS _mm512_mask_testn_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B) { - return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A, - (__v32hi) __B, __U); + return _mm512_mask_cmpeq_epi16_mask (__U, _mm512_and_epi32 (__A, __B), + _mm512_setzero_qi()); } static __inline__ __mmask64 __DEFAULT_FN_ATTRS Index: lib/Headers/avx512fintrin.h =================================================================== --- lib/Headers/avx512fintrin.h +++ lib/Headers/avx512fintrin.h @@ -4543,37 +4543,6 @@ (__v8di)_mm512_setzero_si512()); } -/* Bit Test */ - -static __inline __mmask16 __DEFAULT_FN_ATTRS -_mm512_test_epi32_mask(__m512i __A, __m512i __B) -{ - return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A, - (__v16si) __B, - (__mmask16) -1); -} - -static __inline__ __mmask16 __DEFAULT_FN_ATTRS -_mm512_mask_test_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B) -{ - return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A, - (__v16si) __B, __U); -} - -static __inline __mmask8 __DEFAULT_FN_ATTRS -_mm512_test_epi64_mask(__m512i __A, __m512i __B) -{ - return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A, - (__v8di) __B, - (__mmask8) -1); -} - -static __inline__ __mmask8 __DEFAULT_FN_ATTRS -_mm512_mask_test_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B) -{ - return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A, (__v8di) __B, __U); -} - /* SIMD load ops */ @@ -6609,35 +6578,6 @@ (__mmask16) __U); } -static __inline__ __mmask16 __DEFAULT_FN_ATTRS -_mm512_testn_epi32_mask (__m512i __A, __m512i __B) -{ - return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A, - (__v16si) __B, - (__mmask16) -1); -} - -static __inline__ __mmask16 __DEFAULT_FN_ATTRS -_mm512_mask_testn_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B) -{ - return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A, - (__v16si) __B, __U); -} - -static __inline__ __mmask8 __DEFAULT_FN_ATTRS -_mm512_testn_epi64_mask (__m512i __A, __m512i __B) -{ - return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A, - (__v8di) __B, - (__mmask8) -1); -} - -static __inline__ __mmask8 __DEFAULT_FN_ATTRS -_mm512_mask_testn_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B) -{ - return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A, - (__v8di) __B, __U); -} #define _mm512_cvtt_roundpd_epu32(A, R) __extension__ ({ \ (__m256i)__builtin_ia32_cvttpd2udq512_mask((__v8df)(__m512d)(A), \ @@ -8978,6 +8918,64 @@ (__mmask8)(M), \ _MM_FROUND_CUR_DIRECTION); }) +/* Bit Test */ + +static __inline __mmask16 __DEFAULT_FN_ATTRS +_mm512_test_epi32_mask (__m512i __A, __m512i __B) +{ + return _mm512_cmpneq_epi32_mask (_mm512_and_epi32(__A, __B), + _mm512_setzero_epi32()); +} + +static __inline__ __mmask16 __DEFAULT_FN_ATTRS +_mm512_mask_test_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B) +{ + return _mm512_mask_cmpneq_epi32_mask (__U, _mm512_and_epi32 (__A, __B), + _mm512_setzero_epi32()); +} + +static __inline __mmask8 __DEFAULT_FN_ATTRS +_mm512_test_epi64_mask (__m512i __A, __m512i __B) +{ + return _mm512_cmpneq_epi64_mask (_mm512_and_epi32 (__A, __B), + _mm512_setzero_epi32()); +} + +static __inline__ __mmask8 __DEFAULT_FN_ATTRS +_mm512_mask_test_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B) +{ + return _mm512_mask_cmpneq_epi64_mask (__U, _mm512_and_epi32 (__A, __B), + _mm512_setzero_epi32()); +} + +static __inline__ __mmask16 __DEFAULT_FN_ATTRS +_mm512_testn_epi32_mask (__m512i __A, __m512i __B) +{ + return _mm512_cmpeq_epi32_mask (_mm512_and_epi32 (__A, __B), + _mm512_setzero_epi32()); +} + +static __inline__ __mmask16 __DEFAULT_FN_ATTRS +_mm512_mask_testn_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B) +{ + return _mm512_mask_cmpeq_epi32_mask (__U, _mm512_and_epi32 (__A, __B), + _mm512_setzero_epi32()); +} + +static __inline__ __mmask8 __DEFAULT_FN_ATTRS +_mm512_testn_epi64_mask (__m512i __A, __m512i __B) +{ + return _mm512_cmpeq_epi64_mask (_mm512_and_epi32 (__A, __B), + _mm512_setzero_epi32()); +} + +static __inline__ __mmask8 __DEFAULT_FN_ATTRS +_mm512_mask_testn_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B) +{ + return _mm512_mask_cmpeq_epi64_mask (__U, _mm512_and_epi32 (__A, __B), + _mm512_setzero_epi32()); +} + static __inline__ __m512 __DEFAULT_FN_ATTRS _mm512_movehdup_ps (__m512 __A) { Index: lib/Headers/avx512vlbwintrin.h =================================================================== --- lib/Headers/avx512vlbwintrin.h +++ lib/Headers/avx512vlbwintrin.h @@ -2415,121 +2415,108 @@ static __inline__ __mmask16 __DEFAULT_FN_ATTRS _mm_test_epi8_mask (__m128i __A, __m128i __B) { - return (__mmask16) __builtin_ia32_ptestmb128 ((__v16qi) __A, - (__v16qi) __B, - (__mmask16) -1); + return _mm_cmpneq_epi8_mask (_mm_and_si128(__A, __B), _mm_setzero_hi()); } static __inline__ __mmask16 __DEFAULT_FN_ATTRS _mm_mask_test_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B) { - return (__mmask16) __builtin_ia32_ptestmb128 ((__v16qi) __A, - (__v16qi) __B, __U); + return _mm_mask_cmpneq_epi8_mask (__U, _mm_and_si128 (__A, __B), + _mm_setzero_hi()); } static __inline__ __mmask32 __DEFAULT_FN_ATTRS _mm256_test_epi8_mask (__m256i __A, __m256i __B) { - return (__mmask32) __builtin_ia32_ptestmb256 ((__v32qi) __A, - (__v32qi) __B, - (__mmask32) -1); + return _mm256_cmpneq_epi8_mask (_mm256_and_si256(__A, __B), + _mm256_setzero_si256()); } static __inline__ __mmask32 __DEFAULT_FN_ATTRS _mm256_mask_test_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B) { - return (__mmask32) __builtin_ia32_ptestmb256 ((__v32qi) __A, - (__v32qi) __B, __U); + return _mm256_mask_cmpneq_epi8_mask (__U, _mm256_and_si256(__A, __B), + _mm256_setzero_si256()); } static __inline__ __mmask8 __DEFAULT_FN_ATTRS _mm_test_epi16_mask (__m128i __A, __m128i __B) { - return (__mmask8) __builtin_ia32_ptestmw128 ((__v8hi) __A, - (__v8hi) __B, - (__mmask8) -1); + return _mm_cmpneq_epi16_mask (_mm_and_si128 (__A, __B), _mm_setzero_hi()); } static __inline__ __mmask8 __DEFAULT_FN_ATTRS _mm_mask_test_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B) { - return (__mmask8) __builtin_ia32_ptestmw128 ((__v8hi) __A, - (__v8hi) __B, __U); + return _mm_mask_cmpneq_epi16_mask (__U, _mm_and_si128 (__A, __B), + _mm_setzero_hi()); } static __inline__ __mmask16 __DEFAULT_FN_ATTRS _mm256_test_epi16_mask (__m256i __A, __m256i __B) { - return (__mmask16) __builtin_ia32_ptestmw256 ((__v16hi) __A, - (__v16hi) __B, - (__mmask16) -1); + return _mm256_cmpneq_epi16_mask (_mm256_and_si256 (__A, __B), + _mm256_setzero_si256 ()); } static __inline__ __mmask16 __DEFAULT_FN_ATTRS _mm256_mask_test_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B) { - return (__mmask16) __builtin_ia32_ptestmw256 ((__v16hi) __A, - (__v16hi) __B, __U); + return _mm256_mask_cmpneq_epi16_mask (__U, _mm256_and_si256(__A, __B), + _mm256_setzero_si256()); } static __inline__ __mmask16 __DEFAULT_FN_ATTRS _mm_testn_epi8_mask (__m128i __A, __m128i __B) { - return (__mmask16) __builtin_ia32_ptestnmb128 ((__v16qi) __A, - (__v16qi) __B, - (__mmask16) -1); + return _mm_cmpeq_epi8_mask (_mm_and_si128 (__A, __B), _mm_setzero_hi()); } static __inline__ __mmask16 __DEFAULT_FN_ATTRS _mm_mask_testn_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B) { - return (__mmask16) __builtin_ia32_ptestnmb128 ((__v16qi) __A, - (__v16qi) __B, __U); + return _mm_mask_cmpeq_epi8_mask (__U, _mm_and_si128 (__A, __B), + _mm_setzero_hi()); } static __inline__ __mmask32 __DEFAULT_FN_ATTRS _mm256_testn_epi8_mask (__m256i __A, __m256i __B) { - return (__mmask32) __builtin_ia32_ptestnmb256 ((__v32qi) __A, - (__v32qi) __B, - (__mmask32) -1); + return _mm256_cmpeq_epi8_mask (_mm256_and_si256 (__A, __B), + _mm256_setzero_si256()); } static __inline__ __mmask32 __DEFAULT_FN_ATTRS _mm256_mask_testn_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B) { - return (__mmask32) __builtin_ia32_ptestnmb256 ((__v32qi) __A, - (__v32qi) __B, __U); + return _mm256_mask_cmpeq_epi8_mask (__U, _mm256_and_si256 (__A, __B), + _mm256_setzero_si256()); } static __inline__ __mmask8 __DEFAULT_FN_ATTRS _mm_testn_epi16_mask (__m128i __A, __m128i __B) { - return (__mmask8) __builtin_ia32_ptestnmw128 ((__v8hi) __A, - (__v8hi) __B, - (__mmask8) -1); + return _mm_cmpeq_epi16_mask (_mm_and_si128 (__A, __B), _mm_setzero_hi()); } static __inline__ __mmask8 __DEFAULT_FN_ATTRS _mm_mask_testn_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B) { - return (__mmask8) __builtin_ia32_ptestnmw128 ((__v8hi) __A, - (__v8hi) __B, __U); + return _mm_mask_cmpeq_epi16_mask (__U, _mm_and_si128(__A, __B), _mm_setzero_hi()); } static __inline__ __mmask16 __DEFAULT_FN_ATTRS _mm256_testn_epi16_mask (__m256i __A, __m256i __B) { - return (__mmask16) __builtin_ia32_ptestnmw256 ((__v16hi) __A, - (__v16hi) __B, - (__mmask16) -1); + return _mm256_cmpeq_epi16_mask (_mm256_and_si256(__A, __B), + _mm256_setzero_si256()); } static __inline__ __mmask16 __DEFAULT_FN_ATTRS _mm256_mask_testn_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B) { - return (__mmask16) __builtin_ia32_ptestnmw256 ((__v16hi) __A, - (__v16hi) __B, __U); + return _mm256_mask_cmpeq_epi16_mask (__U, _mm256_and_si256 (__A, __B), + _mm256_setzero_si256()); } static __inline__ __mmask16 __DEFAULT_FN_ATTRS Index: lib/Headers/avx512vlintrin.h =================================================================== --- lib/Headers/avx512vlintrin.h +++ lib/Headers/avx512vlintrin.h @@ -6126,125 +6126,111 @@ static __inline__ __mmask8 __DEFAULT_FN_ATTRS _mm_test_epi32_mask (__m128i __A, __m128i __B) { - return (__mmask8) __builtin_ia32_ptestmd128 ((__v4si) __A, - (__v4si) __B, - (__mmask8) -1); + return _mm_cmpneq_epi32_mask (_mm_and_si128 (__A, __B), _mm_setzero_di()); } static __inline__ __mmask8 __DEFAULT_FN_ATTRS _mm_mask_test_epi32_mask (__mmask8 __U, __m128i __A, __m128i __B) { - return (__mmask8) __builtin_ia32_ptestmd128 ((__v4si) __A, - (__v4si) __B, __U); + return _mm_mask_cmpneq_epi32_mask (__U, _mm_and_si128 (__A, __B), + _mm_setzero_di()); } static __inline__ __mmask8 __DEFAULT_FN_ATTRS _mm256_test_epi32_mask (__m256i __A, __m256i __B) { - return (__mmask8) __builtin_ia32_ptestmd256 ((__v8si) __A, - (__v8si) __B, - (__mmask8) -1); + return _mm256_cmpneq_epi32_mask (_mm256_and_si256 (__A, __B), + _mm256_setzero_si256()); } static __inline__ __mmask8 __DEFAULT_FN_ATTRS _mm256_mask_test_epi32_mask (__mmask8 __U, __m256i __A, __m256i __B) { - return (__mmask8) __builtin_ia32_ptestmd256 ((__v8si) __A, - (__v8si) __B, __U); + return _mm256_mask_cmpneq_epi32_mask (__U, _mm256_and_si256 (__A, __B), + _mm256_setzero_si256()); } static __inline__ __mmask8 __DEFAULT_FN_ATTRS _mm_test_epi64_mask (__m128i __A, __m128i __B) { - return (__mmask8) __builtin_ia32_ptestmq128 ((__v2di) __A, - (__v2di) __B, - (__mmask8) -1); + return _mm_cmpneq_epi64_mask (_mm_and_si128 (__A, __B), _mm_setzero_di()); } static __inline__ __mmask8 __DEFAULT_FN_ATTRS _mm_mask_test_epi64_mask (__mmask8 __U, __m128i __A, __m128i __B) { - return (__mmask8) __builtin_ia32_ptestmq128 ((__v2di) __A, - (__v2di) __B, __U); + return _mm_mask_cmpneq_epi64_mask (__U, _mm_and_si128 (__A, __B), + _mm_setzero_di()); } static __inline__ __mmask8 __DEFAULT_FN_ATTRS _mm256_test_epi64_mask (__m256i __A, __m256i __B) { - return (__mmask8) __builtin_ia32_ptestmq256 ((__v4di) __A, - (__v4di) __B, - (__mmask8) -1); + return _mm256_cmpneq_epi64_mask (_mm256_and_si256 (__A, __B), + _mm256_setzero_si256()); } static __inline__ __mmask8 __DEFAULT_FN_ATTRS _mm256_mask_test_epi64_mask (__mmask8 __U, __m256i __A, __m256i __B) { - return (__mmask8) __builtin_ia32_ptestmq256 ((__v4di) __A, - (__v4di) __B, __U); + return _mm256_mask_cmpneq_epi64_mask (__U, _mm256_and_si256 (__A, __B), + _mm256_setzero_si256()); } static __inline__ __mmask8 __DEFAULT_FN_ATTRS _mm_testn_epi32_mask (__m128i __A, __m128i __B) { - return (__mmask8) __builtin_ia32_ptestnmd128 ((__v4si) __A, - (__v4si) __B, - (__mmask8) -1); + return _mm_cmpeq_epi32_mask (_mm_and_si128 (__A, __B), _mm_setzero_di()); } static __inline__ __mmask8 __DEFAULT_FN_ATTRS _mm_mask_testn_epi32_mask (__mmask8 __U, __m128i __A, __m128i __B) { - return (__mmask8) __builtin_ia32_ptestnmd128 ((__v4si) __A, - (__v4si) __B, __U); + return _mm_mask_cmpeq_epi32_mask (__U, _mm_and_si128 (__A, __B), + _mm_setzero_di()); } static __inline__ __mmask8 __DEFAULT_FN_ATTRS _mm256_testn_epi32_mask (__m256i __A, __m256i __B) { - return (__mmask8) __builtin_ia32_ptestnmd256 ((__v8si) __A, - (__v8si) __B, - (__mmask8) -1); + return _mm256_cmpeq_epi32_mask (_mm256_and_si256 (__A, __B), + _mm256_setzero_si256()); } static __inline__ __mmask8 __DEFAULT_FN_ATTRS _mm256_mask_testn_epi32_mask (__mmask8 __U, __m256i __A, __m256i __B) { - return (__mmask8) __builtin_ia32_ptestnmd256 ((__v8si) __A, - (__v8si) __B, __U); + return _mm256_mask_cmpeq_epi32_mask (__U, _mm256_and_si256 (__A, __B), + _mm256_setzero_si256()); } static __inline__ __mmask8 __DEFAULT_FN_ATTRS _mm_testn_epi64_mask (__m128i __A, __m128i __B) { - return (__mmask8) __builtin_ia32_ptestnmq128 ((__v2di) __A, - (__v2di) __B, - (__mmask8) -1); + return _mm_cmpeq_epi64_mask (_mm_and_si128 (__A, __B), _mm_setzero_di()); } static __inline__ __mmask8 __DEFAULT_FN_ATTRS _mm_mask_testn_epi64_mask (__mmask8 __U, __m128i __A, __m128i __B) { - return (__mmask8) __builtin_ia32_ptestnmq128 ((__v2di) __A, - (__v2di) __B, __U); + return _mm_mask_cmpeq_epi64_mask (__U, _mm_and_si128 (__A, __B), + _mm_setzero_di()); } static __inline__ __mmask8 __DEFAULT_FN_ATTRS _mm256_testn_epi64_mask (__m256i __A, __m256i __B) { - return (__mmask8) __builtin_ia32_ptestnmq256 ((__v4di) __A, - (__v4di) __B, - (__mmask8) -1); + return _mm256_cmpeq_epi64_mask (_mm256_and_si256 (__A, __B), + _mm256_setzero_si256()); } static __inline__ __mmask8 __DEFAULT_FN_ATTRS _mm256_mask_testn_epi64_mask (__mmask8 __U, __m256i __A, __m256i __B) { - return (__mmask8) __builtin_ia32_ptestnmq256 ((__v4di) __A, - (__v4di) __B, __U); + return _mm256_mask_cmpeq_epi64_mask (__U, _mm256_and_si256 (__A, __B), + _mm256_setzero_si256()); } - - static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_mask_unpackhi_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { Index: test/CodeGen/avx512bw-builtins.c =================================================================== --- test/CodeGen/avx512bw-builtins.c +++ test/CodeGen/avx512bw-builtins.c @@ -1668,7 +1668,8 @@ } __mmask64 test_mm512_test_epi8_mask(__m512i __A, __m512i __B) { // CHECK-LABEL: @test_mm512_test_epi8_mask - // CHECK: @llvm.x86.avx512.ptestm.b.512 + // CHECK: and <16 x i32> %{{.*}}, %{{.*}} + // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}} return _mm512_test_epi8_mask(__A, __B); } @@ -1679,43 +1680,54 @@ } __mmask64 test_mm512_mask_test_epi8_mask(__mmask64 __U, __m512i __A, __m512i __B) { // CHECK-LABEL: @test_mm512_mask_test_epi8_mask - // CHECK: @llvm.x86.avx512.ptestm.b.512 + // CHECK: and <16 x i32> %{{.*}}, %{{.*}} + // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}} + // CHECK: and <64 x i1> %{{.*}}, %{{.*}} return _mm512_mask_test_epi8_mask(__U, __A, __B); } __mmask32 test_mm512_test_epi16_mask(__m512i __A, __m512i __B) { // CHECK-LABEL: @test_mm512_test_epi16_mask - // CHECK: @llvm.x86.avx512.ptestm.w. + // CHECK: and <16 x i32> %{{.*}}, %{{.*}} + // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}} return _mm512_test_epi16_mask(__A, __B); } __mmask32 test_mm512_mask_test_epi16_mask(__mmask32 __U, __m512i __A, __m512i __B) { // CHECK-LABEL: @test_mm512_mask_test_epi16_mask - // CHECK: @llvm.x86.avx512.ptestm.w. + // CHECK: and <16 x i32> %{{.*}}, %{{.*}} + // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}} + // CHECK: and <32 x i1> %{{.*}}, %{{.*}} return _mm512_mask_test_epi16_mask(__U, __A, __B); } __mmask64 test_mm512_testn_epi8_mask(__m512i __A, __m512i __B) { // CHECK-LABEL: @test_mm512_testn_epi8_mask - // CHECK: @llvm.x86.avx512.ptestnm.b. + // CHECK: and <16 x i32> %{{.*}}, %{{.*}} + // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}} return _mm512_testn_epi8_mask(__A, __B); } __mmask64 test_mm512_mask_testn_epi8_mask(__mmask64 __U, __m512i __A, __m512i __B) { // CHECK-LABEL: @test_mm512_mask_testn_epi8_mask - // CHECK: @llvm.x86.avx512.ptestnm.b. + // CHECK: and <16 x i32> %{{.*}}, %{{.*}} + // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}} + // CHECK: and <64 x i1> %{{.*}}, %{{.*}} return _mm512_mask_testn_epi8_mask(__U, __A, __B); } __mmask32 test_mm512_testn_epi16_mask(__m512i __A, __m512i __B) { // CHECK-LABEL: @test_mm512_testn_epi16_mask - // CHECK: @llvm.x86.avx512.ptestnm.w. + // CHECK: and <16 x i32> %{{.*}}, %{{.*}} + // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}} return _mm512_testn_epi16_mask(__A, __B); } __mmask32 test_mm512_mask_testn_epi16_mask(__mmask32 __U, __m512i __A, __m512i __B) { // CHECK-LABEL: @test_mm512_mask_testn_epi16_mask - // CHECK: @llvm.x86.avx512.ptestnm.w. + // CHECK: and <16 x i32> %{{.*}}, %{{.*}} + // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}} + // CHECK: and <32 x i1> %{{.*}}, %{{.*}} return _mm512_mask_testn_epi16_mask(__U, __A, __B); } Index: test/CodeGen/avx512f-builtins.c =================================================================== --- test/CodeGen/avx512f-builtins.c +++ test/CodeGen/avx512f-builtins.c @@ -3857,39 +3857,48 @@ } __mmask16 test_mm512_testn_epi32_mask(__m512i __A, __m512i __B) { // CHECK-LABEL: @test_mm512_testn_epi32_mask - // CHECK: @llvm.x86.avx512.ptestnm.d.512 + // CHECK: and <16 x i32> %{{.*}}, %{{.*}} + // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}} return _mm512_testn_epi32_mask(__A, __B); } __mmask16 test_mm512_mask_testn_epi32_mask(__mmask16 __U, __m512i __A, __m512i __B) { // CHECK-LABEL: @test_mm512_mask_testn_epi32_mask - // CHECK: @llvm.x86.avx512.ptestnm.d.512 + // CHECK: and <16 x i32> %{{.*}}, %{{.*}} + // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return _mm512_mask_testn_epi32_mask(__U, __A, __B); } __mmask8 test_mm512_testn_epi64_mask(__m512i __A, __m512i __B) { // CHECK-LABEL: @test_mm512_testn_epi64_mask - // CHECK: @llvm.x86.avx512.ptestnm.q.512 + // CHECK: and <16 x i32> %{{.*}}, %{{.*}} + // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}} return _mm512_testn_epi64_mask(__A, __B); } __mmask8 test_mm512_mask_testn_epi64_mask(__mmask8 __U, __m512i __A, __m512i __B) { // CHECK-LABEL: @test_mm512_mask_testn_epi64_mask - // CHECK: @llvm.x86.avx512.ptestnm.q.512 + // CHECK: and <16 x i32> %{{.*}}, %{{.*}} + // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return _mm512_mask_testn_epi64_mask(__U, __A, __B); } __mmask16 test_mm512_mask_test_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B) { // CHECK-LABEL: @test_mm512_mask_test_epi32_mask - // CHECK: @llvm.x86.avx512.ptestm.d.512 + // CHECK: and <16 x i32> %{{.*}}, %{{.*}} + // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}} return _mm512_mask_test_epi32_mask (__U,__A,__B); } __mmask8 test_mm512_mask_test_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B) { // CHECK-LABEL: @test_mm512_mask_test_epi64_mask - // CHECK: @llvm.x86.avx512.ptestm.q.512 + // CHECK: and <16 x i32> %{{.*}}, %{{.*}} + // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return _mm512_mask_test_epi64_mask (__U,__A,__B); } Index: test/CodeGen/avx512vl-builtins.c =================================================================== --- test/CodeGen/avx512vl-builtins.c +++ test/CodeGen/avx512vl-builtins.c @@ -5188,99 +5188,124 @@ __mmask8 test_mm_test_epi32_mask(__m128i __A, __m128i __B) { // CHECK-LABEL: @test_mm_test_epi32_mask - // CHECK: @llvm.x86.avx512.ptestm.d.128 + // CHECK: and <2 x i64> %{{.*}}, %{{.*}} + // CHECK: icmp ne <4 x i32> %{{.*}}, %{{.*}} return _mm_test_epi32_mask(__A, __B); } __mmask8 test_mm_mask_test_epi32_mask(__mmask8 __U, __m128i __A, __m128i __B) { // CHECK-LABEL: @test_mm_mask_test_epi32_mask - // CHECK: @llvm.x86.avx512.ptestm.d.128 + // CHECK: and <2 x i64> %{{.*}}, %{{.*}} + // CHECK: icmp ne <4 x i32> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} return _mm_mask_test_epi32_mask(__U, __A, __B); } __mmask8 test_mm256_test_epi32_mask(__m256i __A, __m256i __B) { // CHECK-LABEL: @test_mm256_test_epi32_mask - // CHECK: @llvm.x86.avx512.ptestm.d.256 + // CHECK: and <4 x i64> %{{.*}}, %{{.*}} + // CHECK: icmp ne <8 x i32> %{{.*}}, %{{.*}} return _mm256_test_epi32_mask(__A, __B); } __mmask8 test_mm256_mask_test_epi32_mask(__mmask8 __U, __m256i __A, __m256i __B) { // CHECK-LABEL: @test_mm256_mask_test_epi32_mask - // CHECK: @llvm.x86.avx512.ptestm.d.256 + // CHECK: and <4 x i64> %{{.*}}, %{{.*}} + // CHECK: icmp ne <8 x i32> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return _mm256_mask_test_epi32_mask(__U, __A, __B); } __mmask8 test_mm_test_epi64_mask(__m128i __A, __m128i __B) { // CHECK-LABEL: @test_mm_test_epi64_mask - // CHECK: @llvm.x86.avx512.ptestm.q.128 + // CHECK: and <2 x i64> %{{.*}}, %{{.*}} + // CHECK: icmp ne <2 x i64> %{{.*}}, %{{.*}} return _mm_test_epi64_mask(__A, __B); } __mmask8 test_mm_mask_test_epi64_mask(__mmask8 __U, __m128i __A, __m128i __B) { // CHECK-LABEL: @test_mm_mask_test_epi64_mask - // CHECK: @llvm.x86.avx512.ptestm.q.128 + // CHECK: and <2 x i64> %{{.*}}, %{{.*}} + // CHECK: icmp ne <2 x i64> %{{.*}}, %{{.*}} + // CHECK: and <2 x i1> %{{.*}}, %{{.*}} return _mm_mask_test_epi64_mask(__U, __A, __B); } __mmask8 test_mm256_test_epi64_mask(__m256i __A, __m256i __B) { // CHECK-LABEL: @test_mm256_test_epi64_mask - // CHECK: @llvm.x86.avx512.ptestm.q.256 + // CHECK: and <4 x i64> %{{.*}}, %{{.*}} + // CHECK: icmp ne <4 x i64> %{{.*}}, %{{.*}} return _mm256_test_epi64_mask(__A, __B); } __mmask8 test_mm256_mask_test_epi64_mask(__mmask8 __U, __m256i __A, __m256i __B) { // CHECK-LABEL: @test_mm256_mask_test_epi64_mask - // CHECK: @llvm.x86.avx512.ptestm.q.256 + // CHECK: and <4 x i64> %{{.*}}, %{{.*}} + // CHECK: icmp ne <4 x i64> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} return _mm256_mask_test_epi64_mask(__U, __A, __B); } __mmask8 test_mm_testn_epi32_mask(__m128i __A, __m128i __B) { // CHECK-LABEL: @test_mm_testn_epi32_mask - // CHECK: @llvm.x86.avx512.ptestnm.d.128 + // CHECK: and <2 x i64> %{{.*}}, %{{.*}} + // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}} return _mm_testn_epi32_mask(__A, __B); } __mmask8 test_mm_mask_testn_epi32_mask(__mmask8 __U, __m128i __A, __m128i __B) { // CHECK-LABEL: @test_mm_mask_testn_epi32_mask - // CHECK: @llvm.x86.avx512.ptestnm.d.128 + // CHECK: and <2 x i64> %{{.*}}, %{{.*}} + // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} return _mm_mask_testn_epi32_mask(__U, __A, __B); } __mmask8 test_mm256_testn_epi32_mask(__m256i __A, __m256i __B) { // CHECK-LABEL: @test_mm256_testn_epi32_mask - // CHECK: @llvm.x86.avx512.ptestnm.d.256 + // CHECK: and <4 x i64> %{{.*}}, %{{.*}} + // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}} return _mm256_testn_epi32_mask(__A, __B); } __mmask8 test_mm256_mask_testn_epi32_mask(__mmask8 __U, __m256i __A, __m256i __B) { // CHECK-LABEL: @test_mm256_mask_testn_epi32_mask - // CHECK: @llvm.x86.avx512.ptestnm.d.256 + // CHECK: and <4 x i64> %{{.*}}, %{{.*}} + // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return _mm256_mask_testn_epi32_mask(__U, __A, __B); } __mmask8 test_mm_testn_epi64_mask(__m128i __A, __m128i __B) { // CHECK-LABEL: @test_mm_testn_epi64_mask - // CHECK: @llvm.x86.avx512.ptestnm.q.128 + // CHECK: and <2 x i64> %{{.*}}, %{{.*}} + // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}} return _mm_testn_epi64_mask(__A, __B); } __mmask8 test_mm_mask_testn_epi64_mask(__mmask8 __U, __m128i __A, __m128i __B) { // CHECK-LABEL: @test_mm_mask_testn_epi64_mask - // CHECK: @llvm.x86.avx512.ptestnm.q.128 + // CHECK: and <2 x i64> %{{.*}}, %{{.*}} + // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}} + // CHECK: and <2 x i1> %{{.*}}, %{{.*}} return _mm_mask_testn_epi64_mask(__U, __A, __B); } __mmask8 test_mm256_testn_epi64_mask(__m256i __A, __m256i __B) { // CHECK-LABEL: @test_mm256_testn_epi64_mask - // CHECK: @llvm.x86.avx512.ptestnm.q.256 + // CHECK: and <4 x i64> %{{.*}}, %{{.*}} + // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}} return _mm256_testn_epi64_mask(__A, __B); } __mmask8 test_mm256_mask_testn_epi64_mask(__mmask8 __U, __m256i __A, __m256i __B) { // CHECK-LABEL: @test_mm256_mask_testn_epi64_mask - // CHECK: @llvm.x86.avx512.ptestnm.q.256 + // CHECK: and <4 x i64> %{{.*}}, %{{.*}} + // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} return _mm256_mask_testn_epi64_mask(__U, __A, __B); } + __m128i test_mm_mask_unpackhi_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { // CHECK-LABEL: @test_mm_mask_unpackhi_epi32 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> Index: test/CodeGen/avx512vlbw-builtins.c =================================================================== --- test/CodeGen/avx512vlbw-builtins.c +++ test/CodeGen/avx512vlbw-builtins.c @@ -2481,97 +2481,121 @@ } __mmask16 test_mm_test_epi8_mask(__m128i __A, __m128i __B) { // CHECK-LABEL: @test_mm_test_epi8_mask - // CHECK: @llvm.x86.avx512.ptestm.b.128 + // CHECK: and <2 x i64> %{{.*}}, %{{.*}} + // CHECK: icmp ne <16 x i8> %{{.*}}, %{{.*}} return _mm_test_epi8_mask(__A, __B); } __mmask16 test_mm_mask_test_epi8_mask(__mmask16 __U, __m128i __A, __m128i __B) { // CHECK-LABEL: @test_mm_mask_test_epi8_mask - // CHECK: @llvm.x86.avx512.ptestm.b.128 + // CHECK: and <2 x i64> %{{.*}}, %{{.*}} + // CHECK: icmp ne <16 x i8> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return _mm_mask_test_epi8_mask(__U, __A, __B); } __mmask32 test_mm256_test_epi8_mask(__m256i __A, __m256i __B) { // CHECK-LABEL: @test_mm256_test_epi8_mask - // CHECK: @llvm.x86.avx512.ptestm.b.256 + // CHECK: and <4 x i64> %{{.*}}, %{{.*}} + // CHECK: icmp ne <32 x i8> %{{.*}}, %{{.*}} return _mm256_test_epi8_mask(__A, __B); } __mmask32 test_mm256_mask_test_epi8_mask(__mmask32 __U, __m256i __A, __m256i __B) { // CHECK-LABEL: @test_mm256_mask_test_epi8_mask - // CHECK: @llvm.x86.avx512.ptestm.b.256 + // CHECK: and <4 x i64> %{{.*}}, %{{.*}} + // CHECK: icmp ne <32 x i8> %{{.*}}, %{{.*}} + // CHECK: and <32 x i1> %{{.*}}, %{{.*}} return _mm256_mask_test_epi8_mask(__U, __A, __B); } __mmask8 test_mm_test_epi16_mask(__m128i __A, __m128i __B) { // CHECK-LABEL: @test_mm_test_epi16_mask - // CHECK: @llvm.x86.avx512.ptestm.w.128 + // CHECK: and <2 x i64> %{{.*}}, %{{.*}} + // CHECK: icmp ne <8 x i16> %{{.*}}, %{{.*}} return _mm_test_epi16_mask(__A, __B); } __mmask8 test_mm_mask_test_epi16_mask(__mmask8 __U, __m128i __A, __m128i __B) { // CHECK-LABEL: @test_mm_mask_test_epi16_mask - // CHECK: @llvm.x86.avx512.ptestm.w.128 + // CHECK: and <2 x i64> %{{.*}}, %{{.*}} + // CHECK: icmp ne <8 x i16> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return _mm_mask_test_epi16_mask(__U, __A, __B); } __mmask16 test_mm256_test_epi16_mask(__m256i __A, __m256i __B) { // CHECK-LABEL: @test_mm256_test_epi16_mask - // CHECK: @llvm.x86.avx512.ptestm.w.256 + // CHECK: and <4 x i64> %{{.*}}, %{{.*}} + // CHECK: icmp ne <16 x i16> %{{.*}}, %{{.*}} return _mm256_test_epi16_mask(__A, __B); } __mmask16 test_mm256_mask_test_epi16_mask(__mmask16 __U, __m256i __A, __m256i __B) { // CHECK-LABEL: @test_mm256_mask_test_epi16_mask - // CHECK: @llvm.x86.avx512.ptestm.w.256 + // CHECK: and <4 x i64> %{{.*}}, %{{.*}} + // CHECK: icmp ne <16 x i16> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return _mm256_mask_test_epi16_mask(__U, __A, __B); } __mmask16 test_mm_testn_epi8_mask(__m128i __A, __m128i __B) { // CHECK-LABEL: @test_mm_testn_epi8_mask - // CHECK: @llvm.x86.avx512.ptestnm.b.128 + // CHECK: and <2 x i64> %{{.*}}, %{{.*}} + // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}} return _mm_testn_epi8_mask(__A, __B); } __mmask16 test_mm_mask_testn_epi8_mask(__mmask16 __U, __m128i __A, __m128i __B) { // CHECK-LABEL: @test_mm_mask_testn_epi8_mask - // CHECK: @llvm.x86.avx512.ptestnm.b.128 + // CHECK: and <2 x i64> %{{.*}}, %{{.*}} + // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return _mm_mask_testn_epi8_mask(__U, __A, __B); } __mmask32 test_mm256_testn_epi8_mask(__m256i __A, __m256i __B) { // CHECK-LABEL: @test_mm256_testn_epi8_mask - // CHECK: @llvm.x86.avx512.ptestnm.b.256 + // CHECK: and <4 x i64> %{{.*}}, %{{.*}} + // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}} return _mm256_testn_epi8_mask(__A, __B); } __mmask32 test_mm256_mask_testn_epi8_mask(__mmask32 __U, __m256i __A, __m256i __B) { // CHECK-LABEL: @test_mm256_mask_testn_epi8_mask - // CHECK: @llvm.x86.avx512.ptestnm.b.256 + // CHECK: and <4 x i64> %{{.*}}, %{{.*}} + // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}} + // CHECK: and <32 x i1> %{{.*}}, %{{.*}} return _mm256_mask_testn_epi8_mask(__U, __A, __B); } __mmask8 test_mm_testn_epi16_mask(__m128i __A, __m128i __B) { // CHECK-LABEL: @test_mm_testn_epi16_mask - // CHECK: @llvm.x86.avx512.ptestnm.w.128 + // CHECK: and <2 x i64> %{{.*}}, %{{.*}} + // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}} return _mm_testn_epi16_mask(__A, __B); } __mmask8 test_mm_mask_testn_epi16_mask(__mmask8 __U, __m128i __A, __m128i __B) { // CHECK-LABEL: @test_mm_mask_testn_epi16_mask - // CHECK: @llvm.x86.avx512.ptestnm.w.128 + // CHECK: and <2 x i64> %{{.*}}, %{{.*}} + // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return _mm_mask_testn_epi16_mask(__U, __A, __B); } __mmask16 test_mm256_testn_epi16_mask(__m256i __A, __m256i __B) { // CHECK-LABEL: @test_mm256_testn_epi16_mask - // CHECK: @llvm.x86.avx512.ptestnm.w.256 + // CHECK: and <4 x i64> %{{.*}}, %{{.*}} + // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}} return _mm256_testn_epi16_mask(__A, __B); } __mmask16 test_mm256_mask_testn_epi16_mask(__mmask16 __U, __m256i __A, __m256i __B) { // CHECK-LABEL: @test_mm256_mask_testn_epi16_mask - // CHECK: @llvm.x86.avx512.ptestnm.w.256 + // CHECK: and <4 x i64> %{{.*}}, %{{.*}} + // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return _mm256_mask_testn_epi16_mask(__U, __A, __B); }