[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 01:53:22 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/3] 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/3] 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/3] 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> %{{.*}}, %{{.*}}



More information about the cfe-commits mailing list