[clang] [X86][Clang] add remaining AVX512 integer comparison intrinsics to be used in constexpr (PR #228660)
via cfe-commits
cfe-commits at lists.llvm.org
Sat Oct 3 03:00:06 PDT 2026
https://github.com/shri-acha updated https://github.com/llvm/llvm-project/pull/228660
>From 96b1e730f906b787816bc18eed2c067194032a7a Mon Sep 17 00:00:00 2001
From: Shriharsh Acharya <happy.irhs at gmail.com>
Date: Sat, 3 Oct 2026 10:29:24 +0545
Subject: [PATCH 1/5] 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
>From 39342c563d872b7506c7fc0f49530ca0de56d7c4 Mon Sep 17 00:00:00 2001
From: Shriharsh Acharya <happy.irhs at gmail.com>
Date: Sat, 3 Oct 2026 11:28:34 +0545
Subject: [PATCH 2/5] feat: add tests for _mm512_mask_cmp*_epi(64/32)_mask
---
clang/test/CodeGen/X86/avx512f-builtins.c | 509 ++++++++++++++++------
1 file changed, 380 insertions(+), 129 deletions(-)
diff --git a/clang/test/CodeGen/X86/avx512f-builtins.c b/clang/test/CodeGen/X86/avx512f-builtins.c
index c14cbacd450e4..6b9040ae29f0d 100644
--- a/clang/test/CodeGen/X86/avx512f-builtins.c
+++ b/clang/test/CodeGen/X86/avx512f-builtins.c
@@ -1323,6 +1323,24 @@ __m512 test_mm512_mask3_fnmsub_round_ps(__m512 __A, __m512 __B, __m512 __C, __mm
return _mm512_mask3_fnmsub_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
}
+__mmask16 test_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmpeq_epi32_mask
+ // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
+ // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
+ return (__mmask16)_mm512_mask_cmpeq_epi32_mask(__u, __a, __b);
+}
+TEST_CONSTEXPR(_mm512_mask_cmpeq_epi32_mask(
+ (__mmask16)0x0F0F,
+ ((__m512i)(__v16si){ 0, 1, -1, 0x7FFFFFFF,
+ 0x12345678, 42, -42, (int)0x80000000,
+ 0x0F0F0F0F, 100, 200, (int)0xDEADBEEF,
+ 7, 8, 9, (int)0xFFFFFFFE }),
+ ((__m512i)(__v16si){ 0, 2, -1, 0x7FFFFFFF,
+ 0x12345679, 43, 42, (int)0x80000000,
+ 0x0F0F0F0F, 101, 199, (int)0xDEADBEEF,
+ 70, 80, 90, (int)0xFFFFFFFE })
+) == (__mmask16)0x090Du);
+
__mmask16 test_mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmpeq_epi32_mask
// CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
@@ -1340,20 +1358,21 @@ TEST_CONSTEXPR(_mm512_cmpeq_epi32_mask(
70, 80, 90, (int)0xFFFFFFFE })
) == (__mmask16)0x898Du);
-
-__mmask16 test_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmpeq_epi32_mask
- // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
- // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm512_mask_cmpeq_epi32_mask(__u, __a, __b);
-}
-
__mmask8 test_mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_mask_cmpeq_epi64_mask
// CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
// CHECK: and <8 x i1> %{{.*}}, %{{.*}}
return (__mmask8)_mm512_mask_cmpeq_epi64_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmpeq_epi64_mask(
+ (__mmask8)0x0F,
+ ((__m512i)(__v8di){ 0LL, 1LL, -1LL, 0x7FFFFFFFFFFFFFFFLL,
+ 0x123456789ABCDEF0LL, 42LL, (long long)0x8000000000000000ULL,
+ (long long)0xDEADBEEFCAFEBABEULL }),
+ ((__m512i)(__v8di){ 0LL, 2LL, -1LL, 0x7FFFFFFFFFFFFFFFLL,
+ 0x123456789ABCDEF1LL, -42LL, (long long)0x8000000000000000ULL,
+ (long long)0xDEADBEEF00000000ULL })
+) == (__mmask8)0x0Du);
__mmask8 test_mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmpeq_epi64_mask
@@ -1369,6 +1388,24 @@ TEST_CONSTEXPR(_mm512_cmpeq_epi64_mask(
(long long)0xDEADBEEF00000000ULL })
) == (__mmask8)0x4Du);
+__mmask16 test_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmpgt_epi32_mask
+ // CHECK: icmp sgt <16 x i32> %{{.*}}, %{{.*}}
+ // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
+ return (__mmask16)_mm512_mask_cmpgt_epi32_mask(__u, __a, __b);
+}
+TEST_CONSTEXPR(_mm512_mask_cmpeq_epi32_mask(
+ (__mmask16)0x0F0F,
+ ((__m512i)(__v16si){ 0, 1, -1, 0x7FFFFFFF,
+ 0x12345678, 42, -42, (int)0x80000000,
+ 0x0F0F0F0F, 100, 200, (int)0xDEADBEEF,
+ 7, 8, 9, (int)0xFFFFFFFE }),
+ ((__m512i)(__v16si){ 0, 2, -1, 0x7FFFFFFF,
+ 0x12345679, 43, 42, (int)0x80000000,
+ 0x0F0F0F0F, 101, 199, (int)0xDEADBEEF,
+ 70, 80, 90, (int)0xFFFFFFFE })
+) == (__mmask16)0x090Du);
+
__mmask16 test_mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmpgt_epi32_mask
// CHECK: icmp sgt <16 x i32> %{{.*}}, %{{.*}}
@@ -1383,19 +1420,23 @@ TEST_CONSTEXPR(_mm512_cmpgt_epi32_mask(
2147483647, -2, 0, -2147483648, -1, -6, -2147483648, 2147483647 })
) == (__mmask16)0x7a55u);
-__mmask16 test_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmpgt_epi32_mask
- // CHECK: icmp sgt <16 x i32> %{{.*}}, %{{.*}}
- // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm512_mask_cmpgt_epi32_mask(__u, __a, __b);
-}
-
__mmask8 test_mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_mask_cmpgt_epi64_mask
// CHECK: icmp sgt <8 x i64> %{{.*}}, %{{.*}}
// CHECK: and <8 x i1> %{{.*}}, %{{.*}}
return (__mmask8)_mm512_mask_cmpgt_epi64_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmpgt_epi64_mask(
+ (__mmask8)0x0F,
+ ((__m512i)(__v8di){ 0x0000000000000000ull, 0x7fffffffffffffffull,
+ -1ll, 0x0000000100000000ull,
+ 0x0000000100000001ull, -9223372036854775807ll,
+ 0x7fffffffffffffffull, -1ll }),
+ ((__m512i)(__v8di){ 0x0000000000000000ull, -9223372036854775807ll,
+ -1ll, 0x0000000000000000ull,
+ 0x0000000100000002ull, -9223372036854775807ll,
+ 0x7fffffffffffffffull, 0x00000000ffffffffull })
+) == (__mmask8)0x0au);
__mmask8 test_mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmpgt_epi64_mask
@@ -2566,12 +2607,27 @@ __m128 test_mm512_maskz_extractf32x4_ps( __mmask8 __U,__m512 __A){
}
TEST_CONSTEXPR(match_m128(_mm512_maskz_extractf32x4_ps((__mmask8)0x3,((__m512){0,1,2,3, 4,5,6,7, 8,9,10,11, 12,13,14,15}),1),4.0f, 5.0f, 0.0f, 0.0f));
+__mmask16 test_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmpeq_epu32_mask
+ // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
+ // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
+ return (__mmask16)_mm512_mask_cmpeq_epu32_mask(__u, __a, __b);
+}
+TEST_CONSTEXPR(_mm512_mask_cmpeq_epu32_mask(
+ (__mmask16)0x00FF,
+ ((__m512i)(__v16su){
+ 1u, 2u, 3u, 4u, 5u, 6u, 7u, 8u,
+ 0u, 2147483647u, 2147483648u, 4294967295u, 0u, 2147483647u, 2147483648u, 4294967295u }),
+ ((__m512i)(__v16su){
+ 1u, 9u, 3u, 9u, 5u, 9u, 7u, 9u,
+ 0u, 2147483647u, 2147483648u, 4294967295u, 4294967295u, 2147483648u, 2147483647u, 0u })
+) == (__mmask16)0x0055u);
+
__mmask16 test_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmpeq_epu32_mask
// CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
return (__mmask16)_mm512_cmpeq_epu32_mask(__a, __b);
}
-
TEST_CONSTEXPR(_mm512_cmpeq_epu32_mask(
((__m512i)(__v16su){
1u, 2u, 3u, 4u, 5u, 6u, 7u, 8u,
@@ -2581,12 +2637,25 @@ TEST_CONSTEXPR(_mm512_cmpeq_epu32_mask(
0u, 2147483647u, 2147483648u, 4294967295u, 4294967295u, 2147483648u, 2147483647u, 0u })
) == (__mmask16)0x0f55u);
-__mmask16 test_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmpeq_epu32_mask
- // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
- // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm512_mask_cmpeq_epu32_mask(__u, __a, __b);
+__mmask8 test_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmpeq_epu64_mask
+ // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
+ // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
+ return (__mmask8)_mm512_mask_cmpeq_epu64_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmpeq_epu64_mask(
+ (__mmask8)0x0F,
+ ((__m512i)(__v8du){
+ 0x1111111111111111ull, 0x2222222222222222ull,
+ 0x8000000000000000ull, 0xffffffffffffffffull,
+ 0x0000000100000000ull, 0x00000000ffffffffull,
+ 0x0000000000000000ull, 0xffffffffffffffffull }),
+ ((__m512i)(__v8du){
+ 0x1111111111111111ull, 0x2222222222222223ull,
+ 0x8000000000000000ull, 0x7fffffffffffffffull,
+ 0x0000000100000000ull, 0x00000001ffffffffull,
+ 0x0000000000000000ull, 0xffffffffffffffffull })
+) == (__mmask8)0x05u);
__mmask8 test_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmpeq_epu64_mask
@@ -2606,19 +2675,27 @@ TEST_CONSTEXPR(_mm512_cmpeq_epu64_mask(
0x0000000000000000ull, 0xffffffffffffffffull })
) == (__mmask8)0xd5u);
-__mmask8 test_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmpeq_epu64_mask
- // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
- // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
- return (__mmask8)_mm512_mask_cmpeq_epu64_mask(__u, __a, __b);
+__mmask16 test_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmpge_epi32_mask
+ // CHECK: icmp sge <16 x i32> %{{.*}}, %{{.*}}
+ // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
+ return (__mmask16)_mm512_mask_cmpge_epi32_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmpge_epi32_mask(
+ (__mmask16)0x0FFF,
+ ((__m512i)(__v16si){
+ 9, 2, 9, 4, 9, 6, 9, 8,
+ -2147483648, -1, 0, 2147483647, 1, -5, -2147483647, 2147483647 }),
+ ((__m512i)(__v16si){
+ 1, 9, 3, 9, 5, 9, 7, 9,
+ 2147483647, -2, 0, -2147483648, -1, -6, -2147483648, 2147483647 })
+) == (__mmask16)0x0e55u);
__mmask16 test_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmpge_epi32_mask
// CHECK: icmp sge <16 x i32> %{{.*}}, %{{.*}}
return (__mmask16)_mm512_cmpge_epi32_mask(__a, __b);
}
-
TEST_CONSTEXPR(_mm512_cmpge_epi32_mask(
((__m512i)(__v16si){
9, 2, 9, 4, 9, 6, 9, 8,
@@ -2628,19 +2705,29 @@ TEST_CONSTEXPR(_mm512_cmpge_epi32_mask(
2147483647, -2, 0, -2147483648, -1, -6, -2147483648, 2147483647 })
) == (__mmask16)0xfe55u);
-__mmask16 test_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmpge_epi32_mask
- // CHECK: icmp sge <16 x i32> %{{.*}}, %{{.*}}
- // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm512_mask_cmpge_epi32_mask(__u, __a, __b);
+__mmask8 test_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmpge_epi64_mask
+ // CHECK: icmp sge <8 x i64> %{{.*}}, %{{.*}}
+ // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
+ return (__mmask8)_mm512_mask_cmpge_epi64_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmpge_epi64_mask(
+ (__mmask8)0x0F,
+ ((__m512i)(__v8di){ 0x0000000000000000ull, 0x7fffffffffffffffull,
+ -1ll, 0x0000000100000000ull,
+ 0x0000000100000001ull, -9223372036854775807ll,
+ 0x7fffffffffffffffull, -1ll }),
+ ((__m512i)(__v8di){ 0x0000000000000000ull, -9223372036854775807ll,
+ -1ll, 0x0000000000000000ull,
+ 0x0000000100000002ull, -9223372036854775807ll,
+ 0x7fffffffffffffffull, 0x00000000ffffffffull })
+) == (__mmask8)0x0fu);
__mmask8 test_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmpge_epi64_mask
// CHECK: icmp sge <8 x i64> %{{.*}}, %{{.*}}
return (__mmask8)_mm512_cmpge_epi64_mask(__a, __b);
}
-
TEST_CONSTEXPR(_mm512_cmpge_epi64_mask(
((__m512i)(__v8di){ 0x0000000000000000ull, 0x7fffffffffffffffull,
-1ll, 0x0000000100000000ull,
@@ -2652,20 +2739,29 @@ TEST_CONSTEXPR(_mm512_cmpge_epi64_mask(
0x7fffffffffffffffull, 0x00000000ffffffffull })
) == (__mmask8)0x6fu);
-
-__mmask8 test_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmpge_epi64_mask
- // CHECK: icmp sge <8 x i64> %{{.*}}, %{{.*}}
- // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
- return (__mmask8)_mm512_mask_cmpge_epi64_mask(__u, __a, __b);
+__mmask16 test_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmpge_epu32_mask
+ // CHECK: icmp uge <16 x i32> %{{.*}}, %{{.*}}
+ // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
+ return (__mmask16)_mm512_mask_cmpge_epu32_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmpge_epu32_mask(
+ (__mmask16)0x0FFF,
+ ((__m512i)(__v16su){ 0x00000000u, 0x7fffffffu, 0x80000000u, 0x80000000u,
+ 0xffffffffu, 0xffffffffu, 0x7fffffffu, 0x00000000u,
+ 0x00000000u, 0x7fffffffu, 0x80000000u, 0xffffffffu,
+ 0x0001ffffu, 0xffff0000u, 0x80000000u, 0xffffffffu }),
+ ((__m512i)(__v16su){ 0x00000000u, 0x80000000u, 0x80000000u, 0x7fffffffu,
+ 0xffffffffu, 0x00000000u, 0x7fffffffu, 0xffffffffu,
+ 0x00000000u, 0x7fffffffu, 0x80000000u, 0xffffffffu,
+ 0x0000ffffu, 0xffff0001u, 0x7fffffffu, 0xffffffffu })
+) == (__mmask16)0x0f7du);
__mmask16 test_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmpge_epu32_mask
// CHECK: icmp uge <16 x i32> %{{.*}}, %{{.*}}
return (__mmask16)_mm512_cmpge_epu32_mask(__a, __b);
}
-
TEST_CONSTEXPR(_mm512_cmpge_epu32_mask(
((__m512i)(__v16su){ 0x00000000u, 0x7fffffffu, 0x80000000u, 0x80000000u,
0xffffffffu, 0xffffffffu, 0x7fffffffu, 0x00000000u,
@@ -2677,12 +2773,25 @@ TEST_CONSTEXPR(_mm512_cmpge_epu32_mask(
0x0000ffffu, 0xffff0001u, 0x7fffffffu, 0xffffffffu })
) == (__mmask16)0xdf7du);
-__mmask16 test_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmpge_epu32_mask
- // CHECK: icmp uge <16 x i32> %{{.*}}, %{{.*}}
- // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm512_mask_cmpge_epu32_mask(__u, __a, __b);
+__mmask8 test_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmpge_epu64_mask
+ // CHECK: icmp uge <8 x i64> %{{.*}}, %{{.*}}
+ // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
+ return (__mmask8)_mm512_mask_cmpge_epu64_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmpge_epu64_mask(
+ (__mmask8)0x0F,
+ ((__m512i)(__v8du){
+ 0x0000000000000002ull, 0x8000000000000000ull,
+ 0xffffffffffffffffull, 0x7fffffffffffffffull,
+ 0x0000000100000000ull, 0x00000000ffffffffull,
+ 0x0000000000000000ull, 0xffffffffffffffffull }),
+ ((__m512i)(__v8du){
+ 0x0000000000000001ull, 0x7fffffffffffffffull,
+ 0x7fffffffffffffffull, 0x8000000000000000ull,
+ 0x00000000ffffffffull, 0x0000000100000000ull,
+ 0x0000000000000000ull, 0xffffffffffffffffull })
+) == (__mmask8)0x07u);
__mmask8 test_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmpge_epu64_mask
@@ -2702,12 +2811,23 @@ TEST_CONSTEXPR(_mm512_cmpge_epu64_mask(
0x0000000000000000ull, 0xffffffffffffffffull })
) == (__mmask8)0xd7u);
-__mmask8 test_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmpge_epu64_mask
- // CHECK: icmp uge <8 x i64> %{{.*}}, %{{.*}}
- // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
- return (__mmask8)_mm512_mask_cmpge_epu64_mask(__u, __a, __b);
+__mmask16 test_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmpgt_epu32_mask
+ // CHECK: icmp ugt <16 x i32> %{{.*}}, %{{.*}}
+ // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
+ return (__mmask16)_mm512_mask_cmpgt_epu32_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmpgt_epu32_mask(
+ (__mmask16)0x0FFF,
+ ((__m512i)(__v16su){ 0x00000000u, 0x7fffffffu, 0x80000000u, 0x80000000u,
+ 0xffffffffu, 0xffffffffu, 0x7fffffffu, 0x00000000u,
+ 0x00000000u, 0x7fffffffu, 0x80000000u, 0xffffffffu,
+ 0x0001ffffu, 0xffff0000u, 0x80000000u, 0xffffffffu }),
+ ((__m512i)(__v16su){ 0x00000000u, 0x80000000u, 0x80000000u, 0x7fffffffu,
+ 0xffffffffu, 0x00000000u, 0x7fffffffu, 0xffffffffu,
+ 0x00000000u, 0x7fffffffu, 0x80000000u, 0xffffffffu,
+ 0x0000ffffu, 0xffff0001u, 0x7fffffffu, 0xffffffffu })
+) == (__mmask16)0x0028u);
__mmask16 test_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmpgt_epu32_mask
@@ -2725,13 +2845,25 @@ TEST_CONSTEXPR(_mm512_cmpgt_epu32_mask(
0x0000ffffu, 0xffff0001u, 0x7fffffffu, 0xffffffffu })
) == (__mmask16)0x5028u);
-
-__mmask16 test_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmpgt_epu32_mask
- // CHECK: icmp ugt <16 x i32> %{{.*}}, %{{.*}}
- // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm512_mask_cmpgt_epu32_mask(__u, __a, __b);
+__mmask8 test_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmpgt_epu64_mask
+ // CHECK: icmp ugt <8 x i64> %{{.*}}, %{{.*}}
+ // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
+ return (__mmask8)_mm512_mask_cmpgt_epu64_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmpgt_epu64_mask(
+ (__mmask8)0x0F,
+ ((__m512i)(__v8du){
+ 0x0000000000000002ull, 0x8000000000000000ull,
+ 0xffffffffffffffffull, 0x7fffffffffffffffull,
+ 0x0000000100000000ull, 0x00000000ffffffffull,
+ 0x0000000000000000ull, 0xffffffffffffffffull }),
+ ((__m512i)(__v8du){
+ 0x0000000000000001ull, 0x7fffffffffffffffull,
+ 0x7fffffffffffffffull, 0x8000000000000000ull,
+ 0x00000000ffffffffull, 0x0000000100000000ull,
+ 0x0000000000000000ull, 0xffffffffffffffffull })
+) == (__mmask8)0x07u);
__mmask8 test_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmpgt_epu64_mask
@@ -2751,12 +2883,21 @@ TEST_CONSTEXPR(_mm512_cmpgt_epu64_mask(
0x0000000000000000ull, 0xffffffffffffffffull })
) == (__mmask8)0x17u);
-__mmask8 test_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmpgt_epu64_mask
- // CHECK: icmp ugt <8 x i64> %{{.*}}, %{{.*}}
- // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
- return (__mmask8)_mm512_mask_cmpgt_epu64_mask(__u, __a, __b);
+__mmask16 test_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmple_epi32_mask
+ // CHECK: icmp sle <16 x i32> %{{.*}}, %{{.*}}
+ // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
+ return (__mmask16)_mm512_mask_cmple_epi32_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmple_epi32_mask(
+ (__mmask16)0x0FFF,
+ ((__m512i)(__v16si){
+ 9, 2, 9, 4, 9, 6, 9, 8,
+ -2147483648, -1, 0, 2147483647, 1, -5, -2147483647, 2147483647 }),
+ ((__m512i)(__v16si){
+ 1, 9, 3, 9, 5, 9, 7, 9,
+ 2147483647, -2, 0, -2147483648, -1, -6, -2147483648, 2147483647 })
+) == (__mmask16)0x05aau);
__mmask16 test_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmple_epi32_mask
@@ -2772,13 +2913,23 @@ TEST_CONSTEXPR(_mm512_cmple_epi32_mask(
2147483647, -2, 0, -2147483648, -1, -6, -2147483648, 2147483647 })
) == (__mmask16)0x85aau);
-
-__mmask16 test_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmple_epi32_mask
- // CHECK: icmp sle <16 x i32> %{{.*}}, %{{.*}}
- // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm512_mask_cmple_epi32_mask(__u, __a, __b);
+__mmask8 test_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmple_epi64_mask
+ // CHECK: icmp sle <8 x i64> %{{.*}}, %{{.*}}
+ // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
+ return (__mmask8)_mm512_mask_cmple_epi64_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmple_epi64_mask(
+ (__mmask8)0x0F,
+ ((__m512i)(__v8di){ 0x0000000000000000ull, 0x7fffffffffffffffull,
+ -1ll, 0x0000000100000000ull,
+ 0x0000000100000001ull, -9223372036854775807ll,
+ 0x7fffffffffffffffull, -1ll }),
+ ((__m512i)(__v8di){ 0x0000000000000000ull, -9223372036854775807ll,
+ -1ll, 0x0000000000000000ull,
+ 0x0000000100000002ull, -9223372036854775807ll,
+ 0x7fffffffffffffffull, 0x00000000ffffffffull })
+) == (__mmask8)0x05u);
__mmask8 test_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmple_epi64_mask
@@ -2796,12 +2947,23 @@ TEST_CONSTEXPR(_mm512_cmple_epi64_mask(
0x7fffffffffffffffull, 0x00000000ffffffffull })
) == (__mmask8)0xf5u);
-__mmask8 test_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmple_epi64_mask
- // CHECK: icmp sle <8 x i64> %{{.*}}, %{{.*}}
- // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
- return (__mmask8)_mm512_mask_cmple_epi64_mask(__u, __a, __b);
+__mmask16 test_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmple_epu32_mask
+ // CHECK: icmp ule <16 x i32> %{{.*}}, %{{.*}}
+ // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
+ return (__mmask16)_mm512_mask_cmple_epu32_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmple_epu32_mask(
+ (__mmask16)0x0FFF,
+ ((__m512i)(__v16su){ 0x00000000u, 0x7fffffffu, 0x80000000u, 0x80000000u,
+ 0xffffffffu, 0xffffffffu, 0x7fffffffu, 0x00000000u,
+ 0x00000000u, 0x7fffffffu, 0x80000000u, 0xffffffffu,
+ 0x0001ffffu, 0xffff0000u, 0x80000000u, 0xffffffffu }),
+ ((__m512i)(__v16su){ 0x00000000u, 0x80000000u, 0x80000000u, 0x7fffffffu,
+ 0xffffffffu, 0x00000000u, 0x7fffffffu, 0xffffffffu,
+ 0x00000000u, 0x7fffffffu, 0x80000000u, 0xffffffffu,
+ 0x0000ffffu, 0xffff0001u, 0x7fffffffu, 0xffffffffu })
+) == (__mmask16)0x0fd7u);
__mmask16 test_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmple_epu32_mask
@@ -2819,19 +2981,31 @@ TEST_CONSTEXPR(_mm512_cmple_epu32_mask(
0x0000ffffu, 0xffff0001u, 0x7fffffffu, 0xffffffffu })
) == (__mmask16)0xafd7u);
-__mmask16 test_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmple_epu32_mask
- // CHECK: icmp ule <16 x i32> %{{.*}}, %{{.*}}
- // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm512_mask_cmple_epu32_mask(__u, __a, __b);
+__mmask8 test_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmple_epu64_mask
+ // CHECK: icmp ule <8 x i64> %{{.*}}, %{{.*}}
+ // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
+ return (__mmask8)_mm512_mask_cmple_epu64_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmple_epu64_mask(
+ (__mmask8)0x0F,
+ ((__m512i)(__v8du){
+ 0x0000000000000002ull, 0x8000000000000000ull,
+ 0xffffffffffffffffull, 0x7fffffffffffffffull,
+ 0x0000000100000000ull, 0x00000000ffffffffull,
+ 0x0000000000000000ull, 0xffffffffffffffffull }),
+ ((__m512i)(__v8du){
+ 0x0000000000000001ull, 0x7fffffffffffffffull,
+ 0x7fffffffffffffffull, 0x8000000000000000ull,
+ 0x00000000ffffffffull, 0x0000000100000000ull,
+ 0x0000000000000000ull, 0xffffffffffffffffull })
+) == (__mmask8)0x08u);
__mmask8 test_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmple_epu64_mask
// CHECK: icmp ule <8 x i64> %{{.*}}, %{{.*}}
return (__mmask8)_mm512_cmple_epu64_mask(__a, __b);
}
-
TEST_CONSTEXPR(_mm512_cmple_epu64_mask(
((__m512i)(__v8du){
0x0000000000000002ull, 0x8000000000000000ull,
@@ -2845,19 +3019,27 @@ TEST_CONSTEXPR(_mm512_cmple_epu64_mask(
0x0000000000000000ull, 0xffffffffffffffffull })
) == (__mmask8)0xe8u);
-__mmask8 test_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmple_epu64_mask
- // CHECK: icmp ule <8 x i64> %{{.*}}, %{{.*}}
- // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
- return (__mmask8)_mm512_mask_cmple_epu64_mask(__u, __a, __b);
+__mmask16 test_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmplt_epi32_mask
+ // CHECK: icmp slt <16 x i32> %{{.*}}, %{{.*}}
+ // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
+ return (__mmask16)_mm512_mask_cmplt_epi32_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmplt_epi32_mask(
+ (__mmask16)0x0FFF,
+ ((__m512i)(__v16si){
+ 9, 2, 9, 4, 9, 6, 9, 8,
+ -2147483648, -1, 0, 2147483647, 1, -5, -2147483647, 2147483647 }),
+ ((__m512i)(__v16si){
+ 1, 9, 3, 9, 5, 9, 7, 9,
+ 2147483647, -2, 0, -2147483648, -1, -6, -2147483648, 2147483647 })
+) == (__mmask16)0x01aau);
__mmask16 test_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmplt_epi32_mask
// CHECK: icmp slt <16 x i32> %{{.*}}, %{{.*}}
return (__mmask16)_mm512_cmplt_epi32_mask(__a, __b);
}
-
TEST_CONSTEXPR(_mm512_cmplt_epi32_mask(
((__m512i)(__v16si){
9, 2, 9, 4, 9, 6, 9, 8,
@@ -2867,13 +3049,23 @@ TEST_CONSTEXPR(_mm512_cmplt_epi32_mask(
2147483647, -2, 0, -2147483648, -1, -6, -2147483648, 2147483647 })
) == (__mmask16)0x01aau);
-
-__mmask16 test_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmplt_epi32_mask
- // CHECK: icmp slt <16 x i32> %{{.*}}, %{{.*}}
- // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm512_mask_cmplt_epi32_mask(__u, __a, __b);
+__mmask8 test_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmplt_epi64_mask
+ // CHECK: icmp slt <8 x i64> %{{.*}}, %{{.*}}
+ // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
+ return (__mmask8)_mm512_mask_cmplt_epi64_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmplt_epi64_mask(
+ (__mmask8)0x0F,
+ ((__m512i)(__v8di){ 0x0000000000000000ull, 0x7fffffffffffffffull,
+ -1ll, 0x0000000100000000ull,
+ 0x0000000100000001ull, -9223372036854775807ll,
+ 0x7fffffffffffffffull, -1ll }),
+ ((__m512i)(__v8di){ 0x0000000000000000ull, -9223372036854775807ll,
+ -1ll, 0x0000000000000000ull,
+ 0x0000000100000002ull, -9223372036854775807ll,
+ 0x7fffffffffffffffull, 0x00000000ffffffffull })
+) == (__mmask8)0x00u);
__mmask8 test_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmplt_epi64_mask
@@ -2891,12 +3083,23 @@ TEST_CONSTEXPR(_mm512_cmplt_epi64_mask(
0x7fffffffffffffffull, 0x00000000ffffffffull })
) == (__mmask8)0x90u);
-__mmask8 test_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmplt_epi64_mask
- // CHECK: icmp slt <8 x i64> %{{.*}}, %{{.*}}
- // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
- return (__mmask8)_mm512_mask_cmplt_epi64_mask(__u, __a, __b);
+__mmask16 test_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmplt_epu32_mask
+ // CHECK: icmp ult <16 x i32> %{{.*}}, %{{.*}}
+ // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
+ return (__mmask16)_mm512_mask_cmplt_epu32_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmplt_epu32_mask(
+ (__mmask16)0x0FFF,
+ ((__m512i)(__v16su){ 0x00000000u, 0x7fffffffu, 0x80000000u, 0x80000000u,
+ 0xffffffffu, 0xffffffffu, 0x7fffffffu, 0x00000000u,
+ 0x00000000u, 0x7fffffffu, 0x80000000u, 0xffffffffu,
+ 0x0001ffffu, 0xffff0000u, 0x80000000u, 0xffffffffu }),
+ ((__m512i)(__v16su){ 0x00000000u, 0x80000000u, 0x80000000u, 0x7fffffffu,
+ 0xffffffffu, 0x00000000u, 0x7fffffffu, 0xffffffffu,
+ 0x00000000u, 0x7fffffffu, 0x80000000u, 0xffffffffu,
+ 0x0000ffffu, 0xffff0001u, 0x7fffffffu, 0xffffffffu })
+) == (__mmask16)0x0082u);
__mmask16 test_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmplt_epu32_mask
@@ -2914,12 +3117,25 @@ TEST_CONSTEXPR(_mm512_cmplt_epu32_mask(
0x0000ffffu, 0xffff0001u, 0x7fffffffu, 0xffffffffu })
) == (__mmask16)0x2082u);
-__mmask16 test_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmplt_epu32_mask
- // CHECK: icmp ult <16 x i32> %{{.*}}, %{{.*}}
- // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm512_mask_cmplt_epu32_mask(__u, __a, __b);
+__mmask8 test_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmplt_epu64_mask
+ // CHECK: icmp ult <8 x i64> %{{.*}}, %{{.*}}
+ // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
+ return (__mmask8)_mm512_mask_cmplt_epu64_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmplt_epu64_mask(
+ (__mmask8)0x0F,
+ ((__m512i)(__v8du){
+ 0x0000000000000002ull, 0x8000000000000000ull,
+ 0xffffffffffffffffull, 0x7fffffffffffffffull,
+ 0x0000000100000000ull, 0x00000000ffffffffull,
+ 0x0000000000000000ull, 0xffffffffffffffffull }),
+ ((__m512i)(__v8du){
+ 0x0000000000000001ull, 0x7fffffffffffffffull,
+ 0x7fffffffffffffffull, 0x8000000000000000ull,
+ 0x00000000ffffffffull, 0x0000000100000000ull,
+ 0x0000000000000000ull, 0xffffffffffffffffull })
+) == (__mmask8)0x08u);
__mmask8 test_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmplt_epu64_mask
@@ -2939,12 +3155,21 @@ TEST_CONSTEXPR(_mm512_cmplt_epu64_mask(
0x0000000000000000ull, 0xffffffffffffffffull })
) == (__mmask8)0x28u);
-__mmask8 test_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmplt_epu64_mask
- // CHECK: icmp ult <8 x i64> %{{.*}}, %{{.*}}
- // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
- return (__mmask8)_mm512_mask_cmplt_epu64_mask(__u, __a, __b);
+__mmask16 test_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmpneq_epi32_mask
+ // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}}
+ // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
+ return (__mmask16)_mm512_mask_cmpneq_epi32_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmpneq_epi32_mask(
+ (__mmask16)0x0FFF,
+ ((__m512i)(__v16si){
+ 1, 2, 3, 4, 5, 6, 7, 8,
+ -2147483648, -1, 0, 2147483647, -2147483648, -1, 0, 2147483647 }),
+ ((__m512i)(__v16si){
+ 1, 9, 3, 9, 5, 9, 7, 9,
+ -2147483648, -1, 0, 2147483647, 2147483647, 0, -1, -2147483648 })
+) == (__mmask16)0x00aau);
__mmask16 test_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmpneq_epi32_mask
@@ -2960,20 +3185,29 @@ TEST_CONSTEXPR(_mm512_cmpneq_epi32_mask(
-2147483648, -1, 0, 2147483647, 2147483647, 0, -1, -2147483648 })
) == (__mmask16)0xf0aau);
-
-__mmask16 test_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmpneq_epi32_mask
- // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}}
- // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm512_mask_cmpneq_epi32_mask(__u, __a, __b);
+__mmask8 test_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmpneq_epi64_mask
+ // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
+ // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
+ return (__mmask8)_mm512_mask_cmpneq_epi64_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmpneq_epi64_mask(
+ (__mmask8)0x0F,
+ ((__m512i)(__v8di){ 0x0000000000000000ull, 0x7fffffffffffffffull,
+ -1ll, 0x0000000100000000ull,
+ 0x0000000100000001ull, -9223372036854775807ll,
+ 0x7fffffffffffffffull, -1ll }),
+ ((__m512i)(__v8di){ 0x0000000000000000ull, -9223372036854775807ll,
+ -1ll, 0x0000000000000000ull,
+ 0x0000000100000002ull, -9223372036854775807ll,
+ 0x7fffffffffffffffull, 0x00000000ffffffffull })
+) == (__mmask8)0x0au);
__mmask8 test_mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmpneq_epi64_mask
// CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
return (__mmask8)_mm512_cmpneq_epi64_mask(__a, __b);
}
-
TEST_CONSTEXPR(_mm512_cmpneq_epi64_mask(
((__m512i)(__v8di){ 0x0000000000000000ull, 0x7fffffffffffffffull,
-1ll, 0x0000000100000000ull,
@@ -2985,12 +3219,23 @@ TEST_CONSTEXPR(_mm512_cmpneq_epi64_mask(
0x7fffffffffffffffull, 0x00000000ffffffffull })
) == (__mmask8)0x9au);
-__mmask8 test_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmpneq_epi64_mask
- // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
- // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
- return (__mmask8)_mm512_mask_cmpneq_epi64_mask(__u, __a, __b);
+__mmask16 test_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmpneq_epu32_mask
+ // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}}
+ // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
+ return (__mmask16)_mm512_mask_cmpneq_epu32_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmpneq_epu32_mask(
+ (__mmask16)0x0FFF,
+ ((__m512i)(__v16su){ 0x00000000u, 0x7fffffffu, 0x80000000u, 0x80000000u,
+ 0xffffffffu, 0xffffffffu, 0x7fffffffu, 0x00000000u,
+ 0x00000000u, 0x7fffffffu, 0x80000000u, 0xffffffffu,
+ 0x0001ffffu, 0xffff0000u, 0x80000000u, 0xffffffffu }),
+ ((__m512i)(__v16su){ 0x00000000u, 0x80000000u, 0x80000000u, 0x7fffffffu,
+ 0xffffffffu, 0x00000000u, 0x7fffffffu, 0xffffffffu,
+ 0x00000000u, 0x7fffffffu, 0x80000000u, 0xffffffffu,
+ 0x0000ffffu, 0xffff0001u, 0x7fffffffu, 0xffffffffu })
+) == (__mmask16)0x00aau);
__mmask16 test_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmpneq_epu32_mask
@@ -3008,12 +3253,25 @@ TEST_CONSTEXPR(_mm512_cmpneq_epu32_mask(
0x0000ffffu, 0xffff0001u, 0x7fffffffu, 0xffffffffu })
) == (__mmask16)0x70aau);
-__mmask16 test_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmpneq_epu32_mask
- // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}}
- // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm512_mask_cmpneq_epu32_mask(__u, __a, __b);
+__mmask8 test_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmpneq_epu64_mask
+ // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
+ // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
+ return (__mmask8)_mm512_mask_cmpneq_epu64_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmpneq_epu64_mask(
+ (__mmask8)0x0F,
+ ((__m512i)(__v8du){
+ 0x1111111111111111ull, 0x2222222222222222ull,
+ 0x8000000000000000ull, 0xffffffffffffffffull,
+ 0x0000000100000000ull, 0x00000000ffffffffull,
+ 0x0000000000000000ull, 0xffffffffffffffffull }),
+ ((__m512i)(__v8du){
+ 0x1111111111111111ull, 0x2222222222222223ull,
+ 0x8000000000000000ull, 0x7fffffffffffffffull,
+ 0x0000000100000000ull, 0x00000001ffffffffull,
+ 0x0000000000000000ull, 0xffffffffffffffffull })
+) == (__mmask8)0x0au);
__mmask8 test_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmpneq_epu64_mask
@@ -3033,13 +3291,6 @@ TEST_CONSTEXPR(_mm512_cmpneq_epu64_mask(
0x0000000000000000ull, 0xffffffffffffffffull })
) == (__mmask8)0x2au);
-__mmask8 test_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmpneq_epu64_mask
- // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
- // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
- return (__mmask8)_mm512_mask_cmpneq_epu64_mask(__u, __a, __b);
-}
-
__mmask16 test_mm512_cmp_eq_epi32_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmp_eq_epi32_mask
// CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
>From 68d852db2d8feb4baf482f028f83de5302e599f8 Mon Sep 17 00:00:00 2001
From: Shriharsh Acharya <happy.irhs at gmail.com>
Date: Sat, 3 Oct 2026 14:38:00 +0545
Subject: [PATCH 3/5] feat: add tests for _mm512_mask_cmp*_ep(u/i)(8/16)_mask
---
clang/test/CodeGen/X86/avx512bw-builtins.c | 614 +++++++++++++++++----
1 file changed, 501 insertions(+), 113 deletions(-)
diff --git a/clang/test/CodeGen/X86/avx512bw-builtins.c b/clang/test/CodeGen/X86/avx512bw-builtins.c
index e43c475a23390..6a6088ee7a170 100644
--- a/clang/test/CodeGen/X86/avx512bw-builtins.c
+++ b/clang/test/CodeGen/X86/avx512bw-builtins.c
@@ -626,6 +626,32 @@ void test_store_mask64(__mmask64 *A, __m512i B, __m512i C) {
_store_mask64(A, _mm512_cmpneq_epu8_mask(B, C));
}
+__mmask64 test_mm512_mask_cmpeq_epi8_mask(__m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_cmpeq_epi8_mask
+ // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
+ // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
+ return (__mmask64)_mm512_cmpeq_epi8_mask(__a, __b);
+}
+TEST_CONSTEXPR(_mm512_mask_cmpeq_epi8_mask(
+ (__mmask64)0x00000000FFFFFFFFull,
+ ((__m512i)(__v64qs){ 0, 1, -1, 127, -128, 42, -42, 85,
+ 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, 58, 59, 60, 61, 62, -2 }),
+ ((__m512i)(__v64qs){ 0, 2, -1, 127, -128, 42, 42, 85,
+ 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, -20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 34, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, -47,
+ 48, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, 58, 59, 60, 61, 0, -2 })
+) == (__mmask64)0x00000000FFEFFFBDull);
+
__mmask64 test_mm512_cmpeq_epi8_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmpeq_epi8_mask
// CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
@@ -650,12 +676,25 @@ TEST_CONSTEXPR(_mm512_cmpeq_epi8_mask(
56, 57, 58, 59, 60, 61, 0, -2 })
) == (__mmask64)0xBFFF7FFDFFEFFFBDull);
-__mmask64 test_mm512_mask_cmpeq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmpeq_epi8_mask
- // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
- // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
- return (__mmask64)_mm512_mask_cmpeq_epi8_mask(__u, __a, __b);
+__mmask32 test_mm512_mask_cmpeq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmpeq_epi16_mask
+ // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
+ // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
+ return (__mmask32)_mm512_mask_cmpeq_epi16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmpeq_epi16_mask(
+ (__mmask32)0x0000FFFFu,
+ ((__m512i)(__v32hi){
+ 1, 2, 3, 4, 5, 6, 7, 8,
+ -32768, -1, 0, 32767, -32768, -1, 0, 32767,
+ 100, 200, 300, 400, -100, -200, -300, -400,
+ 1000, -1000, 32767, -32768, 255, 256, -256, -255 }),
+ ((__m512i)(__v32hi){
+ 1, 9, 3, 9, 5, 9, 7, 9,
+ -32768, -1, 0, 32767, -32768, -1, 0, 32767,
+ 100, 0, 300, 0, -100, 0, -300, 0,
+ -1000, -1000, -32768, 32767, 255, -256, -256, 255 })
+) == (__mmask32)0x0000ff55u);
__mmask32 test_mm512_cmpeq_epi16_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmpeq_epi16_mask
@@ -675,12 +714,25 @@ TEST_CONSTEXPR(_mm512_cmpeq_epi16_mask(
-1000, -1000, -32768, 32767, 255, -256, -256, 255 })
) == (__mmask32)0x5255ff55u);
-__mmask32 test_mm512_mask_cmpeq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmpeq_epi16_mask
- // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
- // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
- return (__mmask32)_mm512_mask_cmpeq_epi16_mask(__u, __a, __b);
+__mmask64 test_mm512_mask_cmpgt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmpgt_epi8_mask
+ // CHECK: icmp sgt <64 x i8> %{{.*}}, %{{.*}}
+ // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
+ return (__mmask64)_mm512_mask_cmpgt_epi8_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmpgt_epi8_mask(
+ (__mmask64)0x000000000000000Full,
+ ((__m512i)(__v64qs){ 17, 16, 15, 14, 13, 12, 11, 10,
+ 9, 8, 7, 6, 5, 4, 3, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }),
+ ((__m512i)(__v64qs){ 8, 7, 6, 5, 4, 3, 2, 1,
+ 16, 15, 14, 13, 12, 11, 10, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 })
+) == (__mmask64)0x000000000000000full);
__mmask64 test_mm512_cmpgt_epi8_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmpgt_epi8_mask
@@ -700,12 +752,25 @@ TEST_CONSTEXPR(_mm512_cmpgt_epi8_mask(
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 })
) == (__mmask64)0x00000000000000ffull);
-__mmask64 test_mm512_mask_cmpgt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmpgt_epi8_mask
- // CHECK: icmp sgt <64 x i8> %{{.*}}, %{{.*}}
- // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
- return (__mmask64)_mm512_mask_cmpgt_epi8_mask(__u, __a, __b);
+__mmask32 test_mm512_mask_cmpgt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmpgt_epi16_mask
+ // CHECK: icmp sgt <32 x i16> %{{.*}}, %{{.*}}
+ // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
+ return (__mmask32)_mm512_mask_cmpgt_epi16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmpgt_epi16_mask(
+ (__mmask32)0x0000FFFFu,
+ ((__m512i)(__v32hi){
+ 9, 2, 9, 4, 9, 6, 9, 8,
+ -32768, -1, 0, 32767, -32768, -1, 0, 32767,
+ 1, 2, 3, 4, 5, -6, -7, -8,
+ 1000, -1000, 32767, -32768, 255, 256, -256, -255 }),
+ ((__m512i)(__v32hi){
+ 1, 9, 3, 9, 5, 9, 7, 9,
+ -32768, -1, 0, 32767, -32768, -1, 0, 32767,
+ 5, 6, 7, 8, -1, -2, -3, -4,
+ -1000, -1000, -32768, 32767, 255, -256, -257, 255 })
+) == (__mmask32)0x00000055u);
__mmask32 test_mm512_cmpgt_epi16_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmpgt_epi16_mask
@@ -725,12 +790,31 @@ TEST_CONSTEXPR(_mm512_cmpgt_epi16_mask(
-1000, -1000, -32768, 32767, 255, -256, -257, 255 })
) == (__mmask32)0x65100055u);
-__mmask32 test_mm512_mask_cmpgt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmpgt_epi16_mask
- // CHECK: icmp sgt <32 x i16> %{{.*}}, %{{.*}}
- // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
- return (__mmask32)_mm512_mask_cmpgt_epi16_mask(__u, __a, __b);
+__mmask64 test_mm512_mask_cmpeq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmpeq_epu8_mask
+ // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
+ // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
+ return (__mmask64)_mm512_mask_cmpeq_epu8_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmpeq_epu8_mask(
+ (__mmask64)0x00000000FFFFFFFFull,
+ ((__m512i)(__v64qu){ 1, 9, 3, 9, 5, 9, 7, 9,
+ 9, 1, 9, 3, 9, 5, 9, 7,
+ 0, 127, 128, 255, 0, 127, 128, 255,
+ 0, 1, 127, 128, 255, 254, 129, 1,
+ 17, 34, 51, 68, 85, 102, 119, 136,
+ 153, 170, 187, 204, 221, 238, 255, 0,
+ 128, 127, 255, 0, 128, 127, 255, 0,
+ 200, 201, 202, 203, 204, 205, 206, 207 }),
+ ((__m512i)(__v64qu){ 9, 2, 9, 4, 9, 6, 9, 8,
+ 9, 1, 9, 3, 9, 5, 9, 7,
+ 0, 127, 128, 255, 0, 127, 128, 255,
+ 255, 128, 128, 127, 0, 1, 127, 128,
+ 17, 34, 51, 68, 0, 0, 0, 0,
+ 0, 0, 0, 0, 221, 238, 255, 0,
+ 128, 127, 255, 0, 127, 128, 0, 255,
+ 200, 201, 202, 203, 4, 5, 6, 7 })
+) == (__mmask64)0x0000000000ffff00ull);
__mmask64 test_mm512_cmpeq_epu8_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmpeq_epu8_mask
@@ -756,12 +840,25 @@ TEST_CONSTEXPR(_mm512_cmpeq_epu8_mask(
200, 201, 202, 203, 4, 5, 6, 7 })
) == (__mmask64)0x0f0ff00f00ffff00ull);
-__mmask64 test_mm512_mask_cmpeq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmpeq_epu8_mask
- // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
- // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
- return (__mmask64)_mm512_mask_cmpeq_epu8_mask(__u, __a, __b);
+__mmask32 test_mm512_mask_cmpeq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmpeq_epu16_mask
+ // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
+ // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
+ return (__mmask32)_mm512_mask_cmpeq_epu16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmpeq_epu16_mask(
+ (__mmask32)0x0000FFFFu,
+ ((__m512i)(__v32hu){
+ 1, 2, 3, 4, 5, 6, 7, 8,
+ 0, 32767, 32768, 65535, 0, 32767, 32768, 65535,
+ 100, 200, 300, 400, 50000, 60000, 65000, 65535,
+ 1000, 40000, 65535, 0, 255, 256, 32768, 32767 }),
+ ((__m512i)(__v32hu){
+ 1, 9, 3, 9, 5, 9, 7, 9,
+ 0, 32767, 32768, 65535, 0, 32767, 32768, 65535,
+ 100, 0, 300, 0, 50000, 0, 65000, 0,
+ 40000, 40000, 0, 65535, 255, 65280, 32768, 32768 })
+) == (__mmask32)0x0000ff55u);
__mmask32 test_mm512_cmpeq_epu16_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmpeq_epu16_mask
@@ -781,12 +878,33 @@ TEST_CONSTEXPR(_mm512_cmpeq_epu16_mask(
40000, 40000, 0, 65535, 255, 65280, 32768, 32768 })
) == (__mmask32)0x5255ff55u);
-__mmask32 test_mm512_mask_cmpeq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmpeq_epu16_mask
- // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
- // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
- return (__mmask32)_mm512_mask_cmpeq_epu16_mask(__u, __a, __b);
+__mmask64 test_mm512_mask_cmpgt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmpgt_epu8_mask
+ // CHECK: icmp ugt <64 x i8> %{{.*}}, %{{.*}}
+ // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
+ return (__mmask64)_mm512_mask_cmpgt_epu8_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmpgt_epu8_mask(
+ (__mmask64)0x00000000FFFFFFFFull,
+ ((__m512i)(__v64qu){
+ 1, 9, 3, 9, 5, 9, 7, 9,
+ 9, 1, 9, 3, 9, 5, 9, 7,
+ 0, 127, 128, 255, 0, 127, 128, 255,
+ 0, 1, 127, 128, 0, 254, 129, 1,
+ 1, 2, 3, 4, 50, 200, 70, 80,
+ 255, 9, 9, 9, 5, 4, 3, 2,
+ 0, 50, 51, 52, 53, 54, 55, 255,
+ 57, 58, 1, 1, 1, 1, 63, 64 }),
+ ((__m512i)(__v64qu){
+ 9, 2, 9, 4, 9, 6, 9, 8,
+ 2, 9, 4, 9, 6, 9, 8, 9,
+ 0, 127, 128, 255, 0, 127, 128, 255,
+ 255, 128, 128, 255, 255, 255, 255, 255,
+ 5, 6, 7, 8, 50, 60, 70, 79,
+ 0, 2, 3, 4, 9, 9, 9, 9,
+ 255, 50, 50, 52, 52, 54, 54, 0,
+ 57, 58, 0, 0, 0, 0, 63, 64 })
+) == (__mmask64)0x00000000000055aaull);
__mmask64 test_mm512_cmpgt_epu8_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmpgt_epu8_mask
@@ -814,12 +932,25 @@ TEST_CONSTEXPR(_mm512_cmpgt_epu8_mask(
57, 58, 0, 0, 0, 0, 63, 64 })
) == (__mmask64)0x3cd40fa0000055aaull);
-__mmask64 test_mm512_mask_cmpgt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmpgt_epu8_mask
- // CHECK: icmp ugt <64 x i8> %{{.*}}, %{{.*}}
- // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
- return (__mmask64)_mm512_mask_cmpgt_epu8_mask(__u, __a, __b);
+__mmask32 test_mm512_mask_cmpgt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmpgt_epu16_mask
+ // CHECK: icmp ugt <32 x i16> %{{.*}}, %{{.*}}
+ // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
+ return (__mmask32)_mm512_mask_cmpgt_epu16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmpgt_epu16_mask(
+ (__mmask32)0x0000FFFFu,
+ ((__m512i)(__v32hu){
+ 1, 9, 3, 9, 5, 9, 7, 9,
+ 9, 1, 9, 3, 9, 5, 9, 7,
+ 0, 32767, 32768, 65535, 0, 32767, 32768, 65535,
+ 0, 1, 32767, 32768, 0, 65534, 32769, 1 }),
+ ((__m512i)(__v32hu){
+ 9, 2, 9, 4, 9, 6, 9, 8,
+ 2, 9, 4, 9, 6, 9, 8, 9,
+ 0, 32767, 32768, 65535, 0, 32767, 32768, 65535,
+ 65535, 32768, 32768, 65535, 65535, 65535, 65535, 65535 })
+) == (__mmask32)0x0000aa55u);
__mmask32 test_mm512_cmpgt_epu16_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmpgt_epu16_mask
@@ -839,12 +970,31 @@ TEST_CONSTEXPR(_mm512_cmpgt_epu16_mask(
1000, 1000, 0, 65535, 255, 256, 32768, 32768 })
) == (__mmask32)0x25100055u);
-__mmask32 test_mm512_mask_cmpgt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmpgt_epu16_mask
- // CHECK: icmp ugt <32 x i16> %{{.*}}, %{{.*}}
- // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
- return (__mmask32)_mm512_mask_cmpgt_epu16_mask(__u, __a, __b);
+__mmask64 test_mm512_mask_cmpge_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmpge_epi8_mask
+ // CHECK: icmp sge <64 x i8> %{{.*}}, %{{.*}}
+ // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
+ return (__mmask64)_mm512_mask_cmpge_epi8_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmpge_epi8_mask(
+ (__mmask64)0x00000000FFFFFFFFull,
+ ((__m512i)(__v64qs){ 1, 9, 3, 9, 5, 9, 7, 9,
+ 9, 1, 9, 3, 9, 5, 9, 7,
+ -128, -1, 0, 127, -128, -1, 0, 127,
+ -128, -1, 0, 1, -128, -100, -2, 126,
+ 1, 2, 3, 4, 50, 60, 70, 80,
+ 127, 9, 9, 9, -5, -4, -3, -2,
+ -128, 50, 51, 52, 53, 54, 55, -1,
+ 57, 58, -1, -1, -1, -1, 63, 64 }),
+ ((__m512i)(__v64qs){ 9, 2, 9, 4, 9, 6, 9, 8,
+ 2, 9, 4, 9, 6, 9, 8, 9,
+ -128, -1, 0, 127, -128, -1, 0, 127,
+ 127, 0, 1, 127, -127, -99, -1, 127,
+ 5, 6, 7, 8, 50, -60, 70, 79,
+ -128, 2, 3, 4, 9, 9, 9, 9,
+ 127, 50, 50, 52, 52, 54, 54, 0,
+ 57, 58, 0, 0, 0, 0, 63, 64 })
+) == (__mmask64)0x0000000000ff55aaull);
__mmask64 test_mm512_cmpge_epi8_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmpge_epi8_mask
@@ -870,12 +1020,33 @@ TEST_CONSTEXPR(_mm512_cmpge_epi8_mask(
57, 58, 0, 0, 0, 0, 63, 64 })
) == (__mmask64)0xc37e0ff000ff55aaull);
-__mmask64 test_mm512_mask_cmpge_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmpge_epi8_mask
- // CHECK: icmp sge <64 x i8> %{{.*}}, %{{.*}}
+__mmask64 test_mm512_mask_cmpge_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmpge_epu8_mask
+ // CHECK: icmp uge <64 x i8> %{{.*}}, %{{.*}}
// CHECK: and <64 x i1> %{{.*}}, %{{.*}}
- return (__mmask64)_mm512_mask_cmpge_epi8_mask(__u, __a, __b);
+ return (__mmask64)_mm512_mask_cmpge_epu8_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmpge_epu8_mask(
+ (__mmask64)0x00000000FFFFFFFFull,
+ ((__m512i)(__v64qu){
+ 1, 9, 3, 9, 5, 9, 7, 9,
+ 9, 1, 9, 3, 9, 5, 9, 7,
+ 0, 127, 128, 255, 0, 127, 128, 255,
+ 0, 1, 127, 128, 0, 254, 129, 1,
+ 1, 2, 3, 4, 50, 200, 70, 80,
+ 255, 9, 9, 9, 5, 4, 3, 2,
+ 0, 50, 51, 52, 53, 54, 55, 255,
+ 57, 58, 1, 1, 1, 1, 63, 64 }),
+ ((__m512i)(__v64qu){
+ 9, 2, 9, 4, 9, 6, 9, 8,
+ 2, 9, 4, 9, 6, 9, 8, 9,
+ 0, 127, 128, 255, 0, 127, 128, 255,
+ 255, 128, 128, 255, 255, 255, 255, 255,
+ 5, 6, 7, 8, 50, 60, 70, 79,
+ 0, 2, 3, 4, 9, 9, 9, 9,
+ 255, 50, 50, 52, 52, 54, 54, 0,
+ 57, 58, 0, 0, 0, 0, 63, 64 })
+) == (__mmask64)0x0000000000ff55aaull);
__mmask64 test_mm512_cmpge_epu8_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmpge_epu8_mask
@@ -903,12 +1074,25 @@ TEST_CONSTEXPR(_mm512_cmpge_epu8_mask(
57, 58, 0, 0, 0, 0, 63, 64 })
) == (__mmask64)0xfffe0ff000ff55aaull);
-__mmask64 test_mm512_mask_cmpge_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmpge_epu8_mask
- // CHECK: icmp uge <64 x i8> %{{.*}}, %{{.*}}
- // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
- return (__mmask64)_mm512_mask_cmpge_epu8_mask(__u, __a, __b);
+__mmask32 test_mm512_mask_cmpge_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmpge_epi16_mask
+ // CHECK: icmp sge <32 x i16> %{{.*}}, %{{.*}}
+ // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
+ return (__mmask32)_mm512_mask_cmpge_epi16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmpge_epi16_mask(
+ (__mmask32)0x0000FFFFu,
+ ((__m512i)(__v32hi){
+ 9, 2, 9, 4, 9, 6, 9, 8,
+ -32768, -1, 0, 32767, -32768, -1, 0, 32767,
+ 1, 2, 3, 4, 5, -6, -7, -8,
+ 1000, -1000, 32767, -32768, 255, 256, -256, -255 }),
+ ((__m512i)(__v32hi){
+ 1, 9, 3, 9, 5, 9, 7, 9,
+ -32768, -1, 0, 32767, -32768, -1, 0, 32767,
+ 5, 6, 7, 8, -1, -2, -3, -4,
+ -1000, -1000, -32768, 32767, 255, -256, -257, 255 })
+) == (__mmask32)0x0000ff55u);
__mmask32 test_mm512_cmpge_epi16_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmpge_epi16_mask
@@ -928,12 +1112,25 @@ TEST_CONSTEXPR(_mm512_cmpge_epi16_mask(
-1000, -1000, -32768, 32767, 255, -256, -257, 255 })
) == (__mmask32)0x7710ff55u);
-__mmask32 test_mm512_mask_cmpge_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmpge_epi16_mask
- // CHECK: icmp sge <32 x i16> %{{.*}}, %{{.*}}
+__mmask32 test_mm512_mask_cmpge_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmpge_epu16_mask
+ // CHECK: icmp uge <32 x i16> %{{.*}}, %{{.*}}
// CHECK: and <32 x i1> %{{.*}}, %{{.*}}
- return (__mmask32)_mm512_mask_cmpge_epi16_mask(__u, __a, __b);
+ return (__mmask32)_mm512_mask_cmpge_epu16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmpge_epu16_mask(
+ (__mmask32)0x0000FFFFu,
+ ((__m512i)(__v32hu){
+ 9, 2, 9, 4, 9, 6, 9, 8,
+ 0, 32767, 32768, 65535, 0, 32767, 32768, 65535,
+ 1, 2, 3, 4, 50000, 6, 7, 8,
+ 40000, 1000, 65535, 0, 255, 65280, 32768, 32767 }),
+ ((__m512i)(__v32hu){
+ 1, 9, 3, 9, 5, 9, 7, 9,
+ 0, 32767, 32768, 65535, 0, 32767, 32768, 65535,
+ 5, 6, 7, 8, 1, 40000, 65535, 65535,
+ 1000, 1000, 0, 65535, 255, 256, 32768, 32768 })
+) == (__mmask32)0x0000ff55u);
__mmask32 test_mm512_cmpge_epu16_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmpge_epu16_mask
@@ -952,13 +1149,32 @@ TEST_CONSTEXPR(_mm512_cmpge_epu16_mask(
5, 6, 7, 8, 1, 40000, 65535, 65535,
1000, 1000, 0, 65535, 255, 256, 32768, 32768 })
) == (__mmask32)0x7710ff55u);
-
-__mmask32 test_mm512_mask_cmpge_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmpge_epu16_mask
- // CHECK: icmp uge <32 x i16> %{{.*}}, %{{.*}}
- // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
- return (__mmask32)_mm512_mask_cmpge_epu16_mask(__u, __a, __b);
+
+__mmask64 test_mm512_mask_cmple_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmple_epi8_mask
+ // CHECK: icmp sle <64 x i8> %{{.*}}, %{{.*}}
+ // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
+ return (__mmask64)_mm512_mask_cmple_epi8_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmple_epi8_mask(
+ (__mmask64)0x00000000FFFFFFFFull,
+ ((__m512i)(__v64qs){ 1, 9, 3, 9, 5, 9, 7, 9,
+ 9, 1, 9, 3, 9, 5, 9, 7,
+ -128, -1, 0, 127, -128, -1, 0, 127,
+ -128, -1, 0, 1, -128, -100, -2, 126,
+ 1, 2, 3, 4, 50, 60, 70, 80,
+ 127, 9, 9, 9, -5, -4, -3, -2,
+ -128, 50, 51, 52, 53, 54, 55, -1,
+ 57, 58, -1, -1, -1, -1, 63, 64 }),
+ ((__m512i)(__v64qs){ 9, 2, 9, 4, 9, 6, 9, 8,
+ 2, 9, 4, 9, 6, 9, 8, 9,
+ -128, -1, 0, 127, -128, -1, 0, 127,
+ 127, 0, 1, 127, -127, -99, -1, 127,
+ 5, 6, 7, 8, 50, -60, 70, 79,
+ -128, 2, 3, 4, 9, 9, 9, 9,
+ 127, 50, 50, 52, 52, 54, 54, 0,
+ 57, 58, 0, 0, 0, 0, 63, 64 })
+) == (__mmask64)0x00000000ffffaa55ull);
__mmask64 test_mm512_cmple_epi8_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmple_epi8_mask
@@ -984,12 +1200,33 @@ TEST_CONSTEXPR(_mm512_cmple_epi8_mask(
57, 58, 0, 0, 0, 0, 63, 64 })
) == (__mmask64)0xffabf05fffffaa55ull);
-__mmask64 test_mm512_mask_cmple_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmple_epi8_mask
- // CHECK: icmp sle <64 x i8> %{{.*}}, %{{.*}}
+__mmask64 test_mm512_mask_cmple_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmple_epu8_mask
+ // CHECK: icmp ule <64 x i8> %{{.*}}, %{{.*}}
// CHECK: and <64 x i1> %{{.*}}, %{{.*}}
- return (__mmask64)_mm512_mask_cmple_epi8_mask(__u, __a, __b);
+ return (__mmask64)_mm512_mask_cmple_epu8_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmple_epu8_mask(
+ (__mmask64)0x00000000FFFFFFFFull,
+ ((__m512i)(__v64qu){
+ 1, 9, 3, 9, 5, 9, 7, 9,
+ 9, 1, 9, 3, 9, 5, 9, 7,
+ 0, 127, 128, 255, 0, 127, 128, 255,
+ 0, 1, 127, 128, 0, 254, 129, 1,
+ 1, 2, 3, 4, 50, 200, 70, 80,
+ 255, 9, 9, 9, 5, 4, 3, 2,
+ 0, 50, 51, 52, 53, 54, 55, 255,
+ 57, 58, 1, 1, 1, 1, 63, 64 }),
+ ((__m512i)(__v64qu){
+ 9, 2, 9, 4, 9, 6, 9, 8,
+ 2, 9, 4, 9, 6, 9, 8, 9,
+ 0, 127, 128, 255, 0, 127, 128, 255,
+ 255, 128, 128, 255, 255, 255, 255, 255,
+ 5, 6, 7, 8, 50, 60, 70, 79,
+ 0, 2, 3, 4, 9, 9, 9, 9,
+ 255, 50, 50, 52, 52, 54, 54, 0,
+ 57, 58, 0, 0, 0, 0, 63, 64 })
+) == (__mmask64)0x00000000ffffaa55ull);
__mmask64 test_mm512_cmple_epu8_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmple_epu8_mask
@@ -1017,12 +1254,25 @@ TEST_CONSTEXPR(_mm512_cmple_epu8_mask(
57, 58, 0, 0, 0, 0, 63, 64 })
) == (__mmask64)0xc32bf05fffffaa55ull);
-__mmask64 test_mm512_mask_cmple_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmple_epu8_mask
- // CHECK: icmp ule <64 x i8> %{{.*}}, %{{.*}}
- // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
- return (__mmask64)_mm512_mask_cmple_epu8_mask(__u, __a, __b);
+__mmask32 test_mm512_mask_cmple_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmple_epi16_mask
+ // CHECK: icmp sle <32 x i16> %{{.*}}, %{{.*}}
+ // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
+ return (__mmask32)_mm512_mask_cmple_epi16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmple_epi16_mask(
+ (__mmask32)0x0000FFFFu,
+ ((__m512i)(__v32hi){
+ 9, 2, 9, 4, 9, 6, 9, 8,
+ -32768, -1, 0, 32767, -32768, -1, 0, 32767,
+ 1, 2, 3, 4, 5, -6, -7, -8,
+ 1000, -1000, 32767, -32768, 255, 256, -256, -255 }),
+ ((__m512i)(__v32hi){
+ 1, 9, 3, 9, 5, 9, 7, 9,
+ -32768, -1, 0, 32767, -32768, -1, 0, 32767,
+ 5, 6, 7, 8, -1, -2, -3, -4,
+ -1000, -1000, -32768, 32767, 255, -256, -257, 255 })
+) == (__mmask32)0x0000ffaau);
__mmask32 test_mm512_cmple_epi16_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmple_epi16_mask
@@ -1042,12 +1292,25 @@ TEST_CONSTEXPR(_mm512_cmple_epi16_mask(
-1000, -1000, -32768, 32767, 255, -256, -257, 255 })
) == (__mmask32)0x9aefffaau);
-__mmask32 test_mm512_mask_cmple_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmple_epi16_mask
- // CHECK: icmp sle <32 x i16> %{{.*}}, %{{.*}}
+__mmask32 test_mm512_mask_cmple_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmple_epu16_mask
+ // CHECK: icmp ule <32 x i16> %{{.*}}, %{{.*}}
// CHECK: and <32 x i1> %{{.*}}, %{{.*}}
- return (__mmask32)_mm512_mask_cmple_epi16_mask(__u, __a, __b);
+ return (__mmask32)_mm512_mask_cmple_epu16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmple_epu16_mask(
+ (__mmask32)0x0000FFFFu,
+ ((__m512i)(__v32hu){
+ 9, 2, 9, 4, 9, 6, 9, 8,
+ 0, 32767, 32768, 65535, 0, 32767, 32768, 65535,
+ 1, 2, 3, 4, 50000, 6, 7, 8,
+ 40000, 1000, 65535, 0, 255, 65280, 32768, 32767 }),
+ ((__m512i)(__v32hu){
+ 1, 9, 3, 9, 5, 9, 7, 9,
+ 0, 32767, 32768, 65535, 0, 32767, 32768, 65535,
+ 5, 6, 7, 8, 1, 40000, 65535, 65535,
+ 1000, 1000, 0, 65535, 255, 256, 32768, 32768 })
+) == (__mmask32)0x0000ffaau);
__mmask32 test_mm512_cmple_epu16_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmple_epu16_mask
@@ -1067,12 +1330,31 @@ TEST_CONSTEXPR(_mm512_cmple_epu16_mask(
1000, 1000, 0, 65535, 255, 256, 32768, 32768 })
) == (__mmask32)0xdaefffaau);
-__mmask32 test_mm512_mask_cmple_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmple_epu16_mask
- // CHECK: icmp ule <32 x i16> %{{.*}}, %{{.*}}
- // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
- return (__mmask32)_mm512_mask_cmple_epu16_mask(__u, __a, __b);
+__mmask64 test_mm512_mask_cmplt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmplt_epi8_mask
+ // CHECK: icmp slt <64 x i8> %{{.*}}, %{{.*}}
+ // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
+ return (__mmask64)_mm512_mask_cmplt_epi8_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmplt_epi8_mask(
+ (__mmask64)0x00000000FFFFFFFFull,
+ ((__m512i)(__v64qs){ 1, 9, 3, 9, 5, 9, 7, 9,
+ 9, 1, 9, 3, 9, 5, 9, 7,
+ -128, -1, 0, 127, -128, -1, 0, 127,
+ -128, -1, 0, 1, -128, -100, -2, 126,
+ 1, 2, 3, 4, 50, 60, 70, 80,
+ 127, 9, 9, 9, -5, -4, -3, -2,
+ -128, 50, 51, 52, 53, 54, 55, -1,
+ 57, 58, -1, -1, -1, -1, 63, 64 }),
+ ((__m512i)(__v64qs){ 9, 2, 9, 4, 9, 6, 9, 8,
+ 2, 9, 4, 9, 6, 9, 8, 9,
+ -128, -1, 0, 127, -128, -1, 0, 127,
+ 127, 0, 1, 127, -127, -99, -1, 127,
+ 5, 6, 7, 8, 50, -60, 70, 79,
+ -128, 2, 3, 4, 9, 9, 9, 9,
+ 127, 50, 50, 52, 52, 54, 54, 0,
+ 57, 58, 0, 0, 0, 0, 63, 64 })
+) == (__mmask64)0x00000000ff00aa55ull);
__mmask64 test_mm512_cmplt_epi8_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmplt_epi8_mask
@@ -1098,12 +1380,33 @@ TEST_CONSTEXPR(_mm512_cmplt_epi8_mask(
57, 58, 0, 0, 0, 0, 63, 64 })
) == (__mmask64)0x3c81f00fff00aa55ull);
-__mmask64 test_mm512_mask_cmplt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmplt_epi8_mask
- // CHECK: icmp slt <64 x i8> %{{.*}}, %{{.*}}
+__mmask64 test_mm512_mask_cmplt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmplt_epu8_mask
+ // CHECK: icmp ult <64 x i8> %{{.*}}, %{{.*}}
// CHECK: and <64 x i1> %{{.*}}, %{{.*}}
- return (__mmask64)_mm512_mask_cmplt_epi8_mask(__u, __a, __b);
+ return (__mmask64)_mm512_mask_cmplt_epu8_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmplt_epu8_mask(
+ (__mmask64)0x00000000FFFFFFFFull,
+ ((__m512i)(__v64qu){
+ 1, 9, 3, 9, 5, 9, 7, 9,
+ 9, 1, 9, 3, 9, 5, 9, 7,
+ 0, 127, 128, 255, 0, 127, 128, 255,
+ 0, 1, 127, 128, 0, 254, 129, 1,
+ 1, 2, 3, 4, 50, 200, 70, 80,
+ 255, 9, 9, 9, 5, 4, 3, 2,
+ 0, 50, 51, 52, 53, 54, 55, 255,
+ 57, 58, 1, 1, 1, 1, 63, 64 }),
+ ((__m512i)(__v64qu){
+ 9, 2, 9, 4, 9, 6, 9, 8,
+ 2, 9, 4, 9, 6, 9, 8, 9,
+ 0, 127, 128, 255, 0, 127, 128, 255,
+ 255, 128, 128, 255, 255, 255, 255, 255,
+ 5, 6, 7, 8, 50, 60, 70, 79,
+ 0, 2, 3, 4, 9, 9, 9, 9,
+ 255, 50, 50, 52, 52, 54, 54, 0,
+ 57, 58, 0, 0, 0, 0, 63, 64 })
+) == (__mmask64)0x00000000ff00aa55ull);
__mmask64 test_mm512_cmplt_epu8_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmplt_epu8_mask
@@ -1131,12 +1434,25 @@ TEST_CONSTEXPR(_mm512_cmplt_epu8_mask(
57, 58, 0, 0, 0, 0, 63, 64 })
) == (__mmask64)0x0001f00fff00aa55ull);
-__mmask64 test_mm512_mask_cmplt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmplt_epu8_mask
- // CHECK: icmp ult <64 x i8> %{{.*}}, %{{.*}}
- // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
- return (__mmask64)_mm512_mask_cmplt_epu8_mask(__u, __a, __b);
+__mmask32 test_mm512_mask_cmplt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmplt_epi16_mask
+ // CHECK: icmp slt <32 x i16> %{{.*}}, %{{.*}}
+ // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
+ return (__mmask32)_mm512_mask_cmplt_epi16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmplt_epi16_mask(
+ (__mmask32)0x0000FFFFu,
+ ((__m512i)(__v32hi){
+ 9, 2, 9, 4, 9, 6, 9, 8,
+ -32768, -1, 0, 32767, -32768, -1, 0, 32767,
+ 1, 2, 3, 4, 5, -6, -7, -8,
+ 1000, -1000, 32767, -32768, 255, 256, -256, -255 }),
+ ((__m512i)(__v32hi){
+ 1, 9, 3, 9, 5, 9, 7, 9,
+ -32768, -1, 0, 32767, -32768, -1, 0, 32767,
+ 5, 6, 7, 8, -1, -2, -3, -4,
+ -1000, -1000, -32768, 32767, 255, -256, -257, 255 })
+) == (__mmask32)0x000000aau);
__mmask32 test_mm512_cmplt_epi16_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmplt_epi16_mask
@@ -1156,12 +1472,25 @@ TEST_CONSTEXPR(_mm512_cmplt_epi16_mask(
-1000, -1000, -32768, 32767, 255, -256, -257, 255 })
) == (__mmask32)0x88ef00aau);
-__mmask32 test_mm512_mask_cmplt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmplt_epi16_mask
- // CHECK: icmp slt <32 x i16> %{{.*}}, %{{.*}}
+__mmask32 test_mm512_mask_cmplt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmplt_epu16_mask
+ // CHECK: icmp ult <32 x i16> %{{.*}}, %{{.*}}
// CHECK: and <32 x i1> %{{.*}}, %{{.*}}
- return (__mmask32)_mm512_mask_cmplt_epi16_mask(__u, __a, __b);
+ return (__mmask32)_mm512_mask_cmplt_epu16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmplt_epu16_mask(
+ (__mmask32)0x0000FFFFu,
+ ((__m512i)(__v32hu){
+ 9, 2, 9, 4, 9, 6, 9, 8,
+ 0, 32767, 32768, 65535, 0, 32767, 32768, 65535,
+ 1, 2, 3, 4, 50000, 6, 7, 8,
+ 40000, 1000, 65535, 0, 255, 65280, 32768, 32767 }),
+ ((__m512i)(__v32hu){
+ 1, 9, 3, 9, 5, 9, 7, 9,
+ 0, 32767, 32768, 65535, 0, 32767, 32768, 65535,
+ 5, 6, 7, 8, 1, 40000, 65535, 65535,
+ 1000, 1000, 0, 65535, 255, 256, 32768, 32768 })
+) == (__mmask32)0x000000aau);
__mmask32 test_mm512_cmplt_epu16_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmplt_epu16_mask
@@ -1181,12 +1510,31 @@ TEST_CONSTEXPR(_mm512_cmplt_epu16_mask(
1000, 1000, 0, 65535, 255, 256, 32768, 32768 })
) == (__mmask32)0x88ef00aau);
-__mmask32 test_mm512_mask_cmplt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmplt_epu16_mask
- // CHECK: icmp ult <32 x i16> %{{.*}}, %{{.*}}
- // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
- return (__mmask32)_mm512_mask_cmplt_epu16_mask(__u, __a, __b);
+__mmask64 test_mm512_mask_cmpneq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmpneq_epi8_mask
+ // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}}
+ // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
+ return (__mmask64)_mm512_mask_cmpneq_epi8_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmpneq_epi8_mask(
+ (__mmask64)0x00000000FFFFFFFFull,
+ ((__m512i)(__v64qs){ 1, 2, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 16,
+ -128, -1, 0, 127, -128, -1, 0, 127,
+ -128, -1, 0, 127, 1, 2, 3, 4,
+ 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, 61, 62, 63, 64 }),
+ ((__m512i)(__v64qs){ 9, 2, 9, 4, 9, 6, 9, 8,
+ 9, 0, 11, 0, 13, 0, 15, 0,
+ -128, -1, 0, 127, -128, -1, 0, 127,
+ 127, 0, -1, -128, -1, -2, -3, -4,
+ 0, 0, 0, 0, 37, 38, 39, 40,
+ 41, 42, 43, 44, 0, 0, 0, 0,
+ -49, 50, 51, 52, 53, 54, 55, -56,
+ 57, 58, -1, -1, -1, -1, 63, 64 })
+) == (__mmask64)0x00000000ff00aa55ull);
__mmask64 test_mm512_cmpneq_epi8_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmpneq_epi8_mask
@@ -1212,12 +1560,33 @@ TEST_CONSTEXPR(_mm512_cmpneq_epi8_mask(
57, 58, -1, -1, -1, -1, 63, 64 })
) == (__mmask64)0x3c81f00fff00aa55ull);
-__mmask64 test_mm512_mask_cmpneq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmpneq_epi8_mask
+__mmask64 test_mm512_mask_cmpneq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmpneq_epu8_mask
// CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}}
// CHECK: and <64 x i1> %{{.*}}, %{{.*}}
- return (__mmask64)_mm512_mask_cmpneq_epi8_mask(__u, __a, __b);
+ return (__mmask64)_mm512_mask_cmpneq_epu8_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmpneq_epu8_mask(
+ (__mmask64)0x00000000FFFFFFFFull,
+ ((__m512i)(__v64qu){
+ 1, 2, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 16,
+ 0, 127, 128, 255, 0, 127, 128, 255,
+ 0, 1, 127, 128, 255, 254, 129, 1,
+ 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, 61, 62, 63, 64 }),
+ ((__m512i)(__v64qu){
+ 9, 2, 9, 4, 9, 6, 9, 8,
+ 9, 0, 11, 0, 13, 0, 15, 0,
+ 0, 127, 128, 255, 0, 127, 128, 255,
+ 255, 0, 128, 127, 0, 1, 128, 2,
+ 0, 0, 0, 0, 37, 38, 39, 40,
+ 41, 42, 43, 44, 0, 0, 0, 0,
+ 200, 50, 51, 52, 53, 54, 55, 255,
+ 57, 58, 255, 255, 255, 255, 63, 64 })
+) == (__mmask64)0x00000000ff00aa55ull);
__mmask64 test_mm512_cmpneq_epu8_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmpneq_epu8_mask
@@ -1245,12 +1614,25 @@ TEST_CONSTEXPR(_mm512_cmpneq_epu8_mask(
57, 58, 255, 255, 255, 255, 63, 64 })
) == (__mmask64)0x3c81f00fff00aa55ull);
-__mmask64 test_mm512_mask_cmpneq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmpneq_epu8_mask
- // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}}
- // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
- return (__mmask64)_mm512_mask_cmpneq_epu8_mask(__u, __a, __b);
+__mmask32 test_mm512_mask_cmpneq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmpneq_epi16_mask
+ // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}}
+ // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
+ return (__mmask32)_mm512_mask_cmpneq_epi16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmpneq_epi16_mask(
+ (__mmask32)0x0000FFFFu,
+ ((__m512i)(__v32hi){
+ 1, 2, 3, 4, 5, 6, 7, 8,
+ -32768, -1, 0, 32767, -32768, -1, 0, 32767,
+ 100, 200, 300, 400, -100, -200, -300, -400,
+ 1000, -1000, 32767, -32768, 255, 256, -256, -255 }),
+ ((__m512i)(__v32hi){
+ 1, 9, 3, 9, 5, 9, 7, 9,
+ -32768, -1, 0, 32767, -32768, -1, 0, 32767,
+ 100, 0, 300, 0, -100, 0, -300, 0,
+ -1000, -1000, -32768, 32767, 255, -256, -256, 255 })
+) == (__mmask32)0x000000aau);
__mmask32 test_mm512_cmpneq_epi16_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmpneq_epi16_mask
@@ -1270,12 +1652,25 @@ TEST_CONSTEXPR(_mm512_cmpneq_epi16_mask(
-1000, -1000, -32768, 32767, 255, -256, -256, 255 })
) == (__mmask32)0xadaa00aau);
-__mmask32 test_mm512_mask_cmpneq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmpneq_epi16_mask
+__mmask32 test_mm512_mask_cmpneq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmpneq_epu16_mask
// CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}}
// CHECK: and <32 x i1> %{{.*}}, %{{.*}}
- return (__mmask32)_mm512_mask_cmpneq_epi16_mask(__u, __a, __b);
+ return (__mmask32)_mm512_mask_cmpneq_epu16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm512_mask_cmpneq_epu16_mask(
+ (__mmask32)0x0000FFFFu,
+ ((__m512i)(__v32hu){
+ 1, 2, 3, 4, 5, 6, 7, 8,
+ 0, 32767, 32768, 65535, 0, 32767, 32768, 65535,
+ 100, 200, 300, 400, 50000, 60000, 65000, 65535,
+ 1000, 40000, 65535, 0, 255, 256, 32768, 32767 }),
+ ((__m512i)(__v32hu){
+ 1, 9, 3, 9, 5, 9, 7, 9,
+ 0, 32767, 32768, 65535, 0, 32767, 32768, 65535,
+ 100, 0, 300, 0, 50000, 0, 65000, 0,
+ 40000, 40000, 0, 65535, 255, 65280, 32768, 32768 })
+) == (__mmask32)0x000000aau);
__mmask32 test_mm512_cmpneq_epu16_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmpneq_epu16_mask
@@ -1295,13 +1690,6 @@ TEST_CONSTEXPR(_mm512_cmpneq_epu16_mask(
40000, 40000, 0, 65535, 255, 65280, 32768, 32768 })
) == (__mmask32)0xadaa00aau);
-__mmask32 test_mm512_mask_cmpneq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_mask_cmpneq_epu16_mask
- // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}}
- // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
- return (__mmask32)_mm512_mask_cmpneq_epu16_mask(__u, __a, __b);
-}
-
__mmask64 test_mm512_cmp_epi8_mask(__m512i __a, __m512i __b) {
// CHECK-LABEL: test_mm512_cmp_epi8_mask
// CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
>From 40d7baa4cbd37337e14ecaecdc2dd825233a6711 Mon Sep 17 00:00:00 2001
From: Shriharsh Acharya <happy.irhs at gmail.com>
Date: Sat, 3 Oct 2026 15:40:05 +0545
Subject: [PATCH 4/5] feat: add tests for
_mm(/256)_mask_cmp*_ep(u/i)(8/16)_mask
---
clang/test/CodeGen/X86/avx512vlbw-builtins.c | 671 +++++++++++++------
1 file changed, 448 insertions(+), 223 deletions(-)
diff --git a/clang/test/CodeGen/X86/avx512vlbw-builtins.c b/clang/test/CodeGen/X86/avx512vlbw-builtins.c
index 87eca741eb069..e44c90e1ac9a9 100644
--- a/clang/test/CodeGen/X86/avx512vlbw-builtins.c
+++ b/clang/test/CodeGen/X86/avx512vlbw-builtins.c
@@ -15,6 +15,18 @@
#include <immintrin.h>
#include "builtin_test_helpers.h"
+__mmask32 test_mm256_mask_cmpeq_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
+ // CHECK-LABEL: test_mm256_mask_cmpeq_epi8_mask
+ // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}
+ // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
+ return (__mmask32)_mm256_mask_cmpeq_epi8_mask(__u, __a, __b);
+}
+TEST_CONSTEXPR(_mm256_mask_cmpeq_epi8_mask(
+ (__mmask32)0x0000FFFFu,
+ ((__m256i)(__v32qs){-62, 71, 111, 70, 20, 26, 34, -11, 49, 122, 80, 96, -30, 103, -11, 73, -105, -20, -98, 12, 106, 7, 61, 25, 39, -6, -109, 2, -26, -86, -77, -94}),
+ ((__m256i)(__v32qs){-2, 120, 99, -40, -72, -83, 73, 80, -74, -110, 4, 91, -33, -24, 38, -122, -41, 115, 63, 43, 113, -43, 121, 46, -30, 92, 52, -117, -75, -113, -31, -47})
+) == (__mmask32)0x0);
+
__mmask32 test_mm256_cmpeq_epi8_mask(__m256i __a, __m256i __b) {
// CHECK-LABEL: test_mm256_cmpeq_epi8_mask
// CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}
@@ -25,30 +37,39 @@ TEST_CONSTEXPR(_mm256_cmpeq_epi8_mask(
((__m256i)(__v32qs){-2, 120, 99, -40, -72, -83, 73, 80, -74, -110, 4, 91, -33, -24, 38, -122, -41, 115, 63, 43, 113, -43, 121, 46, -30, 92, 52, -117, -75, -113, -31, -47})
) == (__mmask32)0x0);
-__mmask32 test_mm256_mask_cmpeq_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
- // CHECK-LABEL: test_mm256_mask_cmpeq_epi8_mask
- // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}
- // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
- return (__mmask32)_mm256_mask_cmpeq_epi8_mask(__u, __a, __b);
+__mmask16 test_mm_mask_cmpeq_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
+ // CHECK-LABEL: test_mm_mask_cmpeq_epi8_mask
+ // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
+ // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
+ return (__mmask16)_mm_mask_cmpeq_epi8_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm_mask_cmpeq_epi8_mask(
+ (__mmask16)0x00FF,
+ ((__m128i)(__v16qs){-31, 90, -66, 3, 27, -22, -64, 111, -87, 105, -19, 0, 26, -111, 24, -72}),
+ ((__m128i)(__v16qs){-84, 90, 20, -83, -98, 80, -46, -9, 22, -120, -123, 53, 117, -85, 50, 94})
+) == (__mmask16)0x0002);
__mmask16 test_mm_cmpeq_epi8_mask(__m128i __a, __m128i __b) {
// CHECK-LABEL: test_mm_cmpeq_epi8_mask
// CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
return (__mmask16)_mm_cmpeq_epi8_mask(__a, __b);
}
-
TEST_CONSTEXPR(_mm_cmpeq_epi8_mask(
((__m128i)(__v16qs){-31, 90, -66, 3, 27, -22, -64, 111, -87, 105, -19, 0, 26, -111, 24, -72}),
((__m128i)(__v16qs){-84, 90, 20, -83, -98, 80, -46, -9, 22, -120, -123, 53, 117, -85, 50, 94})
) == (__mmask16)0x0002);
-__mmask16 test_mm_mask_cmpeq_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
- // CHECK-LABEL: test_mm_mask_cmpeq_epi8_mask
- // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
+__mmask16 test_mm256_mask_cmpeq_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
+ // CHECK-LABEL: test_mm256_mask_cmpeq_epi16_mask
+ // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}
// CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm_mask_cmpeq_epi8_mask(__u, __a, __b);
+ return (__mmask16)_mm256_mask_cmpeq_epi16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm256_mask_cmpeq_epi16_mask(
+ (__mmask16)0x7FFFu,
+ ((__m256i)(__v16hi){ 10,1,2,3,4,20,6,7, 8,9,10,11,12,13,14,200 }),
+ ((__m256i)(__v16hi){ 10,99,99,99,99,20,99,99, 99,99,99,99,99,99,99,200 })
+) == (__mmask16)0x0021u);
__mmask16 test_mm256_cmpeq_epi16_mask(__m256i __a, __m256i __b) {
// CHECK-LABEL: test_mm256_cmpeq_epi16_mask
@@ -59,12 +80,17 @@ TEST_CONSTEXPR(_mm256_cmpeq_epi16_mask( ((__m256i)(__v16hi){ 10,1,2,3,4,20,6,7,
((__m256i)(__v16hi){ 10,99,99,99,99,20,99,99, 99,99,99,99,99,99,99,200 })
)==(__mmask16)0x8021u);
-__mmask16 test_mm256_mask_cmpeq_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
- // CHECK-LABEL: test_mm256_mask_cmpeq_epi16_mask
- // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}
- // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm256_mask_cmpeq_epi16_mask(__u, __a, __b);
+__mmask8 test_mm_mask_cmpeq_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
+ // CHECK-LABEL: test_mm_mask_cmpeq_epi16_mask
+ // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
+ // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
+ return (__mmask8)_mm_mask_cmpeq_epi16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm_mask_cmpeq_epi16_mask(
+ (__mmask8)0xAAu,
+ ((__m128i)(__v8hi){-24008, 21674, 8299, -31133, 23486, -29407, -15611, -7613}),
+ ((__m128i)(__v8hi){10079, -14333, 2802, 21711, -10849, 11468, -528, -18259})
+) == (__mmask8)0x00u);
__mmask8 test_mm_cmpeq_epi16_mask(__m128i __a, __m128i __b) {
// CHECK-LABEL: test_mm_cmpeq_epi16_mask
@@ -76,30 +102,39 @@ TEST_CONSTEXPR(_mm_cmpeq_epi16_mask(
((__m128i)(__v8hi){10079, -14333, 2802, 21711, -10849, 11468, -528, -18259})
) == (__mmask8)0x00);
-__mmask8 test_mm_mask_cmpeq_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
- // CHECK-LABEL: test_mm_mask_cmpeq_epi16_mask
- // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
- // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
- return (__mmask8)_mm_mask_cmpeq_epi16_mask(__u, __a, __b);
+__mmask32 test_mm256_mask_cmpgt_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
+ // CHECK-LABEL: test_mm256_mask_cmpgt_epi8_mask
+ // CHECK: icmp sgt <32 x i8> %{{.*}}, %{{.*}}
+ // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
+ return (__mmask32)_mm256_mask_cmpgt_epi8_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm256_mask_cmpgt_epi8_mask(
+ (__mmask32)0x55555555u,
+ ((__m256i)(__v32qs){17, -85, 47, -4, 36, 38, -60, 33, -35, 89, -87, 23, 104, 30, -49, 41, 1, 112, -7, 22, 126, 26, -57, -23, 67, -124, -120, 62, 72, 126, 43, -49}),
+ ((__m256i)(__v32qs){-48, -107, -125, 53, 78, 121, 92, 17, -51, 79, 116, -21, -52, 26, 63, -71, -86, -99, -11, 13, 75, -120, -113, -87, 115, -94, 74, -82, 117, -6, -47, 103})
+) == (__mmask32)0x00551105u);
__mmask32 test_mm256_cmpgt_epi8_mask(__m256i __a, __m256i __b) {
// CHECK-LABEL: test_mm256_cmpgt_epi8_mask
// CHECK: icmp sgt <32 x i8> %{{.*}}, %{{.*}}
return (__mmask32)_mm256_cmpgt_epi8_mask(__a, __b);
}
-// cmpgt
TEST_CONSTEXPR(_mm256_cmpgt_epi8_mask(
((__m256i)(__v32qs){17, -85, 47, -4, 36, 38, -60, 33, -35, 89, -87, 23, 104, 30, -49, 41, 1, 112, -7, 22, 126, 26, -57, -23, 67, -124, -120, 62, 72, 126, 43, -49}),
((__m256i)(__v32qs){-48, -107, -125, 53, 78, 121, 92, 17, -51, 79, 116, -21, -52, 26, 63, -71, -86, -99, -11, 13, 75, -120, -113, -87, 115, -94, 74, -82, 117, -6, -47, 103})
) == (__mmask32)0x68ffbb87);
-__mmask32 test_mm256_mask_cmpgt_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
- // CHECK-LABEL: test_mm256_mask_cmpgt_epi8_mask
- // CHECK: icmp sgt <32 x i8> %{{.*}}, %{{.*}}
- // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
- return (__mmask32)_mm256_mask_cmpgt_epi8_mask(__u, __a, __b);
+__mmask16 test_mm_mask_cmpgt_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
+ // CHECK-LABEL: test_mm_mask_cmpgt_epi8_mask
+ // CHECK: icmp sgt <16 x i8> %{{.*}}, %{{.*}}
+ // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
+ return (__mmask16)_mm_mask_cmpgt_epi8_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm_mask_cmpgt_epi8_mask(
+ (__mmask16)0x5555u,
+ ((__m128i)(__v16qs){-127, 37, -123, -60, 98, -68, -115, 96, 80, -27, -105, 64, -6, -51, -45, -81}),
+ ((__m128i)(__v16qs){-124, 59, 8, 59, 122, 47, -74, 120, 19, -43, -33, -76, 7, -22, -24, -14})
+) == (__mmask16)0x0100u);
__mmask16 test_mm_cmpgt_epi8_mask(__m128i __a, __m128i __b) {
// CHECK-LABEL: test_mm_cmpgt_epi8_mask
@@ -111,12 +146,17 @@ TEST_CONSTEXPR(_mm_cmpgt_epi8_mask(
((__m128i)(__v16qs){-124, 59, 8, 59, 122, 47, -74, 120, 19, -43, -33, -76, 7, -22, -24, -14})
) == (__mmask16)0x0b00);
-__mmask16 test_mm_mask_cmpgt_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
- // CHECK-LABEL: test_mm_mask_cmpgt_epi8_mask
- // CHECK: icmp sgt <16 x i8> %{{.*}}, %{{.*}}
+__mmask16 test_mm256_mask_cmpgt_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
+ // CHECK-LABEL: test_mm256_mask_cmpgt_epi16_mask
+ // CHECK: icmp sgt <16 x i16> %{{.*}}, %{{.*}}
// CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm_mask_cmpgt_epi8_mask(__u, __a, __b);
+ return (__mmask16)_mm256_mask_cmpgt_epi16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm256_mask_cmpgt_epi16_mask(
+ (__mmask16)0x5555u,
+ ((__m256i)(__v16hi){ 0,1,2,3,4,5,6,7, 8,9,10,11,12,13,14,15 }),
+ ((__m256i)(__v16hi){ 7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7 })
+) == (__mmask16)0x5500u);
__mmask16 test_mm256_cmpgt_epi16_mask(__m256i __a, __m256i __b) {
// CHECK-LABEL: test_mm256_cmpgt_epi16_mask
@@ -128,12 +168,17 @@ TEST_CONSTEXPR(_mm256_cmpgt_epi16_mask(
((__m256i)(__v16hi){ 7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7 })
)==(__mmask16)0xFF00u);
-__mmask16 test_mm256_mask_cmpgt_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
- // CHECK-LABEL: test_mm256_mask_cmpgt_epi16_mask
- // CHECK: icmp sgt <16 x i16> %{{.*}}, %{{.*}}
- // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm256_mask_cmpgt_epi16_mask(__u, __a, __b);
+__mmask8 test_mm_mask_cmpgt_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
+ // CHECK-LABEL: test_mm_mask_cmpgt_epi16_mask
+ // CHECK: icmp sgt <8 x i16> %{{.*}}, %{{.*}}
+ // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
+ return (__mmask8)_mm_mask_cmpgt_epi16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm_mask_cmpgt_epi16_mask(
+ (__mmask8)0xAAu,
+ ((__m128i)(__v8hi){-16014, 12488, 2614, -25164, -8107, -20887, -21726, 32065}),
+ ((__m128i)(__v8hi){-32191, 26305, -6600, 3970, -31254, 30169, 22872, -2017})
+) == (__mmask8)0x80u);
__mmask8 test_mm_cmpgt_epi16_mask(__m128i __a, __m128i __b) {
// CHECK-LABEL: test_mm_cmpgt_epi16_mask
@@ -145,12 +190,17 @@ TEST_CONSTEXPR(_mm_cmpgt_epi16_mask(
((__m128i)(__v8hi){-32191, 26305, -6600, 3970, -31254, 30169, 22872, -2017})
) == (__mmask8)0x95);
-__mmask8 test_mm_mask_cmpgt_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
- // CHECK-LABEL: test_mm_mask_cmpgt_epi16_mask
- // CHECK: icmp sgt <8 x i16> %{{.*}}, %{{.*}}
- // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
- return (__mmask8)_mm_mask_cmpgt_epi16_mask(__u, __a, __b);
+__mmask16 test_mm_mask_cmpeq_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
+ // CHECK-LABEL: test_mm_mask_cmpeq_epu8_mask
+ // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
+ // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
+ return (__mmask16)_mm_mask_cmpeq_epu8_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm_mask_cmpeq_epu8_mask(
+ (__mmask16)0x5555u,
+ ((__m128i)(__v16qu){145, 106, 8, 210, 56, 39, 72, 146, 99, 151, 112, 16, 160, 80, 140, 70}),
+ ((__m128i)(__v16qu){203, 124, 25, 113, 140, 85, 126, 152, 170, 25, 6, 121, 146, 40, 113, 57})
+) == (__mmask16)0x0000u);
__mmask16 test_mm_cmpeq_epu8_mask(__m128i __a, __m128i __b) {
// CHECK-LABEL: test_mm_cmpeq_epu8_mask
@@ -162,12 +212,17 @@ TEST_CONSTEXPR(_mm_cmpeq_epu8_mask(
((__m128i)(__v16qu){203, 124, 25, 113, 140, 85, 126, 152, 170, 25, 6, 121, 146, 40, 113, 57})
) == (__mmask16)0x0000);
-__mmask16 test_mm_mask_cmpeq_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
- // CHECK-LABEL: test_mm_mask_cmpeq_epu8_mask
- // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
- // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm_mask_cmpeq_epu8_mask(__u, __a, __b);
+__mmask8 test_mm_mask_cmpeq_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
+ // CHECK-LABEL: test_mm_mask_cmpeq_epu16_mask
+ // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
+ // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
+ return (__mmask8)_mm_mask_cmpeq_epu16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm_mask_cmpeq_epu16_mask(
+ (__mmask8)0x55u,
+ ((__m128i)(__v8hu){57064, 51949, 42152, 43038, 65515, 7797, 23751, 12389}),
+ ((__m128i)(__v8hu){38499, 21192, 9584, 15701, 4826, 6826, 47257, 20923})
+) == (__mmask8)0x00u);
__mmask8 test_mm_cmpeq_epu16_mask(__m128i __a, __m128i __b) {
// CHECK-LABEL: test_mm_cmpeq_epu16_mask
@@ -179,12 +234,17 @@ TEST_CONSTEXPR(_mm_cmpeq_epu16_mask(
((__m128i)(__v8hu){38499, 21192, 9584, 15701, 4826, 6826, 47257, 20923})
) == (__mmask8)0x00);
-__mmask8 test_mm_mask_cmpeq_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
- // CHECK-LABEL: test_mm_mask_cmpeq_epu16_mask
- // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
- // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
- return (__mmask8)_mm_mask_cmpeq_epu16_mask(__u, __a, __b);
+__mmask32 test_mm256_mask_cmpeq_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
+ // CHECK-LABEL: test_mm256_mask_cmpeq_epu8_mask
+ // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}
+ // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
+ return (__mmask32)_mm256_mask_cmpeq_epu8_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm256_mask_cmpeq_epu8_mask(
+ (__mmask32)0x7FFFFFFF1u,
+ ((__m256i)(__v32qu){ 10,1,2,3,4,20,6,7, 8,9,10,11,12,13,14,15, 16,17,18,19,20,21,22,23, 24,25,26,27,28,29,30,200 }),
+ ((__m256i)(__v32qu){ 10,99,99,99,99,20,99,99, 99,99,99,99,99,99,99,99, 99,99,99,99,99,99,99,99, 99,99,99,99,99,99,99,200 })
+) == (__mmask32)0x00000021u);
__mmask32 test_mm256_cmpeq_epu8_mask(__m256i __a, __m256i __b) {
// CHECK-LABEL: test_mm256_cmpeq_epu8_mask
@@ -197,12 +257,17 @@ TEST_CONSTEXPR(_mm256_cmpeq_epu8_mask(
((__m256i)(__v32qu){ 10,99,99,99,99,20,99,99, 99,99,99,99,99,99,99,99, 99,99,99,99,99,99,99,99, 99,99,99,99,99,99,99,200 })
)==(__mmask32)0x80000021u);
-__mmask32 test_mm256_mask_cmpeq_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
- // CHECK-LABEL: test_mm256_mask_cmpeq_epu8_mask
- // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}
- // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
- return (__mmask32)_mm256_mask_cmpeq_epu8_mask(__u, __a, __b);
+__mmask16 test_mm256_mask_cmpeq_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
+ // CHECK-LABEL: test_mm256_mask_cmpeq_epu16_mask
+ // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}
+ // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
+ return (__mmask16)_mm256_mask_cmpeq_epu16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm256_mask_cmpeq_epu16_mask(
+ (__mmask16)0x7FFFu,
+ ((__m256i)(__v16hu){ 10,1,2,3,4,20,6,7, 8,9,10,11,12,13,14,200 }),
+ ((__m256i)(__v16hu){ 10,99,99,99,99,20,99,99, 99,99,99,99,99,99,99,200 })
+) == (__mmask16)0x0021u);
__mmask16 test_mm256_cmpeq_epu16_mask(__m256i __a, __m256i __b) {
// CHECK-LABEL: test_mm256_cmpeq_epu16_mask
@@ -214,12 +279,17 @@ TEST_CONSTEXPR(_mm256_cmpeq_epu16_mask(
((__m256i)(__v16hu){ 10,99,99,99,99,20,99,99, 99,99,99,99,99,99,99,200
}))==(__mmask16)0x8021u);
-__mmask16 test_mm256_mask_cmpeq_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
- // CHECK-LABEL: test_mm256_mask_cmpeq_epu16_mask
- // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}
+__mmask16 test_mm_mask_cmpgt_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
+ // CHECK-LABEL: test_mm_mask_cmpgt_epu8_mask
+ // CHECK: icmp ugt <16 x i8> %{{.*}}, %{{.*}}
// CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm256_mask_cmpeq_epu16_mask(__u, __a, __b);
+ return (__mmask16)_mm_mask_cmpgt_epu8_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm_mask_cmpgt_epu8_mask(
+ (__mmask16)0x5555u,
+ ((__m128i)(__v16qu){25, 67, 207, 46, 203, 0, 89, 144, 93, 235, 192, 245, 29, 67, 227, 66}),
+ ((__m128i)(__v16qu){59, 110, 28, 206, 112, 88, 82, 187, 108, 82, 224, 47, 184, 168, 201, 105})
+) == (__mmask16)0x4054u);
__mmask16 test_mm_cmpgt_epu8_mask(__m128i __a, __m128i __b) {
// CHECK-LABEL: test_mm_cmpgt_epu8_mask
@@ -231,12 +301,17 @@ TEST_CONSTEXPR(_mm_cmpgt_epu8_mask(
((__m128i)(__v16qu){59, 110, 28, 206, 112, 88, 82, 187, 108, 82, 224, 47, 184, 168, 201, 105})
) == (__mmask16)0x4a54);
-__mmask16 test_mm_mask_cmpgt_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
- // CHECK-LABEL: test_mm_mask_cmpgt_epu8_mask
- // CHECK: icmp ugt <16 x i8> %{{.*}}, %{{.*}}
- // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm_mask_cmpgt_epu8_mask(__u, __a, __b);
+__mmask8 test_mm_mask_cmpgt_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
+ // CHECK-LABEL: test_mm_mask_cmpgt_epu16_mask
+ // CHECK: icmp ugt <8 x i16> %{{.*}}, %{{.*}}
+ // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
+ return (__mmask8)_mm_mask_cmpgt_epu16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm_mask_cmpgt_epu16_mask(
+ (__mmask8)0xAAu,
+ ((__m128i)(__v8hu){36435, 57842, 17322, 33066, 51263, 58618, 57550, 23212}),
+ ((__m128i)(__v8hu){150, 39532, 62935, 34670, 57126, 9790, 21078, 3593})
+) == (__mmask8)0xA2u);
__mmask8 test_mm_cmpgt_epu16_mask(__m128i __a, __m128i __b) {
// CHECK-LABEL: test_mm_cmpgt_epu16_mask
@@ -248,12 +323,17 @@ TEST_CONSTEXPR(_mm_cmpgt_epu16_mask(
((__m128i)(__v8hu){150, 39532, 62935, 34670, 57126, 9790, 21078, 3593})
) == (__mmask8)0xe3);
-__mmask8 test_mm_mask_cmpgt_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
- // CHECK-LABEL: test_mm_mask_cmpgt_epu16_mask
- // CHECK: icmp ugt <8 x i16> %{{.*}}, %{{.*}}
- // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
- return (__mmask8)_mm_mask_cmpgt_epu16_mask(__u, __a, __b);
+__mmask32 test_mm256_mask_cmpgt_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
+ // CHECK-LABEL: test_mm256_mask_cmpgt_epu8_mask
+ // CHECK: icmp ugt <32 x i8> %{{.*}}, %{{.*}}
+ // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
+ return (__mmask32)_mm256_mask_cmpgt_epu8_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm256_mask_cmpgt_epu8_mask(
+ (__mmask32)0x55555555u,
+ ((__m256i)(__v32qu){ 0,1,2,3,4,5,6,7, 8,9,10,11,12,13,14,15, 16,17,18,19,20,21,22,23, 24,25,26,27,28,29,30,31 }),
+ ((__m256i)(__v32qu){ 15,15,15,15,15,15,15,15, 15,15,15,15,15,15,15,15, 15,15,15,15,15,15,15,15, 15,15,15,15,15,15,15,15 })
+) == (__mmask32)0x55550000u);
__mmask32 test_mm256_cmpgt_epu8_mask(__m256i __a, __m256i __b) {
// CHECK-LABEL: test_mm256_cmpgt_epu8_mask
@@ -267,12 +347,17 @@ TEST_CONSTEXPR(_mm256_cmpgt_epu8_mask(
15,15,15,15,15,15,15,15 })
)==(__mmask32)0xFFFF0000u);
-__mmask32 test_mm256_mask_cmpgt_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
- // CHECK-LABEL: test_mm256_mask_cmpgt_epu8_mask
- // CHECK: icmp ugt <32 x i8> %{{.*}}, %{{.*}}
- // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
- return (__mmask32)_mm256_mask_cmpgt_epu8_mask(__u, __a, __b);
+__mmask16 test_mm256_mask_cmpgt_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
+ // CHECK-LABEL: test_mm256_mask_cmpgt_epu16_mask
+ // CHECK: icmp ugt <16 x i16> %{{.*}}, %{{.*}}
+ // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
+ return (__mmask16)_mm256_mask_cmpgt_epu16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm256_mask_cmpgt_epu16_mask(
+ (__mmask16)0x5555u,
+ ((__m256i)(__v16hu){ 10,100,2,50,4,20,99,7, 8,9,10,11,12,13,14,200 }),
+ ((__m256i)(__v16hu){ 10,99,99,49,99,20,98,99, 99,99,99,99,99,99,99,200 })
+) == (__mmask16)0x0040u);
__mmask16 test_mm256_cmpgt_epu16_mask(__m256i __a, __m256i __b) {
// CHECK-LABEL: test_mm256_cmpgt_epu16_mask
@@ -284,13 +369,17 @@ TEST_CONSTEXPR(_mm256_cmpgt_epu16_mask(
((__m256i)(__v16hu){ 10,99,99,49,99,20,98,99, 99,99,99,99,99,99,99,200 })
)==(__mmask16)0x004au);
-
-__mmask16 test_mm256_mask_cmpgt_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
- // CHECK-LABEL: test_mm256_mask_cmpgt_epu16_mask
- // CHECK: icmp ugt <16 x i16> %{{.*}}, %{{.*}}
+__mmask16 test_mm_mask_cmpge_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
+ // CHECK-LABEL: test_mm_mask_cmpge_epi8_mask
+ // CHECK: icmp sge <16 x i8> %{{.*}}, %{{.*}}
// CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm256_mask_cmpgt_epu16_mask(__u, __a, __b);
+ return (__mmask16)_mm_mask_cmpge_epi8_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm_mask_cmpge_epi8_mask(
+ (__mmask16)0x5555u,
+ ((__m128i)(__v16qs){-11, 0, 97, 123, -48, 105, 26, -118, 62, -86, -94, -32, 14, -4, -50, 72}),
+ ((__m128i)(__v16qs){-33, 49, 22, 31, -4, -81, 6, -22, 40, 127, -1, -106, 6, -64, 12, 8})
+) == (__mmask16)0x1145u);
__mmask16 test_mm_cmpge_epi8_mask(__m128i __a, __m128i __b) {
// CHECK-LABEL: test_mm_cmpge_epi8_mask
@@ -302,12 +391,17 @@ TEST_CONSTEXPR(_mm_cmpge_epi8_mask(
((__m128i)(__v16qs){-33, 49, 22, 31, -4, -81, 6, -22, 40, 127, -1, -106, 6, -64, 12, 8})
) == (__mmask16)0xb96d);
-__mmask16 test_mm_mask_cmpge_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
- // CHECK-LABEL: test_mm_mask_cmpge_epi8_mask
- // CHECK: icmp sge <16 x i8> %{{.*}}, %{{.*}}
+__mmask16 test_mm_mask_cmpge_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
+ // CHECK-LABEL: test_mm_mask_cmpge_epu8_mask
+ // CHECK: icmp uge <16 x i8> %{{.*}}, %{{.*}}
// CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm_mask_cmpge_epi8_mask(__u, __a, __b);
+ return (__mmask16)_mm_mask_cmpge_epu8_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm_mask_cmpge_epu8_mask(
+ (__mmask16)0x5555u,
+ ((__m128i)(__v16qu){165, 179, 185, 74, 129, 89, 42, 170, 195, 35, 151, 20, 240, 155, 245, 254}),
+ ((__m128i)(__v16qu){104, 175, 83, 169, 96, 144, 164, 61, 6, 46, 150, 36, 177, 188, 77, 147})
+) == (__mmask16)0x5115u);
__mmask16 test_mm_cmpge_epu8_mask(__m128i __a, __m128i __b) {
// CHECK-LABEL: test_mm_cmpge_epu8_mask
@@ -319,12 +413,17 @@ TEST_CONSTEXPR(_mm_cmpge_epu8_mask(
((__m128i)(__v16qu){104, 175, 83, 169, 96, 144, 164, 61, 6, 46, 150, 36, 177, 188, 77, 147})
) == (__mmask16)0xd597);
-__mmask16 test_mm_mask_cmpge_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
- // CHECK-LABEL: test_mm_mask_cmpge_epu8_mask
- // CHECK: icmp uge <16 x i8> %{{.*}}, %{{.*}}
- // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm_mask_cmpge_epu8_mask(__u, __a, __b);
+__mmask8 test_mm_mask_cmpge_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
+ // CHECK-LABEL: test_mm_mask_cmpge_epi16_mask
+ // CHECK: icmp sge <8 x i16> %{{.*}}, %{{.*}}
+ // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
+ return (__mmask8)_mm_mask_cmpge_epi16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm_mask_cmpge_epi16_mask(
+ (__mmask8)0xAAu,
+ ((__m128i)(__v8hi){-29193, 9029, 15883, -20070, 12934, -20531, 32059, -16251}),
+ ((__m128i)(__v8hi){-392, -23600, 21384, 3664, -23762, -25166, 5219, -5042})
+) == (__mmask8)0x22u);
__mmask8 test_mm_cmpge_epi16_mask(__m128i __a, __m128i __b) {
// CHECK-LABEL: test_mm_cmpge_epi16_mask
@@ -336,12 +435,17 @@ TEST_CONSTEXPR(_mm_cmpge_epi16_mask(
((__m128i)(__v8hi){-392, -23600, 21384, 3664, -23762, -25166, 5219, -5042})
) == (__mmask8)0x72);
-__mmask8 test_mm_mask_cmpge_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
- // CHECK-LABEL: test_mm_mask_cmpge_epi16_mask
- // CHECK: icmp sge <8 x i16> %{{.*}}, %{{.*}}
+__mmask8 test_mm_mask_cmpge_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
+ // CHECK-LABEL: test_mm_mask_cmpge_epu16_mask
+ // CHECK: icmp uge <8 x i16> %{{.*}}, %{{.*}}
// CHECK: and <8 x i1> %{{.*}}, %{{.*}}
- return (__mmask8)_mm_mask_cmpge_epi16_mask(__u, __a, __b);
+ return (__mmask8)_mm_mask_cmpge_epu16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm_mask_cmpge_epu16_mask(
+ (__mmask8)0xAAu,
+ ((__m128i)(__v8hu){53950, 52988, 13868, 25190, 31823, 62039, 43379, 51291}),
+ ((__m128i)(__v8hu){35593, 54830, 49773, 10890, 44742, 48266, 45280, 14226})
+) == (__mmask8)0xA8u);
__mmask8 test_mm_cmpge_epu16_mask(__m128i __a, __m128i __b) {
// CHECK-LABEL: test_mm_cmpge_epu16_mask
@@ -353,30 +457,39 @@ TEST_CONSTEXPR(_mm_cmpge_epu16_mask(
((__m128i)(__v8hu){35593, 54830, 49773, 10890, 44742, 48266, 45280, 14226})
) == (__mmask8)0xa9);
-__mmask8 test_mm_mask_cmpge_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
- // CHECK-LABEL: test_mm_mask_cmpge_epu16_mask
- // CHECK: icmp uge <8 x i16> %{{.*}}, %{{.*}}
- // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
- return (__mmask8)_mm_mask_cmpge_epu16_mask(__u, __a, __b);
+__mmask32 test_mm256_mask_cmpge_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
+ // CHECK-LABEL: test_mm256_mask_cmpge_epi8_mask
+ // CHECK: icmp sge <32 x i8> %{{.*}}, %{{.*}}
+ // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
+ return (__mmask32)_mm256_mask_cmpge_epi8_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm256_mask_cmpge_epi8_mask(
+ (__mmask32)0x55555555u,
+ ((__m256i)(__v32qs){66, 9, 79, -49, 14, 49, 81, -4, 33, -113, 18, -85, -77, -112, -119, 19, 80, -74, 105, 120, 76, -123, -12, 8, 98, 72, -37, -29, -120, 17, -107, 101}),
+ ((__m256i)(__v32qs){119, 10, 36, 76, -116, 12, -9, 75, 53, -52, -9, -57, -28, -80, -27, 34, 106, 44, -109, 20, -10, 119, 116, 16, 36, 9, -14, -61, 6, -70, 26, 84})
+) == (__mmask32)0x01040054u);
__mmask32 test_mm256_cmpge_epi8_mask(__m256i __a, __m256i __b) {
// CHECK-LABEL: test_mm256_cmpge_epi8_mask
// CHECK: icmp sge <32 x i8> %{{.*}}, %{{.*}}
return (__mmask32)_mm256_cmpge_epi8_mask(__a, __b);
}
-// cmpge
TEST_CONSTEXPR(_mm256_cmpge_epi8_mask(
((__m256i)(__v32qs){66, 9, 79, -49, 14, 49, 81, -4, 33, -113, 18, -85, -77, -112, -119, 19, 80, -74, 105, 120, 76, -123, -12, 8, 98, 72, -37, -29, -120, 17, -107, 101}),
((__m256i)(__v32qs){119, 10, 36, 76, -116, 12, -9, 75, 53, -52, -9, -57, -28, -80, -27, 34, 106, 44, -109, 20, -10, 119, 116, 16, 36, 9, -14, -61, 6, -70, 26, 84})
) == (__mmask32)0xab1c0474);
-__mmask32 test_mm256_mask_cmpge_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
- // CHECK-LABEL: test_mm256_mask_cmpge_epi8_mask
- // CHECK: icmp sge <32 x i8> %{{.*}}, %{{.*}}
+__mmask32 test_mm256_mask_cmpge_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
+ // CHECK-LABEL: test_mm256_mask_cmpge_epu8_mask
+ // CHECK: icmp uge <32 x i8> %{{.*}}, %{{.*}}
// CHECK: and <32 x i1> %{{.*}}, %{{.*}}
- return (__mmask32)_mm256_mask_cmpge_epi8_mask(__u, __a, __b);
+ return (__mmask32)_mm256_mask_cmpge_epu8_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm256_mask_cmpge_epu8_mask(
+ (__mmask32)0x55555555u,
+ ((__m256i)(__v32qu){ 0,1,2,3,4,5,6,7, 8,9,10,11,12,13,14,15, 16,17,18,19,20,21,22,23, 24,25,26,27,28,29,30,31 }),
+ ((__m256i)(__v32qu){ 15,15,15,15,15,15,15,15, 15,15,15,15,15,15,15,15, 15,15,15,15,15,15,15,15, 15,15,15,15,15,15,15,15 })
+) == (__mmask32)0x55558000u);
__mmask32 test_mm256_cmpge_epu8_mask(__m256i __a, __m256i __b) {
// CHECK-LABEL: test_mm256_cmpge_epu8_mask
@@ -390,12 +503,17 @@ TEST_CONSTEXPR(_mm256_cmpge_epu8_mask(
15,15,15,15,15,15,15,15 })
)==(__mmask32)0xFFFF8000u);
-__mmask32 test_mm256_mask_cmpge_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
- // CHECK-LABEL: test_mm256_mask_cmpge_epu8_mask
- // CHECK: icmp uge <32 x i8> %{{.*}}, %{{.*}}
- // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
- return (__mmask32)_mm256_mask_cmpge_epu8_mask(__u, __a, __b);
+__mmask16 test_mm256_mask_cmpge_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
+ // CHECK-LABEL: test_mm256_mask_cmpge_epi16_mask
+ // CHECK: icmp sge <16 x i16> %{{.*}}, %{{.*}}
+ // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
+ return (__mmask16)_mm256_mask_cmpge_epi16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm256_mask_cmpge_epi16_mask(
+ (__mmask16)0x5CA7,
+ ((__m256i)(__v16hi){ 1180, -8425, -13480, -8209, -23485, 22032, 5853, 4768, 23800, -30877, 12345, 4242, -32768, 100, 1, 5 }),
+ ((__m256i)(__v16hi){ 5342, -2549, -3256, -15701, -4731, 4848, -28840, 4769, -16215, 3386, 12344, 4242, 32767, -100, -1, -5 })
+) == (__mmask16)0x4C20u);
__mmask16 test_mm256_cmpge_epi16_mask(__m256i __a, __m256i __b) {
// CHECK-LABEL: test_mm256_cmpge_epi16_mask
@@ -407,12 +525,17 @@ TEST_CONSTEXPR(_mm256_cmpge_epi16_mask(
((__m256i)(__v16hi){ 7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7 })
)==(__mmask16)0xFF80u);
-__mmask16 test_mm256_mask_cmpge_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
- // CHECK-LABEL: test_mm256_mask_cmpge_epi16_mask
- // CHECK: icmp sge <16 x i16> %{{.*}}, %{{.*}}
+__mmask16 test_mm256_mask_cmpge_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
+ // CHECK-LABEL: test_mm256_mask_cmpge_epu16_mask
+ // CHECK: icmp uge <16 x i16> %{{.*}}, %{{.*}}
// CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm256_mask_cmpge_epi16_mask(__u, __a, __b);
+ return (__mmask16)_mm256_mask_cmpge_epu16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm256_mask_cmpge_epu16_mask(
+ (__mmask16)0xE5B2,
+ ((__m256i)(__v16hu){ 0x79d6, 0xbd6a, 0x218c, 0xf03f, 0x77fa, 0x5610, 0xf0c6, 0x12a0, 0x9abd, 0xcb55, 0x3c3c, 0x0100, 0xfff0, 0x0001, 0x8000, 0xfffe }),
+ ((__m256i)(__v16hu){ 0x42c6, 0xf2b7, 0x06bd, 0x84ca, 0x622c, 0x12f0, 0xf3e4, 0x12a1, 0x9abc, 0x4d1d, 0x3c3c, 0x0200, 0x0005, 0xffff, 0x7fff, 0x0001 })
+) == (__mmask16)0xC530u);
__mmask16 test_mm256_cmpge_epu16_mask(__m256i __a, __m256i __b) {
// CHECK-LABEL: test_mm256_cmpge_epu16_mask
@@ -424,12 +547,17 @@ TEST_CONSTEXPR(_mm256_cmpge_epu16_mask(
((__m256i)(__v16hu){ 10,99,99,99,99,20,99,99, 99,99,99,99,99,99,99,200 })
)==(__mmask16)0x8021u);
-__mmask16 test_mm256_mask_cmpge_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
- // CHECK-LABEL: test_mm256_mask_cmpge_epu16_mask
- // CHECK: icmp uge <16 x i16> %{{.*}}, %{{.*}}
+__mmask16 test_mm_mask_cmple_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
+ // CHECK-LABEL: test_mm_mask_cmple_epi8_mask
+ // CHECK: icmp sle <16 x i8> %{{.*}}, %{{.*}}
// CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm256_mask_cmpge_epu16_mask(__u, __a, __b);
+ return (__mmask16)_mm_mask_cmple_epi8_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm_mask_cmple_epu8_mask(
+ (__mmask16)0xC6B3,
+ ((__m128i)(__v16qu){ 0xed, 0xf0, 0x88, 0x5f, 0x00, 0x9a, 0xad, 0x9b, 0x29, 0xc4, 0xff, 0x12, 0x14, 0x05, 0x7f, 0x01 }),
+ ((__m128i)(__v16qu){ 0xbf, 0x0f, 0x46, 0x03, 0xff, 0x9b, 0xed, 0x9a, 0xab, 0xc4, 0x01, 0x13, 0xc2, 0xf0, 0x80, 0xfe })
+) == (__mmask16)0xC230u);
__mmask16 test_mm_cmple_epi8_mask(__m128i __a, __m128i __b) {
// CHECK-LABEL: test_mm_cmple_epi8_mask
@@ -441,11 +569,11 @@ TEST_CONSTEXPR(_mm_cmple_epi8_mask(
((__m128i)(__v16qs){53, -50, 104, 11, 63, -77, -25, 102, 46, 62, 27, -28, -61, 68, 40, -65})
) == (__mmask16)0x75cc);
-__mmask16 test_mm_mask_cmple_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
- // CHECK-LABEL: test_mm_mask_cmple_epi8_mask
- // CHECK: icmp sle <16 x i8> %{{.*}}, %{{.*}}
+__mmask16 test_mm_mask_cmple_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
+ // CHECK-LABEL: test_mm_mask_cmple_epu8_mask
+ // CHECK: icmp ule <16 x i8> %{{.*}}, %{{.*}}
// CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm_mask_cmple_epi8_mask(__u, __a, __b);
+ return (__mmask16)_mm_mask_cmple_epu8_mask(__u, __a, __b);
}
__mmask16 test_mm_cmple_epu8_mask(__m128i __a, __m128i __b) {
@@ -458,12 +586,17 @@ TEST_CONSTEXPR(_mm_cmple_epu8_mask(
((__m128i)(__v16qu){26, 223, 228, 186, 240, 53, 148, 56, 106, 196, 76, 246, 114, 102, 237, 127})
) == (__mmask16)0x4cd8);
-__mmask16 test_mm_mask_cmple_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
- // CHECK-LABEL: test_mm_mask_cmple_epu8_mask
- // CHECK: icmp ule <16 x i8> %{{.*}}, %{{.*}}
- // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm_mask_cmple_epu8_mask(__u, __a, __b);
+__mmask8 test_mm_mask_cmple_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
+ // CHECK-LABEL: test_mm_mask_cmple_epi16_mask
+ // CHECK: icmp sle <8 x i16> %{{.*}}, %{{.*}}
+ // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
+ return (__mmask8)_mm_mask_cmple_epi16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm_mask_cmple_epi16_mask(
+ (__mmask8)0xAD,
+ ((__m128i)(__v8hi){ -1, -9000, 777, 0x12a1, 1000, 0x12f0, -30, 32767 }),
+ ((__m128i)(__v8hi){ 1, 9000, 777, 0x12a0, -1000, 0x5610, 30, -32768 })
+) == (__mmask8)0x25u);
__mmask8 test_mm_cmple_epi16_mask(__m128i __a, __m128i __b) {
// CHECK-LABEL: test_mm_cmple_epi16_mask
@@ -475,12 +608,17 @@ TEST_CONSTEXPR(_mm_cmple_epi16_mask(
((__m128i)(__v8hi){-4691, 13730, -28788, -17664, 14597, -29281, -30463, 7606})
) == (__mmask8)0x36);
-__mmask8 test_mm_mask_cmple_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
- // CHECK-LABEL: test_mm_mask_cmple_epi16_mask
- // CHECK: icmp sle <8 x i16> %{{.*}}, %{{.*}}
+__mmask8 test_mm_mask_cmple_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
+ // CHECK-LABEL: test_mm_mask_cmple_epu16_mask
+ // CHECK: icmp ule <8 x i16> %{{.*}}, %{{.*}}
// CHECK: and <8 x i1> %{{.*}}, %{{.*}}
- return (__mmask8)_mm_mask_cmple_epi16_mask(__u, __a, __b);
+ return (__mmask8)_mm_mask_cmple_epu16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm_mask_cmple_epu16_mask(
+ (__mmask8)0x6B,
+ ((__m128i)(__v8hu){ 0x7fff, 0xffff, 0x0005, 0x3c3c, 0x9000, 0x12a1, 0x12f0, 0x0100 }),
+ ((__m128i)(__v8hu){ 0x8000, 0x0001, 0xfff0, 0x3c3c, 0x1000, 0x12a0, 0x5610, 0x0050 })
+) == (__mmask8)0x49u);
__mmask8 test_mm_cmple_epu16_mask(__m128i __a, __m128i __b) {
// CHECK-LABEL: test_mm_cmple_epu16_mask
@@ -492,13 +630,21 @@ TEST_CONSTEXPR(_mm_cmple_epu16_mask(
((__m128i)(__v8hu){21329, 57575, 30740, 42725, 26374, 53724, 12, 11808})
) == (__mmask8)0x06);
-
-__mmask8 test_mm_mask_cmple_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
- // CHECK-LABEL: test_mm_mask_cmple_epu16_mask
- // CHECK: icmp ule <8 x i16> %{{.*}}, %{{.*}}
- // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
- return (__mmask8)_mm_mask_cmple_epu16_mask(__u, __a, __b);
+__mmask32 test_mm256_mask_cmple_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
+ // CHECK-LABEL: test_mm256_mask_cmple_epi8_mask
+ // CHECK: icmp sle <32 x i8> %{{.*}}, %{{.*}}
+ // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
+ return (__mmask32)_mm256_mask_cmple_epi8_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm256_mask_cmple_epi8_mask(
+(__mmask32)0x93E6A5C1u,
+((__m256i)(__v32qs){
+ -43, 13, -33, 118, 16, 26, 30, -102, 15, -3, -100, 17, -95, -65, -4, 35,
+ 53, 73, -34, -112, -65, -8, -128, -1, -127, -57, -52, 90, 127, -67, -3, -100 }),
+((__m256i)(__v32qs){
+ -9, 117, 36, 99, -92, 83, 126, 90, 35, -68, 35, -19, 59, 36, 11, -125,
+ 27, 71, -72, 58, -96, -7, 0, 1, -128, -57, -81, -90, -128, 34, 3, 100 })
+) == (__mmask32)0x82E025C1u);
__mmask32 test_mm256_cmple_epi8_mask(__m256i __a, __m256i __b) {
// CHECK-LABEL: test_mm256_cmple_epi8_mask
@@ -510,12 +656,17 @@ TEST_CONSTEXPR(_mm256_cmple_epi8_mask(
((__m256i)(__v32qs){73, -81, 68, -86, -8, -16, -47, 56, -30, 18, 3, -29, -73, -98, -37, 57, -30, 79, 26, -71, -99, 15, 61, 18, -12, 59, -114, 14, -105, 38, -63, 101})
) == (__mmask32)0xea42ddc4);
-__mmask32 test_mm256_mask_cmple_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
- // CHECK-LABEL: test_mm256_mask_cmple_epi8_mask
- // CHECK: icmp sle <32 x i8> %{{.*}}, %{{.*}}
+__mmask32 test_mm256_mask_cmple_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
+ // CHECK-LABEL: test_mm256_mask_cmple_epu8_mask
+ // CHECK: icmp ule <32 x i8> %{{.*}}, %{{.*}}
// CHECK: and <32 x i1> %{{.*}}, %{{.*}}
- return (__mmask32)_mm256_mask_cmple_epi8_mask(__u, __a, __b);
+ return (__mmask32)_mm256_mask_cmple_epu8_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm256_mask_cmple_epu8_mask(
+ (__mmask32)0x55555555u,
+ ((__m256i)(__v32qu){ 0,1,2,3,4,5,6,7, 8,9,10,11,12,13,14,15, 16,17,18,19,20,21,22,23, 24,25,26,27,28,29,30,31 }),
+ ((__m256i)(__v32qu){ 15,15,15,15,15,15,15,15, 15,15,15,15,15,15,15,15, 15,15,15,15,15,15,15,15, 15,15,15,15,15,15,15,15 })
+) == (__mmask32)0x00005555u);
__mmask32 test_mm256_cmple_epu8_mask(__m256i __a, __m256i __b) {
// CHECK-LABEL: test_mm256_cmple_epu8_mask
@@ -529,12 +680,17 @@ TEST_CONSTEXPR(_mm256_cmple_epu8_mask(
15,15,15,15,15,15,15,15 })
)==(__mmask32)0x0000FFFFu);
-__mmask32 test_mm256_mask_cmple_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
- // CHECK-LABEL: test_mm256_mask_cmple_epu8_mask
- // CHECK: icmp ule <32 x i8> %{{.*}}, %{{.*}}
- // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
- return (__mmask32)_mm256_mask_cmple_epu8_mask(__u, __a, __b);
+__mmask16 test_mm256_mask_cmple_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
+ // CHECK-LABEL: test_mm256_mask_cmple_epi16_mask
+ // CHECK: icmp sle <16 x i16> %{{.*}}, %{{.*}}
+ // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
+ return (__mmask16)_mm256_mask_cmple_epi16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm256_mask_cmple_epi16_mask(
+ (__mmask16)0x5555u,
+ ((__m256i)(__v16hi){ 0,1,2,3,4,5,6,7, 8,9,10,11,12,13,14,15 }),
+ ((__m256i)(__v16hi){ 7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7 })
+) == (__mmask16)0x0055u);
__mmask16 test_mm256_cmple_epi16_mask(__m256i __a, __m256i __b) {
// CHECK-LABEL: test_mm256_cmple_epi16_mask
@@ -546,30 +702,39 @@ TEST_CONSTEXPR(_mm256_cmple_epi16_mask(
((__m256i)(__v16hi){ 7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7 })
)==(__mmask16)0x00FFu);
-__mmask16 test_mm256_mask_cmple_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
- // CHECK-LABEL: test_mm256_mask_cmple_epi16_mask
- // CHECK: icmp sle <16 x i16> %{{.*}}, %{{.*}}
+__mmask16 test_mm256_mask_cmple_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
+ // CHECK-LABEL: test_mm256_mask_cmple_epu16_mask
+ // CHECK: icmp ule <16 x i16> %{{.*}}, %{{.*}}
// CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm256_mask_cmple_epi16_mask(__u, __a, __b);
+ return (__mmask16)_mm256_mask_cmple_epu16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm_mask_cmpneq_epu16_mask(
+ (__mmask8)0xAAu,
+ ((__m128i)(__v8hi){-24378, 20934, 25612, 4427, -29446, 26311, -2533, -27963}),
+ ((__m128i)(__v8hi){28538, -27232, 21741, -31546, -18083, 17112, -25750, -28016})
+) == (__mmask8)0xAAu);
__mmask16 test_mm256_cmple_epu16_mask(__m256i __a, __m256i __b) {
// CHECK-LABEL: test_mm256_cmple_epu16_mask
// CHECK: icmp ule <16 x i16> %{{.*}}, %{{.*}}
return (__mmask16)_mm256_cmple_epu16_mask(__a, __b);
}
-
TEST_CONSTEXPR(_mm256_cmple_epu16_mask(
((__m256i)(__v16hu){ 10,1,2,3,4,20,6,7, 8,9,10,11,12,13,14,200 }),
((__m256i)(__v16hu){ 10,99,99,99,99,20,99,99, 99,99,99,99,99,99,99,200 })
)==(__mmask16)0xffffu);
-__mmask16 test_mm256_mask_cmple_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
- // CHECK-LABEL: test_mm256_mask_cmple_epu16_mask
- // CHECK: icmp ule <16 x i16> %{{.*}}, %{{.*}}
+__mmask16 test_mm_mask_cmplt_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
+ // CHECK-LABEL: test_mm_mask_cmplt_epi8_mask
+ // CHECK: icmp slt <16 x i8> %{{.*}}, %{{.*}}
// CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm256_mask_cmple_epu16_mask(__u, __a, __b);
+ return (__mmask16)_mm_mask_cmplt_epi8_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm_mask_cmplt_epi8_mask(
+ (__mmask16)0x8E5B,
+ ((__m128i)(__v16qs){ -16, -126, 14, 0, -101, 127, -102, 80, -66, -60, -1, 127, 18, 126, 5, 1 }),
+ ((__m128i)(__v16qs){ 15, -73, -18, -1, -102, 26, -101, 57, -16, -60, 1, -128, 19, -62, -16, -2 })
+) == (__mmask16)0x0443u);
__mmask16 test_mm_cmplt_epi8_mask(__m128i __a, __m128i __b) {
// CHECK-LABEL: test_mm_cmplt_epi8_mask
@@ -581,12 +746,17 @@ TEST_CONSTEXPR(_mm_cmplt_epi8_mask(
((__m128i)(__v16qs){-108, 30, 71, 73, 20, 117, 63, -93, 79, -30, 99, -100, 34, 49, 83, 68})
) == (__mmask16)0xfd7f);
-__mmask16 test_mm_mask_cmplt_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
- // CHECK-LABEL: test_mm_mask_cmplt_epi8_mask
- // CHECK: icmp slt <16 x i8> %{{.*}}, %{{.*}}
+__mmask16 test_mm_mask_cmplt_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
+ // CHECK-LABEL: test_mm_mask_cmplt_epu8_mask
+ // CHECK: icmp ult <16 x i8> %{{.*}}, %{{.*}}
// CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm_mask_cmplt_epi8_mask(__u, __a, __b);
+ return (__mmask16)_mm_mask_cmplt_epu8_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm_mask_cmplt_epu8_mask(
+ (__mmask16)0x8E5B,
+ ((__m128i)(__v16qu){ 0xf0, 0x82, 0x0e, 0x00, 0x9b, 0x7f, 0x9a, 0x50, 0xbe, 0xc4, 0xff, 0x7f, 0x12, 0x7e, 0x05, 0x01 }),
+ ((__m128i)(__v16qu){ 0x0f, 0xb7, 0xee, 0xff, 0x9a, 0x1a, 0x9b, 0x39, 0xf0, 0xc4, 0x01, 0x80, 0x13, 0xc2, 0xf0, 0xfe })
+) == (__mmask16)0x884Au);
__mmask16 test_mm_cmplt_epu8_mask(__m128i __a, __m128i __b) {
// CHECK-LABEL: test_mm_cmplt_epu8_mask
@@ -598,12 +768,17 @@ TEST_CONSTEXPR(_mm_cmplt_epu8_mask(
((__m128i)(__v16qu){185, 107, 11, 239, 21, 120, 63, 105, 153, 148, 182, 2, 0, 181, 144, 100})
) == (__mmask16)0x27ab);
-__mmask16 test_mm_mask_cmplt_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
- // CHECK-LABEL: test_mm_mask_cmplt_epu8_mask
- // CHECK: icmp ult <16 x i8> %{{.*}}, %{{.*}}
- // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm_mask_cmplt_epu8_mask(__u, __a, __b);
+__mmask8 test_mm_mask_cmplt_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
+ // CHECK-LABEL: test_mm_mask_cmplt_epi16_mask
+ // CHECK: icmp slt <8 x i16> %{{.*}}, %{{.*}}
+ // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
+ return (__mmask8)_mm_mask_cmplt_epi16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm_mask_cmplt_epi16_mask(
+ (__mmask8)0xDD,
+ ((__m128i)(__v8hi){ -1, -9000, 32767, 15420, 0x12a0, 500, -25924, 0x1234 }),
+ ((__m128i)(__v8hi){ 1, 9000, -32768, 15420, 0x12b0, -500, -25923, 0x5634 })
+) == (__mmask8)0xD1u);
__mmask8 test_mm_cmplt_epi16_mask(__m128i __a, __m128i __b) {
// CHECK-LABEL: test_mm_cmplt_epi16_mask
@@ -615,12 +790,17 @@ TEST_CONSTEXPR(_mm_cmplt_epi16_mask(
((__m128i)(__v8hi){31572, -12990, 27653, -25336, 26491, 21811, 19562, -27562})
) == (__mmask8)0x51);
-__mmask8 test_mm_mask_cmplt_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
- // CHECK-LABEL: test_mm_mask_cmplt_epi16_mask
- // CHECK: icmp slt <8 x i16> %{{.*}}, %{{.*}}
+__mmask8 test_mm_mask_cmplt_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
+ // CHECK-LABEL: test_mm_mask_cmplt_epu16_mask
+ // CHECK: icmp ult <8 x i16> %{{.*}}, %{{.*}}
// CHECK: and <8 x i1> %{{.*}}, %{{.*}}
- return (__mmask8)_mm_mask_cmplt_epi16_mask(__u, __a, __b);
+ return (__mmask8)_mm_mask_cmplt_epu16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm_mask_cmplt_epu16_mask(
+ (__mmask8)0xDD,
+ ((__m128i)(__v8hu){ 0x7fff, 0x0005, 0xffff, 0x3c3c, 0x12a0, 0x2000, 0x9abc, 0x1234 }),
+ ((__m128i)(__v8hu){ 0x8000, 0xfff0, 0x0001, 0x3c3c, 0x12b0, 0x1000, 0x9abd, 0x5634 })
+) == (__mmask8)0xD1u);
__mmask8 test_mm_cmplt_epu16_mask(__m128i __a, __m128i __b) {
// CHECK-LABEL: test_mm_cmplt_epu16_mask
@@ -629,13 +809,6 @@ __mmask8 test_mm_cmplt_epu16_mask(__m128i __a, __m128i __b) {
}
TEST_CONSTEXPR(_mm_cmplt_epu16_mask(((__m128i)(__v8hu){12351, 47995, 11802, 16970, 16956, 13965, 33529, 18928}), ((__m128i)(__v8hu){48792, 59915, 50576, 62643, 3758, 16415, 7966, 39475})) == (__mmask8)0xAF);
-__mmask8 test_mm_mask_cmplt_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
- // CHECK-LABEL: test_mm_mask_cmplt_epu16_mask
- // CHECK: icmp ult <8 x i16> %{{.*}}, %{{.*}}
- // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
- return (__mmask8)_mm_mask_cmplt_epu16_mask(__u, __a, __b);
-}
-
__mmask32 test_mm256_cmplt_epi8_mask(__m256i __a, __m256i __b) {
// CHECK-LABEL: test_mm256_cmplt_epi8_mask
// CHECK: icmp slt <32 x i8> %{{.*}}, %{{.*}}
@@ -646,12 +819,21 @@ TEST_CONSTEXPR(_mm256_cmplt_epi8_mask(
((__m256i)(__v32qs){64, 40, -74, 122, 111, -128, 21, 62, 22, 99, -10, -128, -118, 70, -61, 117, 0, 20, -28, 77, 45, 88, -7, -74, -34, 85, -15, 3, -16, -4, 127, 46})
) == (__mmask32)0xe878865a);
-__mmask32 test_mm256_mask_cmplt_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
- // CHECK-LABEL: test_mm256_mask_cmplt_epi8_mask
- // CHECK: icmp slt <32 x i8> %{{.*}}, %{{.*}}
+__mmask32 test_mm256_mask_cmplt_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
+ // CHECK-LABEL: test_mm256_mask_cmplt_epu8_mask
+ // CHECK: icmp ult <32 x i8> %{{.*}}, %{{.*}}
// CHECK: and <32 x i1> %{{.*}}, %{{.*}}
- return (__mmask32)_mm256_mask_cmplt_epi8_mask(__u, __a, __b);
+ return (__mmask32)_mm256_mask_cmplt_epu8_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm256_mask_cmplt_epu8_mask(
+ (__mmask32)0xB25D9AE3u,
+ ((__m256i)(__v32qu){
+ 0xa5, 0xca, 0x25, 0xbb, 0x6d, 0x2c, 0xd6, 0x7b, 0xd9, 0x3f, 0x1f, 0x19, 0x17, 0x94, 0x49, 0x3c,
+ 0xf0, 0x9d, 0x00, 0x2f, 0x9b, 0x34, 0x9a, 0xbe, 0x20, 0xc4, 0x69, 0x12, 0xff, 0x7f, 0x05, 0x01 }),
+ ((__m256i)(__v32qu){
+ 0x4d, 0x18, 0x30, 0x1d, 0x13, 0xde, 0x23, 0x2e, 0x1e, 0x72, 0xcb, 0x71, 0x44, 0xd6, 0x3c, 0x91,
+ 0x0f, 0x5c, 0xff, 0x30, 0x9a, 0x60, 0x9b, 0x31, 0x1e, 0xc4, 0xfe, 0x13, 0x01, 0x80, 0xf0, 0xfe })
+) == (__mmask32)0xA04C9A20u);
__mmask32 test_mm256_cmplt_epu8_mask(__m256i __a, __m256i __b) {
// CHECK-LABEL: test_mm256_cmplt_epu8_mask
@@ -665,12 +847,17 @@ TEST_CONSTEXPR(_mm256_cmplt_epu8_mask(
15,15,15,15,15,15,15,15 })
)==(__mmask32)0x00007FFFu);
-__mmask32 test_mm256_mask_cmplt_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
- // CHECK-LABEL: test_mm256_mask_cmplt_epu8_mask
- // CHECK: icmp ult <32 x i8> %{{.*}}, %{{.*}}
- // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
- return (__mmask32)_mm256_mask_cmplt_epu8_mask(__u, __a, __b);
+__mmask16 test_mm256_mask_cmplt_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
+ // CHECK-LABEL: test_mm256_mask_cmplt_epi16_mask
+ // CHECK: icmp slt <16 x i16> %{{.*}}, %{{.*}}
+ // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
+ return (__mmask16)_mm256_mask_cmplt_epi16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm256_mask_cmplt_epi16_mask(
+ (__mmask16)0x3D96,
+ ((__m256i)(__v16hi){ -9000, -1, 777, 100, 12344, 555, -30, 32767, -32767, 50, 0x1234, 0x12a0, -32768, -300, 4242, -5 }),
+ ((__m256i)(__v16hi){ 9000, 1, 777, -100, 12345, 555, 30, -32768, -32768, -50, 0x5634, 0x12b0, 32767, -200, 4242, 5 })
+) == (__mmask16)0x3C12u);
__mmask16 test_mm256_cmplt_epi16_mask(__m256i __a, __m256i __b) {
// CHECK-LABEL: test_mm256_cmplt_epi16_mask
@@ -682,12 +869,17 @@ TEST_CONSTEXPR(_mm256_cmplt_epi16_mask(
((__m256i)(__v16hi){ 7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7 })
)==(__mmask16)0x007Fu);
-__mmask16 test_mm256_mask_cmplt_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
- // CHECK-LABEL: test_mm256_mask_cmplt_epi16_mask
- // CHECK: icmp slt <16 x i16> %{{.*}}, %{{.*}}
+__mmask16 test_mm256_mask_cmplt_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
+ // CHECK-LABEL: test_mm256_mask_cmplt_epu16_mask
+ // CHECK: icmp ult <16 x i16> %{{.*}}, %{{.*}}
// CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm256_mask_cmplt_epi16_mask(__u, __a, __b);
+ return (__mmask16)_mm256_mask_cmplt_epu16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm256_mask_cmplt_epu16_mask(
+ (__mmask16)0xC35A,
+ ((__m256i)(__v16hu){ 0x0005, 0x7fff, 0x4242, 0xffff, 0xbeef, 0x2000, 0x9abc, 0x0100, 0x1235, 0x1234, 0x8000, 0x3c3c, 0x0007, 0xfff0, 0x12a0, 0x0001 }),
+ ((__m256i)(__v16hu){ 0xfff0, 0x8000, 0x4242, 0x0001, 0xbeef, 0x1000, 0x9abd, 0x0200, 0x1234, 0x5634, 0x7fff, 0x3c3c, 0x7ffe, 0x0010, 0x12b0, 0xfffe })
+) == (__mmask16)0xC242u);
__mmask16 test_mm256_cmplt_epu16_mask(__m256i __a, __m256i __b) {
// CHECK-LABEL: test_mm256_cmplt_epu16_mask
@@ -699,12 +891,17 @@ TEST_CONSTEXPR(_mm256_cmplt_epu16_mask(
((__m256i)(__v16hu){ 10,99,99,99,99,20,99,99, 99,99,99,99,99,99,99,200 })
)==(__mmask16)0x7fdeu);
-__mmask16 test_mm256_mask_cmplt_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
- // CHECK-LABEL: test_mm256_mask_cmplt_epu16_mask
- // CHECK: icmp ult <16 x i16> %{{.*}}, %{{.*}}
+__mmask16 test_mm_mask_cmpneq_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
+ // CHECK-LABEL: test_mm_mask_cmpneq_epi8_mask
+ // CHECK: icmp ne <16 x i8> %{{.*}}, %{{.*}}
// CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm256_mask_cmplt_epu16_mask(__u, __a, __b);
+ return (__mmask16)_mm_mask_cmpneq_epi8_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm_mask_cmpneq_epi8_mask(
+ (__mmask16)0x5AA5,
+ ((__m128i)(__v16qs){ -128, -45, 17, -90, 33, 99, -7, 127, 50, -64, 12, 64, -100, 81, -1, 70 }),
+ ((__m128i)(__v16qs){ 0, 45, 17, -90, 34, 100, -7, -128, -50, -64, -12, 65, -100, 81, 1, -70 })
+) == (__mmask16)0x48A1u);
__mmask16 test_mm_cmpneq_epi8_mask(__m128i __a, __m128i __b) {
// CHECK-LABEL: test_mm_cmpneq_epi8_mask
@@ -716,12 +913,17 @@ TEST_CONSTEXPR(_mm_cmpneq_epi8_mask(
((__m128i)(__v16qs){14, 36, 2, 3, 118, 88, -126, -21, 104, -125, -1, 39, 99, -12, 35, -126})
) == (__mmask16)0xffff);
-__mmask16 test_mm_mask_cmpneq_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
- // CHECK-LABEL: test_mm_mask_cmpneq_epi8_mask
+__mmask16 test_mm_mask_cmpneq_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
+ // CHECK-LABEL: test_mm_mask_cmpneq_epu8_mask
// CHECK: icmp ne <16 x i8> %{{.*}}, %{{.*}}
// CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm_mask_cmpneq_epi8_mask(__u, __a, __b);
+ return (__mmask16)_mm_mask_cmpneq_epu8_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm_mask_cmpneq_epu8_mask(
+ (__mmask16)0xA5C3,
+ ((__m128i)(__v16qu){ 0x81, 0x5a, 0x10, 0x42, 0x99, 0x33, 0x7f, 0xc3, 0xfe, 0x6d, 0x00, 0xb7, 0x2e, 0xe1, 0x08, 0x55 }),
+ ((__m128i)(__v16qu){ 0x01, 0x5a, 0xef, 0x42, 0x98, 0x77, 0x80, 0xc3, 0xff, 0x6d, 0xff, 0x48, 0x2e, 0xe1, 0x80, 0xaa })
+) == (__mmask16)0x8541u);
__mmask16 test_mm_cmpneq_epu8_mask(__m128i __a, __m128i __b) {
// CHECK-LABEL: test_mm_cmpneq_epu8_mask
@@ -733,12 +935,17 @@ TEST_CONSTEXPR(_mm_cmpneq_epu8_mask(
((__m128i)(__v16qu){65, 145, 226, 92, 171, 211, 64, 61, 82, 183, 135, 205, 124, 25, 81, 244})
) == (__mmask16)0xffff);
-__mmask16 test_mm_mask_cmpneq_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
- // CHECK-LABEL: test_mm_mask_cmpneq_epu8_mask
- // CHECK: icmp ne <16 x i8> %{{.*}}, %{{.*}}
- // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm_mask_cmpneq_epu8_mask(__u, __a, __b);
+__mmask8 test_mm_mask_cmpneq_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
+ // CHECK-LABEL: test_mm_mask_cmpneq_epi16_mask
+ // CHECK: icmp ne <8 x i16> %{{.*}}, %{{.*}}
+ // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
+ return (__mmask8)_mm_mask_cmpneq_epi16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm_mask_cmpneq_epi16_mask(
+ (__mmask8)0x6E,
+ ((__m128i)(__v8hi){ -17777, -32768, 2024, 12345, -9999, 4660, 4660, 31000 }),
+ ((__m128i)(__v8hi){ 17777, 0, 2024, 12346, -9999, 22068, 4694, -31000 })
+) == (__mmask8)0x6Au);
__mmask8 test_mm_cmpneq_epi16_mask(__m128i __a, __m128i __b) {
// CHECK-LABEL: test_mm_cmpneq_epi16_mask
@@ -750,12 +957,17 @@ TEST_CONSTEXPR(_mm_cmpneq_epi16_mask(
((__m128i)(__v8hi){28538, -27232, 21741, -31546, -18083, 17112, -25750, -28016})
) == (__mmask8)0xff);
-__mmask8 test_mm_mask_cmpneq_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
- // CHECK-LABEL: test_mm_mask_cmpneq_epi16_mask
+__mmask8 test_mm_mask_cmpneq_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
+ // CHECK-LABEL: test_mm_mask_cmpneq_epu16_mask
// CHECK: icmp ne <8 x i16> %{{.*}}, %{{.*}}
// CHECK: and <8 x i1> %{{.*}}, %{{.*}}
- return (__mmask8)_mm_mask_cmpneq_epi16_mask(__u, __a, __b);
+ return (__mmask8)_mm_mask_cmpneq_epu16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm_mask_cmpneq_epu16_mask(
+ (__mmask8)0xAAu,
+ ((__m128i)(__v8hu){17033, 42616, 6158, 53144, 14513, 29528, 57905, 62537}),
+ ((__m128i)(__v8hu){38447, 51378, 320, 16853, 48397, 49715, 53668, 43839})
+) == (__mmask8)0xAAu);
__mmask8 test_mm_cmpneq_epu16_mask(__m128i __a, __m128i __b) {
// CHECK-LABEL: test_mm_cmpneq_epu16_mask
@@ -767,12 +979,17 @@ TEST_CONSTEXPR(_mm_cmpneq_epu16_mask(
((__m128i)(__v8hu){38447, 51378, 320, 16853, 48397, 49715, 53668, 43839})
) == (__mmask8)0xff);
-__mmask8 test_mm_mask_cmpneq_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
- // CHECK-LABEL: test_mm_mask_cmpneq_epu16_mask
- // CHECK: icmp ne <8 x i16> %{{.*}}, %{{.*}}
- // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
- return (__mmask8)_mm_mask_cmpneq_epu16_mask(__u, __a, __b);
+__mmask32 test_mm256_mask_cmpneq_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
+ // CHECK-LABEL: test_mm256_mask_cmpneq_epi8_mask
+ // CHECK: icmp ne <32 x i8> %{{.*}}, %{{.*}}
+ // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
+ return (__mmask32)_mm256_mask_cmpneq_epi8_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm256_mask_cmpneq_epi8_mask(
+ (__mmask32)0x55555555u,
+ ((__m256i)(__v32qs){1, -32, 61, 98, 123, 34, 99, -77, -34, 68, 101, 37, 29, -99, 33, -22, 85, 13, 26, 85, 8, -17, -124, 19, 69, -40, -32, 58, -35, -4, -125, -112}),
+ ((__m256i)(__v32qs){30, 45, 85, -71, -111, 111, -82, 107, -71, -4, -46, 8, 52, -107, 107, -14, 33, 35, 31, 116, -75, -33, -82, -60, 26, 40, 82, 85, -78, 97, 104, -91})
+) == (__mmask32)0x55555555u);
__mmask32 test_mm256_cmpneq_epi8_mask(__m256i __a, __m256i __b) {
// CHECK-LABEL: test_mm256_cmpneq_epi8_mask
@@ -784,12 +1001,17 @@ TEST_CONSTEXPR(_mm256_cmpneq_epi8_mask(
((__m256i)(__v32qs){30, 45, 85, -71, -111, 111, -82, 107, -71, -4, -46, 8, 52, -107, 107, -14, 33, 35, 31, 116, -75, -33, -82, -60, 26, 40, 82, 85, -78, 97, 104, -91})
) == (__mmask32)0xffffffff);
-__mmask32 test_mm256_mask_cmpneq_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
- // CHECK-LABEL: test_mm256_mask_cmpneq_epi8_mask
+__mmask32 test_mm256_mask_cmpneq_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
+ // CHECK-LABEL: test_mm256_mask_cmpneq_epu8_mask
// CHECK: icmp ne <32 x i8> %{{.*}}, %{{.*}}
// CHECK: and <32 x i1> %{{.*}}, %{{.*}}
- return (__mmask32)_mm256_mask_cmpneq_epi8_mask(__u, __a, __b);
+ return (__mmask32)_mm256_mask_cmpneq_epu8_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm256_mask_cmpneq_epu8_mask(
+ (__mmask32)0x55555555u,
+ ((__m256i)(__v32qu){119,200,186,207,96,255,107,184,152,89,29,49,72,4,172,81, 64,198,75,214,105,127,214,186,43,16,237,0,53,195,201,143}),
+ ((__m256i)(__v32qu){101,173,142,136,29,9,28,134,117,69,137,170,28,62,178,252, 62,214,97,152,133,146,145,31,172,56,90,15,174,34,111,75})
+) == (__mmask32)0x55555555u);
__mmask32 test_mm256_cmpneq_epu8_mask(__m256i __a, __m256i __b) {
// CHECK-LABEL: test_mm256_cmpneq_epu8_mask
@@ -803,12 +1025,17 @@ TEST_CONSTEXPR(_mm256_cmpneq_epu8_mask(
62,214,97,152,133,146,145,31,172,56,90,15,174,34,111,75})
)==(__mmask32)0xFFFFFFFFu);
-__mmask32 test_mm256_mask_cmpneq_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
- // CHECK-LABEL: test_mm256_mask_cmpneq_epu8_mask
- // CHECK: icmp ne <32 x i8> %{{.*}}, %{{.*}}
- // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
- return (__mmask32)_mm256_mask_cmpneq_epu8_mask(__u, __a, __b);
+__mmask16 test_mm256_mask_cmpneq_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
+ // CHECK-LABEL: test_mm256_mask_cmpneq_epi16_mask
+ // CHECK: icmp ne <16 x i16> %{{.*}}, %{{.*}}
+ // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
+ return (__mmask16)_mm256_mask_cmpneq_epi16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm256_mask_cmpneq_epi16_mask(
+ (__mmask16)0x5555u,
+ ((__m256i)(__v16hi){ 0,1,2,3,4,5,6,7, 8,9,10,11,12,13,14,15 }),
+ ((__m256i)(__v16hi){ 100,100,100,100,100,100,100,100, 100,100,100,100,100,100,100,100 })
+) == (__mmask16)0x5555u);
__mmask16 test_mm256_cmpneq_epi16_mask(__m256i __a, __m256i __b) {
// CHECK-LABEL: test_mm256_cmpneq_epi16_mask
@@ -820,12 +1047,17 @@ TEST_CONSTEXPR(_mm256_cmpneq_epi16_mask(
((__m256i)(__v16hi){ 100,100,100,100,100,100,100,100, 100,100,100,100,100,100,100,100 })
)==(__mmask16)0xFFFFu);
-__mmask16 test_mm256_mask_cmpneq_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
- // CHECK-LABEL: test_mm256_mask_cmpneq_epi16_mask
+__mmask16 test_mm256_mask_cmpneq_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
+ // CHECK-LABEL: test_mm256_mask_cmpneq_epu16_mask
// CHECK: icmp ne <16 x i16> %{{.*}}, %{{.*}}
// CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm256_mask_cmpneq_epi16_mask(__u, __a, __b);
+ return (__mmask16)_mm256_mask_cmpneq_epu16_mask(__u, __a, __b);
}
+TEST_CONSTEXPR(_mm256_mask_cmpneq_epu16_mask(
+ (__mmask16)0x5555u,
+ ((__m256i)(__v16hu){ 10,1,2,3,4,20,6,7, 8,9,10,11,12,13,14,200 }),
+ ((__m256i)(__v16hu){ 10,99,99,99,99,20,99,99, 99,99,99,99,99,99,99,200 })
+) == (__mmask16)0x5554u);
__mmask16 test_mm256_cmpneq_epu16_mask(__m256i __a, __m256i __b) {
// CHECK-LABEL: test_mm256_cmpneq_epu16_mask
@@ -837,13 +1069,6 @@ TEST_CONSTEXPR(_mm256_cmpneq_epu16_mask(
((__m256i)(__v16hu){ 10,99,99,99,99,20,99,99, 99,99,99,99,99,99,99,200
}))==(__mmask16)0x7fdeu);
-__mmask16 test_mm256_mask_cmpneq_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
- // CHECK-LABEL: test_mm256_mask_cmpneq_epu16_mask
- // CHECK: icmp ne <16 x i16> %{{.*}}, %{{.*}}
- // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
- return (__mmask16)_mm256_mask_cmpneq_epu16_mask(__u, __a, __b);
-}
-
__mmask16 test_mm_cmp_epi8_mask(__m128i __a, __m128i __b) {
// CHECK-LABEL: test_mm_cmp_epi8_mask
// CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
>From 1d0b1e5037eed5db95ffd6ef2dfe51b61cae636f Mon Sep 17 00:00:00 2001
From: Shriharsh Acharya <happy.irhs at gmail.com>
Date: Sat, 3 Oct 2026 15:44:46 +0545
Subject: [PATCH 5/5] chore: fix codegen test
---
clang/test/CodeGen/X86/avx512bw-builtins.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/clang/test/CodeGen/X86/avx512bw-builtins.c b/clang/test/CodeGen/X86/avx512bw-builtins.c
index 6a6088ee7a170..826c24567bb1c 100644
--- a/clang/test/CodeGen/X86/avx512bw-builtins.c
+++ b/clang/test/CodeGen/X86/avx512bw-builtins.c
@@ -626,11 +626,11 @@ void test_store_mask64(__mmask64 *A, __m512i B, __m512i C) {
_store_mask64(A, _mm512_cmpneq_epu8_mask(B, C));
}
-__mmask64 test_mm512_mask_cmpeq_epi8_mask(__m512i __a, __m512i __b) {
- // CHECK-LABEL: test_mm512_cmpeq_epi8_mask
+__mmask64 test_mm512_mask_cmpeq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
+ // CHECK-LABEL: test_mm512_mask_cmpeq_epi8_mask
// CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
// CHECK: and <64 x i1> %{{.*}}, %{{.*}}
- return (__mmask64)_mm512_cmpeq_epi8_mask(__a, __b);
+ return (__mmask64)_mm512_mask_cmpeq_epi8_mask(__u, __a, __b);
}
TEST_CONSTEXPR(_mm512_mask_cmpeq_epi8_mask(
(__mmask64)0x00000000FFFFFFFFull,
More information about the cfe-commits
mailing list