https://github.com/shri-acha created https://github.com/llvm/llvm-project/pull/228660
This PR introduces the remaining tests mentioned in (#169452) ``` _mm(/256/512)_cmp_mask_ep(i/u)8_mask _mm(/256/512)_cmp_mask_ep(i/u)16_mask _mm(/256/512)_cmp_mask_ep(i/u)32_mask _mm(/256/512)_cmp_mask_ep(i/u)64_mask ``` which closes (#162054) >From 96b1e730f906b787816bc18eed2c067194032a7a Mon Sep 17 00:00:00 2001 From: Shriharsh Acharya <[email protected]> Date: Sat, 3 Oct 2026 10:29:24 +0545 Subject: [PATCH] feat: add tests for _mm(/256)_mask_cmp*_epi(64/32)_mask --- clang/test/CodeGen/X86/avx512vl-builtins.c | 658 ++++++++++++++------- 1 file changed, 448 insertions(+), 210 deletions(-) diff --git a/clang/test/CodeGen/X86/avx512vl-builtins.c b/clang/test/CodeGen/X86/avx512vl-builtins.c index 40b03a21e8668..504f36489fefb 100644 --- a/clang/test/CodeGen/X86/avx512vl-builtins.c +++ b/clang/test/CodeGen/X86/avx512vl-builtins.c @@ -7,6 +7,18 @@ #include <immintrin.h> #include "builtin_test_helpers.h" + +__mmask8 test_mm_mask_cmpeq_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) { + // CHECK-LABEL: test_mm_mask_cmpeq_epu32_mask + // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm_mask_cmpeq_epu32_mask(__u, __a, __b); +} +TEST_CONSTEXPR(_mm_cmpeq_epu32_mask( + ((__m128i)(__v4su){ 0x0302010a, 0x07061420, 0x0b0a0908, 0xc80e0d0c }), + ((__m128i)(__v4su){ 0x0302010a, 0x63636363, 0x63636363, 0xc80e0d0c }) +)==(__mmask8)0x09u); + __mmask8 test_mm_cmpeq_epu32_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: test_mm_cmpeq_epu32_mask // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}} @@ -18,13 +30,18 @@ TEST_CONSTEXPR(_mm_cmpeq_epu32_mask( ((__m128i)(__v4su){ 0x0302010a, 0x63636363, 0x63636363, 0xc80e0d0c }) )==(__mmask8)0x09u); -__mmask8 test_mm_mask_cmpeq_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) { - // CHECK-LABEL: test_mm_mask_cmpeq_epu32_mask - // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}} - // CHECK: and <4 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm_mask_cmpeq_epu32_mask(__u, __a, __b); -} +__mmask8 test_mm_mask_cmpeq_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) { + // CHECK-LABEL: test_mm_mask_cmpeq_epu64_mask + // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}} + // CHECK: and <2 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm_mask_cmpeq_epu64_mask(__u, __a, __b); +} +TEST_CONSTEXPR(_mm_mask_cmpeq_epu64_mask( + (__mmask8)0x03, + ((__m128i)(__v2du){ 0x8000000000000000ull, 0xffffffffffffffffull }), + ((__m128i)(__v2du){ 0x8000000000000000ull, 0x0000000000000000ull }) +) == (__mmask8)0x01u); __mmask8 test_mm_cmpeq_epu64_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: test_mm_cmpeq_epu64_mask @@ -37,12 +54,17 @@ TEST_CONSTEXPR(_mm_cmpeq_epu64_mask( ((__m128i)(__v2du){ 0x8000000000000000ull, 0x0000000000000000ull }) ) == (__mmask8)0x01u); -__mmask8 test_mm_mask_cmpeq_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) { - // CHECK-LABEL: test_mm_mask_cmpeq_epu64_mask - // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}} - // CHECK: and <2 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm_mask_cmpeq_epu64_mask(__u, __a, __b); +__mmask8 test_mm_mask_cmpge_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) { + // CHECK-LABEL: test_mm_mask_cmpge_epi32_mask + // CHECK: icmp sge <4 x i32> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm_mask_cmpge_epi32_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm_mask_cmpge_epi32_mask( + (__mmask8)0x0F, + ((__m128i)(__v4si){ 0, 2147483647, -2147483648, -1 }), + ((__m128i)(__v4si){ 0, -2147483648, -2147483648, 2147483647 }) +) == (__mmask8)0x07u); __mmask8 test_mm_cmpge_epi32_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: test_mm_cmpge_epi32_mask @@ -54,12 +76,17 @@ TEST_CONSTEXPR(_mm_cmpge_epi32_mask( ((__m128i)(__v4si){ 0, -2147483648, -2147483648, 2147483647 }) ) == (__mmask8)0x07u); -__mmask8 test_mm_mask_cmpge_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) { - // CHECK-LABEL: test_mm_mask_cmpge_epi32_mask - // CHECK: icmp sge <4 x i32> %{{.*}}, %{{.*}} - // CHECK: and <4 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm_mask_cmpge_epi32_mask(__u, __a, __b); +__mmask8 test_mm_mask_cmpge_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) { + // CHECK-LABEL: test_mm_mask_cmpge_epi64_mask + // CHECK: icmp sge <2 x i64> %{{.*}}, %{{.*}} + // CHECK: and <2 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm_mask_cmpge_epi64_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm_mask_cmpge_epi64_mask( + (__mmask8)0x03, + ((__m128i)(__v2di){ 0x7fffffffffffffffll, -1ll }), + ((__m128i)(__v2di){ 0x7fffffffffffffffll, -9223372036854775807ll }) +) == (__mmask8)0x03u); __mmask8 test_mm_cmpge_epi64_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: test_mm_cmpge_epi64_mask @@ -71,12 +98,17 @@ TEST_CONSTEXPR(_mm_cmpge_epi64_mask( ((__m128i)(__v2di){ 0x7fffffffffffffffll, -9223372036854775807ll }) ) == (__mmask8)0x03u); -__mmask8 test_mm_mask_cmpge_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) { - // CHECK-LABEL: test_mm_mask_cmpge_epi64_mask - // CHECK: icmp sge <2 x i64> %{{.*}}, %{{.*}} - // CHECK: and <2 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm_mask_cmpge_epi64_mask(__u, __a, __b); +__mmask8 test_mm256_mask_cmpge_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) { + // CHECK-LABEL: test_mm256_mask_cmpge_epi32_mask + // CHECK: icmp sge <8 x i32> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm256_mask_cmpge_epi32_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm256_mask_cmpge_epi32_mask( + (__mmask8)0x9D, + ((__m256i)(__v8si){ 12345, 2147483647, 7, -2147483647 - 1, 1, -7, -1, -2147483647 - 1 + 1 }), + ((__m256i)(__v8si){ 12345, -2147483647 - 1, 8, 2147483647, -1, -7, 0, -2147483647 - 1 }) +) == (__mmask8)0x91u); __mmask8 test_mm256_cmpge_epi32_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: test_mm256_cmpge_epi32_mask @@ -88,19 +120,17 @@ TEST_CONSTEXPR(_mm256_cmpge_epi32_mask( ((__m256i)(__v8si){ 0, -2147483648, -2147483648, 2147483647, 5, 5, -1000, 1000 }) ) == (__mmask8)0x57u); -__mmask8 test_mm256_mask_cmpge_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) { - // CHECK-LABEL: test_mm256_mask_cmpge_epi32_mask - // CHECK: icmp sge <8 x i32> %{{.*}}, %{{.*}} - // CHECK: and <8 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm256_mask_cmpge_epi32_mask(__u, __a, __b); -} - __mmask8 test_mm256_mask_cmpge_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: test_mm256_mask_cmpge_epi64_mask // CHECK: icmp sge <4 x i64> %{{.*}}, %{{.*}} // CHECK: and <4 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm256_mask_cmpge_epi64_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm256_mask_cmpge_epi64_mask( + (__mmask8)0xFB, + ((__m256i)(__v4di){ 0x4a1e8c3b7d5f9206LL, 0x6b3d5f7a9c1e2084LL, 0x2d4f6a8c1e3b5970LL, 0x1b2c3d4e5f6a7b8cLL }), + ((__m256i)(__v4di){ 0x4a1e8c3b7d5f9206LL, -0x5a7c9e1b3d2f4860LL, -0x1c3e5a7b9d8f2461LL, 0x1b2c3d4f5f6a7b8cLL }) +) == (__mmask8)0x03u); __mmask8 test_mm256_cmpge_epi64_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: test_mm256_cmpge_epi64_mask @@ -118,6 +148,11 @@ __mmask8 test_mm_mask_cmpge_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK: and <4 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmpge_epu32_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm_mask_cmpge_epu32_mask( + (__mmask8)0xF7, + ((__m128i)(__v4su){ 0xdeadbeefu, 0x80000000u, 0x7fffffffu, 0xffffffffu }), + ((__m128i)(__v4su){ 0xdeadbeefu, 0x7fffffffu, 0x80000000u, 0x00000000u }) +) == (__mmask8)0x03u); __mmask8 test_mm_cmpge_epu32_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: test_mm_cmpge_epu32_mask @@ -129,23 +164,39 @@ TEST_CONSTEXPR(_mm_cmpge_epu32_mask( ((__m128i)(__v4su){ 0x7fffffffu, 0xffffffffu, 0xffffffffu, 0x00000001u }) ) == (__mmask8)0x05u); +__mmask8 test_mm_mask_cmpge_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) { + // CHECK-LABEL: test_mm_mask_cmpge_epu64_mask + // CHECK: icmp uge <2 x i64> %{{.*}}, %{{.*}} + // CHECK: and <2 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm_mask_cmpge_epu64_mask(__u, __a, __b); +} +TEST_CONSTEXPR(_mm_mask_cmpge_epu64_mask( + (__mmask8)0xFD, + ((__m128i)(__v2du){ 0xc3a59e174b2df068ull, 0xffffffffffffffffull }), + ((__m128i)(__v2du){ 0x3c5a61e8b4d20f97ull, 0x0000000000000000ull }) +) == (__mmask8)0x01u); + __mmask8 test_mm_cmpge_epu64_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: test_mm_cmpge_epu64_mask // CHECK: icmp uge <2 x i64> %{{.*}}, %{{.*}} return (__mmask8)_mm_cmpge_epu64_mask(__a, __b); } - TEST_CONSTEXPR(_mm_cmpge_epu64_mask( ((__m128i)(__v2du){ 0x8000000000000000ull, 0x7fffffffffffffffull }), ((__m128i)(__v2du){ 0x7fffffffffffffffull, 0xffffffffffffffffull }) ) == (__mmask8)0x01u); -__mmask8 test_mm_mask_cmpge_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) { - // CHECK-LABEL: test_mm_mask_cmpge_epu64_mask - // CHECK: icmp uge <2 x i64> %{{.*}}, %{{.*}} - // CHECK: and <2 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm_mask_cmpge_epu64_mask(__u, __a, __b); +__mmask8 test_mm256_mask_cmpge_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) { + // CHECK-LABEL: test_mm256_mask_cmpge_epu32_mask + // CHECK: icmp uge <8 x i32> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm256_mask_cmpge_epu32_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm256_mask_cmpge_epu32_mask( + (__mmask8)0xAD, + ((__m256i)(__v8su){ 0xcafebabeu, 0xffffffffu, 0x80000001u, 0x7fffffffu, 0x00000000u, 0x12345679u, 0x80000000u, 0x9abcdef0u }), + ((__m256i)(__v8su){ 0xcafebabeu, 0x00000000u, 0x7ffffffeu, 0x80000000u, 0xffffffffu, 0x12345678u, 0x80000000u, 0x9abcdef1u }) +) == (__mmask8)0x25u); __mmask8 test_mm256_cmpge_epu32_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: test_mm256_cmpge_epu32_mask @@ -156,12 +207,17 @@ TEST_CONSTEXPR(_mm256_cmpge_epu32_mask( ((__m256i)(__v8su){ 0x0302010au, 0x64646464u, 0x0b0a0908u, 0xc80e0d0cu, 0u, 0xffffffffu, 0x80000000u, 2147483647u }), ((__m256i)(__v8su){ 0x0302010au, 0x63636363u, 0x63636363u, 0xc80e0d0cu, 0xffffffffu, 0u, 2147483647u, 0x80000000u })) == (__mmask8)0x6bu); -__mmask8 test_mm256_mask_cmpge_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) { - // CHECK-LABEL: test_mm256_mask_cmpge_epu32_mask - // CHECK: icmp uge <8 x i32> %{{.*}}, %{{.*}} - // CHECK: and <8 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm256_mask_cmpge_epu32_mask(__u, __a, __b); +__mmask8 test_mm256_mask_cmpge_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) { + // CHECK-LABEL: test_mm256_mask_cmpge_epu64_mask + // CHECK: icmp uge <4 x i64> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm256_mask_cmpge_epu64_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm256_mask_cmpge_epu64_mask( + (__mmask8)0xFE, + ((__m256i)(__v4du){ 0xffffffffffffffffull, 0x9e3779b97f4a7c15ull, 0xb5c391e72a4d6f08ull, 0x5a6b7c8d11223344ull }), + ((__m256i)(__v4du){ 0x0000000000000000ull, 0x9e3779b97f4a7c15ull, 0x4a3c6e18d5b290f7ull, 0x5a6b7c8e11223344ull }) +) == (__mmask8)0x06u); __mmask8 test_mm256_cmpge_epu64_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: test_mm256_cmpge_epu64_mask @@ -173,12 +229,17 @@ TEST_CONSTEXPR(_mm256_cmpge_epu64_mask( ((__m256i)(__v4du){ 0x0706142003020106ull, 0x6363636363636363ull, 0x0000000000000000ull, 0x0000000000000000ull }) )==(__mmask8)0x0fu); -__mmask8 test_mm256_mask_cmpge_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) { - // CHECK-LABEL: test_mm256_mask_cmpge_epu64_mask - // CHECK: icmp uge <4 x i64> %{{.*}}, %{{.*}} +__mmask8 test_mm_mask_cmpgt_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) { + // CHECK-LABEL: test_mm_mask_cmpgt_epu32_mask + // CHECK: icmp ugt <4 x i32> %{{.*}}, %{{.*}} // CHECK: and <4 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm256_mask_cmpge_epu64_mask(__u, __a, __b); + return (__mmask8)_mm_mask_cmpgt_epu32_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm_mask_cmpgt_epu32_mask( + (__mmask8)0xFE, + ((__m128i)(__v4su){ 0xffffffffu, 0xcafebabeu, 0x80000001u, 0x7fffffffu }), + ((__m128i)(__v4su){ 0x00000001u, 0xcafebabeu, 0x7ffffffeu, 0x80000000u }) +) == (__mmask8)0x04u); __mmask8 test_mm_cmpgt_epu32_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: test_mm_cmpgt_epu32_mask @@ -190,12 +251,17 @@ TEST_CONSTEXPR(_mm_cmpgt_epu32_mask( ((__m128i)(__v4su){ 0x63636363u, 0xffffffffu, 0x00000000u, 0x7fffffffu }) ) == (__mmask8)0x0du); -__mmask8 test_mm_mask_cmpgt_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) { - // CHECK-LABEL: test_mm_mask_cmpgt_epu32_mask - // CHECK: icmp ugt <4 x i32> %{{.*}}, %{{.*}} - // CHECK: and <4 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm_mask_cmpgt_epu32_mask(__u, __a, __b); +__mmask8 test_mm_mask_cmpgt_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) { + // CHECK-LABEL: test_mm_mask_cmpgt_epu64_mask + // CHECK: icmp ugt <2 x i64> %{{.*}}, %{{.*}} + // CHECK: and <2 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm_mask_cmpgt_epu64_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm_mask_cmpgt_epu64_mask( + (__mmask8)0xFE, + ((__m128i)(__v2du){ 0xe4d3c2b1a0918273ull, 0x9d3b5f2100000001ull }), + ((__m128i)(__v2du){ 0xe4d3c2b1a0918272ull, 0x1c2a4e10ffffffffull }) +) == (__mmask8)0x02u); __mmask8 test_mm_cmpgt_epu64_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: test_mm_cmpgt_epu64_mask @@ -207,12 +273,17 @@ TEST_CONSTEXPR(_mm_cmpgt_epu64_mask( ((__m128i)(__v2du){ 0x7a6b5c4de5f60718ull, 0xc4a1e9b27d5f3806ull }) ) == (__mmask8)0x01u); -__mmask8 test_mm_mask_cmpgt_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) { - // CHECK-LABEL: test_mm_mask_cmpgt_epu64_mask - // CHECK: icmp ugt <2 x i64> %{{.*}}, %{{.*}} - // CHECK: and <2 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm_mask_cmpgt_epu64_mask(__u, __a, __b); +__mmask8 test_mm256_mask_cmpgt_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) { + // CHECK-LABEL: test_mm256_mask_cmpgt_epu32_mask + // CHECK: icmp ugt <8 x i32> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm256_mask_cmpgt_epu32_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm256_mask_cmpgt_epu32_mask( + (__mmask8)0xCB, + ((__m256i)(__v8su){ 0xcafebabeu, 0x80000001u, 0xffffffffu, 0x7fffffffu, 0x00000001u, 0x12345679u, 0x9abcdef1u, 0x55aa55aau }), + ((__m256i)(__v8su){ 0xcafebabeu, 0x7ffffffeu, 0x00000000u, 0x80000000u, 0x00000002u, 0x12345678u, 0x9abcdef0u, 0x55aa55abu }) +) == (__mmask8)0x42u); __mmask8 test_mm256_cmpgt_epu32_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: test_mm256_cmpgt_epu32_mask @@ -224,12 +295,17 @@ TEST_CONSTEXPR(_mm256_cmpgt_epu32_mask( ((__m256i)(__v8su){ 0x0302010au, 0x63636363u, 0x63636363u, 0xc80e0d0cu, 0x63636363u, 0xffffffffu, 0x00000000u, 0x7fffffffu }) ) == (__mmask8)0xd2u); -__mmask8 test_mm256_mask_cmpgt_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) { - // CHECK-LABEL: test_mm256_mask_cmpgt_epu32_mask - // CHECK: icmp ugt <8 x i32> %{{.*}}, %{{.*}} - // CHECK: and <8 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm256_mask_cmpgt_epu32_mask(__u, __a, __b); +__mmask8 test_mm256_mask_cmpgt_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) { + // CHECK-LABEL: test_mm256_mask_cmpgt_epu64_mask + // CHECK: icmp ugt <4 x i64> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm256_mask_cmpgt_epu64_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm256_mask_cmpgt_epu64_mask( + (__mmask8)0xFD, + ((__m256i)(__v4du){ 0x9d3b5f2100000001ull, 0xffffffffffffffffull, 0x9e3779b97f4a7c15ull, 0x5c3a1e7f2b4d6a91ull }), + ((__m256i)(__v4du){ 0x1c2a4e10ffffffffull, 0x0000000000000000ull, 0x9e3779b97f4a7c15ull, 0x5c3a1e7f2b4d6a90ull }) +) == (__mmask8)0x09u); __mmask8 test_mm256_cmpgt_epu64_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: test_mm256_cmpgt_epu64_mask @@ -241,12 +317,17 @@ TEST_CONSTEXPR(_mm256_cmpgt_epu64_mask( ((__m256i)(__v4du){ 0x0706142003020106ull, 0x6363636363636363ull, 0x0000000000000000ull, 0x0000000000000000ull }) )==(__mmask8)0x02u); -__mmask8 test_mm256_mask_cmpgt_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) { - // CHECK-LABEL: test_mm256_mask_cmpgt_epu64_mask - // CHECK: icmp ugt <4 x i64> %{{.*}}, %{{.*}} +__mmask8 test_mm_mask_cmple_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) { + // CHECK-LABEL: test_mm_mask_cmple_epi32_mask + // CHECK: icmp sle <4 x i32> %{{.*}}, %{{.*}} // CHECK: and <4 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm256_mask_cmpgt_epu64_mask(__u, __a, __b); + return (__mmask8)_mm_mask_cmple_epi32_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm_mask_cmple_epi32_mask( + (__mmask8)0xF7, + ((__m128i)(__v4si){ 123456789, -1, -2147483647, -2147483647 - 1 }), + ((__m128i)(__v4si){ 123456789, 1, -2147483647 - 1, 2147483647 }) +) == (__mmask8)0x03u); __mmask8 test_mm_cmple_epi32_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: test_mm_cmple_epi32_mask @@ -258,13 +339,17 @@ TEST_CONSTEXPR(_mm_cmple_epi32_mask( ((__m128i)(__v4si){ 0, -2147483648, -2147483648, 2147483647 }) ) == (__mmask8)0x0du); - -__mmask8 test_mm_mask_cmple_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) { - // CHECK-LABEL: test_mm_mask_cmple_epi32_mask - // CHECK: icmp sle <4 x i32> %{{.*}}, %{{.*}} - // CHECK: and <4 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm_mask_cmple_epi32_mask(__u, __a, __b); +__mmask8 test_mm_mask_cmple_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) { + // CHECK-LABEL: test_mm_mask_cmple_epi64_mask + // CHECK: icmp sle <2 x i64> %{{.*}}, %{{.*}} + // CHECK: and <2 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm_mask_cmple_epi64_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm_mask_cmple_epi64_mask( + (__mmask8)0xFE, + ((__m128i)(__v2di){ -9223372036854775807ll - 1, -0x62c4a0de00000001ll }), + ((__m128i)(__v2di){ 9223372036854775807ll, 0x1c2a4e1000000001ll }) +) == (__mmask8)0x02u); __mmask8 test_mm_cmple_epi64_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: test_mm_cmple_epi64_mask @@ -276,12 +361,17 @@ TEST_CONSTEXPR(_mm_cmple_epi64_mask( ((__m128i)(__v2di){ 0x7fffffffffffffffll, -9223372036854775807ll }) ) == (__mmask8)0x01u); -__mmask8 test_mm_mask_cmple_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) { - // CHECK-LABEL: test_mm_mask_cmple_epi64_mask - // CHECK: icmp sle <2 x i64> %{{.*}}, %{{.*}} - // CHECK: and <2 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm_mask_cmple_epi64_mask(__u, __a, __b); +__mmask8 test_mm256_mask_cmple_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) { + // CHECK-LABEL: test_mm256_mask_cmple_epi32_mask + // CHECK: icmp sle <8 x i32> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm256_mask_cmple_epi32_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm256_mask_cmple_epi32_mask( + (__mmask8)0x6B, + ((__m256i)(__v8si){ 31415926, -1, -2147483647 - 1, -2147483647, 1000, -7, 2147483647, -123456 }), + ((__m256i)(__v8si){ 31415926, 1, 2147483647, -2147483647 - 1, 999, -6, -2147483647 - 1, -123456 }) +) == (__mmask8)0x23u); __mmask8 test_mm256_cmple_epi32_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: test_mm256_cmple_epi32_mask @@ -293,12 +383,17 @@ TEST_CONSTEXPR(_mm256_cmple_epi32_mask( ((__m256i)(__v8si){ 0, -2147483648, -2147483648, 2147483647, 5, 5, -1000, 1000 }) ) == (__mmask8)0xbdu); -__mmask8 test_mm256_mask_cmple_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) { - // CHECK-LABEL: test_mm256_mask_cmple_epi32_mask - // CHECK: icmp sle <8 x i32> %{{.*}}, %{{.*}} - // CHECK: and <8 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm256_mask_cmple_epi32_mask(__u, __a, __b); +__mmask8 test_mm256_mask_cmple_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) { + // CHECK-LABEL: test_mm256_mask_cmple_epi64_mask + // CHECK: icmp sle <4 x i64> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm256_mask_cmple_epi64_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm256_mask_cmple_epi64_mask( + (__mmask8)0xFE, + ((__m256i)(__v4di){ -9223372036854775807ll - 1, 0x7e3a91c5b2d4f608ll, -0x3e91c5a700000010ll, 0x5c3a1e7f2b4d6a91ll }), + ((__m256i)(__v4di){ 9223372036854775807ll, 0x7e3a91c5b2d4f608ll, 0x2b6d8f4a00000007ll, 0x5c3a1e7f2b4d6a90ll }) +) == (__mmask8)0x06u); __mmask8 test_mm256_cmple_epi64_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: test_mm256_cmple_epi64_mask @@ -310,12 +405,17 @@ TEST_CONSTEXPR(_mm256_cmple_epi64_mask( ((__m256i)(__v4di){ 0x7fffffffffffffffll, -9223372036854775807ll, 0ll, -12345ll }) ) == (__mmask8)0x05u); -__mmask8 test_mm256_mask_cmple_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) { - // CHECK-LABEL: test_mm256_mask_cmple_epi64_mask - // CHECK: icmp sle <4 x i64> %{{.*}}, %{{.*}} +__mmask8 test_mm_mask_cmple_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) { + // CHECK-LABEL: test_mm_mask_cmple_epu32_mask + // CHECK: icmp ule <4 x i32> %{{.*}}, %{{.*}} // CHECK: and <4 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm256_mask_cmple_epi64_mask(__u, __a, __b); + return (__mmask8)_mm_mask_cmple_epu32_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm_mask_cmple_epu32_mask( + (__mmask8)0xF7, + ((__m128i)(__v4su){ 0xdeadbeefu, 0x7fffffffu, 0xffffffffu, 0x00000000u }), + ((__m128i)(__v4su){ 0xdeadbeefu, 0x80000000u, 0x00000001u, 0xffffffffu }) +) == (__mmask8)0x03u); __mmask8 test_mm_cmple_epu32_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: test_mm_cmple_epu32_mask @@ -327,12 +427,17 @@ TEST_CONSTEXPR(_mm_cmple_epu32_mask( ((__m128i)(__v4su){ 0x0302010a, 0x63636363, 0x63636363, 0xc80e0d0c }) )==(__mmask8)0x0du); -__mmask8 test_mm_mask_cmple_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) { - // CHECK-LABEL: test_mm_mask_cmple_epu32_mask - // CHECK: icmp ule <4 x i32> %{{.*}}, %{{.*}} - // CHECK: and <4 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm_mask_cmple_epu32_mask(__u, __a, __b); +__mmask8 test_mm_mask_cmple_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) { + // CHECK-LABEL: test_mm_mask_cmple_epu64_mask + // CHECK: icmp ule <2 x i64> %{{.*}}, %{{.*}} + // CHECK: and <2 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm_mask_cmple_epu64_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm_mask_cmple_epu64_mask( + (__mmask8)0xFE, + ((__m128i)(__v2du){ 0x0000000000000001ull, 0x1c2a4e10ffffffffull }), + ((__m128i)(__v2du){ 0xfffffffffffffffeull, 0x9d3b5f2100000001ull }) +) == (__mmask8)0x02u); __mmask8 test_mm_cmple_epu64_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: test_mm_cmple_epu64_mask @@ -350,6 +455,11 @@ __mmask8 test_mm_mask_cmpgt_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK: and <4 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmpgt_epi32_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm_mask_cmpgt_epi32_mask( + (__mmask8)0xFE, + ((__m128i)(__v4si){ 2147483647, 271828182, 1, -2147483647 }), + ((__m128i)(__v4si){ -2147483647 - 1, 271828182, -1, -2147483647 - 1 }) +) == (__mmask8)0x0Cu); __mmask8 test_mm_cmpgt_epi32_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: test_mm_cmpgt_epi32_mask @@ -361,12 +471,17 @@ TEST_CONSTEXPR(_mm_cmpgt_epi32_mask( ((__m128i)(__v4si){ 0, -2147483648, -2147483648, 2147483647 }) ) == (__mmask8)0x02u); -__mmask8 test_mm_mask_cmple_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) { - // CHECK-LABEL: test_mm_mask_cmple_epu64_mask - // CHECK: icmp ule <2 x i64> %{{.*}}, %{{.*}} - // CHECK: and <2 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm_mask_cmple_epu64_mask(__u, __a, __b); +__mmask8 test_mm256_mask_cmple_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) { + // CHECK-LABEL: test_mm256_mask_cmple_epu32_mask + // CHECK: icmp ule <8 x i32> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm256_mask_cmple_epu32_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm256_mask_cmple_epu32_mask( + (__mmask8)0xDA, + ((__m256i)(__v8su){ 0x00000005u, 0x8badf00du, 0x00000002u, 0x7fffffffu, 0xffffffffu, 0x12345678u, 0x9abcdef0u, 0x55aa55abu }), + ((__m256i)(__v8su){ 0xfffffff0u, 0x8badf00du, 0x00000001u, 0x80000000u, 0x00000001u, 0x12345678u, 0x9abcdef1u, 0x55aa55aau }) +) == (__mmask8)0x4Au); __mmask8 test_mm256_cmple_epu32_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: test_mm256_cmple_epu32_mask @@ -378,12 +493,17 @@ TEST_CONSTEXPR(_mm256_cmple_epu32_mask( ((__m256i)(__v8su){ 0x0302010au, 0x63636363u, 0x63636363u, 0xc80e0d0cu, 0x63636363u, 0xffffffffu, 0x00000000u, 0x7fffffffu }) ) == (__mmask8)0x2du); -__mmask8 test_mm256_mask_cmple_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) { - // CHECK-LABEL: test_mm256_mask_cmple_epu32_mask - // CHECK: icmp ule <8 x i32> %{{.*}}, %{{.*}} - // CHECK: and <8 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm256_mask_cmple_epu32_mask(__u, __a, __b); +__mmask8 test_mm256_mask_cmple_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) { + // CHECK-LABEL: test_mm256_mask_cmple_epu64_mask + // CHECK: icmp ule <4 x i64> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm256_mask_cmple_epu64_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm256_mask_cmple_epu64_mask( + (__mmask8)0xFB, + ((__m256i)(__v4du){ 0x1c2a4e10ffffffffull, 0x9e3779b97f4a7c15ull, 0x0000000000000003ull, 0x5c3a1e7f2b4d6a91ull }), + ((__m256i)(__v4du){ 0x9d3b5f2100000001ull, 0x9e3779b97f4a7c15ull, 0xfffffffffffffff0ull, 0x5c3a1e7f2b4d6a90ull }) +) == (__mmask8)0x03u); __mmask8 test_mm256_cmple_epu64_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: test_mm256_cmple_epu64_mask @@ -395,12 +515,17 @@ TEST_CONSTEXPR(_mm256_cmple_epu64_mask( ((__m256i)(__v4du){ 0x0706142003020106ull, 0x6363636363636363ull, 0x0000000000000000ull, 0x0000000000000000ull }) )==(__mmask8)0x0du); -__mmask8 test_mm256_mask_cmple_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) { - // CHECK-LABEL: test_mm256_mask_cmple_epu64_mask - // CHECK: icmp ule <4 x i64> %{{.*}}, %{{.*}} +__mmask8 test_mm_mask_cmplt_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) { + // CHECK-LABEL: test_mm_mask_cmplt_epi32_mask + // CHECK: icmp slt <4 x i32> %{{.*}}, %{{.*}} // CHECK: and <4 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm256_mask_cmple_epu64_mask(__u, __a, __b); + return (__mmask8)_mm_mask_cmplt_epi32_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm_mask_cmplt_epi32_mask( + (__mmask8)0xF7, + ((__m128i)(__v4si){ 314159265, -1, -2147483647 - 1, -5 }), + ((__m128i)(__v4si){ 314159265, 1, -2147483647, 2147483647 }) +) == (__mmask8)0x06u); __mmask8 test_mm_cmplt_epi32_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: test_mm_cmplt_epi32_mask @@ -412,12 +537,17 @@ TEST_CONSTEXPR(_mm_cmplt_epi32_mask( ((__m128i)(__v4si){ 0, -2147483648, -2147483648, 2147483647 }) ) == (__mmask8)0x08u); -__mmask8 test_mm_mask_cmplt_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) { - // CHECK-LABEL: test_mm_mask_cmplt_epi32_mask - // CHECK: icmp slt <4 x i32> %{{.*}}, %{{.*}} - // CHECK: and <4 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm_mask_cmplt_epi32_mask(__u, __a, __b); +__mmask8 test_mm_mask_cmplt_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) { + // CHECK-LABEL: test_mm_mask_cmplt_epi64_mask + // CHECK: icmp slt <2 x i64> %{{.*}}, %{{.*}} + // CHECK: and <2 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm_mask_cmplt_epi64_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm_mask_cmplt_epi64_mask( + (__mmask8)0xFD, + ((__m128i)(__v2di){ -0x62c4a0de00000001ll, -9223372036854775807ll - 1 }), + ((__m128i)(__v2di){ 0x1c2a4e1000000001ll, 9223372036854775807ll }) +) == (__mmask8)0x01u); __mmask8 test_mm_cmplt_epi64_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: test_mm_cmplt_epi64_mask @@ -429,12 +559,17 @@ TEST_CONSTEXPR(_mm_cmplt_epi64_mask( ((__m128i)(__v2di){ 0x7fffffffffffffffll, -9223372036854775807ll }) ) == (__mmask8)0x01u); -__mmask8 test_mm_mask_cmplt_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) { - // CHECK-LABEL: test_mm_mask_cmplt_epi64_mask - // CHECK: icmp slt <2 x i64> %{{.*}}, %{{.*}} - // CHECK: and <2 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm_mask_cmplt_epi64_mask(__u, __a, __b); +__mmask8 test_mm256_mask_cmplt_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) { + // CHECK-LABEL: test_mm256_mask_cmplt_epi32_mask + // CHECK: icmp slt <8 x i32> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm256_mask_cmplt_epi32_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm256_mask_cmplt_epi32_mask( + (__mmask8)0xD3, + ((__m256i)(__v8si){ 271828182, -1, -2147483647 - 1, 10, -7, 8675309, 2147483647, -2147483647 }), + ((__m256i)(__v8si){ 271828182, 1, 2147483647, 9, -6, 8675309, -2147483647 - 1, -2147483647 - 1 }) +) == (__mmask8)0x12u); __mmask8 test_mm256_cmplt_epi32_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: test_mm256_cmplt_epi32_mask @@ -446,12 +581,17 @@ TEST_CONSTEXPR(_mm256_cmplt_epi32_mask( ((__m256i)(__v8si){ 0, -2147483648, -2147483648, 2147483647, 5, 5, -1000, 1000 }) ) == (__mmask8)0xa8u); -__mmask8 test_mm256_mask_cmplt_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) { - // CHECK-LABEL: test_mm256_mask_cmplt_epi32_mask - // CHECK: icmp slt <8 x i32> %{{.*}}, %{{.*}} - // CHECK: and <8 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm256_mask_cmplt_epi32_mask(__u, __a, __b); +__mmask8 test_mm256_mask_cmplt_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) { + // CHECK-LABEL: test_mm256_mask_cmplt_epi64_mask + // CHECK: icmp slt <4 x i64> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm256_mask_cmplt_epi64_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm256_mask_cmplt_epi64_mask( + (__mmask8)0xFE, + ((__m256i)(__v4di){ -9223372036854775807ll - 1, 0x6a2f9d4c18e3b571ll, -0x4b7d2e9100000020ll, 0x5c3a1e7f2b4d6a90ll }), + ((__m256i)(__v4di){ 9223372036854775807ll, 0x6a2f9d4c18e3b571ll, 0x3a5c8e1f00000009ll, 0x5c3a1e7f2b4d6a91ll }) +) == (__mmask8)0x0Cu); __mmask8 test_mm256_cmplt_epi64_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: test_mm256_cmplt_epi64_mask @@ -463,12 +603,17 @@ TEST_CONSTEXPR(_mm256_cmplt_epi64_mask( ((__m256i)(__v4di){ 0x7fffffffffffffffll, -9223372036854775807ll, 5ll, -1ll }) ) == (__mmask8)0x05u); -__mmask8 test_mm256_mask_cmplt_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) { - // CHECK-LABEL: test_mm256_mask_cmplt_epi64_mask - // CHECK: icmp slt <4 x i64> %{{.*}}, %{{.*}} +__mmask8 test_mm_mask_cmplt_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) { + // CHECK-LABEL: test_mm_mask_cmplt_epu32_mask + // CHECK: icmp ult <4 x i32> %{{.*}}, %{{.*}} // CHECK: and <4 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm256_mask_cmplt_epi64_mask(__u, __a, __b); + return (__mmask8)_mm_mask_cmplt_epu32_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm_mask_cmplt_epu32_mask( + (__mmask8)0xFB, + ((__m128i)(__v4su){ 0x7fffffffu, 0x8badf00du, 0x00000005u, 0x9abcdef0u }), + ((__m128i)(__v4su){ 0x80000000u, 0x8badf00du, 0xfffffff0u, 0x9abcdef1u }) +) == (__mmask8)0x09u); __mmask8 test_mm_cmplt_epu32_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: test_mm_cmplt_epu32_mask @@ -480,12 +625,17 @@ TEST_CONSTEXPR(_mm_cmplt_epu32_mask( ((__m128i)(__v4su){ 0x0302010a, 0x63636363, 0x63636363, 0xc80e0d0c }) )==(__mmask8)0x04u); -__mmask8 test_mm_mask_cmplt_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) { - // CHECK-LABEL: test_mm_mask_cmplt_epu32_mask - // CHECK: icmp ult <4 x i32> %{{.*}}, %{{.*}} - // CHECK: and <4 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm_mask_cmplt_epu32_mask(__u, __a, __b); +__mmask8 test_mm_mask_cmplt_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) { + // CHECK-LABEL: test_mm_mask_cmplt_epu64_mask + // CHECK: icmp ult <2 x i64> %{{.*}}, %{{.*}} + // CHECK: and <2 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm_mask_cmplt_epu64_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm_mask_cmplt_epu64_mask( + (__mmask8)0xFD, + ((__m128i)(__v2du){ 0x1c2a4e10ffffffffull, 0x0000000000000007ull }), + ((__m128i)(__v2du){ 0x9d3b5f2100000001ull, 0xfffffffffffffff0ull }) +) == (__mmask8)0x01u); __mmask8 test_mm_cmplt_epu64_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: test_mm_cmplt_epu64_mask @@ -497,12 +647,17 @@ TEST_CONSTEXPR(_mm_cmplt_epu64_mask( ((__m128i)(__v2du){ 0x8000000000000000ull, 0xffffffffffffffffull }) ) == (__mmask8)0x01u); -__mmask8 test_mm_mask_cmplt_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) { - // CHECK-LABEL: test_mm_mask_cmplt_epu64_mask - // CHECK: icmp ult <2 x i64> %{{.*}}, %{{.*}} - // CHECK: and <2 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm_mask_cmplt_epu64_mask(__u, __a, __b); +__mmask8 test_mm256_mask_cmplt_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) { + // CHECK-LABEL: test_mm256_mask_cmplt_epu32_mask + // CHECK: icmp ult <8 x i32> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm256_mask_cmplt_epu32_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm256_mask_cmplt_epu32_mask( + (__mmask8)0x5D, + ((__m256i)(__v8su){ 0xcafebabeu, 0x00000005u, 0x7fffffffu, 0xffffffffu, 0x9abcdef0u, 0x00000009u, 0x55aa55abu, 0x13579bdfu }), + ((__m256i)(__v8su){ 0xcafebabeu, 0xfffffff0u, 0x80000000u, 0x00000001u, 0x9abcdef1u, 0x00000008u, 0x55aa55aau, 0x13579bdfu }) +) == (__mmask8)0x14u); __mmask8 test_mm256_cmplt_epu32_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: test_mm256_cmplt_epu32_mask @@ -514,12 +669,17 @@ TEST_CONSTEXPR(_mm256_cmplt_epu32_mask( ((__m256i)(__v8su){ 0x0302010a, 0x63636363, 0x63636363, 0xc80e0d0c }) )==(__mmask8)0x04u); -__mmask8 test_mm256_mask_cmplt_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) { - // CHECK-LABEL: test_mm256_mask_cmplt_epu32_mask - // CHECK: icmp ult <8 x i32> %{{.*}}, %{{.*}} - // CHECK: and <8 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm256_mask_cmplt_epu32_mask(__u, __a, __b); +__mmask8 test_mm256_mask_cmplt_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) { + // CHECK-LABEL: test_mm256_mask_cmplt_epu64_mask + // CHECK: icmp ult <4 x i64> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm256_mask_cmplt_epu64_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm256_mask_cmplt_epu64_mask( + (__mmask8)0xFD, + ((__m256i)(__v4du){ 0x2e5d7a31fffffff0ull, 0x0000000000000003ull, 0x9e3779b97f4a7c15ull, 0x5c3a1e7f2b4d6a90ull }), + ((__m256i)(__v4du){ 0xb4c8e91600000005ull, 0xfffffffffffffff0ull, 0x9e3779b97f4a7c15ull, 0x5c3a1e7f2b4d6a91ull }) +) == (__mmask8)0x09u); __mmask8 test_mm256_cmplt_epu64_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: test_mm256_cmplt_epu64_mask @@ -531,12 +691,17 @@ TEST_CONSTEXPR(_mm256_cmplt_epu64_mask( ((__m256i)(__v4du){ 0x0706142003020106ull, 0x6363636363636363ull, 0x0000000000000000ull, 0x0000000000000000ull }) )==(__mmask8)0x03u); -__mmask8 test_mm256_mask_cmplt_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) { - // CHECK-LABEL: test_mm256_mask_cmplt_epu64_mask - // CHECK: icmp ult <4 x i64> %{{.*}}, %{{.*}} +__mmask8 test_mm_mask_cmpneq_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) { + // CHECK-LABEL: test_mm_mask_cmpneq_epi32_mask + // CHECK: icmp ne <4 x i32> %{{.*}}, %{{.*}} // CHECK: and <4 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm256_mask_cmplt_epu64_mask(__u, __a, __b); + return (__mmask8)_mm_mask_cmpneq_epi32_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm_mask_cmpneq_epi32_mask( + (__mmask8)0xF7, + ((__m128i)(__v4si){ 12345, 987654321, -2147483647 - 1, -1 }), + ((__m128i)(__v4si){ 12346, 987654321, 0, 2147483647 }) +) == (__mmask8)0x05u); __mmask8 test_mm_cmpneq_epi32_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: test_mm_cmpneq_epi32_mask @@ -548,12 +713,17 @@ TEST_CONSTEXPR(_mm_cmpneq_epi32_mask( ((__m128i)(__v4si){ 0, -2147483648, -2147483648, 2147483647 }) ) == (__mmask8)0x0au); -__mmask8 test_mm_mask_cmpneq_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) { - // CHECK-LABEL: test_mm_mask_cmpneq_epi32_mask - // CHECK: icmp ne <4 x i32> %{{.*}}, %{{.*}} - // CHECK: and <4 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm_mask_cmpneq_epi32_mask(__u, __a, __b); +__mmask8 test_mm_mask_cmpneq_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) { + // CHECK-LABEL: test_mm_mask_cmpneq_epi64_mask + // CHECK: icmp ne <2 x i64> %{{.*}}, %{{.*}} + // CHECK: and <2 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm_mask_cmpneq_epi64_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm_mask_cmpneq_epi64_mask( + (__mmask8)0xFD, + ((__m128i)(__v2di){ 0x7e3a91c512345678ll, -1ll }), + ((__m128i)(__v2di){ 0x7e3a91c612345678ll, 0x7fffffffffffffffll }) +) == (__mmask8)0x01u); __mmask8 test_mm_cmpneq_epi64_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: test_mm_cmpneq_epi64_mask @@ -565,12 +735,17 @@ TEST_CONSTEXPR(_mm_cmpneq_epi64_mask( ((__m128i)(__v2di){ 0x7fffffffffffffffll, -9223372036854775807ll }) ) == (__mmask8)0x02u); -__mmask8 test_mm_mask_cmpneq_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) { - // CHECK-LABEL: test_mm_mask_cmpneq_epi64_mask - // CHECK: icmp ne <2 x i64> %{{.*}}, %{{.*}} - // CHECK: and <2 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm_mask_cmpneq_epi64_mask(__u, __a, __b); +__mmask8 test_mm256_mask_cmpneq_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) { + // CHECK-LABEL: test_mm256_mask_cmpneq_epi32_mask + // CHECK: icmp ne <8 x i32> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm256_mask_cmpneq_epi32_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm256_mask_cmpneq_epi32_mask( + (__mmask8)0xB3, + ((__m256i)(__v8si){ 12345, 987654321, -77, 424242, -2147483647 - 1, 2147483647, 31337, -8675309 }), + ((__m256i)(__v8si){ 12346, 987654321, 77, 424242, 0, -2147483647 - 1, -31337, -8675309 }) +) == (__mmask8)0x31u); __mmask8 test_mm256_cmpneq_epi32_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: test_mm256_cmpneq_epi32_mask @@ -582,12 +757,17 @@ TEST_CONSTEXPR(_mm256_cmpneq_epi32_mask( ((__m256i)(__v8si){ 0, -2147483648, -2147483648, 2147483647, 5, 5, -1000, 1000 }) ) == (__mmask8)0xeau); -__mmask8 test_mm256_mask_cmpneq_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) { - // CHECK-LABEL: test_mm256_mask_cmpneq_epi32_mask - // CHECK: icmp ne <8 x i32> %{{.*}}, %{{.*}} - // CHECK: and <8 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm256_mask_cmpneq_epi32_mask(__u, __a, __b); +__mmask8 test_mm256_mask_cmpneq_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) { + // CHECK-LABEL: test_mm256_mask_cmpneq_epi64_mask + // CHECK: icmp ne <4 x i64> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm256_mask_cmpneq_epi64_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm256_mask_cmpneq_epi64_mask( + (__mmask8)0xFB, + ((__m256i)(__v4di){ 0x5e2c9a71abcdef01ll, 0x6a2f9d4c18e3b571ll, -0x4b7d2e9100000020ll, 0x5c3a1e7f2b4d6a90ll }), + ((__m256i)(__v4di){ 0x5e2c9a72abcdef01ll, 0x6a2f9d4c18e3b571ll, 0x3a5c8e1f00000009ll, 0x5c3a1e7f2b4d6a91ll }) +) == (__mmask8)0x09u); __mmask8 test_mm256_cmpneq_epi64_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: test_mm256_cmpneq_epi64_mask @@ -599,12 +779,17 @@ TEST_CONSTEXPR(_mm256_cmpneq_epi64_mask( ((__m256i)(__v4di){ 0x7fffffffffffffffll, -9223372036854775807ll, 0ll, -12345ll }) ) == (__mmask8)0x0au); -__mmask8 test_mm256_mask_cmpneq_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) { - // CHECK-LABEL: test_mm256_mask_cmpneq_epi64_mask - // CHECK: icmp ne <4 x i64> %{{.*}}, %{{.*}} +__mmask8 test_mm_mask_cmpneq_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) { + // CHECK-LABEL: test_mm_mask_cmpneq_epu32_mask + // CHECK: icmp ne <4 x i32> %{{.*}}, %{{.*}} // CHECK: and <4 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm256_mask_cmpneq_epi64_mask(__u, __a, __b); + return (__mmask8)_mm_mask_cmpneq_epu32_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm_mask_cmpneq_epu32_mask( + (__mmask8)0xF7, + ((__m128i)(__v4su){ 0x80000001u, 0x9abcdef0u, 0xdeadbeefu, 0xffffffffu }), + ((__m128i)(__v4su){ 0x00000001u, 0x9abcdef1u, 0xdeadbeefu, 0x00000000u }) +) == (__mmask8)0x03u); __mmask8 test_mm_cmpneq_epu32_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: test_mm_cmpneq_epu32_mask @@ -616,12 +801,17 @@ TEST_CONSTEXPR(_mm_cmpneq_epu32_mask( ((__m128i)(__v4su){ 0x0302010a, 0x63636363, 0x63636363, 0xc80e0d0c }) )==(__mmask8)0x06u); -__mmask8 test_mm_mask_cmpneq_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) { - // CHECK-LABEL: test_mm_mask_cmpneq_epu32_mask - // CHECK: icmp ne <4 x i32> %{{.*}}, %{{.*}} - // CHECK: and <4 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm_mask_cmpneq_epu32_mask(__u, __a, __b); +__mmask8 test_mm_mask_cmpneq_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) { + // CHECK-LABEL: test_mm_mask_cmpneq_epu64_mask + // CHECK: icmp ne <2 x i64> %{{.*}}, %{{.*}} + // CHECK: and <2 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm_mask_cmpneq_epu64_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm_mask_cmpneq_epu64_mask( + (__mmask8)0xFE, + ((__m128i)(__v2du){ 0x00000000000000ffull, 0x8000000012345678ull }), + ((__m128i)(__v2du){ 0xffffffffffffff00ull, 0x0000000012345678ull }) +) == (__mmask8)0x02u); __mmask8 test_mm_cmpneq_epu64_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: test_mm_cmpneq_epu64_mask @@ -633,12 +823,17 @@ TEST_CONSTEXPR(_mm_cmpneq_epu64_mask( ((__m128i)(__v2du){ 0x8000000000000000ull, 0xffffffffffffffffull }) ) == (__mmask8)0x01u); -__mmask8 test_mm_mask_cmpneq_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) { - // CHECK-LABEL: test_mm_mask_cmpneq_epu64_mask - // CHECK: icmp ne <2 x i64> %{{.*}}, %{{.*}} - // CHECK: and <2 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm_mask_cmpneq_epu64_mask(__u, __a, __b); +__mmask8 test_mm256_mask_cmpneq_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) { + // CHECK-LABEL: test_mm256_mask_cmpneq_epu32_mask + // CHECK: icmp ne <8 x i32> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm256_mask_cmpneq_epu32_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm256_mask_cmpneq_epu32_mask( + (__mmask8)0xE6, + ((__m256i)(__v8su){ 0x0000ffffu, 0x80000001u, 0xdeadbeefu, 0x13579bdfu, 0x2468ace0u, 0x9abcdef0u, 0xcafebabeu, 0xffffffffu }), + ((__m256i)(__v8su){ 0xffff0000u, 0x00000001u, 0xdeadbeefu, 0x13579bdfu, 0x2468acf0u, 0x9abcdef1u, 0xcafebabeu, 0x00000000u }) +) == (__mmask8)0xA2u); __mmask8 test_mm256_cmpneq_epu32_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: test_mm256_cmpneq_epu32_mask @@ -650,12 +845,17 @@ TEST_CONSTEXPR(_mm256_cmpneq_epu32_mask( ((__m256i)(__v8su){ 0x0302010a, 0x63636363, 0x63636363, 0xc80e0d0c }) )==(__mmask8)0x06u); -__mmask8 test_mm256_mask_cmpneq_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) { - // CHECK-LABEL: test_mm256_mask_cmpneq_epu32_mask - // CHECK: icmp ne <8 x i32> %{{.*}}, %{{.*}} - // CHECK: and <8 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm256_mask_cmpneq_epu32_mask(__u, __a, __b); +__mmask8 test_mm256_mask_cmpneq_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) { + // CHECK-LABEL: test_mm256_mask_cmpneq_epu64_mask + // CHECK: icmp ne <4 x i64> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm256_mask_cmpneq_epu64_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm256_mask_cmpneq_epu64_mask( + (__mmask8)0x0F, + ((__m256i)(__v4du){ 0x0706142003020106ull, 0xc80e0d0c0b0a0908ull, 0x0000000000000000ull, 0x0000000000000000ull }), + ((__m256i)(__v4du){ 0x0706142003020106ull, 0x6363636363636363ull, 0x0000000000000000ull, 0x0000000000000000ull }) +)==(__mmask8)0x02u); __mmask8 test_mm256_cmpneq_epu64_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: test_mm256_cmpneq_epu64_mask @@ -667,12 +867,6 @@ TEST_CONSTEXPR(_mm256_cmpneq_epu64_mask( ((__m256i)(__v4du){ 0x0706142003020106ull, 0x6363636363636363ull, 0x0000000000000000ull, 0x0000000000000000ull }) )==(__mmask8)0x02u); -__mmask8 test_mm256_mask_cmpneq_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) { - // CHECK-LABEL: test_mm256_mask_cmpneq_epu64_mask - // CHECK: icmp ne <4 x i64> %{{.*}}, %{{.*}} - // CHECK: and <4 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm256_mask_cmpneq_epu64_mask(__u, __a, __b); -} __mmask8 test_mm_cmp_eq_epi32_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: test_mm_cmp_eq_epi32_mask @@ -11350,6 +11544,18 @@ __m128i test_mm256_maskz_cvt_roundps_ph(__mmask8 __U, __m256 __A) { return _mm256_maskz_cvt_roundps_ph(__U, __A, _MM_FROUND_TO_ZERO); } +__mmask8 test_mm_mask_cmpeq_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) { + // CHECK-LABEL: test_mm_mask_cmpeq_epi32_mask + // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm_mask_cmpeq_epi32_mask(__u, __a, __b); +} +TEST_CONSTEXPR(_mm_mask_cmpeq_epi32_mask( + (__mmask8)0x0E, + ((__m128i)(__v4si){ 50462986, 117838880, 185207048, -938603252 }), + ((__m128i)(__v4si){ 50462986, 1667457891, 1667457891, -938603252 }) +) == (__mmask8)0x08u); + __mmask8 test_mm_cmpeq_epi32_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: test_mm_cmpeq_epi32_mask // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}} @@ -11360,19 +11566,17 @@ TEST_CONSTEXPR(_mm_cmpeq_epi32_mask( ((__m128i)(__v4si){ 50462986, 1667457891, 1667457891, -938603252 }) ) == (__mmask8)0x09u); -__mmask8 test_mm_mask_cmpeq_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) { - // CHECK-LABEL: test_mm_mask_cmpeq_epi32_mask - // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}} - // CHECK: and <4 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm_mask_cmpeq_epi32_mask(__u, __a, __b); -} - __mmask8 test_mm_mask_cmpeq_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: test_mm_mask_cmpeq_epi64_mask // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}} // CHECK: and <2 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmpeq_epi64_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm_mask_cmpeq_epi64_mask( + (__mmask8)0xFE, + ((__m128i)(__v2di){ 0x7edcba9876543210ll, -81985529216486895ll }), + ((__m128i)(__v2di){ 0x7edcba9876543210ll, -81985529216486895ll }) +) == (__mmask8)0x02u); __mmask8 test_mm_cmpeq_epi64_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: test_mm_cmpeq_epi64_mask @@ -11391,6 +11595,11 @@ __mmask8 test_mm_mask_cmpgt_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK: and <2 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmpgt_epi64_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm_mask_cmpgt_epi64_mask( + (__mmask8)0xFE, + ((__m128i)(__v2di){ 0x7fffffffffffffffll, 0x00000001ffffffffll }), + ((__m128i)(__v2di){ 0x7ffffffffffffffell, -9223372036854775807ll - 1 }) +) == (__mmask8)0x02u); __mmask8 test_mm_cmpgt_epi64_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: test_mm_cmpgt_epi64_mask @@ -11402,6 +11611,17 @@ TEST_CONSTEXPR(_mm_cmpgt_epi64_mask( ((__m128i)(__v2di){ 0x7fffffffffffffffll, -9223372036854775807ll }) ) == (__mmask8)0x02u); +__mmask8 test_mm256_mask_cmpeq_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) { + // CHECK-LABEL: test_mm256_mask_cmpeq_epu32_mask + // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm256_mask_cmpeq_epu32_mask(__u, __a, __b); +} +TEST_CONSTEXPR(_mm256_mask_cmpeq_epu32_mask( + (__mmask8)0xB6, + ((__m256i)(__v8su){ 0x80000000u, 0xffffffffu, 0x12345678u, 0xdeadbeefu, 0x7fffffffu, 0x00000001u, 0xcafebabeu, 0x80000001u }), + ((__m256i)(__v8su){ 0x80000000u, 0xffffffffu, 0x12345679u, 0xdeadbeefu, 0x7fffffffu, 0x00000002u, 0xcafebabeu, 0x00000001u }) +) == (__mmask8)0x12u); __mmask8 test_mm256_cmpeq_epu32_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: test_mm256_cmpeq_epu32_mask @@ -11413,12 +11633,17 @@ TEST_CONSTEXPR(_mm256_cmpeq_epu32_mask( ((__m256i)(__v8su){ 0x03020106u, 0x07061420u, 0x63636363u, 0x63636363u, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u }) )==(__mmask8)0xf3u); -__mmask8 test_mm256_mask_cmpeq_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) { - // CHECK-LABEL: test_mm256_mask_cmpeq_epu32_mask - // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}} - // CHECK: and <8 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm256_mask_cmpeq_epu32_mask(__u, __a, __b); +__mmask8 test_mm256_mask_cmpeq_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) { + // CHECK-LABEL: test_mm256_mask_cmpeq_epu64_mask + // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm256_mask_cmpeq_epu64_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm256_mask_cmpeq_epu64_mask( + (__mmask8)0xF6, + ((__m256i)(__v4du){ 0x8000000000000000ull, 0xffffffffffffffffull, 0x80000001ffffffffull, 0x123456789abcdef0ull }), + ((__m256i)(__v4du){ 0x8000000000000000ull, 0xffffffffffffffffull, 0x00000001ffffffffull, 0x123456789abcdef1ull }) +) == (__mmask8)0x02u); __mmask8 test_mm256_cmpeq_epu64_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: test_mm256_cmpeq_epu64_mask @@ -11430,12 +11655,17 @@ TEST_CONSTEXPR(_mm256_cmpeq_epu64_mask( ((__m256i)(__v4du){ 0x0706142003020106ull, 0x6363636363636363ull, 0x0000000000000000ull, 0x0000000000000000ull }) )==(__mmask8)0x0du); -__mmask8 test_mm256_mask_cmpeq_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) { - // CHECK-LABEL: test_mm256_mask_cmpeq_epu64_mask - // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}} - // CHECK: and <4 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm256_mask_cmpeq_epu64_mask(__u, __a, __b); +__mmask8 test_mm256_mask_cmpeq_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) { + // CHECK-LABEL: test_mm256_mask_cmpeq_epi32_mask + // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm256_mask_cmpeq_epi32_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm256_mask_cmpeq_epi32_mask( + (__mmask8)0x6D, + ((__m256i)(__v8si){ -1, 2147483647, -2147483647 - 1, 12345, -7, 1000000, -2147483647, 0 }), + ((__m256i)(__v8si){ -1, 2147483647, 0, 12345, -6, -1000000, -2147483647, 1 }) +) == (__mmask8)0x49u); __mmask8 test_mm256_cmpeq_epi32_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: test_mm256_cmpeq_epi32_mask @@ -11447,19 +11677,17 @@ TEST_CONSTEXPR(_mm256_cmpeq_epi32_mask( ((__m256i)(__v8si){ 0, -2147483648, -2147483648, 2147483647, 5, 5, -1000, 1000 }) ) == (__mmask8)0x15u); -__mmask8 test_mm256_mask_cmpeq_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) { - // CHECK-LABEL: test_mm256_mask_cmpeq_epi32_mask - // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}} - // CHECK: and <8 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm256_mask_cmpeq_epi32_mask(__u, __a, __b); -} - __mmask8 test_mm256_mask_cmpeq_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: test_mm256_mask_cmpeq_epi64_mask // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}} // CHECK: and <4 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm256_mask_cmpeq_epi64_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm256_mask_cmpeq_epi64_mask( + (__mmask8)0xF3, + ((__m256i)(__v4di){ -9223372036854775807ll - 1, -1ll, 0x7edcba9876543210ll, 0x0123456789abcdefll }), + ((__m256i)(__v4di){ -9223372036854775807ll - 1, 0x00000000ffffffffll, 0x7edcba9876543210ll, 0x0123456789abcdeell }) +) == (__mmask8)0x01u); __mmask8 test_mm256_cmpeq_epi64_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: test_mm256_cmpeq_epi64_mask @@ -11471,6 +11699,18 @@ TEST_CONSTEXPR(_mm256_cmpeq_epi64_mask( ((__m256i)(__v4di){ 0x7fffffffffffffffll, -9223372036854775807ll, 0ll, -12345ll }) ) == (__mmask8)0x05u); +__mmask8 test_mm256_mask_cmpgt_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) { + // CHECK-LABEL: test_mm256_mask_cmpgt_epi32_mask + // CHECK: icmp sgt <8 x i32> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm256_mask_cmpgt_epi32_mask(__u, __a, __b); +} +TEST_CONSTEXPR(_mm256_mask_cmpgt_epi32_mask( + (__mmask8)0xB5, + ((__m256i)(__v8si){ 1, 2147483647, 12345, -1, -2147483647 - 1, 1000001, -7, -2147483647 - 1 + 1 }), + ((__m256i)(__v8si){ -1, -2147483647 - 1, 12345, 2147483647, 2147483647, 1000000, -6, -2147483647 - 1 }) +) == (__mmask8)0xA1u); + __mmask8 test_mm256_cmpgt_epi32_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: test_mm256_cmpgt_epi32_mask // CHECK: icmp sgt <8 x i32> %{{.*}}, %{{.*}} @@ -11481,19 +11721,17 @@ TEST_CONSTEXPR(_mm256_cmpgt_epi32_mask( ((__m256i)(__v8si){ 0, -2147483648, -2147483648, 2147483647, 5, 5, -1000, 1000 }) ) == (__mmask8)0x42u); -__mmask8 test_mm256_mask_cmpgt_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) { - // CHECK-LABEL: test_mm256_mask_cmpgt_epi32_mask - // CHECK: icmp sgt <8 x i32> %{{.*}}, %{{.*}} - // CHECK: and <8 x i1> %{{.*}}, %{{.*}} - return (__mmask8)_mm256_mask_cmpgt_epi32_mask(__u, __a, __b); -} - __mmask8 test_mm256_mask_cmpgt_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: test_mm256_mask_cmpgt_epi64_mask // CHECK: icmp sgt <4 x i64> %{{.*}}, %{{.*}} // CHECK: and <4 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm256_mask_cmpgt_epi64_mask(__u, __a, __b); } +TEST_CONSTEXPR(_mm256_mask_cmpgt_epi64_mask( + (__mmask8)0xFD, + ((__m256i)(__v4di){ 0ll, 9223372036854775807ll, -9223372036854775807ll - 1, 0x0000000200000000ll }), + ((__m256i)(__v4di){ -1ll, -9223372036854775807ll - 1, 9223372036854775807ll, 0x0000000100000000ll }) +) == (__mmask8)0x09u); __mmask8 test_mm256_cmpgt_epi64_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: test_mm256_cmpgt_epi64_mask _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
