[clang] [Clang][X86] Add tests for AVX512 integer comparison intrinsics to be used in constexpr (PR #169452)

via cfe-commits cfe-commits at lists.llvm.org
Mon Jan 12 19:47:09 PST 2026


================
@@ -646,20 +646,1174 @@ __mmask16 test_mm_cmp_epi8_mask(__m128i __a, __m128i __b) {
   return (__mmask16)_mm_cmp_epi8_mask(__a, __b, 0);
 }
 
+// _mm_cmp*_epi8_mask tests
+// cmpeq
 TEST_CONSTEXPR(_mm_cmpeq_epi8_mask(
-    ((__m128i)(__v16qi){5, 3, 7, 2, 9, 3, 7, 1, 5, 4, 8, 2, 9, 6, 7, 5}),
-    ((__m128i)(__v16qi){5, 2, 7, 3, 9, 4, 6, 1, 5, 3, 8, 1, 9, 5, 7, 5})
-) == (__mmask16)0xd595);
+    ((__m128i)(__v16qs){-31, 90, -66, 3, 27, -22, -64, 111, -87, 105, -19, 0, 26, -111, 24, -72}),
+    ((__m128i)(__v16qs){-84, 90, 20, -83, -98, 80, -46, -9, 22, -120, -123, 53, 117, -85, 50, 94})
+) == (__mmask16)0x0002);
 
+// cmpneq tests
+TEST_CONSTEXPR(_mm_cmpneq_epi8_mask(
+    ((__m128i)(__v16qs){-2, 49, -5, -11, 21, -70, 121, -111, 20, 112, -121, 18, -34, -73, 89, 122}),
+    ((__m128i)(__v16qs){14, 36, 2, 3, 118, 88, -126, -21, 104, -125, -1, 39, 99, -12, 35, -126})
+) == (__mmask16)0xffff);
+
+// cmplt tests
 TEST_CONSTEXPR(_mm_cmplt_epi8_mask(
-    ((__m128i)(__v16qi){1, 5, 3, 7, 2, 8, 4, 6, 9, 5, 3, 11, 2, 6, 15, 8}),
-    ((__m128i)(__v16qi){2, 4, 6, 8, 3, 5, 7, 9, 4, 6, 8, 10, 5, 7, 9, 11})
-) == (__mmask16)0xb6dd);
+    ((__m128i)(__v16qs){-111, -10, -60, -123, -6, -110, -43, -32, -58, -7, 42, -128, -21, 24, 8, -101}),
+    ((__m128i)(__v16qs){-108, 30, 71, 73, 20, 117, 63, -93, 79, -30, 99, -100, 34, 49, 83, 68})
+) == (__mmask16)0xfd7f);
 
+// cmple tests
 TEST_CONSTEXPR(_mm_cmple_epi8_mask(
-    ((__m128i)(__v16qi){1, 3, 5, 7, 2, 6, 6, 8, 1, 3, 9, 7, 2, 4, 6, 10}),
-    ((__m128i)(__v16qi){2, 3, 4, 7, 3, 4, 5, 8, 2, 3, 4, 7, 3, 4, 5, 8})
-) == (__mmask16)0x3b9b);
+    ((__m128i)(__v16qs){122, 6, -22, -94, 78, -35, -43, -16, -69, 124, -2, 24, -117, 8, -17, 118}),
+    ((__m128i)(__v16qs){53, -50, 104, 11, 63, -77, -25, 102, 46, 62, 27, -28, -61, 68, 40, -65})
+) == (__mmask16)0x75cc);
+
+// cmpge tests
+TEST_CONSTEXPR(_mm_cmpge_epi8_mask(
+    ((__m128i)(__v16qs){-11, 0, 97, 123, -48, 105, 26, -118, 62, -86, -94, -32, 14, -4, -50, 72}),
+    ((__m128i)(__v16qs){-33, 49, 22, 31, -4, -81, 6, -22, 40, 127, -1, -106, 6, -64, 12, 8})
+) == (__mmask16)0xb96d);
+
+// cmpgt tests
+TEST_CONSTEXPR(_mm_cmpgt_epi8_mask(
+    ((__m128i)(__v16qs){-127, 37, -123, -60, 98, -68, -115, 96, 80, -27, -105, 64, -6, -51, -45, -81}),
+    ((__m128i)(__v16qs){-124, 59, 8, 59, 122, 47, -74, 120, 19, -43, -33, -76, 7, -22, -24, -14})
+) == (__mmask16)0x0b00);
+
+// _mm_cmp*_epi16_mask tests
+// cmpeq tests
+TEST_CONSTEXPR(_mm_cmpeq_epi16_mask(
+    ((__m128i)(__v8hi){-24008, 21674, 8299, -31133, 23486, -29407, -15611, -7613}),
+    ((__m128i)(__v8hi){10079, -14333, 2802, 21711, -10849, 11468, -528, -18259})
+) == (__mmask8)0x00);
+
+// cmpneq tests
+TEST_CONSTEXPR(_mm_cmpneq_epi16_mask(
+    ((__m128i)(__v8hi){-24378, 20934, 25612, 4427, -29446, 26311, -2533, -27963}),
+    ((__m128i)(__v8hi){28538, -27232, 21741, -31546, -18083, 17112, -25750, -28016})
+) == (__mmask8)0xff);
+
+// cmplt tests
+TEST_CONSTEXPR(_mm_cmplt_epi16_mask(
+    ((__m128i)(__v8hi){-23454, -12570, 28483, -2443, -10879, 21881, -27324, 10746}),
+    ((__m128i)(__v8hi){31572, -12990, 27653, -25336, 26491, 21811, 19562, -27562})
+) == (__mmask8)0x51);
+
+// cmple tests
+TEST_CONSTEXPR(_mm_cmple_epi16_mask(
+    ((__m128i)(__v8hi){10008, -28465, -29830, 22527, 8820, -32356, 15584, 23957}),
+    ((__m128i)(__v8hi){-4691, 13730, -28788, -17664, 14597, -29281, -30463, 7606})
+) == (__mmask8)0x36);
+
+// cmpge tests
+TEST_CONSTEXPR(_mm_cmpge_epi16_mask(
+    ((__m128i)(__v8hi){-29193, 9029, 15883, -20070, 12934, -20531, 32059, -16251}),
+    ((__m128i)(__v8hi){-392, -23600, 21384, 3664, -23762, -25166, 5219, -5042})
+) == (__mmask8)0x72);
+
+// cmpgt tests
+TEST_CONSTEXPR(_mm_cmpgt_epi16_mask(
+    ((__m128i)(__v8hi){-16014, 12488, 2614, -25164, -8107, -20887, -21726, 32065}),
+    ((__m128i)(__v8hi){-32191, 26305, -6600, 3970, -31254, 30169, 22872, -2017})
+) == (__mmask8)0x95);
+
+// Test cases for _mm_cmp*_epu8_mask
+// cmpeq tests
+TEST_CONSTEXPR(_mm_cmpeq_epu8_mask(
+    ((__m128i)(__v16qu){145, 106, 8, 210, 56, 39, 72, 146, 99, 151, 112, 16, 160, 80, 140, 70}),
+    ((__m128i)(__v16qu){203, 124, 25, 113, 140, 85, 126, 152, 170, 25, 6, 121, 146, 40, 113, 57})
+) == (__mmask16)0x0000);
+
+// cmpneq tests
+TEST_CONSTEXPR(_mm_cmpneq_epu8_mask(
+    ((__m128i)(__v16qu){241, 10, 186, 52, 173, 193, 93, 240, 187, 30, 147, 130, 221, 70, 210, 44}),
+    ((__m128i)(__v16qu){65, 145, 226, 92, 171, 211, 64, 61, 82, 183, 135, 205, 124, 25, 81, 244})
+) == (__mmask16)0xffff);
+
+// cmplt tests
+TEST_CONSTEXPR(_mm_cmplt_epu8_mask(
+    ((__m128i)(__v16qu){155, 8, 76, 39, 55, 79, 74, 78, 129, 144, 169, 84, 32, 112, 201, 226}),
+    ((__m128i)(__v16qu){185, 107, 11, 239, 21, 120, 63, 105, 153, 148, 182, 2, 0, 181, 144, 100})
+) == (__mmask16)0x27ab);
+
+// cmple tests
+TEST_CONSTEXPR(_mm_cmple_epu8_mask(
+    ((__m128i)(__v16qu){31, 238, 238, 163, 38, 109, 134, 50, 251, 250, 68, 2, 132, 238, 236, 148}),
+    ((__m128i)(__v16qu){26, 223, 228, 186, 240, 53, 148, 56, 106, 196, 76, 246, 114, 102, 237, 127})
+) == (__mmask16)0x4cd8);
+
+// cmpge tests
+TEST_CONSTEXPR(_mm_cmpge_epu8_mask(
+    ((__m128i)(__v16qu){165, 179, 185, 74, 129, 89, 42, 170, 195, 35, 151, 20, 240, 155, 245, 254}),
+    ((__m128i)(__v16qu){104, 175, 83, 169, 96, 144, 164, 61, 6, 46, 150, 36, 177, 188, 77, 147})
+) == (__mmask16)0xd597);
+
+// cmpgt tests
+TEST_CONSTEXPR(_mm_cmpgt_epu8_mask(
+    ((__m128i)(__v16qu){25, 67, 207, 46, 203, 0, 89, 144, 93, 235, 192, 245, 29, 67, 227, 66}),
+    ((__m128i)(__v16qu){59, 110, 28, 206, 112, 88, 82, 187, 108, 82, 224, 47, 184, 168, 201, 105})
+) == (__mmask16)0x4a54);
+
+// Test cases for _mm_cmp*_epu16_mask
+// cmpeq tests
+TEST_CONSTEXPR(_mm_cmpeq_epu16_mask(
+    ((__m128i)(__v8hu){57064, 51949, 42152, 43038, 65515, 7797, 23751, 12389}),
+    ((__m128i)(__v8hu){38499, 21192, 9584, 15701, 4826, 6826, 47257, 20923})
+) == (__mmask8)0x00);
+
+// cmpneq tests
+TEST_CONSTEXPR(_mm_cmpneq_epu16_mask(
+    ((__m128i)(__v8hu){17033, 42616, 6158, 53144, 14513, 29528, 57905, 62537}),
+    ((__m128i)(__v8hu){38447, 51378, 320, 16853, 48397, 49715, 53668, 43839})
+) == (__mmask8)0xff);
+
+// cmplt tests
+TEST_CONSTEXPR(_mm_cmplt_epu16_mask(
+    ((__m128i)(__v8hu){55773, 8388, 56635, 32082, 18204, 53351, 33529, 17025}),
+    ((__m128i)(__v8hu){40397, 47032, 24886, 11409, 5864, 42244, 24984, 9087})
+) == (__mmask8)0x02);
+
+// cmple tests
+TEST_CONSTEXPR(_mm_cmple_epu16_mask(
+    ((__m128i)(__v8hu){30467, 14437, 9940, 54360, 37732, 61408, 1077, 33377}),
+    ((__m128i)(__v8hu){21329, 57575, 30740, 42725, 26374, 53724, 12, 11808})
+) == (__mmask8)0x06);
+
+// cmpge tests
+TEST_CONSTEXPR(_mm_cmpge_epu16_mask(
+    ((__m128i)(__v8hu){53950, 52988, 13868, 25190, 31823, 62039, 43379, 51291}),
+    ((__m128i)(__v8hu){35593, 54830, 49773, 10890, 44742, 48266, 45280, 14226})
+) == (__mmask8)0xa9);
+
+// cmpgt tests
+TEST_CONSTEXPR(_mm_cmpgt_epu16_mask(
+    ((__m128i)(__v8hu){36435, 57842, 17322, 33066, 51263, 58618, 57550, 23212}),
+    ((__m128i)(__v8hu){150, 39532, 62935, 34670, 57126, 9790, 21078, 3593})
+) == (__mmask8)0xe3);
+
+//cmpeq
+TEST_CONSTEXPR(_mm_cmpeq_epi32_mask(
+    ((__m128i)(__v4qs){ 0x0302010a, 0x07061420, 0x0b0a0908, 0xc80e0d0c }),
+    ((__m128i)(__v4qs){ 0x0302010a, 0x63636363, 0x63636363, 0xc80e0d0c })
+)==(__mmask8)0x09u);
----------------
shri-acha wrote:

There also seems to be some missing main intrinsic tests for _mm256_cmpeq_epu* variants, is there a particular reason as to why?, if not, I'll just add them.

https://github.com/llvm/llvm-project/pull/169452


More information about the cfe-commits mailing list