Author: sskzakaria Date: 2026-03-26T14:20:45Z New Revision: 8d1314f96d960215a4101f3f2cf269c061ca6ea6
URL: https://github.com/llvm/llvm-project/commit/8d1314f96d960215a4101f3f2cf269c061ca6ea6 DIFF: https://github.com/llvm/llvm-project/commit/8d1314f96d960215a4101f3f2cf269c061ca6ea6.diff LOG: [X86][Clang] VectorExprEvaluator::VisitCallExpr / InterpretBuiltin - allow AVX512 VPTESTM intrinsics to be used in constexpr #162071 (#174021) Adding Constexpr tests for ``` _mm_test_epi8_mask _mm_mask_test_epi8_mask _mm_test_epi16_mask _mm_mask_test_epi16_mask _mm_test_epi64_mask _mm_mask_test_epi32_mask _mm_test_epi32_mask _mm_mask_test_epi64_mask _mm_testn_epi8_mask _mm_mask_testn_epi8_mask _mm_testn_epi16_mask _mm_mask_testn_epi16_mask _mm_testn_epi64_mask _mm_mask_testn_epi32_mask _mm_testn_epi32_mask _mm_mask_testn_epi64_mask _mm256_test_epi8_mask _mm256_mask_test_epi8_mask _mm256_test_epi16_mask _mm256_mask_test_epi16_mask _mm256_test_epi64_mask _mm256_mask_test_epi32_mask _mm256_test_epi32_mask _mm256_mask_test_epi64_mask _mm256_testn_epi8_mask _mm256_mask_testn_epi8_mask _mm256_testn_epi16_mask _mm256_mask_testn_epi16_mask _mm256_testn_epi64_mask _mm256_mask_testn_epi32_mask _mm256_testn_epi32_mask _mm256_mask_testn_epi64_mask _mm512_test_epi8_mask _mm512_mask_test_epi8_mask _mm512_test_epi16_mask _mm512_mask_test_epi16_mask _mm512_test_epi64_mask _mm512_mask_test_epi32_mask _mm512_test_epi32_mask _mm512_mask_test_epi64_mask _mm512_testn_epi8_mask _mm512_mask_testn_epi8_mask _mm512_testn_epi16_mask _mm512_mask_testn_epi16_mask _mm512_testn_epi64_mask _mm512_mask_testn_epi32_mask _mm512_testn_epi32_mask _mm512_mask_testn_epi64_mask ``` FIXES #162071 Added: Modified: clang/lib/Headers/avx512bwintrin.h clang/lib/Headers/avx512fintrin.h clang/lib/Headers/avx512vlbwintrin.h clang/lib/Headers/avx512vlintrin.h clang/test/CodeGen/X86/avx512bw-builtins.c clang/test/CodeGen/X86/avx512f-builtins.c clang/test/CodeGen/X86/avx512vl-builtins.c clang/test/CodeGen/X86/avx512vlbw-builtins.c Removed: ################################################################################ diff --git a/clang/lib/Headers/avx512bwintrin.h b/clang/lib/Headers/avx512bwintrin.h index cd4663abe7d9e..83cabc0dfb5ac 100644 --- a/clang/lib/Headers/avx512bwintrin.h +++ b/clang/lib/Headers/avx512bwintrin.h @@ -1695,57 +1695,49 @@ _mm512_mask_storeu_epi8 (void *__P, __mmask64 __U, __m512i __A) (__mmask64) __U); } -static __inline__ __mmask64 __DEFAULT_FN_ATTRS512 -_mm512_test_epi8_mask (__m512i __A, __m512i __B) -{ +static __inline__ __mmask64 __DEFAULT_FN_ATTRS512_CONSTEXPR +_mm512_test_epi8_mask(__m512i __A, __m512i __B) { return _mm512_cmpneq_epi8_mask (_mm512_and_epi32 (__A, __B), _mm512_setzero_si512()); } -static __inline__ __mmask64 __DEFAULT_FN_ATTRS512 -_mm512_mask_test_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B) -{ +static __inline__ __mmask64 __DEFAULT_FN_ATTRS512_CONSTEXPR +_mm512_mask_test_epi8_mask(__mmask64 __U, __m512i __A, __m512i __B) { return _mm512_mask_cmpneq_epi8_mask (__U, _mm512_and_epi32 (__A, __B), _mm512_setzero_si512()); } -static __inline__ __mmask32 __DEFAULT_FN_ATTRS512 -_mm512_test_epi16_mask (__m512i __A, __m512i __B) -{ +static __inline__ __mmask32 __DEFAULT_FN_ATTRS512_CONSTEXPR +_mm512_test_epi16_mask(__m512i __A, __m512i __B) { return _mm512_cmpneq_epi16_mask (_mm512_and_epi32 (__A, __B), _mm512_setzero_si512()); } -static __inline__ __mmask32 __DEFAULT_FN_ATTRS512 -_mm512_mask_test_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B) -{ +static __inline__ __mmask32 __DEFAULT_FN_ATTRS512_CONSTEXPR +_mm512_mask_test_epi16_mask(__mmask32 __U, __m512i __A, __m512i __B) { return _mm512_mask_cmpneq_epi16_mask (__U, _mm512_and_epi32 (__A, __B), _mm512_setzero_si512()); } -static __inline__ __mmask64 __DEFAULT_FN_ATTRS512 -_mm512_testn_epi8_mask (__m512i __A, __m512i __B) -{ +static __inline__ __mmask64 __DEFAULT_FN_ATTRS512_CONSTEXPR +_mm512_testn_epi8_mask(__m512i __A, __m512i __B) { return _mm512_cmpeq_epi8_mask (_mm512_and_epi32 (__A, __B), _mm512_setzero_si512()); } -static __inline__ __mmask64 __DEFAULT_FN_ATTRS512 -_mm512_mask_testn_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B) -{ +static __inline__ __mmask64 __DEFAULT_FN_ATTRS512_CONSTEXPR +_mm512_mask_testn_epi8_mask(__mmask64 __U, __m512i __A, __m512i __B) { return _mm512_mask_cmpeq_epi8_mask (__U, _mm512_and_epi32 (__A, __B), _mm512_setzero_si512()); } -static __inline__ __mmask32 __DEFAULT_FN_ATTRS512 -_mm512_testn_epi16_mask (__m512i __A, __m512i __B) -{ +static __inline__ __mmask32 __DEFAULT_FN_ATTRS512_CONSTEXPR +_mm512_testn_epi16_mask(__m512i __A, __m512i __B) { return _mm512_cmpeq_epi16_mask (_mm512_and_epi32 (__A, __B), _mm512_setzero_si512()); } -static __inline__ __mmask32 __DEFAULT_FN_ATTRS512 -_mm512_mask_testn_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B) -{ +static __inline__ __mmask32 __DEFAULT_FN_ATTRS512_CONSTEXPR +_mm512_mask_testn_epi16_mask(__mmask32 __U, __m512i __A, __m512i __B) { return _mm512_mask_cmpeq_epi16_mask (__U, _mm512_and_epi32 (__A, __B), _mm512_setzero_si512()); } diff --git a/clang/lib/Headers/avx512fintrin.h b/clang/lib/Headers/avx512fintrin.h index edd33968848f3..698f869f4549e 100644 --- a/clang/lib/Headers/avx512fintrin.h +++ b/clang/lib/Headers/avx512fintrin.h @@ -8202,58 +8202,50 @@ _mm512_maskz_compress_epi32(__mmask16 __U, __m512i __A) { /* Bit Test */ -static __inline __mmask16 __DEFAULT_FN_ATTRS512 -_mm512_test_epi32_mask (__m512i __A, __m512i __B) -{ +static __inline __mmask16 __DEFAULT_FN_ATTRS512_CONSTEXPR +_mm512_test_epi32_mask(__m512i __A, __m512i __B) { return _mm512_cmpneq_epi32_mask (_mm512_and_epi32(__A, __B), _mm512_setzero_si512()); } -static __inline__ __mmask16 __DEFAULT_FN_ATTRS512 -_mm512_mask_test_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B) -{ +static __inline__ __mmask16 __DEFAULT_FN_ATTRS512_CONSTEXPR +_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_si512()); } -static __inline __mmask8 __DEFAULT_FN_ATTRS512 -_mm512_test_epi64_mask (__m512i __A, __m512i __B) -{ +static __inline __mmask8 __DEFAULT_FN_ATTRS512_CONSTEXPR +_mm512_test_epi64_mask(__m512i __A, __m512i __B) { return _mm512_cmpneq_epi64_mask (_mm512_and_epi32 (__A, __B), _mm512_setzero_si512()); } -static __inline__ __mmask8 __DEFAULT_FN_ATTRS512 -_mm512_mask_test_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B) -{ +static __inline__ __mmask8 __DEFAULT_FN_ATTRS512_CONSTEXPR +_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_si512()); } -static __inline__ __mmask16 __DEFAULT_FN_ATTRS512 -_mm512_testn_epi32_mask (__m512i __A, __m512i __B) -{ +static __inline__ __mmask16 __DEFAULT_FN_ATTRS512_CONSTEXPR +_mm512_testn_epi32_mask(__m512i __A, __m512i __B) { return _mm512_cmpeq_epi32_mask (_mm512_and_epi32 (__A, __B), _mm512_setzero_si512()); } -static __inline__ __mmask16 __DEFAULT_FN_ATTRS512 -_mm512_mask_testn_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B) -{ +static __inline__ __mmask16 __DEFAULT_FN_ATTRS512_CONSTEXPR +_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_si512()); } -static __inline__ __mmask8 __DEFAULT_FN_ATTRS512 -_mm512_testn_epi64_mask (__m512i __A, __m512i __B) -{ +static __inline__ __mmask8 __DEFAULT_FN_ATTRS512_CONSTEXPR +_mm512_testn_epi64_mask(__m512i __A, __m512i __B) { return _mm512_cmpeq_epi64_mask (_mm512_and_epi32 (__A, __B), _mm512_setzero_si512()); } -static __inline__ __mmask8 __DEFAULT_FN_ATTRS512 -_mm512_mask_testn_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B) -{ +static __inline__ __mmask8 __DEFAULT_FN_ATTRS512_CONSTEXPR +_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_si512()); } diff --git a/clang/lib/Headers/avx512vlbwintrin.h b/clang/lib/Headers/avx512vlbwintrin.h index fb5d9d4dcc904..930261d981585 100644 --- a/clang/lib/Headers/avx512vlbwintrin.h +++ b/clang/lib/Headers/avx512vlbwintrin.h @@ -2394,36 +2394,31 @@ _mm256_test_epi8_mask(__m256i __A, __m256i __B) { _mm256_setzero_si256()); } -static __inline__ __mmask32 __DEFAULT_FN_ATTRS256 -_mm256_mask_test_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B) -{ +static __inline__ __mmask32 __DEFAULT_FN_ATTRS256_CONSTEXPR +_mm256_mask_test_epi8_mask(__mmask32 __U, __m256i __A, __m256i __B) { return _mm256_mask_cmpneq_epi8_mask (__U, _mm256_and_si256(__A, __B), _mm256_setzero_si256()); } -static __inline__ __mmask8 __DEFAULT_FN_ATTRS128 -_mm_test_epi16_mask (__m128i __A, __m128i __B) -{ +static __inline__ __mmask8 __DEFAULT_FN_ATTRS128_CONSTEXPR +_mm_test_epi16_mask(__m128i __A, __m128i __B) { return _mm_cmpneq_epi16_mask (_mm_and_si128 (__A, __B), _mm_setzero_si128()); } -static __inline__ __mmask8 __DEFAULT_FN_ATTRS128 -_mm_mask_test_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B) -{ +static __inline__ __mmask8 __DEFAULT_FN_ATTRS128_CONSTEXPR +_mm_mask_test_epi16_mask(__mmask8 __U, __m128i __A, __m128i __B) { return _mm_mask_cmpneq_epi16_mask (__U, _mm_and_si128 (__A, __B), _mm_setzero_si128()); } -static __inline__ __mmask16 __DEFAULT_FN_ATTRS256 -_mm256_test_epi16_mask (__m256i __A, __m256i __B) -{ +static __inline__ __mmask16 __DEFAULT_FN_ATTRS256_CONSTEXPR +_mm256_test_epi16_mask(__m256i __A, __m256i __B) { return _mm256_cmpneq_epi16_mask (_mm256_and_si256 (__A, __B), _mm256_setzero_si256 ()); } -static __inline__ __mmask16 __DEFAULT_FN_ATTRS256 -_mm256_mask_test_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B) -{ +static __inline__ __mmask16 __DEFAULT_FN_ATTRS256_CONSTEXPR +_mm256_mask_test_epi16_mask(__mmask16 __U, __m256i __A, __m256i __B) { return _mm256_mask_cmpneq_epi16_mask (__U, _mm256_and_si256(__A, __B), _mm256_setzero_si256()); } @@ -2433,49 +2428,42 @@ _mm_testn_epi8_mask(__m128i __A, __m128i __B) { return _mm_cmpeq_epi8_mask (_mm_and_si128 (__A, __B), _mm_setzero_si128()); } -static __inline__ __mmask16 __DEFAULT_FN_ATTRS128 -_mm_mask_testn_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B) -{ +static __inline__ __mmask16 __DEFAULT_FN_ATTRS128_CONSTEXPR +_mm_mask_testn_epi8_mask(__mmask16 __U, __m128i __A, __m128i __B) { return _mm_mask_cmpeq_epi8_mask (__U, _mm_and_si128 (__A, __B), _mm_setzero_si128()); } -static __inline__ __mmask32 __DEFAULT_FN_ATTRS256 -_mm256_testn_epi8_mask (__m256i __A, __m256i __B) -{ +static __inline__ __mmask32 __DEFAULT_FN_ATTRS256_CONSTEXPR +_mm256_testn_epi8_mask(__m256i __A, __m256i __B) { return _mm256_cmpeq_epi8_mask (_mm256_and_si256 (__A, __B), _mm256_setzero_si256()); } -static __inline__ __mmask32 __DEFAULT_FN_ATTRS256 -_mm256_mask_testn_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B) -{ +static __inline__ __mmask32 __DEFAULT_FN_ATTRS256_CONSTEXPR +_mm256_mask_testn_epi8_mask(__mmask32 __U, __m256i __A, __m256i __B) { return _mm256_mask_cmpeq_epi8_mask (__U, _mm256_and_si256 (__A, __B), _mm256_setzero_si256()); } -static __inline__ __mmask8 __DEFAULT_FN_ATTRS128 -_mm_testn_epi16_mask (__m128i __A, __m128i __B) -{ +static __inline__ __mmask8 __DEFAULT_FN_ATTRS128_CONSTEXPR +_mm_testn_epi16_mask(__m128i __A, __m128i __B) { return _mm_cmpeq_epi16_mask (_mm_and_si128 (__A, __B), _mm_setzero_si128()); } -static __inline__ __mmask8 __DEFAULT_FN_ATTRS128 -_mm_mask_testn_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B) -{ +static __inline__ __mmask8 __DEFAULT_FN_ATTRS128_CONSTEXPR +_mm_mask_testn_epi16_mask(__mmask8 __U, __m128i __A, __m128i __B) { return _mm_mask_cmpeq_epi16_mask (__U, _mm_and_si128(__A, __B), _mm_setzero_si128()); } -static __inline__ __mmask16 __DEFAULT_FN_ATTRS256 -_mm256_testn_epi16_mask (__m256i __A, __m256i __B) -{ +static __inline__ __mmask16 __DEFAULT_FN_ATTRS256_CONSTEXPR +_mm256_testn_epi16_mask(__m256i __A, __m256i __B) { return _mm256_cmpeq_epi16_mask (_mm256_and_si256(__A, __B), _mm256_setzero_si256()); } -static __inline__ __mmask16 __DEFAULT_FN_ATTRS256 -_mm256_mask_testn_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B) -{ +static __inline__ __mmask16 __DEFAULT_FN_ATTRS256_CONSTEXPR +_mm256_mask_testn_epi16_mask(__mmask16 __U, __m256i __A, __m256i __B) { return _mm256_mask_cmpeq_epi16_mask (__U, _mm256_and_si256 (__A, __B), _mm256_setzero_si256()); } diff --git a/clang/lib/Headers/avx512vlintrin.h b/clang/lib/Headers/avx512vlintrin.h index c816b9ef77a6f..fe80857f171ab 100644 --- a/clang/lib/Headers/avx512vlintrin.h +++ b/clang/lib/Headers/avx512vlintrin.h @@ -5887,110 +5887,94 @@ _mm256_maskz_permutevar_ps(__mmask8 __U, __m256 __A, __m256i __C) { (__v8sf)_mm256_setzero_ps()); } -static __inline__ __mmask8 __DEFAULT_FN_ATTRS128 -_mm_test_epi32_mask (__m128i __A, __m128i __B) -{ +static __inline__ __mmask8 __DEFAULT_FN_ATTRS128_CONSTEXPR +_mm_test_epi32_mask(__m128i __A, __m128i __B) { return _mm_cmpneq_epi32_mask (_mm_and_si128 (__A, __B), _mm_setzero_si128()); } -static __inline__ __mmask8 __DEFAULT_FN_ATTRS128 -_mm_mask_test_epi32_mask (__mmask8 __U, __m128i __A, __m128i __B) -{ +static __inline__ __mmask8 __DEFAULT_FN_ATTRS128_CONSTEXPR +_mm_mask_test_epi32_mask(__mmask8 __U, __m128i __A, __m128i __B) { return _mm_mask_cmpneq_epi32_mask (__U, _mm_and_si128 (__A, __B), _mm_setzero_si128()); } -static __inline__ __mmask8 __DEFAULT_FN_ATTRS256 -_mm256_test_epi32_mask (__m256i __A, __m256i __B) -{ +static __inline__ __mmask8 __DEFAULT_FN_ATTRS256_CONSTEXPR +_mm256_test_epi32_mask(__m256i __A, __m256i __B) { return _mm256_cmpneq_epi32_mask (_mm256_and_si256 (__A, __B), _mm256_setzero_si256()); } -static __inline__ __mmask8 __DEFAULT_FN_ATTRS256 -_mm256_mask_test_epi32_mask (__mmask8 __U, __m256i __A, __m256i __B) -{ +static __inline__ __mmask8 __DEFAULT_FN_ATTRS256_CONSTEXPR +_mm256_mask_test_epi32_mask(__mmask8 __U, __m256i __A, __m256i __B) { return _mm256_mask_cmpneq_epi32_mask (__U, _mm256_and_si256 (__A, __B), _mm256_setzero_si256()); } -static __inline__ __mmask8 __DEFAULT_FN_ATTRS128 -_mm_test_epi64_mask (__m128i __A, __m128i __B) -{ +static __inline__ __mmask8 __DEFAULT_FN_ATTRS128_CONSTEXPR +_mm_test_epi64_mask(__m128i __A, __m128i __B) { return _mm_cmpneq_epi64_mask (_mm_and_si128 (__A, __B), _mm_setzero_si128()); } -static __inline__ __mmask8 __DEFAULT_FN_ATTRS128 -_mm_mask_test_epi64_mask (__mmask8 __U, __m128i __A, __m128i __B) -{ +static __inline__ __mmask8 __DEFAULT_FN_ATTRS128_CONSTEXPR +_mm_mask_test_epi64_mask(__mmask8 __U, __m128i __A, __m128i __B) { return _mm_mask_cmpneq_epi64_mask (__U, _mm_and_si128 (__A, __B), _mm_setzero_si128()); } -static __inline__ __mmask8 __DEFAULT_FN_ATTRS256 -_mm256_test_epi64_mask (__m256i __A, __m256i __B) -{ +static __inline__ __mmask8 __DEFAULT_FN_ATTRS256_CONSTEXPR +_mm256_test_epi64_mask(__m256i __A, __m256i __B) { return _mm256_cmpneq_epi64_mask (_mm256_and_si256 (__A, __B), _mm256_setzero_si256()); } -static __inline__ __mmask8 __DEFAULT_FN_ATTRS256 -_mm256_mask_test_epi64_mask (__mmask8 __U, __m256i __A, __m256i __B) -{ +static __inline__ __mmask8 __DEFAULT_FN_ATTRS256_CONSTEXPR +_mm256_mask_test_epi64_mask(__mmask8 __U, __m256i __A, __m256i __B) { return _mm256_mask_cmpneq_epi64_mask (__U, _mm256_and_si256 (__A, __B), _mm256_setzero_si256()); } -static __inline__ __mmask8 __DEFAULT_FN_ATTRS128 -_mm_testn_epi32_mask (__m128i __A, __m128i __B) -{ +static __inline__ __mmask8 __DEFAULT_FN_ATTRS128_CONSTEXPR +_mm_testn_epi32_mask(__m128i __A, __m128i __B) { return _mm_cmpeq_epi32_mask (_mm_and_si128 (__A, __B), _mm_setzero_si128()); } -static __inline__ __mmask8 __DEFAULT_FN_ATTRS128 -_mm_mask_testn_epi32_mask (__mmask8 __U, __m128i __A, __m128i __B) -{ +static __inline__ __mmask8 __DEFAULT_FN_ATTRS128_CONSTEXPR +_mm_mask_testn_epi32_mask(__mmask8 __U, __m128i __A, __m128i __B) { return _mm_mask_cmpeq_epi32_mask (__U, _mm_and_si128 (__A, __B), _mm_setzero_si128()); } -static __inline__ __mmask8 __DEFAULT_FN_ATTRS256 -_mm256_testn_epi32_mask (__m256i __A, __m256i __B) -{ +static __inline__ __mmask8 __DEFAULT_FN_ATTRS256_CONSTEXPR +_mm256_testn_epi32_mask(__m256i __A, __m256i __B) { return _mm256_cmpeq_epi32_mask (_mm256_and_si256 (__A, __B), _mm256_setzero_si256()); } -static __inline__ __mmask8 __DEFAULT_FN_ATTRS256 -_mm256_mask_testn_epi32_mask (__mmask8 __U, __m256i __A, __m256i __B) -{ +static __inline__ __mmask8 __DEFAULT_FN_ATTRS256_CONSTEXPR +_mm256_mask_testn_epi32_mask(__mmask8 __U, __m256i __A, __m256i __B) { return _mm256_mask_cmpeq_epi32_mask (__U, _mm256_and_si256 (__A, __B), _mm256_setzero_si256()); } -static __inline__ __mmask8 __DEFAULT_FN_ATTRS128 -_mm_testn_epi64_mask (__m128i __A, __m128i __B) -{ +static __inline__ __mmask8 __DEFAULT_FN_ATTRS128_CONSTEXPR +_mm_testn_epi64_mask(__m128i __A, __m128i __B) { return _mm_cmpeq_epi64_mask (_mm_and_si128 (__A, __B), _mm_setzero_si128()); } -static __inline__ __mmask8 __DEFAULT_FN_ATTRS128 -_mm_mask_testn_epi64_mask (__mmask8 __U, __m128i __A, __m128i __B) -{ +static __inline__ __mmask8 __DEFAULT_FN_ATTRS128_CONSTEXPR +_mm_mask_testn_epi64_mask(__mmask8 __U, __m128i __A, __m128i __B) { return _mm_mask_cmpeq_epi64_mask (__U, _mm_and_si128 (__A, __B), _mm_setzero_si128()); } -static __inline__ __mmask8 __DEFAULT_FN_ATTRS256 -_mm256_testn_epi64_mask (__m256i __A, __m256i __B) -{ +static __inline__ __mmask8 __DEFAULT_FN_ATTRS256_CONSTEXPR +_mm256_testn_epi64_mask(__m256i __A, __m256i __B) { return _mm256_cmpeq_epi64_mask (_mm256_and_si256 (__A, __B), _mm256_setzero_si256()); } -static __inline__ __mmask8 __DEFAULT_FN_ATTRS256 -_mm256_mask_testn_epi64_mask (__mmask8 __U, __m256i __A, __m256i __B) -{ +static __inline__ __mmask8 __DEFAULT_FN_ATTRS256_CONSTEXPR +_mm256_mask_testn_epi64_mask(__mmask8 __U, __m256i __A, __m256i __B) { return _mm256_mask_cmpeq_epi64_mask (__U, _mm256_and_si256 (__A, __B), _mm256_setzero_si256()); } diff --git a/clang/test/CodeGen/X86/avx512bw-builtins.c b/clang/test/CodeGen/X86/avx512bw-builtins.c index 96b809cffdd9f..2020b72a649ae 100644 --- a/clang/test/CodeGen/X86/avx512bw-builtins.c +++ b/clang/test/CodeGen/X86/avx512bw-builtins.c @@ -2861,7 +2861,12 @@ __mmask64 test_mm512_test_epi8_mask(__m512i __A, __m512i __B) { // CHECK: and <16 x i32> %{{.*}}, %{{.*}} // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}} return _mm512_test_epi8_mask(__A, __B); -} +} + +TEST_CONSTEXPR(_mm512_test_epi8_mask( + ((__m512i)(__v64qs){-15, -66, 2, -45, -13, 29, -13, -76, -1, -94, 8, 81, 3, -80, 9, 90, 3, -50, 10, -25, -2, -31, 12, 81, 14, -80, -13, -36, 5, 9, -2, 3, 9, 74, -1, -73, -1, -37, -2, 72, 6, 97, -10, 37, -1, 4, -4, 39, 8, -21, 5, 38, 6, 74, -12, -15, -13, 49, 14, -92, -1, -81, 11, 88}), + ((__m512i)(__v64qs){-46, -66, 55, -45, 113, -65, 86, -65, -115, -89, -80, 113, -107, -66, 116, -34, -81, -50, -17, -17, -54, -19, 41, -9, 39, -3, 30, -2, -49, 73, -121, -93, 52, -5, -108, -73, -123, -5, -30, -51, -82, 111, -64, -27, -19, -74, 92, -65, -53, -1, -124, 54, -26, 78, 101, -9, 40, 125, -57, -1, -84, -65, 32, -4}) +) == (__mmask64)0xbffffffeffffbbff); void test_mm512_storeu_epi8(void *__P, __m512i __A) { // CHECK-LABEL: test_mm512_storeu_epi8 @@ -2882,6 +2887,12 @@ __mmask64 test_mm512_mask_test_epi8_mask(__mmask64 __U, __m512i __A, __m512i __B return _mm512_mask_test_epi8_mask(__U, __A, __B); } +TEST_CONSTEXPR(_mm512_mask_test_epi8_mask( + (__mmask64)0xaaaaaaaaaaaaaaaa, + ((__m512i)(__v64qs){20, 45, -30, 67, 89, -12, 54, -78, 91, 33, -88, 76, 44, -56, 109, 22, -67, 88, 34, -91, 77, 45, -123, 66, 34, -99, 87, 23, -76, 112, 56, -34, 91, 44, -67, 89, 23, -101, 78, 56, -89, 67, 44, -78, 91, 23, -87, 109, 56, -44, 88, 33, -91, 76, 45, -67, 89, 34, -102, 77, 56, -88, 91, 44}), + ((__m512i)(__v64qs){-20, -45, 30, -67, -89, 12, -54, 78, -91, -33, 88, -76, -44, 56, -109, -22, 67, -88, -34, 91, -77, -45, 123, -66, -34, 99, -87, -23, 76, -112, -56, 34, -91, -44, 67, -89, -23, 101, -78, -56, 89, -67, -44, 78, -91, -23, 87, -109, -56, 44, -88, -33, 91, -76, -45, 67, -89, -34, 102, -77, -56, 88, -91, -44}) +) == (__mmask64)0xaaaaaaaaaaaaaaaa); + __mmask32 test_mm512_test_epi16_mask(__m512i __A, __m512i __B) { // CHECK-LABEL: test_mm512_test_epi16_mask // CHECK: and <16 x i32> %{{.*}}, %{{.*}} @@ -2889,6 +2900,11 @@ __mmask32 test_mm512_test_epi16_mask(__m512i __A, __m512i __B) { return _mm512_test_epi16_mask(__A, __B); } +TEST_CONSTEXPR(_mm512_test_epi16_mask( + ((__m512i)(__v32hi){45, -67, 88, 23, -91, 76, 34, -112, 67, 89, -45, 77, 56, -88, 91, 44, -67, 88, 34, -91, 77, 45, -123, 66, 89, -44, 76, 33, -91, 88, 45, -78}), + ((__m512i)(__v32hi){-45, 67, -88, -23, 91, -76, -34, 112, -67, -89, 45, -77, -56, 88, -91, -44, 67, -88, -34, 91, -77, -45, 123, -66, -89, 44, -76, -33, 91, -88, -45, 78}) +) == (__mmask32)0xffffffff); + __mmask32 test_mm512_mask_test_epi16_mask(__mmask32 __U, __m512i __A, __m512i __B) { // CHECK-LABEL: test_mm512_mask_test_epi16_mask // CHECK: and <16 x i32> %{{.*}}, %{{.*}} @@ -2897,6 +2913,12 @@ __mmask32 test_mm512_mask_test_epi16_mask(__mmask32 __U, __m512i __A, __m512i __ return _mm512_mask_test_epi16_mask(__U, __A, __B); } +TEST_CONSTEXPR(_mm512_mask_test_epi16_mask( + (__mmask32)0x55555555, + ((__m512i)(__v32hi){-199, 7714, -208, -1362, 209, 9551, 167, -774, 72, 9352, 33, -7329, -169, -8586, 139, 97, 66, -4065, -173, 6613, -89, -476, -124, -7227, 7, -7438, -198, -2009, 14, -942, -5, 9905}), + ((__m512i)(__v32hi){20634, 19106, -6623, 2494, 25733, -30897, 16385, 5374, -8135, 2537, -12516, 31487, -10307, 7543, -4838, -7817, 8275, 13535, -17882, -12545, 29549, 19070, 5415, 16607, -31893, -23049, 6730, -2321, 4674, -25250, 12393, -17739}) +) == (__mmask32)0x55555155); + __mmask64 test_mm512_testn_epi8_mask(__m512i __A, __m512i __B) { // CHECK-LABEL: test_mm512_testn_epi8_mask // CHECK: and <16 x i32> %{{.*}}, %{{.*}} @@ -2904,6 +2926,11 @@ __mmask64 test_mm512_testn_epi8_mask(__m512i __A, __m512i __B) { return _mm512_testn_epi8_mask(__A, __B); } +TEST_CONSTEXPR(_mm512_testn_epi8_mask( + ((__m512i)(__v64qs){-15, -66, 2, -45, -13, 29, -13, -76, -1, -94, 8, 81, 3, -80, 9, 90, 3, -50, 10, -25, -2, -31, 12, 81, 14, -80, -13, -36, 5, 9, -2, 3, 9, 74, -1, -73, -1, -37, -2, 72, 6, 97, -10, 37, -1, 4, -4, 39, 8, -21, 5, 38, 6, 74, -12, -15, -13, 49, 14, -92, -1, -81, 11, 88}), + ((__m512i)(__v64qs){-46, -66, 55, -45, 113, -65, 86, -65, -115, -89, -80, 113, -107, -66, 116, -34, -81, -50, -17, -17, -54, -19, 41, -9, 39, -3, 30, -2, -49, 73, -121, -93, 52, -5, -108, -73, -123, -5, -30, -51, -82, 111, -64, -27, -19, -74, 92, -65, -53, -1, -124, 54, -26, 78, 101, -9, 40, 125, -57, -1, -84, -65, 32, -4}) +) == (__mmask64)0x4000000100004400); + __mmask64 test_mm512_mask_testn_epi8_mask(__mmask64 __U, __m512i __A, __m512i __B) { // CHECK-LABEL: test_mm512_mask_testn_epi8_mask // CHECK: and <16 x i32> %{{.*}}, %{{.*}} @@ -2912,6 +2939,12 @@ __mmask64 test_mm512_mask_testn_epi8_mask(__mmask64 __U, __m512i __A, __m512i __ return _mm512_mask_testn_epi8_mask(__U, __A, __B); } +TEST_CONSTEXPR(_mm512_mask_testn_epi8_mask( + (__mmask64)0x5555555555555555, + ((__m512i)(__v64qs){1, 2, 4, 8, 16, 32, 64, 127, 1, 2, 4, 8, 16, 32, 64, 127, 1, 2, 4, 8, 16, 32, 64, 127, 1, 2, 4, 8, 16, 32, 64, 127, 1, 2, 4, 8, 16, 32, 64, 127, 1, 2, 4, 8, 16, 32, 64, 127, 1, 2, 4, 8, 16, 32, 64, 127, 1, 2, 4, 8, 16, 32, 64, 127}), + ((__m512i)(__v64qs){-2, -3, -5, -9, -17, -33, -65, -128, -2, -3, -5, -9, -17, -33, -65, -128, -2, -3, -5, -9, -17, -33, -65, -128, -2, -3, -5, -9, -17, -33, -65, -128, -2, -3, -5, -9, -17, -33, -65, -128, -2, -3, -5, -9, -17, -33, -65, -128, -2, -3, -5, -9, -17, -33, -65, -128, -2, -3, -5, -9, -17, -33, -65, -128}) +) == (__mmask64)0x5555555555555555); + __mmask32 test_mm512_testn_epi16_mask(__m512i __A, __m512i __B) { // CHECK-LABEL: test_mm512_testn_epi16_mask // CHECK: and <16 x i32> %{{.*}}, %{{.*}} @@ -2919,6 +2952,11 @@ __mmask32 test_mm512_testn_epi16_mask(__m512i __A, __m512i __B) { return _mm512_testn_epi16_mask(__A, __B); } +TEST_CONSTEXPR(_mm512_testn_epi16_mask( + ((__m512i)(__v32hi){1, 2, 4, 8, 16, 32, 64, 127, 1, 2, 4, 8, 16, 32, 64, 127, 1, 2, 4, 8, 16, 32, 64, 127, 1, 2, 4, 8, 16, 32, 64, 127}), + ((__m512i)(__v32hi){-2, -3, -5, -9, -17, -33, -65, -128, -2, -3, -5, -9, -17, -33, -65, -128, -2, -3, -5, -9, -17, -33, -65, -128, -2, -3, -5, -9, -17, -33, -65, -128}) +) == (__mmask32)0xffffffff); + __mmask32 test_mm512_mask_testn_epi16_mask(__mmask32 __U, __m512i __A, __m512i __B) { // CHECK-LABEL: test_mm512_mask_testn_epi16_mask // CHECK: and <16 x i32> %{{.*}}, %{{.*}} @@ -2927,6 +2965,12 @@ __mmask32 test_mm512_mask_testn_epi16_mask(__mmask32 __U, __m512i __A, __m512i _ return _mm512_mask_testn_epi16_mask(__U, __A, __B); } +TEST_CONSTEXPR(_mm512_mask_testn_epi16_mask( + (__mmask32)0x55555555, + ((__m512i)(__v32hi){-199, 7714, -208, -1362, 209, 9551, 167, -774, 72, 9352, 33, -7329, -169, -8586, 139, 97, 66, -4065, -173, 6613, -89, -476, -124, -7227, 7, -7438, -198, -2009, 14, -942, -5, 9905}), + ((__m512i)(__v32hi){20634, 19106, -6623, 2494, 25733, -30897, 16385, 5374, -8135, 2537, -12516, 31487, -10307, 7543, -4838, -7817, 8275, 13535, -17882, -12545, 29549, 19070, 5415, 16607, -31893, -23049, 6730, -2321, 4674, -25250, 12393, -17739}) +) == (__mmask32)0x00000400); + __mmask64 test_mm512_movepi8_mask(__m512i __A) { // CHECK-LABEL: test_mm512_movepi8_mask // CHECK: [[CMP:%.*]] = icmp slt <64 x i8> %{{.*}}, zeroinitializer diff --git a/clang/test/CodeGen/X86/avx512f-builtins.c b/clang/test/CodeGen/X86/avx512f-builtins.c index af6d86ced584b..249a917a00461 100644 --- a/clang/test/CodeGen/X86/avx512f-builtins.c +++ b/clang/test/CodeGen/X86/avx512f-builtins.c @@ -5887,6 +5887,18 @@ TEST_CONSTEXPR(match_m512d( (__m512d){101.0, 102.0, 103.0, 104.0, 105.0, 106.0, 107.0, 108.0}), 1.0, 108.0, 1.0, 8.0, 2.0, 2.0, 3.0, 3.0)); +__mmask16 test_mm512_test_epi32_mask(__m512i __A, __m512i __B) { + // CHECK-LABEL: test_mm512_test_epi32_mask + // CHECK: and <16 x i32> %{{.*}}, %{{.*}} + // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}} + return _mm512_test_epi32_mask(__A, __B); +} + +TEST_CONSTEXPR(_mm512_test_epi32_mask( + ((__m512i)(__v16si){12, 25, 38, 51, 64, 77, 90, 103, 116, 129, 142, 155, 168, 181, 194, 207}), + ((__m512i)(__v16si){4, 0, 6, 0, 8, 0, 10, 0, 12, 0, 14, 0, 16, 0, 18, 0}) +) == (__mmask16)0x4545); + __mmask16 test_mm512_testn_epi32_mask(__m512i __A, __m512i __B) { // CHECK-LABEL: test_mm512_testn_epi32_mask // CHECK: and <16 x i32> %{{.*}}, %{{.*}} @@ -5894,6 +5906,11 @@ __mmask16 test_mm512_testn_epi32_mask(__m512i __A, __m512i __B) { return _mm512_testn_epi32_mask(__A, __B); } +TEST_CONSTEXPR(_mm512_testn_epi32_mask( + ((__m512i)(__v16si){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}), + ((__m512i)(__v16si){1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0}) +) == (__mmask16)0xaaaa); + __mmask16 test_mm512_mask_testn_epi32_mask(__mmask16 __U, __m512i __A, __m512i __B) { // CHECK-LABEL: test_mm512_mask_testn_epi32_mask // CHECK: and <16 x i32> %{{.*}}, %{{.*}} @@ -5902,13 +5919,36 @@ __mmask16 test_mm512_mask_testn_epi32_mask(__mmask16 __U, __m512i __A, __m512i _ return _mm512_mask_testn_epi32_mask(__U, __A, __B); } +TEST_CONSTEXPR(_mm512_mask_testn_epi32_mask( + (__mmask16)0x00ff, + ((__m512i)(__v16si){2887, -199459, -5595, 207077, 53140, -229505, 7854, -45521, -10031, -69855, 26898, 1398, -21387, -337371, -20689, 295044}), + ((__m512i)(__v16si){-727662, 249055, -763143, 32741, 185776, 665855, 590967, 546559, 777954, 233715, 203962, 969215, 325997, 230077, -119727, 260598}) +) == (__mmask16)0x0000); + +__mmask8 test_mm512_test_epi64_mask(__m512i __A, __m512i __B) { + // CHECK-LABEL: test_mm512_test_epi64_mask + // CHECK: and <16 x i32> %{{.*}}, %{{.*}} + // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}} + return _mm512_test_epi64_mask(__A, __B); +} + +TEST_CONSTEXPR(_mm512_test_epi64_mask( + ((__m512i)(__v8di){-50, -45408, -221, 16141, 88, -79206, 213, -76258}), + ((__m512i)(__v8di){50312, 547813, -35606, 176877, 98239, 732863, 64269, 141183}) +) == (__mmask8)0xff); + __mmask8 test_mm512_testn_epi64_mask(__m512i __A, __m512i __B) { // CHECK-LABEL: test_mm512_testn_epi64_mask // CHECK: and <16 x i32> %{{.*}}, %{{.*}} // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}} - return _mm512_testn_epi64_mask(__A, __B); + return _mm512_testn_epi64_mask(__A, __B); } +TEST_CONSTEXPR(_mm512_testn_epi64_mask( + ((__m512i)(__v8di){-50, -45408, -221, 16141, 88, -79206, 213, -76258}), + ((__m512i)(__v8di){50312, 547813, -35606, 176877, 98239, 732863, 64269, 141183}) +) == (__mmask8)0x00); + __mmask8 test_mm512_mask_testn_epi64_mask(__mmask8 __U, __m512i __A, __m512i __B) { // CHECK-LABEL: test_mm512_mask_testn_epi64_mask // CHECK: and <16 x i32> %{{.*}}, %{{.*}} @@ -5917,6 +5957,12 @@ __mmask8 test_mm512_mask_testn_epi64_mask(__mmask8 __U, __m512i __A, __m512i __B return _mm512_mask_testn_epi64_mask(__U, __A, __B); } +TEST_CONSTEXPR(_mm512_mask_testn_epi64_mask( + (__mmask8)0x55, + ((__m512i)(__v8di){-19, 65680, -249, -68576, 11, -39009, 2, -2654}), + ((__m512i)(__v8di){33489, 895378, -75114, 849966, -38304, 974303, 54148, 154851}) +) == (__mmask8)0x50); + __mmask16 test_mm512_mask_test_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B) { // CHECK-LABEL: test_mm512_mask_test_epi32_mask @@ -5925,6 +5971,12 @@ __mmask16 test_mm512_mask_test_epi32_mask (__mmask16 __U, __m512i __A, __m512i _ return _mm512_mask_test_epi32_mask (__U,__A,__B); } +TEST_CONSTEXPR(_mm512_mask_test_epi32_mask( + (__mmask16)0x00ff, + ((__m512i)(__v16si){2887, -199459, -5595, 207077, 53140, -229505, 7854, -45521, -10031, -69855, 26898, 1398, -21387, -337371, -20689, 295044}), + ((__m512i)(__v16si){-727662, 249055, -763143, 32741, 185776, 665855, 590967, 546559, 777954, 233715, 203962, 969215, 325997, 230077, -119727, 260598}) +) == (__mmask16)0x00ff); + __mmask8 test_mm512_mask_test_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B) { // CHECK-LABEL: test_mm512_mask_test_epi64_mask @@ -5934,6 +5986,12 @@ __mmask8 test_mm512_mask_test_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B return _mm512_mask_test_epi64_mask (__U,__A,__B); } +TEST_CONSTEXPR(_mm512_mask_test_epi64_mask( + (__mmask8)0x55, + ((__m512i)(__v8di){-19, 65680, -249, -68576, 11, -39009, 2, -2654}), + ((__m512i)(__v8di){33489, 895378, -75114, 849966, -38304, 974303, 54148, 154851}) +) == (__mmask8)0x05); + __m512i test_mm512_maskz_unpackhi_epi32(__mmask16 __U, __m512i __A, __m512i __B) { // CHECK-LABEL: test_mm512_maskz_unpackhi_epi32 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31> diff --git a/clang/test/CodeGen/X86/avx512vl-builtins.c b/clang/test/CodeGen/X86/avx512vl-builtins.c index 4a685c5474dc2..7d42943d68ca8 100644 --- a/clang/test/CodeGen/X86/avx512vl-builtins.c +++ b/clang/test/CodeGen/X86/avx512vl-builtins.c @@ -8313,6 +8313,11 @@ __mmask8 test_mm_test_epi32_mask(__m128i __A, __m128i __B) { return _mm_test_epi32_mask(__A, __B); } +TEST_CONSTEXPR(_mm_test_epi32_mask( + ((__m128i)(__v4si){0, -109, 61, -125}), + ((__m128i)(__v4si){-110, -109, 24, 112}) +) == (__mmask8)0x6); + __mmask8 test_mm_mask_test_epi32_mask(__mmask8 __U, __m128i __A, __m128i __B) { // CHECK-LABEL: test_mm_mask_test_epi32_mask // CHECK: and <2 x i64> %{{.*}}, %{{.*}} @@ -8321,6 +8326,12 @@ __mmask8 test_mm_mask_test_epi32_mask(__mmask8 __U, __m128i __A, __m128i __B) { return _mm_mask_test_epi32_mask(__U, __A, __B); } +TEST_CONSTEXPR(_mm_mask_test_epi32_mask( + (__mmask8)0xc, + ((__m128i)(__v4si){70, 14, 98, -97}), + ((__m128i)(__v4si){70, -109, 75, -97}) +) == (__mmask8)0xc); + __mmask8 test_mm256_test_epi32_mask(__m256i __A, __m256i __B) { // CHECK-LABEL: test_mm256_test_epi32_mask // CHECK: and <4 x i64> %{{.*}}, %{{.*}} @@ -8328,6 +8339,11 @@ __mmask8 test_mm256_test_epi32_mask(__m256i __A, __m256i __B) { return _mm256_test_epi32_mask(__A, __B); } +TEST_CONSTEXPR(_mm256_test_epi32_mask( + ((__m256i)(__v8si){80, -8, -96, 29, -30, 124, 32, -108}), + ((__m256i)(__v8si){-80, 81, -52, 29, 29, 124, 127, 108}) +) == (__mmask8)0xef); + __mmask8 test_mm256_mask_test_epi32_mask(__mmask8 __U, __m256i __A, __m256i __B) { // CHECK-LABEL: test_mm256_mask_test_epi32_mask // CHECK: and <4 x i64> %{{.*}}, %{{.*}} @@ -8336,6 +8352,12 @@ __mmask8 test_mm256_mask_test_epi32_mask(__mmask8 __U, __m256i __A, __m256i __B) return _mm256_mask_test_epi32_mask(__U, __A, __B); } +TEST_CONSTEXPR(_mm256_mask_test_epi32_mask( + (__mmask8)0xb9, + ((__m256i)(__v8si){63, 102, 65, 107, 31, -24, -109, 113}), + ((__m256i)(__v8si){-64, -102, 65, -8, 31, -50, 108, -98}) +) == (__mmask8)0xb8); + __mmask8 test_mm_test_epi64_mask(__m128i __A, __m128i __B) { // CHECK-LABEL: test_mm_test_epi64_mask // CHECK: and <2 x i64> %{{.*}}, %{{.*}} @@ -8343,6 +8365,11 @@ __mmask8 test_mm_test_epi64_mask(__m128i __A, __m128i __B) { return _mm_test_epi64_mask(__A, __B); } +TEST_CONSTEXPR(_mm_test_epi64_mask( + ((__m128i)(__v2di){33698, -44147}), + ((__m128i)(__v2di){56499, -20755}) +) == (__mmask8)0x3); + __mmask8 test_mm_mask_test_epi64_mask(__mmask8 __U, __m128i __A, __m128i __B) { // CHECK-LABEL: test_mm_mask_test_epi64_mask // CHECK: and <2 x i64> %{{.*}}, %{{.*}} @@ -8351,6 +8378,12 @@ __mmask8 test_mm_mask_test_epi64_mask(__mmask8 __U, __m128i __A, __m128i __B) { return _mm_mask_test_epi64_mask(__U, __A, __B); } +TEST_CONSTEXPR(_mm_mask_test_epi64_mask( + (__mmask8)0x2, + ((__m128i)(__v2di){-124, -2299}), + ((__m128i)(__v2di){86100, 552445}) +) == (__mmask8)0x2); + __mmask8 test_mm256_test_epi64_mask(__m256i __A, __m256i __B) { // CHECK-LABEL: test_mm256_test_epi64_mask // CHECK: and <4 x i64> %{{.*}}, %{{.*}} @@ -8358,6 +8391,11 @@ __mmask8 test_mm256_test_epi64_mask(__m256i __A, __m256i __B) { return _mm256_test_epi64_mask(__A, __B); } +TEST_CONSTEXPR(_mm256_test_epi64_mask( + ((__m256i)(__v4di){-70, -11203, -19, -69143}), + ((__m256i)(__v4di){-55003, 22655, -63728, 326379}) +) == (__mmask8)0xf); + __mmask8 test_mm256_mask_test_epi64_mask(__mmask8 __U, __m256i __A, __m256i __B) { // CHECK-LABEL: test_mm256_mask_test_epi64_mask // CHECK: and <4 x i64> %{{.*}}, %{{.*}} @@ -8366,6 +8404,12 @@ __mmask8 test_mm256_mask_test_epi64_mask(__mmask8 __U, __m256i __A, __m256i __B) return _mm256_mask_test_epi64_mask(__U, __A, __B); } +TEST_CONSTEXPR(_mm256_mask_test_epi64_mask( + (__mmask8)0xa, + ((__m256i)(__v4di){24, -44260, 200, -37960}), + ((__m256i)(__v4di){5806, 30268, -78192, 758524}) +) == (__mmask8)0xa); + __mmask8 test_mm_testn_epi32_mask(__m128i __A, __m128i __B) { // CHECK-LABEL: test_mm_testn_epi32_mask // CHECK: and <2 x i64> %{{.*}}, %{{.*}} @@ -8373,6 +8417,11 @@ __mmask8 test_mm_testn_epi32_mask(__m128i __A, __m128i __B) { return _mm_testn_epi32_mask(__A, __B); } +TEST_CONSTEXPR(_mm_testn_epi32_mask( + ((__m128i)(__v4si){9711, 247117, -39835, 93758}), + ((__m128i)(__v4si){-774681, 693085, 256884, 609599}) +) == (__mmask8)0x0); + __mmask8 test_mm_mask_testn_epi32_mask(__mmask8 __U, __m128i __A, __m128i __B) { // CHECK-LABEL: test_mm_mask_testn_epi32_mask // CHECK: and <2 x i64> %{{.*}}, %{{.*}} @@ -8381,6 +8430,12 @@ __mmask8 test_mm_mask_testn_epi32_mask(__mmask8 __U, __m128i __A, __m128i __B) { return _mm_mask_testn_epi32_mask(__U, __A, __B); } +TEST_CONSTEXPR(_mm_mask_testn_epi32_mask( + (__mmask8)0xf0, + ((__m128i)(__v4si){13807, 5601, 45363, -64113}), + ((__m128i)(__v4si){140515, 221935, -127957, 67775}) +) == (__mmask8)0x0); + __mmask8 test_mm256_testn_epi32_mask(__m256i __A, __m256i __B) { // CHECK-LABEL: test_mm256_testn_epi32_mask // CHECK: and <4 x i64> %{{.*}}, %{{.*}} @@ -8388,6 +8443,11 @@ __mmask8 test_mm256_testn_epi32_mask(__m256i __A, __m256i __B) { return _mm256_testn_epi32_mask(__A, __B); } +TEST_CONSTEXPR(_mm256_testn_epi32_mask( + ((__m256i)(__v8si){40445, 245961, 61407, 263397, 56243, -139540, 8675, -450842}), + ((__m256i)(__v8si){-960187, 506335, 818314, 32765, 104115, 783086, -339212, 377838}) +) == (__mmask8)0x00); + __mmask8 test_mm256_mask_testn_epi32_mask(__mmask8 __U, __m256i __A, __m256i __B) { // CHECK-LABEL: test_mm256_mask_testn_epi32_mask // CHECK: and <4 x i64> %{{.*}}, %{{.*}} @@ -8396,6 +8456,12 @@ __mmask8 test_mm256_mask_testn_epi32_mask(__mmask8 __U, __m256i __A, __m256i __B return _mm256_mask_testn_epi32_mask(__U, __A, __B); } +TEST_CONSTEXPR(_mm256_mask_testn_epi32_mask( + (__mmask8)0xf0, + ((__m256i)(__v8si){37022, 426122, 41425, -140420, 52378, 242117, 39078, 192582}), + ((__m256i)(__v8si){-440264, 968190, 640358, 596732, -676272, 446165, 987171, 953551}) +) == (__mmask8)0x00); + __mmask8 test_mm_testn_epi64_mask(__m128i __A, __m128i __B) { // CHECK-LABEL: test_mm_testn_epi64_mask // CHECK: and <2 x i64> %{{.*}}, %{{.*}} @@ -8403,6 +8469,11 @@ __mmask8 test_mm_testn_epi64_mask(__m128i __A, __m128i __B) { return _mm_testn_epi64_mask(__A, __B); } +TEST_CONSTEXPR(_mm_testn_epi64_mask( + ((__m128i)(__v2di){8, -95314}), + ((__m128i)(__v2di){85958, 501758}) +) == (__mmask8)0x1); + __mmask8 test_mm_mask_testn_epi64_mask(__mmask8 __U, __m128i __A, __m128i __B) { // CHECK-LABEL: test_mm_mask_testn_epi64_mask // CHECK: and <2 x i64> %{{.*}}, %{{.*}} @@ -8411,6 +8482,12 @@ __mmask8 test_mm_mask_testn_epi64_mask(__mmask8 __U, __m128i __A, __m128i __B) { return _mm_mask_testn_epi64_mask(__U, __A, __B); } +TEST_CONSTEXPR(_mm_mask_testn_epi64_mask( + (__mmask8)0x2, + ((__m128i)(__v2di){-124, -2299}), + ((__m128i)(__v2di){86100, 552445}) +) == (__mmask8)0x0); + __mmask8 test_mm256_testn_epi64_mask(__m256i __A, __m256i __B) { // CHECK-LABEL: test_mm256_testn_epi64_mask // CHECK: and <4 x i64> %{{.*}}, %{{.*}} @@ -8418,6 +8495,11 @@ __mmask8 test_mm256_testn_epi64_mask(__m256i __A, __m256i __B) { return _mm256_testn_epi64_mask(__A, __B); } +TEST_CONSTEXPR(_mm256_testn_epi64_mask( + ((__m256i)(__v4di){-70, -11203, -19, -69143}), + ((__m256i)(__v4di){-55003, 22655, -63728, 326379}) +) == (__mmask8)0x0); + __mmask8 test_mm256_mask_testn_epi64_mask(__mmask8 __U, __m256i __A, __m256i __B) { // CHECK-LABEL: test_mm256_mask_testn_epi64_mask // CHECK: and <4 x i64> %{{.*}}, %{{.*}} @@ -8426,6 +8508,12 @@ __mmask8 test_mm256_mask_testn_epi64_mask(__mmask8 __U, __m256i __A, __m256i __B return _mm256_mask_testn_epi64_mask(__U, __A, __B); } +TEST_CONSTEXPR(_mm256_mask_testn_epi64_mask( + (__mmask8)0xa, + ((__m256i)(__v4di){24, -44260, 200, -37960}), + ((__m256i)(__v4di){5806, 30268, -78192, 758524}) +) == (__mmask8)0x0); + __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> <i32 2, i32 6, i32 3, i32 7> diff --git a/clang/test/CodeGen/X86/avx512vlbw-builtins.c b/clang/test/CodeGen/X86/avx512vlbw-builtins.c index 9f70f4639b4ab..0ee14909ae805 100644 --- a/clang/test/CodeGen/X86/avx512vlbw-builtins.c +++ b/clang/test/CodeGen/X86/avx512vlbw-builtins.c @@ -3094,6 +3094,12 @@ __mmask32 test_mm256_mask_test_epi8_mask(__mmask32 __U, __m256i __A, __m256i __B return _mm256_mask_test_epi8_mask(__U, __A, __B); } +TEST_CONSTEXPR(_mm256_mask_test_epi8_mask( + (__mmask32)0xb367f726, + ((__m256i)(__v32qs){78, -1, -104, -14, -4, -40, -90, -76, -61, 79, 2, -107, 87, -81, 119, 10, 9, -52, -1, -7, -91, 125, 125, -48, -47, -99, -65, -127, 66, -68, -3, 15}), + ((__m256i)(__v32qs){-79, 55, 24, 68, 3, 118, 43, -10, 68, -80, 112, 106, 84, -30, 119, 41, 79, 51, 1, 74, 84, -125, -125, 29, -112, 99, -65, 11, -67, 97, 3, 15}) +) == (__mmask32)0xa365f126); + __mmask8 test_mm_test_epi16_mask(__m128i __A, __m128i __B) { // CHECK-LABEL: test_mm_test_epi16_mask // CHECK: and <2 x i64> %{{.*}}, %{{.*}} @@ -3101,6 +3107,11 @@ __mmask8 test_mm_test_epi16_mask(__m128i __A, __m128i __B) { return _mm_test_epi16_mask(__A, __B); } +TEST_CONSTEXPR(_mm_test_epi16_mask( + ((__m128i)(__v8hi){108, -67, -74, 111, 44, 88, -116, -73}), + ((__m128i)(__v8hi){-108, -67, -40, -112, 6, 88, -64, -73}) +) == (__mmask8)0xf7); + __mmask8 test_mm_mask_test_epi16_mask(__mmask8 __U, __m128i __A, __m128i __B) { // CHECK-LABEL: test_mm_mask_test_epi16_mask // CHECK: and <2 x i64> %{{.*}}, %{{.*}} @@ -3109,6 +3120,12 @@ __mmask8 test_mm_mask_test_epi16_mask(__mmask8 __U, __m128i __A, __m128i __B) { return _mm_mask_test_epi16_mask(__U, __A, __B); } +TEST_CONSTEXPR(_mm_mask_test_epi16_mask( + (__mmask8)0x6f, + ((__m128i)(__v8hi){-2, 84, -122, 120, 95, -51, -60, 60}), + ((__m128i)(__v8hi){-83, 110, 9, 45, 62, 50, 59, -61}) +) == (__mmask8)0x0b); + __mmask16 test_mm256_test_epi16_mask(__m256i __A, __m256i __B) { // CHECK-LABEL: test_mm256_test_epi16_mask // CHECK: and <4 x i64> %{{.*}}, %{{.*}} @@ -3116,6 +3133,11 @@ __mmask16 test_mm256_test_epi16_mask(__m256i __A, __m256i __B) { return _mm256_test_epi16_mask(__A, __B); } +TEST_CONSTEXPR(_mm256_test_epi16_mask( + ((__m256i)(__v16hi){25, -91, 71, -13, 4, 108, 32, 8, 119, 75, -32, 80, -31, 67, -103, 25}), + ((__m256i)(__v16hi){-26, 90, 71, -13, 4, -108, -32, 9, 87, -104, 110, 68, -31, 18, 35, -59}) +) == (__mmask16)0xfffc); + __mmask16 test_mm256_mask_test_epi16_mask(__mmask16 __U, __m256i __A, __m256i __B) { // CHECK-LABEL: test_mm256_mask_test_epi16_mask // CHECK: and <4 x i64> %{{.*}}, %{{.*}} @@ -3124,6 +3146,12 @@ __mmask16 test_mm256_mask_test_epi16_mask(__mmask16 __U, __m256i __A, __m256i __ return _mm256_mask_test_epi16_mask(__U, __A, __B); } +TEST_CONSTEXPR(_mm256_mask_test_epi16_mask( + (__mmask16)0x97f3, + ((__m256i)(__v16hi){-27, -10, 93, -45, -26, 104, 30, -95, -74, -65, -34, 78, 17, 10, 0, 125}), + ((__m256i)(__v16hi){70, -10, -94, -46, -26, -104, -30, -64, 73, 64, 34, -78, -102, -11, 96, 125}) +) == (__mmask16)0x94f3); + __mmask16 test_mm_testn_epi8_mask(__m128i __A, __m128i __B) { // CHECK-LABEL: test_mm_testn_epi8_mask // CHECK: and <2 x i64> %{{.*}}, %{{.*}} @@ -3145,6 +3173,12 @@ __mmask16 test_mm_mask_testn_epi8_mask(__mmask16 __U, __m128i __A, __m128i __B) return _mm_mask_testn_epi8_mask(__U, __A, __B); } +TEST_CONSTEXPR(_mm_mask_testn_epi8_mask( + (__mmask16)0x0f73, + ((__m128i)(__v16qs){8, 87, 65, 48, -23, 81, 125, 58, 13, -36, -108, -109, -14, 43, 15, -117}), + ((__m128i)(__v16qs){-78, 87, -66, -112, -84, -2, 125, 58, 87, 36, -64, -30, -109, -44, -15, 116}) +) == (__mmask16)0x0001); + __mmask32 test_mm256_testn_epi8_mask(__m256i __A, __m256i __B) { // CHECK-LABEL: test_mm256_testn_epi8_mask // CHECK: and <4 x i64> %{{.*}}, %{{.*}} @@ -3152,6 +3186,11 @@ __mmask32 test_mm256_testn_epi8_mask(__m256i __A, __m256i __B) { return _mm256_testn_epi8_mask(__A, __B); } +TEST_CONSTEXPR(_mm256_testn_epi8_mask( + ((__m256i)(__v32qs){-65, 65, -79, -126, -99, -29, -85, -77, -71, 109, 68, -106, -44, 15, -56, -64, -38, -64, 1, -71, -83, -37, -99, 74, 76, -127, 32, 65, -26, -48, 115, 47}), + ((__m256i)(__v32qs){-118, 65, -79, 98, 99, 28, -84, -15, -71, 109, -68, 114, 17, -101, 56, 63, 38, 63, -108, 70, -83, 36, -4, -74, -99, -27, -51, -66, -120, 83, -31, -48}) +) == (__mmask32)0x8c2e8020); + __mmask32 test_mm256_mask_testn_epi8_mask(__mmask32 __U, __m256i __A, __m256i __B) { // CHECK-LABEL: test_mm256_mask_testn_epi8_mask // CHECK: and <4 x i64> %{{.*}}, %{{.*}} @@ -3160,6 +3199,12 @@ __mmask32 test_mm256_mask_testn_epi8_mask(__mmask32 __U, __m256i __A, __m256i __ return _mm256_mask_testn_epi8_mask(__U, __A, __B); } +TEST_CONSTEXPR(_mm256_mask_testn_epi8_mask( + (__mmask32)0xb367f726, + ((__m256i)(__v32qs){78, -1, -104, -14, -4, -40, -90, -76, -61, 79, 2, -107, 87, -81, 119, 10, 9, -52, -1, -7, -91, 125, 125, -48, -47, -99, -65, -127, 66, -68, -3, 15}), + ((__m256i)(__v32qs){-79, 55, 24, 68, 3, 118, 43, -10, 68, -80, 112, 106, 84, -30, 119, 41, 79, 51, 1, 74, 84, -125, -125, 29, -112, 99, -65, 11, -67, 97, 3, 15}) +) == (__mmask32)0x10020600); + __mmask8 test_mm_testn_epi16_mask(__m128i __A, __m128i __B) { // CHECK-LABEL: test_mm_testn_epi16_mask // CHECK: and <2 x i64> %{{.*}}, %{{.*}} @@ -3167,6 +3212,12 @@ __mmask8 test_mm_testn_epi16_mask(__m128i __A, __m128i __B) { return _mm_testn_epi16_mask(__A, __B); } +TEST_CONSTEXPR(_mm_testn_epi16_mask( + ((__m128i)(__v8hi){108, -67, -74, 111, 44, 88, -116, -73}), + ((__m128i)(__v8hi){-108, -67, -40, -112, 6, 88, -64, -73}) +) == (__mmask8)0x08); + + __mmask8 test_mm_mask_testn_epi16_mask(__mmask8 __U, __m128i __A, __m128i __B) { // CHECK-LABEL: test_mm_mask_testn_epi16_mask // CHECK: and <2 x i64> %{{.*}}, %{{.*}} @@ -3175,6 +3226,12 @@ __mmask8 test_mm_mask_testn_epi16_mask(__mmask8 __U, __m128i __A, __m128i __B) { return _mm_mask_testn_epi16_mask(__U, __A, __B); } +TEST_CONSTEXPR(_mm_mask_testn_epi16_mask( + (__mmask8)0x6f, + ((__m128i)(__v8hi){-2, 84, -122, 120, 95, -51, -60, 60}), + ((__m128i)(__v8hi){-83, 110, 9, 45, 62, 50, 59, -61}) +) == (__mmask8)0x64); + __mmask16 test_mm256_testn_epi16_mask(__m256i __A, __m256i __B) { // CHECK-LABEL: test_mm256_testn_epi16_mask // CHECK: and <4 x i64> %{{.*}}, %{{.*}} @@ -3182,6 +3239,11 @@ __mmask16 test_mm256_testn_epi16_mask(__m256i __A, __m256i __B) { return _mm256_testn_epi16_mask(__A, __B); } +TEST_CONSTEXPR(_mm256_testn_epi16_mask( + ((__m256i)(__v16hi){25, -91, 71, -13, 4, 108, 32, 8, 119, 75, -32, 80, -31, 67, -103, 25}), + ((__m256i)(__v16hi){-26, 90, 71, -13, 4, -108, -32, 9, 87, -104, 110, 68, -31, 18, 35, -59}) +) == (__mmask16)0x0003); + __mmask16 test_mm256_mask_testn_epi16_mask(__mmask16 __U, __m256i __A, __m256i __B) { // CHECK-LABEL: test_mm256_mask_testn_epi16_mask // CHECK: and <4 x i64> %{{.*}}, %{{.*}} @@ -3190,6 +3252,12 @@ __mmask16 test_mm256_mask_testn_epi16_mask(__mmask16 __U, __m256i __A, __m256i _ return _mm256_mask_testn_epi16_mask(__U, __A, __B); } +TEST_CONSTEXPR(_mm256_mask_testn_epi16_mask( + (__mmask16)0x97f3, + ((__m256i)(__v16hi){-27, -10, 93, -45, -26, 104, 30, -95, -74, -65, -34, 78, 17, 10, 0, 125}), + ((__m256i)(__v16hi){70, -10, -94, -46, -26, -104, -30, -64, 73, 64, 34, -78, -102, -11, 96, 125}) +) == (__mmask16)0x0300); + __mmask16 test_mm_movepi8_mask(__m128i __A) { // CHECK-LABEL: test_mm_movepi8_mask // CHECK: [[CMP:%.*]] = icmp slt <16 x i8> %{{.*}}, zeroinitializer _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
