[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
Fri Oct 2 21:49:05 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-x86
@llvm/pr-subscribers-clang
Author: irhs0 (shri-acha)
<details>
<summary>Changes</summary>
This PR introduces the remaining tests mentioned in (#<!-- -->169452)
```
_mm(/256/512)_cmp_mask_ep(i/u)8_mask
_mm(/256/512)_cmp_mask_ep(i/u)16_mask
_mm(/256/512)_cmp_mask_ep(i/u)32_mask
_mm(/256/512)_cmp_mask_ep(i/u)64_mask
```
which closes (#<!-- -->162054)
---
Patch is 51.63 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/228660.diff
1 Files Affected:
- (modified) clang/test/CodeGen/X86/avx512vl-builtins.c (+448-210)
``````````diff
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, _...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/228660
More information about the cfe-commits
mailing list