3223 lines · c
1// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512bw -emit-llvm -o - -Wall -Werror -Wsign-conversion | FileCheck %s2// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512bw -fno-signed-char -emit-llvm -o - -Wall -Werror -Wsign-conversion | FileCheck %s3// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512bw -emit-llvm -o - -Wall -Werror -Wsign-conversion | FileCheck %s4// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512bw -fno-signed-char -emit-llvm -o - -Wall -Werror -Wsign-conversion | FileCheck %s5 6// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512bw -emit-llvm -o - -Wall -Werror -Wsign-conversion -fexperimental-new-constant-interpreter | FileCheck %s7// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512bw -fno-signed-char -emit-llvm -o - -Wall -Werror -Wsign-conversion -fexperimental-new-constant-interpreter | FileCheck %s8// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512bw -emit-llvm -o - -Wall -Werror -Wsign-conversion -fexperimental-new-constant-interpreter | FileCheck %s9// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512bw -fno-signed-char -emit-llvm -o - -Wall -Werror -Wsign-conversion -fexperimental-new-constant-interpreter | FileCheck %s10 11 12#include <immintrin.h>13#include "builtin_test_helpers.h"14 15__mmask32 test_knot_mask32(__mmask32 a) {16 // CHECK-LABEL: test_knot_mask3217 // CHECK: [[IN:%.*]] = bitcast i32 %{{.*}} to <32 x i1>18 // CHECK: [[NOT:%.*]] = xor <32 x i1> [[IN]], splat (i1 true)19 return _knot_mask32(a);20}21 22TEST_CONSTEXPR(_knot_mask32(0) == 0xFFFFFFFF);23TEST_CONSTEXPR(_knot_mask32(0x123456789) == 0xDCBA9876);24 25__mmask64 test_knot_mask64(__mmask64 a) {26 // CHECK-LABEL: test_knot_mask6427 // CHECK: [[IN:%.*]] = bitcast i64 %{{.*}} to <64 x i1>28 // CHECK: [[NOT:%.*]] = xor <64 x i1> [[IN]], splat (i1 true)29 return _knot_mask64(a);30}31 32TEST_CONSTEXPR(_knot_mask64(0) == 0xFFFFFFFFFFFFFFFF);33TEST_CONSTEXPR(_knot_mask64(0xABCDEF0123456789) == 0x543210FEDCBA9876);34 35__mmask32 test_kand_mask32(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {36 // CHECK-LABEL: test_kand_mask3237 // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>38 // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>39 // CHECK: [[RES:%.*]] = and <32 x i1> [[LHS]], [[RHS]]40 return _mm512_mask_cmpneq_epu16_mask(_kand_mask32(_mm512_cmpneq_epu16_mask(__A, __B),41 _mm512_cmpneq_epu16_mask(__C, __D)),42 __E, __F);43}44 45TEST_CONSTEXPR(_kand_mask32(0xCCCCCCCC, 0xAAAAAAAA) == 0x88888888);46TEST_CONSTEXPR(_kand_mask32(0x123456789, 0xFFFFFFFF) == 0x23456789);47TEST_CONSTEXPR(_kand_mask32(0xABCDEF01, 0x00000000) == 0x00000000);48TEST_CONSTEXPR(_kand_mask32(0x56789ABC, 0xFFFFFFFF) == 0x56789ABC);49TEST_CONSTEXPR(_kand_mask32(0xAAAAAAAA, 0x55555555) == 0x00000000);50 51__mmask64 test_kand_mask64(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {52 // CHECK-LABEL: test_kand_mask6453 // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>54 // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>55 // CHECK: [[RES:%.*]] = and <64 x i1> [[LHS]], [[RHS]]56 return _mm512_mask_cmpneq_epu8_mask(_kand_mask64(_mm512_cmpneq_epu8_mask(__A, __B),57 _mm512_cmpneq_epu8_mask(__C, __D)),58 __E, __F);59}60 61TEST_CONSTEXPR(_kand_mask64(0xCCCCCCCCCCCCCCCC, 0xAAAAAAAAAAAAAAAA) == 0x8888888888888888);62TEST_CONSTEXPR(_kand_mask64(0x123456789ABCDEF0, 0xFFFFFFFFFFFFFFFF) == 0x123456789ABCDEF0);63TEST_CONSTEXPR(_kand_mask64(0xABCDEF0123456789, 0x0000000000000000) == 0x0000000000000000);64TEST_CONSTEXPR(_kand_mask64(0x56789ABCDEF01234, 0xFFFFFFFFFFFFFFFF) == 0x56789ABCDEF01234);65TEST_CONSTEXPR(_kand_mask64(0xAAAAAAAAAAAAAAAA, 0x5555555555555555) == 0x0000000000000000);66 67__mmask32 test_kandn_mask32(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {68 // CHECK-LABEL: test_kandn_mask3269 // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>70 // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>71 // CHECK: [[NOT:%.*]] = xor <32 x i1> [[LHS]], splat (i1 true)72 // CHECK: [[RES:%.*]] = and <32 x i1> [[NOT]], [[RHS]]73 return _mm512_mask_cmpneq_epu16_mask(_kandn_mask32(_mm512_cmpneq_epu16_mask(__A, __B),74 _mm512_cmpneq_epu16_mask(__C, __D)),75 __E, __F);76}77 78TEST_CONSTEXPR(_kandn_mask32(0xA0A0F0F0, 0xCCCCCCCC) == 0x4C4C0C0C);79TEST_CONSTEXPR(_kandn_mask32(0x123456789, 0xFFFFFFFF) == 0xDCBA9876);80TEST_CONSTEXPR(_kandn_mask32(0x00000000, 0x1234ABCD) == 0x1234ABCD);81TEST_CONSTEXPR(_kandn_mask32(0xFFFFFFFF, 0x87654321) == 0x00000000);82TEST_CONSTEXPR(_kandn_mask32(0xAAAAAAAA, 0xAAAAAAAA) == 0x00000000);83 84__mmask64 test_kandn_mask64(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {85 // CHECK-LABEL: test_kandn_mask6486 // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>87 // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>88 // CHECK: [[NOT:%.*]] = xor <64 x i1> [[LHS]], splat (i1 true)89 // CHECK: [[RES:%.*]] = and <64 x i1> [[NOT]], [[RHS]]90 return _mm512_mask_cmpneq_epu8_mask(_kandn_mask64(_mm512_cmpneq_epu8_mask(__A, __B),91 _mm512_cmpneq_epu8_mask(__C, __D)),92 __E, __F);93}94 95TEST_CONSTEXPR(_kandn_mask64(0xA0A0F0F0C3C33C3C, 0xCCCCCCCCFFFF0000) == 0x4C4C0C0C3C3C0000);96TEST_CONSTEXPR(_kandn_mask64(0x0123456789ABCDEF, 0xFFFFFFFFFFFFFFFF) == 0xFEDCBA9876543210);97TEST_CONSTEXPR(_kandn_mask64(0x0, 0x1122334455667788) == 0x1122334455667788);98TEST_CONSTEXPR(_kandn_mask64(0xFFFFFFFFFFFFFFFF, 0x8877665544332211) == 0x0);99TEST_CONSTEXPR(_kandn_mask64(0xAAAAAAAAAAAAAAAA, 0xAAAAAAAAAAAAAAAA) == 0x0);100 101__mmask32 test_kor_mask32(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {102 // CHECK-LABEL: test_kor_mask32103 // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>104 // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>105 // CHECK: [[RES:%.*]] = or <32 x i1> [[LHS]], [[RHS]]106 return _mm512_mask_cmpneq_epu16_mask(_kor_mask32(_mm512_cmpneq_epu16_mask(__A, __B),107 _mm512_cmpneq_epu16_mask(__C, __D)),108 __E, __F);109}110 111TEST_CONSTEXPR(_kor_mask32(0xF0F0A5A5, 0x0F0F5A5A) == 0xFFFFFFFF);112TEST_CONSTEXPR(_kor_mask32(0x12345ABCD, 0x12345ABCD) == 0x2345ABCD);113TEST_CONSTEXPR(_kor_mask32(0x1A2B3C4D, 0x00000000) == 0x1A2B3C4D);114TEST_CONSTEXPR(_kor_mask32(0xDEADBEEF, 0xFFFFFFFF) == 0xFFFFFFFF);115TEST_CONSTEXPR(_kor_mask32(0xAAAAAAAA, 0x55555555) == 0xFFFFFFFF);116 117__mmask64 test_kor_mask64(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {118 // CHECK-LABEL: test_kor_mask64119 // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>120 // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>121 // CHECK: [[RES:%.*]] = or <64 x i1> [[LHS]], [[RHS]]122 return _mm512_mask_cmpneq_epu8_mask(_kor_mask64(_mm512_cmpneq_epu8_mask(__A, __B),123 _mm512_cmpneq_epu8_mask(__C, __D)),124 __E, __F);125}126 127TEST_CONSTEXPR(_kor_mask64(0xF0A5C33C00FF11EE, 0x0F5AC33CFF00EE11) == 0xFFFFC33CFFFFFFFF);128TEST_CONSTEXPR(_kor_mask64(0x123456789ABCDEF0, 0x123456789ABCDEF0) == 0x123456789ABCDEF0);129TEST_CONSTEXPR(_kor_mask64(0x1122334455667788, 0x0) == 0x1122334455667788);130TEST_CONSTEXPR(_kor_mask64(0x8877665544332211, 0xFFFFFFFFFFFFFFFF) == 0xFFFFFFFFFFFFFFFF);131TEST_CONSTEXPR(_kor_mask64(0xAAAAAAAAAAAAAAAA, 0x5555555555555555) == 0xFFFFFFFFFFFFFFFF);132 133__mmask32 test_kxnor_mask32(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {134 // CHECK-LABEL: test_kxnor_mask32135 // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>136 // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>137 // CHECK: [[NOT:%.*]] = xor <32 x i1> [[LHS]], splat (i1 true)138 // CHECK: [[RES:%.*]] = xor <32 x i1> [[NOT]], [[RHS]]139 return _mm512_mask_cmpneq_epu16_mask(_kxnor_mask32(_mm512_cmpneq_epu16_mask(__A, __B),140 _mm512_cmpneq_epu16_mask(__C, __D)),141 __E, __F);142}143 144TEST_CONSTEXPR(_kxnor_mask32(0x1234ABCD, 0xFFFF0000) == 0x12345432);145TEST_CONSTEXPR(_kxnor_mask32(0x123456789ABCDEF0, 0xFFFFFFFF) == 0x9ABCDEF0);146TEST_CONSTEXPR(_kxnor_mask32(0xAABBCCDD, 0x00000000) == 0x55443322);147TEST_CONSTEXPR(_kxnor_mask32(0x87654321, 0xFFFFFFFF) == 0x87654321);148TEST_CONSTEXPR(_kxnor_mask32(0xAAAAAAAA, 0x55555555) == 0x00000000);149 150__mmask64 test_kxnor_mask64(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {151 // CHECK-LABEL: test_kxnor_mask64152 // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>153 // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>154 // CHECK: [[NOT:%.*]] = xor <64 x i1> [[LHS]], splat (i1 true)155 // CHECK: [[RES:%.*]] = xor <64 x i1> [[NOT]], [[RHS]]156 return _mm512_mask_cmpneq_epu8_mask(_kxnor_mask64(_mm512_cmpneq_epu8_mask(__A, __B),157 _mm512_cmpneq_epu8_mask(__C, __D)),158 __E, __F);159}160 161TEST_CONSTEXPR(_kxnor_mask64(0x0123456789ABCDEF, 0xFFFFFFFF00000000) == 0x0123456776543210);162TEST_CONSTEXPR(_kxnor_mask64(0x0F0F0F0F0F0F0F0F, 0x0F0F0F0F0F0F0F0F) == 0xFFFFFFFFFFFFFFFF);163TEST_CONSTEXPR(_kxnor_mask64(0xFEDCBA9876543210, 0xFFFFFFFFFFFFFFFF) == 0xFEDCBA9876543210);164TEST_CONSTEXPR(_kxnor_mask64(0xAABBCCDD11223344, 0x0000000000000000) == 0x55443322EEDDCCBB);165TEST_CONSTEXPR(_kxnor_mask64(0xAAAAAAAAAAAAAAAA, 0x5555555555555555) == 0x0000000000000000);166 167__mmask32 test_kxor_mask32(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {168 // CHECK-LABEL: test_kxor_mask32169 // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>170 // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>171 // CHECK: [[RES:%.*]] = xor <32 x i1> [[LHS]], [[RHS]]172 return _mm512_mask_cmpneq_epu16_mask(_kxor_mask32(_mm512_cmpneq_epu16_mask(__A, __B),173 _mm512_cmpneq_epu16_mask(__C, __D)),174 __E, __F);175}176 177TEST_CONSTEXPR(_kxor_mask32(0x1234ABCD, 0xFFFF0000) == 0xEDCBABCD);178TEST_CONSTEXPR(_kxor_mask32(0x123456789ABCDEF0, 0x00000000) == 0x9ABCDEF0);179TEST_CONSTEXPR(_kxor_mask32(0xAABBCCDD, 0x00000000) == 0xAABBCCDD);180TEST_CONSTEXPR(_kxor_mask32(0x87654321, 0xFFFFFFFF) == 0x789ABCDE);181TEST_CONSTEXPR(_kxor_mask32(0xAAAAAAAA, 0x55555555) == 0xFFFFFFFF);182 183__mmask64 test_kxor_mask64(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {184 // CHECK-LABEL: test_kxor_mask64185 // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>186 // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>187 // CHECK: [[RES:%.*]] = xor <64 x i1> [[LHS]], [[RHS]]188 return _mm512_mask_cmpneq_epu8_mask(_kxor_mask64(_mm512_cmpneq_epu8_mask(__A, __B),189 _mm512_cmpneq_epu8_mask(__C, __D)),190 __E, __F);191}192 193TEST_CONSTEXPR(_kxor_mask64(0x0123456789ABCDEF, 0xFFFFFFFF00000000) == 0xFEDCBA9889ABCDEF);194TEST_CONSTEXPR(_kxor_mask64(0xF0F0F0F0F0F0F0F0, 0x0F0F0F0F0F0F0F0F) == 0xFFFFFFFFFFFFFFFF);195TEST_CONSTEXPR(_kxor_mask64(0xFEDCBA9876543210, 0xFFFFFFFFFFFFFFFF) == 0x0123456789ABCDEF);196TEST_CONSTEXPR(_kxor_mask64(0xAABBCCDD11223344, 0x0000000000000000) == 0xAABBCCDD11223344);197TEST_CONSTEXPR(_kxor_mask64(0xAAAAAAAAAAAAAAAA, 0x5555555555555555) == 0xFFFFFFFFFFFFFFFF);198 199unsigned char test_kortestz_mask32_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {200 // CHECK-LABEL: test_kortestz_mask32_u8201 // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>202 // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>203 // CHECK: [[OR:%.*]] = or <32 x i1> [[LHS]], [[RHS]]204 // CHECK: [[CAST:%.*]] = bitcast <32 x i1> [[OR]] to i32205 // CHECK: [[CMP:%.*]] = icmp eq i32 [[CAST]], 0206 // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32207 // CHECK: trunc i32 [[ZEXT]] to i8208 return _kortestz_mask32_u8(_mm512_cmpneq_epu16_mask(__A, __B),209 _mm512_cmpneq_epu16_mask(__C, __D));210}211 212TEST_CONSTEXPR(_kortestz_mask32_u8(0x0000'0000, 0x0000'0000) == 1);213TEST_CONSTEXPR(_kortestz_mask32_u8(0x0000'0000, 0x8000'0000) == 0);214TEST_CONSTEXPR(_kortestz_mask32_u8(0x0123'4567, 0xFEDC'BA98) == 0);215 216unsigned char test_kortestc_mask32_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {217 // CHECK-LABEL: test_kortestc_mask32_u8218 // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>219 // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>220 // CHECK: [[OR:%.*]] = or <32 x i1> [[LHS]], [[RHS]]221 // CHECK: [[CAST:%.*]] = bitcast <32 x i1> [[OR]] to i32222 // CHECK: [[CMP:%.*]] = icmp eq i32 [[CAST]], -1223 // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32224 // CHECK: trunc i32 [[ZEXT]] to i8225 return _kortestc_mask32_u8(_mm512_cmpneq_epu16_mask(__A, __B),226 _mm512_cmpneq_epu16_mask(__C, __D));227}228 229TEST_CONSTEXPR(_kortestc_mask32_u8(0x0000'0000, 0x0000'0000) == 0);230TEST_CONSTEXPR(_kortestc_mask32_u8(0x0000'0000, 0x8000'0000) == 0);231TEST_CONSTEXPR(_kortestc_mask32_u8(0x0123'4567, 0xFEDC'BA98) == 1);232 233unsigned char test_kortest_mask32_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, unsigned char *CF) {234 // CHECK-LABEL: test_kortest_mask32_u8235 // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>236 // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>237 // CHECK: [[OR:%.*]] = or <32 x i1> [[LHS]], [[RHS]]238 // CHECK: [[CAST:%.*]] = bitcast <32 x i1> [[OR]] to i32239 // CHECK: [[CMP:%.*]] = icmp eq i32 [[CAST]], -1240 // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32241 // CHECK: trunc i32 [[ZEXT]] to i8242 // CHECK: [[LHS2:%.*]] = bitcast i32 %{{.*}} to <32 x i1>243 // CHECK: [[RHS2:%.*]] = bitcast i32 %{{.*}} to <32 x i1>244 // CHECK: [[OR2:%.*]] = or <32 x i1> [[LHS2]], [[RHS2]]245 // CHECK: [[CAST2:%.*]] = bitcast <32 x i1> [[OR2]] to i32246 // CHECK: [[CMP2:%.*]] = icmp eq i32 [[CAST2]], 0247 // CHECK: [[ZEXT2:%.*]] = zext i1 [[CMP2]] to i32248 // CHECK: trunc i32 [[ZEXT2]] to i8249 return _kortest_mask32_u8(_mm512_cmpneq_epu16_mask(__A, __B),250 _mm512_cmpneq_epu16_mask(__C, __D), CF);251}252 253// Test constexpr handling.254#if defined(__cplusplus) && (__cplusplus >= 201103L)255constexpr unsigned char256test_kortest_mask32_u8(unsigned int A, unsigned int B) {257 unsigned char all_ones{};258 return (_kortest_mask32_u8(A, B, &all_ones) << 4) | all_ones;259}260 261void _kortest_mask32_u8() {262 constexpr unsigned int A1 = 0x0000'0000;263 constexpr unsigned int B1 = 0x0000'0000;264 constexpr unsigned char expected_result_1 = 0x10;265 static_assert(test_kortest_mask32_u8(A1, B1) == expected_result_1);266 constexpr unsigned int A2 = 0x0000'0000;267 constexpr unsigned int B2 = 0x8000'0000;268 constexpr unsigned char expected_result_2 = 0x00;269 static_assert(test_kortest_mask32_u8(A2, B2) == expected_result_2);270 constexpr unsigned int A3 = 0x0123'4567;271 constexpr unsigned int B3 = 0xFEDC'BA98;272 constexpr unsigned char expected_result_3 = 0x01;273 static_assert(test_kortest_mask32_u8(A3, B3) == expected_result_3);274}275#endif276 277unsigned char test_kortestz_mask64_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {278 // CHECK-LABEL: test_kortestz_mask64_u8279 // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>280 // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>281 // CHECK: [[OR:%.*]] = or <64 x i1> [[LHS]], [[RHS]]282 // CHECK: [[CAST:%.*]] = bitcast <64 x i1> [[OR]] to i64283 // CHECK: [[CMP:%.*]] = icmp eq i64 [[CAST]], 0284 // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32285 // CHECK: trunc i32 [[ZEXT]] to i8286 return _kortestz_mask64_u8(_mm512_cmpneq_epu8_mask(__A, __B),287 _mm512_cmpneq_epu8_mask(__C, __D));288}289 290TEST_CONSTEXPR(_kortestz_mask64_u8(0x0000'0000'0000'0000, 0x0000'0000'0000'0000) == 1);291TEST_CONSTEXPR(_kortestz_mask64_u8(0x0000'0000'0000'0000, 0x8000'0000'0000'0000) == 0);292TEST_CONSTEXPR(_kortestz_mask64_u8(0x0123'4567'89AB'CDEF, 0xFEDC'BA98'7654'3210) == 0);293 294unsigned char test_kortestc_mask64_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {295 // CHECK-LABEL: test_kortestc_mask64_u8296 // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>297 // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>298 // CHECK: [[OR:%.*]] = or <64 x i1> [[LHS]], [[RHS]]299 // CHECK: [[CAST:%.*]] = bitcast <64 x i1> [[OR]] to i64300 // CHECK: [[CMP:%.*]] = icmp eq i64 [[CAST]], -1301 // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32302 // CHECK: trunc i32 [[ZEXT]] to i8303 return _kortestc_mask64_u8(_mm512_cmpneq_epu8_mask(__A, __B),304 _mm512_cmpneq_epu8_mask(__C, __D));305}306 307TEST_CONSTEXPR(_kortestc_mask64_u8(0x0000'0000'0000'0000, 0x0000'0000'0000'0000) == 0);308TEST_CONSTEXPR(_kortestc_mask64_u8(0x0023'4567'89AB'CDEF, 0xFEDC'BA98'7654'3210) == 0);309TEST_CONSTEXPR(_kortestc_mask64_u8(0x0123'4567'89AB'CDEF, 0xFEDC'BA98'7654'3210) == 1);310 311unsigned char test_kortest_mask64_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, unsigned char *CF) {312 // CHECK-LABEL: test_kortest_mask64_u8313 // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>314 // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>315 // CHECK: [[OR:%.*]] = or <64 x i1> [[LHS]], [[RHS]]316 // CHECK: [[CAST:%.*]] = bitcast <64 x i1> [[OR]] to i64317 // CHECK: [[CMP:%.*]] = icmp eq i64 [[CAST]], -1318 // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32319 // CHECK: trunc i32 [[ZEXT]] to i8320 // CHECK: [[LHS2:%.*]] = bitcast i64 %{{.*}} to <64 x i1>321 // CHECK: [[RHS2:%.*]] = bitcast i64 %{{.*}} to <64 x i1>322 // CHECK: [[OR2:%.*]] = or <64 x i1> [[LHS2]], [[RHS2]]323 // CHECK: [[CAST2:%.*]] = bitcast <64 x i1> [[OR2]] to i64324 // CHECK: [[CMP2:%.*]] = icmp eq i64 [[CAST2]], 0325 // CHECK: [[ZEXT2:%.*]] = zext i1 [[CMP2]] to i32326 // CHECK: trunc i32 [[ZEXT2]] to i8327 return _kortest_mask64_u8(_mm512_cmpneq_epu8_mask(__A, __B),328 _mm512_cmpneq_epu8_mask(__C, __D), CF);329}330 331// Test constexpr handling.332#if defined(__cplusplus) && (__cplusplus >= 201103L)333constexpr unsigned char334test_kortest_mask64_u8(unsigned long long A, unsigned long long B) {335 unsigned char all_ones{};336 return (_kortest_mask64_u8(A, B, &all_ones) << 4) | all_ones;337}338 339void _kortest_mask64_u8() {340 constexpr unsigned long long A1 = 0x0000'0000'0000'0000;341 constexpr unsigned long long B1 = 0x0000'0000'0000'0000;342 constexpr unsigned char expected_result_1 = 0x10;343 static_assert(test_kortest_mask64_u8(A1, B1) == expected_result_1);344 constexpr unsigned long long A2 = 0x0000'0000'0000'0000;345 constexpr unsigned long long B2 = 0x8000'0000'0000'0000;346 constexpr unsigned char expected_result_2 = 0x00;347 static_assert(test_kortest_mask64_u8(A2, B2) == expected_result_2);348 constexpr unsigned long long A3 = 0x0123'4567'89AB'CDEF;349 constexpr unsigned long long B3 = 0xFEDC'BA98'7654'3210;350 constexpr unsigned char expected_result_3 = 0x01;351 static_assert(test_kortest_mask64_u8(A3, B3) == expected_result_3);352}353#endif354 355unsigned char test_ktestz_mask32_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {356 // CHECK-LABEL: test_ktestz_mask32_u8357 // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>358 // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>359 // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestz.d(<32 x i1> [[LHS]], <32 x i1> [[RHS]])360 // CHECK: trunc i32 [[RES]] to i8361 return _ktestz_mask32_u8(_mm512_cmpneq_epu16_mask(__A, __B),362 _mm512_cmpneq_epu16_mask(__C, __D));363}364 365TEST_CONSTEXPR(_ktestz_mask32_u8(0x0000'0000, 0x0000'0000) == 1);366TEST_CONSTEXPR(_ktestz_mask32_u8(0x0000'0000, 0x8000'0000) == 1);367TEST_CONSTEXPR(_ktestz_mask32_u8(0xF000'0000, 0x8000'0000) == 0);368TEST_CONSTEXPR(_ktestz_mask32_u8(0x0123'4567, 0x0123'4567) == 0);369 370unsigned char test_ktestc_mask32_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {371 // CHECK-LABEL: test_ktestc_mask32_u8372 // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>373 // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>374 // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestc.d(<32 x i1> [[LHS]], <32 x i1> [[RHS]])375 // CHECK: trunc i32 [[RES]] to i8376 return _ktestc_mask32_u8(_mm512_cmpneq_epu16_mask(__A, __B),377 _mm512_cmpneq_epu16_mask(__C, __D));378}379 380TEST_CONSTEXPR(_ktestc_mask32_u8(0x0000'0000, 0x0000'0000) == 1);381TEST_CONSTEXPR(_ktestc_mask32_u8(0x0000'0000, 0x8000'0000) == 0);382TEST_CONSTEXPR(_ktestc_mask32_u8(0xF000'0000, 0x8000'0000) == 1);383TEST_CONSTEXPR(_ktestc_mask32_u8(0x0123'4567, 0x0123'4567) == 1);384 385unsigned char test_ktest_mask32_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, unsigned char *CF) {386 // CHECK-LABEL: test_ktest_mask32_u8387 // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>388 // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>389 // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestc.d(<32 x i1> [[LHS]], <32 x i1> [[RHS]])390 // CHECK: trunc i32 [[RES]] to i8391 // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>392 // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>393 // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestz.d(<32 x i1> [[LHS]], <32 x i1> [[RHS]])394 // CHECK: trunc i32 [[RES]] to i8395 return _ktest_mask32_u8(_mm512_cmpneq_epu16_mask(__A, __B),396 _mm512_cmpneq_epu16_mask(__C, __D), CF);397}398 399// Test constexpr handling.400#if defined(__cplusplus) && (__cplusplus >= 201103L)401constexpr unsigned char402test_ktest_mask32_u8(unsigned int A, unsigned int B) {403 unsigned char and_not{};404 return (_ktest_mask32_u8(A, B, &and_not) << 4) | and_not;405}406 407void _ktest_mask32_u8() {408 constexpr unsigned int A1 = 0x0000'0000;409 constexpr unsigned int B1 = 0x0000'0000;410 constexpr unsigned char expected_result_1 = 0x11;411 static_assert(test_ktest_mask32_u8(A1, B1) == expected_result_1);412 constexpr unsigned int A2 = 0x0000'0000;413 constexpr unsigned int B2 = 0x8000'0000;414 constexpr unsigned char expected_result_2 = 0x10;415 static_assert(test_ktest_mask32_u8(A2, B2) == expected_result_2);416 constexpr unsigned int A3 = 0xF000'0000;417 constexpr unsigned int B3 = 0x8000'0000;418 constexpr unsigned char expected_result_3 = 0x01;419 static_assert(test_ktest_mask32_u8(A3, B3) == expected_result_3);420 constexpr unsigned int A4 = 0x0123'4567;421 constexpr unsigned int B4 = 0x0123'4567;422 constexpr unsigned char expected_result_4 = 0x01;423 static_assert(test_ktest_mask32_u8(A4, B4) == expected_result_4);424}425#endif426 427unsigned char test_ktestz_mask64_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {428 // CHECK-LABEL: test_ktestz_mask64_u8429 // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>430 // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>431 // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestz.q(<64 x i1> [[LHS]], <64 x i1> [[RHS]])432 // CHECK: trunc i32 [[RES]] to i8433 return _ktestz_mask64_u8(_mm512_cmpneq_epu8_mask(__A, __B),434 _mm512_cmpneq_epu8_mask(__C, __D));435}436 437TEST_CONSTEXPR(_ktestz_mask64_u8(0x0000'0000'0000'0000, 0x0000'0000'0000'0000) == 1);438TEST_CONSTEXPR(_ktestz_mask64_u8(0x0000'0000'0000'0000, 0x8000'0000'0000'0000) == 1);439TEST_CONSTEXPR(_ktestz_mask64_u8(0xF000'0000'0000'0000, 0x8000'0000'0000'0000) == 0);440TEST_CONSTEXPR(_ktestz_mask64_u8(0x0123'4567'89AB'CDEF, 0x0123'4567'89AB'CDEF) == 0);441 442unsigned char test_ktestc_mask64_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {443 // CHECK-LABEL: test_ktestc_mask64_u8444 // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>445 // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>446 // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestc.q(<64 x i1> [[LHS]], <64 x i1> [[RHS]])447 // CHECK: trunc i32 [[RES]] to i8448 return _ktestc_mask64_u8(_mm512_cmpneq_epu8_mask(__A, __B),449 _mm512_cmpneq_epu8_mask(__C, __D));450}451 452TEST_CONSTEXPR(_ktestc_mask64_u8(0x0000'0000'0000'0000, 0x0000'0000'0000'0000) == 1);453TEST_CONSTEXPR(_ktestc_mask64_u8(0x0000'0000'0000'0000, 0x8000'0000'0000'0000) == 0);454TEST_CONSTEXPR(_ktestc_mask64_u8(0xF000'0000'0000'0000, 0x8000'0000'0000'0000) == 1);455TEST_CONSTEXPR(_ktestc_mask64_u8(0x0123'4567'89AB'CDEF, 0x0123'4567'89AB'CDEF) == 1);456 457unsigned char test_ktest_mask64_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, unsigned char *CF) {458 // CHECK-LABEL: test_ktest_mask64_u8459 // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>460 // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>461 // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestc.q(<64 x i1> [[LHS]], <64 x i1> [[RHS]])462 // CHECK: trunc i32 [[RES]] to i8463 // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>464 // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>465 // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestz.q(<64 x i1> [[LHS]], <64 x i1> [[RHS]])466 // CHECK: trunc i32 [[RES]] to i8467 return _ktest_mask64_u8(_mm512_cmpneq_epu8_mask(__A, __B),468 _mm512_cmpneq_epu8_mask(__C, __D), CF);469}470 471// Test constexpr handling.472#if defined(__cplusplus) && (__cplusplus >= 201402L)473constexpr unsigned char474test_ktest_mask64_u8(unsigned long long A, unsigned long long B) {475 unsigned char and_not{};476 return (_ktest_mask64_u8(A, B, &and_not) << 4) | and_not;477}478 479void _ktest_mask64_u8() {480 constexpr unsigned long long A1 = 0x0000'0000'0000'0000;481 constexpr unsigned long long B1 = 0x0000'0000'0000'0000;482 constexpr unsigned char expected_result_1 = 0x11;483 static_assert(test_ktest_mask64_u8(A1, B1) == expected_result_1);484 constexpr unsigned long long A2 = 0x0000'0000'0000'0000;485 constexpr unsigned long long B2 = 0x8000'0000'0000'0000;486 constexpr unsigned char expected_result_2 = 0x10;487 static_assert(test_ktest_mask64_u8(A2, B2) == expected_result_2);488 constexpr unsigned long long A3 = 0xF000'0000'0000'0000;489 constexpr unsigned long long B3 = 0x8000'0000'0000'0000;490 constexpr unsigned char expected_result_3 = 0x01;491 static_assert(test_ktest_mask64_u8(A3, B3) == expected_result_3);492 constexpr unsigned long long A4 = 0x0123'4567'89AB'CDEF;493 constexpr unsigned long long B4 = 0x0123'4567'89AB'CDEF;494 constexpr unsigned char expected_result_4 = 0x01;495 static_assert(test_ktest_mask64_u8(A4, B4) == expected_result_4);496}497#endif498 499__mmask32 test_kadd_mask32(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {500 // CHECK-LABEL: test_kadd_mask32501 // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>502 // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>503 // CHECK: [[RES:%.*]] = call <32 x i1> @llvm.x86.avx512.kadd.d(<32 x i1> [[LHS]], <32 x i1> [[RHS]])504 return _mm512_mask_cmpneq_epu16_mask(_kadd_mask32(_mm512_cmpneq_epu16_mask(__A, __B),505 _mm512_cmpneq_epu16_mask(__C, __D)),506 __E, __F);507}508 509TEST_CONSTEXPR(_kadd_mask32(100000, 200000) == 300000);510TEST_CONSTEXPR(_kadd_mask32(2147483648, 0) == 2147483648);511TEST_CONSTEXPR(_kadd_mask32(0xFFFFFFFF, 1) == 0);512TEST_CONSTEXPR(_kadd_mask32(0xEE6B2800, 0x1DCD6500) == 0x0C388D00);513TEST_CONSTEXPR(_kadd_mask32(0xFFFFFFFA, 10) == 4);514 515__mmask64 test_kadd_mask64(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {516 // CHECK-LABEL: test_kadd_mask64517 // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>518 // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>519 // CHECK: [[RES:%.*]] = call <64 x i1> @llvm.x86.avx512.kadd.q(<64 x i1> [[LHS]], <64 x i1> [[RHS]])520 return _mm512_mask_cmpneq_epu8_mask(_kadd_mask64(_mm512_cmpneq_epu8_mask(__A, __B),521 _mm512_cmpneq_epu8_mask(__C, __D)),522 __E, __F);523}524 525TEST_CONSTEXPR(_kadd_mask64(10000000000, 20000000000) == 30000000000);526TEST_CONSTEXPR(_kadd_mask64(0x8000000000000000, 0) == 0x8000000000000000);527TEST_CONSTEXPR(_kadd_mask64(0xFFFFFFFFFFFFFFFF, 1) == 0);528TEST_CONSTEXPR(_kadd_mask64(0xFFFFFFFFFFFFFFFA, 10) == 4);529TEST_CONSTEXPR(_kadd_mask64(0xFA0A1F2C6C729C00, 0x0DE0B6B3A7640000) == 0x07EAD5E013D69C00);530 531__mmask32 test_kshiftli_mask32(__m512i A, __m512i B, __m512i C, __m512i D) {532 // CHECK-LABEL: test_kshiftli_mask32533 // CHECK: [[VAL:%.*]] = bitcast i32 %{{.*}} to <32 x i1>534 // CHECK: [[RES:%.*]] = shufflevector <32 x i1> zeroinitializer, <32 x i1> [[VAL]], <32 x i32> <i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32>535 return _mm512_mask_cmpneq_epu16_mask(_kshiftli_mask32(_mm512_cmpneq_epu16_mask(A, B), 31), C, D);536}537 538__mmask32 test_kshiftri_mask32(__m512i A, __m512i B, __m512i C, __m512i D) {539 // CHECK-LABEL: test_kshiftri_mask32540 // CHECK: [[VAL:%.*]] = bitcast i32 %{{.*}} to <32 x i1>541 // CHECK: [[RES:%.*]] = shufflevector <32 x i1> [[VAL]], <32 x i1> zeroinitializer, <32 x i32> <i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62>542 return _mm512_mask_cmpneq_epu16_mask(_kshiftri_mask32(_mm512_cmpneq_epu16_mask(A, B), 31), C, D);543}544 545__mmask64 test_kshiftli_mask64(__m512i A, __m512i B, __m512i C, __m512i D) {546 // CHECK-LABEL: test_kshiftli_mask64547 // CHECK: [[VAL:%.*]] = bitcast i64 %{{.*}} to <64 x i1>548 // CHECK: [[RES:%.*]] = shufflevector <64 x i1> zeroinitializer, <64 x i1> [[VAL]], <64 x i32> <i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 91, i32 92, i32 93, i32 94, i32 95>549 return _mm512_mask_cmpneq_epu8_mask(_kshiftli_mask64(_mm512_cmpneq_epu8_mask(A, B), 32), C, D);550}551 552__mmask64 test_kshiftri_mask64(__m512i A, __m512i B, __m512i C, __m512i D) {553 // CHECK-LABEL: test_kshiftri_mask64554 // CHECK: [[VAL:%.*]] = bitcast i64 %{{.*}} to <64 x i1>555 // CHECK: [[RES:%.*]] = shufflevector <64 x i1> [[VAL]], <64 x i1> zeroinitializer, <64 x i32> <i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 91, i32 92, i32 93, i32 94, i32 95>556 return _mm512_mask_cmpneq_epu8_mask(_kshiftri_mask64(_mm512_cmpneq_epu8_mask(A, B), 32), C, D);557}558 559unsigned int test_cvtmask32_u32(__m512i A, __m512i B) {560 // CHECK-LABEL: test_cvtmask32_u32561 return _cvtmask32_u32(_mm512_cmpneq_epu16_mask(A, B));562}563 564TEST_CONSTEXPR(_cvtmask32_u32((__mmask32)0xDEADBEEF) == 0xDEADBEEF);565 566unsigned long long test_cvtmask64_u64(__m512i A, __m512i B) {567 // CHECK-LABEL: test_cvtmask64_u64568 return _cvtmask64_u64(_mm512_cmpneq_epu8_mask(A, B));569}570 571TEST_CONSTEXPR(_cvtmask64_u64((__mmask64)0x123456789ABCDEF0ULL) == 0x123456789ABCDEF0ULL);572 573__mmask32 test_cvtu32_mask32(__m512i A, __m512i B, unsigned int C) {574 // CHECK-LABEL: test_cvtu32_mask32575 return _mm512_mask_cmpneq_epu16_mask(_cvtu32_mask32(C), A, B);576}577 578TEST_CONSTEXPR(_cvtu32_mask32(0x13579BDF) == (__mmask32)0x13579BDF);579TEST_CONSTEXPR(_cvtu32_mask32(_cvtmask32_u32((__mmask32)0x2468ACE0)) == (__mmask32)0x2468ACE0);580 581__mmask64 test_cvtu64_mask64(__m512i A, __m512i B, unsigned long long C) {582 // CHECK-LABEL: test_cvtu64_mask64583 return _mm512_mask_cmpneq_epu8_mask(_cvtu64_mask64(C), A, B);584}585 586TEST_CONSTEXPR(_cvtu64_mask64(0x0F0F0F0F0F0F0F0FULL) == (__mmask64)0x0F0F0F0F0F0F0F0FULL);587TEST_CONSTEXPR(_cvtu64_mask64(_cvtmask64_u64((__mmask64)0xF0F0F0F0F0F0F0F0ULL)) == (__mmask64)0xF0F0F0F0F0F0F0F0ULL);588 589__mmask32 test_load_mask32(__mmask32 *A, __m512i B, __m512i C) {590 // CHECK-LABEL: test_load_mask32591 // CHECK: [[LOAD:%.*]] = load i32, ptr %{{.*}}592 return _mm512_mask_cmpneq_epu16_mask(_load_mask32(A), B, C);593}594 595__mmask64 test_load_mask64(__mmask64 *A, __m512i B, __m512i C) {596 // CHECK-LABEL: test_load_mask64597 // CHECK: [[LOAD:%.*]] = load i64, ptr %{{.*}}598 return _mm512_mask_cmpneq_epu8_mask(_load_mask64(A), B, C);599}600 601void test_store_mask32(__mmask32 *A, __m512i B, __m512i C) {602 // CHECK-LABEL: test_store_mask32603 // CHECK: store i32 %{{.*}}, ptr %{{.*}}604 _store_mask32(A, _mm512_cmpneq_epu16_mask(B, C));605}606 607void test_store_mask64(__mmask64 *A, __m512i B, __m512i C) {608 // CHECK-LABEL: test_store_mask64609 // CHECK: store i64 %{{.*}}, ptr %{{.*}}610 _store_mask64(A, _mm512_cmpneq_epu8_mask(B, C));611}612 613__mmask64 test_mm512_cmpeq_epi8_mask(__m512i __a, __m512i __b) {614 // CHECK-LABEL: test_mm512_cmpeq_epi8_mask615 // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}616 return (__mmask64)_mm512_cmpeq_epi8_mask(__a, __b);617}618 619__mmask64 test_mm512_mask_cmpeq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {620 // CHECK-LABEL: test_mm512_mask_cmpeq_epi8_mask621 // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}622 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}623 return (__mmask64)_mm512_mask_cmpeq_epi8_mask(__u, __a, __b);624}625 626__mmask32 test_mm512_cmpeq_epi16_mask(__m512i __a, __m512i __b) {627 // CHECK-LABEL: test_mm512_cmpeq_epi16_mask628 // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}629 return (__mmask32)_mm512_cmpeq_epi16_mask(__a, __b);630}631 632__mmask32 test_mm512_mask_cmpeq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {633 // CHECK-LABEL: test_mm512_mask_cmpeq_epi16_mask634 // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}635 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}636 return (__mmask32)_mm512_mask_cmpeq_epi16_mask(__u, __a, __b);637}638 639__mmask64 test_mm512_cmpgt_epi8_mask(__m512i __a, __m512i __b) {640 // CHECK-LABEL: test_mm512_cmpgt_epi8_mask641 // CHECK: icmp sgt <64 x i8> %{{.*}}, %{{.*}}642 return (__mmask64)_mm512_cmpgt_epi8_mask(__a, __b);643}644 645__mmask64 test_mm512_mask_cmpgt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {646 // CHECK-LABEL: test_mm512_mask_cmpgt_epi8_mask647 // CHECK: icmp sgt <64 x i8> %{{.*}}, %{{.*}}648 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}649 return (__mmask64)_mm512_mask_cmpgt_epi8_mask(__u, __a, __b);650}651 652__mmask32 test_mm512_cmpgt_epi16_mask(__m512i __a, __m512i __b) {653 // CHECK-LABEL: test_mm512_cmpgt_epi16_mask654 // CHECK: icmp sgt <32 x i16> %{{.*}}, %{{.*}}655 return (__mmask32)_mm512_cmpgt_epi16_mask(__a, __b);656}657 658__mmask32 test_mm512_mask_cmpgt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {659 // CHECK-LABEL: test_mm512_mask_cmpgt_epi16_mask660 // CHECK: icmp sgt <32 x i16> %{{.*}}, %{{.*}}661 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}662 return (__mmask32)_mm512_mask_cmpgt_epi16_mask(__u, __a, __b);663}664 665__mmask64 test_mm512_cmpeq_epu8_mask(__m512i __a, __m512i __b) {666 // CHECK-LABEL: test_mm512_cmpeq_epu8_mask667 // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}668 return (__mmask64)_mm512_cmpeq_epu8_mask(__a, __b);669}670 671__mmask64 test_mm512_mask_cmpeq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {672 // CHECK-LABEL: test_mm512_mask_cmpeq_epu8_mask673 // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}674 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}675 return (__mmask64)_mm512_mask_cmpeq_epu8_mask(__u, __a, __b);676}677 678__mmask32 test_mm512_cmpeq_epu16_mask(__m512i __a, __m512i __b) {679 // CHECK-LABEL: test_mm512_cmpeq_epu16_mask680 // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}681 return (__mmask32)_mm512_cmpeq_epu16_mask(__a, __b);682}683 684__mmask32 test_mm512_mask_cmpeq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {685 // CHECK-LABEL: test_mm512_mask_cmpeq_epu16_mask686 // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}687 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}688 return (__mmask32)_mm512_mask_cmpeq_epu16_mask(__u, __a, __b);689}690 691__mmask64 test_mm512_cmpgt_epu8_mask(__m512i __a, __m512i __b) {692 // CHECK-LABEL: test_mm512_cmpgt_epu8_mask693 // CHECK: icmp ugt <64 x i8> %{{.*}}, %{{.*}}694 return (__mmask64)_mm512_cmpgt_epu8_mask(__a, __b);695}696 697__mmask64 test_mm512_mask_cmpgt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {698 // CHECK-LABEL: test_mm512_mask_cmpgt_epu8_mask699 // CHECK: icmp ugt <64 x i8> %{{.*}}, %{{.*}}700 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}701 return (__mmask64)_mm512_mask_cmpgt_epu8_mask(__u, __a, __b);702}703 704__mmask32 test_mm512_cmpgt_epu16_mask(__m512i __a, __m512i __b) {705 // CHECK-LABEL: test_mm512_cmpgt_epu16_mask706 // CHECK: icmp ugt <32 x i16> %{{.*}}, %{{.*}}707 return (__mmask32)_mm512_cmpgt_epu16_mask(__a, __b);708}709 710__mmask32 test_mm512_mask_cmpgt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {711 // CHECK-LABEL: test_mm512_mask_cmpgt_epu16_mask712 // CHECK: icmp ugt <32 x i16> %{{.*}}, %{{.*}}713 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}714 return (__mmask32)_mm512_mask_cmpgt_epu16_mask(__u, __a, __b);715}716 717__mmask64 test_mm512_cmpge_epi8_mask(__m512i __a, __m512i __b) {718 // CHECK-LABEL: test_mm512_cmpge_epi8_mask719 // CHECK: icmp sge <64 x i8> %{{.*}}, %{{.*}}720 return (__mmask64)_mm512_cmpge_epi8_mask(__a, __b);721}722 723__mmask64 test_mm512_mask_cmpge_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {724 // CHECK-LABEL: test_mm512_mask_cmpge_epi8_mask725 // CHECK: icmp sge <64 x i8> %{{.*}}, %{{.*}}726 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}727 return (__mmask64)_mm512_mask_cmpge_epi8_mask(__u, __a, __b);728}729 730__mmask64 test_mm512_cmpge_epu8_mask(__m512i __a, __m512i __b) {731 // CHECK-LABEL: test_mm512_cmpge_epu8_mask732 // CHECK: icmp uge <64 x i8> %{{.*}}, %{{.*}}733 return (__mmask64)_mm512_cmpge_epu8_mask(__a, __b);734}735 736__mmask64 test_mm512_mask_cmpge_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {737 // CHECK-LABEL: test_mm512_mask_cmpge_epu8_mask738 // CHECK: icmp uge <64 x i8> %{{.*}}, %{{.*}}739 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}740 return (__mmask64)_mm512_mask_cmpge_epu8_mask(__u, __a, __b);741}742 743__mmask32 test_mm512_cmpge_epi16_mask(__m512i __a, __m512i __b) {744 // CHECK-LABEL: test_mm512_cmpge_epi16_mask745 // CHECK: icmp sge <32 x i16> %{{.*}}, %{{.*}}746 return (__mmask32)_mm512_cmpge_epi16_mask(__a, __b);747}748 749__mmask32 test_mm512_mask_cmpge_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {750 // CHECK-LABEL: test_mm512_mask_cmpge_epi16_mask751 // CHECK: icmp sge <32 x i16> %{{.*}}, %{{.*}}752 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}753 return (__mmask32)_mm512_mask_cmpge_epi16_mask(__u, __a, __b);754}755 756__mmask32 test_mm512_cmpge_epu16_mask(__m512i __a, __m512i __b) {757 // CHECK-LABEL: test_mm512_cmpge_epu16_mask758 // CHECK: icmp uge <32 x i16> %{{.*}}, %{{.*}}759 return (__mmask32)_mm512_cmpge_epu16_mask(__a, __b);760}761 762__mmask32 test_mm512_mask_cmpge_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {763 // CHECK-LABEL: test_mm512_mask_cmpge_epu16_mask764 // CHECK: icmp uge <32 x i16> %{{.*}}, %{{.*}}765 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}766 return (__mmask32)_mm512_mask_cmpge_epu16_mask(__u, __a, __b);767}768 769__mmask64 test_mm512_cmple_epi8_mask(__m512i __a, __m512i __b) {770 // CHECK-LABEL: test_mm512_cmple_epi8_mask771 // CHECK: icmp sle <64 x i8> %{{.*}}, %{{.*}}772 return (__mmask64)_mm512_cmple_epi8_mask(__a, __b);773}774 775__mmask64 test_mm512_mask_cmple_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {776 // CHECK-LABEL: test_mm512_mask_cmple_epi8_mask777 // CHECK: icmp sle <64 x i8> %{{.*}}, %{{.*}}778 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}779 return (__mmask64)_mm512_mask_cmple_epi8_mask(__u, __a, __b);780}781 782__mmask64 test_mm512_cmple_epu8_mask(__m512i __a, __m512i __b) {783 // CHECK-LABEL: test_mm512_cmple_epu8_mask784 // CHECK: icmp ule <64 x i8> %{{.*}}, %{{.*}}785 return (__mmask64)_mm512_cmple_epu8_mask(__a, __b);786}787 788__mmask64 test_mm512_mask_cmple_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {789 // CHECK-LABEL: test_mm512_mask_cmple_epu8_mask790 // CHECK: icmp ule <64 x i8> %{{.*}}, %{{.*}}791 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}792 return (__mmask64)_mm512_mask_cmple_epu8_mask(__u, __a, __b);793}794 795__mmask32 test_mm512_cmple_epi16_mask(__m512i __a, __m512i __b) {796 // CHECK-LABEL: test_mm512_cmple_epi16_mask797 // CHECK: icmp sle <32 x i16> %{{.*}}, %{{.*}}798 return (__mmask32)_mm512_cmple_epi16_mask(__a, __b);799}800 801__mmask32 test_mm512_mask_cmple_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {802 // CHECK-LABEL: test_mm512_mask_cmple_epi16_mask803 // CHECK: icmp sle <32 x i16> %{{.*}}, %{{.*}}804 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}805 return (__mmask32)_mm512_mask_cmple_epi16_mask(__u, __a, __b);806}807 808__mmask32 test_mm512_cmple_epu16_mask(__m512i __a, __m512i __b) {809 // CHECK-LABEL: test_mm512_cmple_epu16_mask810 // CHECK: icmp ule <32 x i16> %{{.*}}, %{{.*}}811 return (__mmask32)_mm512_cmple_epu16_mask(__a, __b);812}813 814__mmask32 test_mm512_mask_cmple_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {815 // CHECK-LABEL: test_mm512_mask_cmple_epu16_mask816 // CHECK: icmp ule <32 x i16> %{{.*}}, %{{.*}}817 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}818 return (__mmask32)_mm512_mask_cmple_epu16_mask(__u, __a, __b);819}820 821__mmask64 test_mm512_cmplt_epi8_mask(__m512i __a, __m512i __b) {822 // CHECK-LABEL: test_mm512_cmplt_epi8_mask823 // CHECK: icmp slt <64 x i8> %{{.*}}, %{{.*}}824 return (__mmask64)_mm512_cmplt_epi8_mask(__a, __b);825}826 827__mmask64 test_mm512_mask_cmplt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {828 // CHECK-LABEL: test_mm512_mask_cmplt_epi8_mask829 // CHECK: icmp slt <64 x i8> %{{.*}}, %{{.*}}830 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}831 return (__mmask64)_mm512_mask_cmplt_epi8_mask(__u, __a, __b);832}833 834__mmask64 test_mm512_cmplt_epu8_mask(__m512i __a, __m512i __b) {835 // CHECK-LABEL: test_mm512_cmplt_epu8_mask836 // CHECK: icmp ult <64 x i8> %{{.*}}, %{{.*}}837 return (__mmask64)_mm512_cmplt_epu8_mask(__a, __b);838}839 840__mmask64 test_mm512_mask_cmplt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {841 // CHECK-LABEL: test_mm512_mask_cmplt_epu8_mask842 // CHECK: icmp ult <64 x i8> %{{.*}}, %{{.*}}843 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}844 return (__mmask64)_mm512_mask_cmplt_epu8_mask(__u, __a, __b);845}846 847__mmask32 test_mm512_cmplt_epi16_mask(__m512i __a, __m512i __b) {848 // CHECK-LABEL: test_mm512_cmplt_epi16_mask849 // CHECK: icmp slt <32 x i16> %{{.*}}, %{{.*}}850 return (__mmask32)_mm512_cmplt_epi16_mask(__a, __b);851}852 853__mmask32 test_mm512_mask_cmplt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {854 // CHECK-LABEL: test_mm512_mask_cmplt_epi16_mask855 // CHECK: icmp slt <32 x i16> %{{.*}}, %{{.*}}856 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}857 return (__mmask32)_mm512_mask_cmplt_epi16_mask(__u, __a, __b);858}859 860__mmask32 test_mm512_cmplt_epu16_mask(__m512i __a, __m512i __b) {861 // CHECK-LABEL: test_mm512_cmplt_epu16_mask862 // CHECK: icmp ult <32 x i16> %{{.*}}, %{{.*}}863 return (__mmask32)_mm512_cmplt_epu16_mask(__a, __b);864}865 866__mmask32 test_mm512_mask_cmplt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {867 // CHECK-LABEL: test_mm512_mask_cmplt_epu16_mask868 // CHECK: icmp ult <32 x i16> %{{.*}}, %{{.*}}869 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}870 return (__mmask32)_mm512_mask_cmplt_epu16_mask(__u, __a, __b);871}872 873__mmask64 test_mm512_cmpneq_epi8_mask(__m512i __a, __m512i __b) {874 // CHECK-LABEL: test_mm512_cmpneq_epi8_mask875 // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}}876 return (__mmask64)_mm512_cmpneq_epi8_mask(__a, __b);877}878 879__mmask64 test_mm512_mask_cmpneq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {880 // CHECK-LABEL: test_mm512_mask_cmpneq_epi8_mask881 // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}}882 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}883 return (__mmask64)_mm512_mask_cmpneq_epi8_mask(__u, __a, __b);884}885 886__mmask64 test_mm512_cmpneq_epu8_mask(__m512i __a, __m512i __b) {887 // CHECK-LABEL: test_mm512_cmpneq_epu8_mask888 // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}}889 return (__mmask64)_mm512_cmpneq_epu8_mask(__a, __b);890}891 892__mmask64 test_mm512_mask_cmpneq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {893 // CHECK-LABEL: test_mm512_mask_cmpneq_epu8_mask894 // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}}895 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}896 return (__mmask64)_mm512_mask_cmpneq_epu8_mask(__u, __a, __b);897}898 899__mmask32 test_mm512_cmpneq_epi16_mask(__m512i __a, __m512i __b) {900 // CHECK-LABEL: test_mm512_cmpneq_epi16_mask901 // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}}902 return (__mmask32)_mm512_cmpneq_epi16_mask(__a, __b);903}904 905__mmask32 test_mm512_mask_cmpneq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {906 // CHECK-LABEL: test_mm512_mask_cmpneq_epi16_mask907 // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}}908 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}909 return (__mmask32)_mm512_mask_cmpneq_epi16_mask(__u, __a, __b);910}911 912__mmask32 test_mm512_cmpneq_epu16_mask(__m512i __a, __m512i __b) {913 // CHECK-LABEL: test_mm512_cmpneq_epu16_mask914 // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}}915 return (__mmask32)_mm512_cmpneq_epu16_mask(__a, __b);916}917 918__mmask32 test_mm512_mask_cmpneq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {919 // CHECK-LABEL: test_mm512_mask_cmpneq_epu16_mask920 // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}}921 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}922 return (__mmask32)_mm512_mask_cmpneq_epu16_mask(__u, __a, __b);923}924 925__mmask64 test_mm512_cmp_epi8_mask(__m512i __a, __m512i __b) {926 // CHECK-LABEL: test_mm512_cmp_epi8_mask927 // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}928 return (__mmask64)_mm512_cmp_epi8_mask(__a, __b, 0);929}930 931__mmask64 test_mm512_mask_cmp_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {932 // CHECK-LABEL: test_mm512_mask_cmp_epi8_mask933 // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}934 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}935 return (__mmask64)_mm512_mask_cmp_epi8_mask(__u, __a, __b, 0);936}937 938__mmask64 test_mm512_cmp_epu8_mask(__m512i __a, __m512i __b) {939 // CHECK-LABEL: test_mm512_cmp_epu8_mask940 // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}941 return (__mmask64)_mm512_cmp_epu8_mask(__a, __b, 0);942}943 944__mmask64 test_mm512_mask_cmp_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {945 // CHECK-LABEL: test_mm512_mask_cmp_epu8_mask946 // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}947 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}948 return (__mmask64)_mm512_mask_cmp_epu8_mask(__u, __a, __b, 0);949}950 951__mmask32 test_mm512_cmp_epi16_mask(__m512i __a, __m512i __b) {952 // CHECK-LABEL: test_mm512_cmp_epi16_mask953 // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}954 return (__mmask32)_mm512_cmp_epi16_mask(__a, __b, 0);955}956 957__mmask32 test_mm512_mask_cmp_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {958 // CHECK-LABEL: test_mm512_mask_cmp_epi16_mask959 // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}960 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}961 return (__mmask32)_mm512_mask_cmp_epi16_mask(__u, __a, __b, 0);962}963 964__mmask32 test_mm512_cmp_epu16_mask(__m512i __a, __m512i __b) {965 // CHECK-LABEL: test_mm512_cmp_epu16_mask966 // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}967 return (__mmask32)_mm512_cmp_epu16_mask(__a, __b, 0);968}969 970__mmask32 test_mm512_mask_cmp_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {971 // CHECK-LABEL: test_mm512_mask_cmp_epu16_mask972 // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}973 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}974 return (__mmask32)_mm512_mask_cmp_epu16_mask(__u, __a, __b, 0);975}976 977__m512i test_mm512_add_epi8 (__m512i __A, __m512i __B) {978 //CHECK-LABEL: test_mm512_add_epi8979 //CHECK: add <64 x i8>980 return _mm512_add_epi8(__A,__B);981}982 983TEST_CONSTEXPR(match_v64qi(_mm512_add_epi8((__m512i)(__v64qs){ -128, 127, 126, -125, -124, -123, 122, 121, -120, -119, 118, -117, 116, 115, -114, 113, -112, 111, -110, -109, -108, -107, -106, -105, 104, -103, -102, 101, 100, -99, 98, -97, -96, 95, 94, -93, 92, 91, 90, -89, 88, 87, -86, -85, -84, -83, -82, 81, -80, 79, -78, 77, -76, 75, 74, -73, -72, 71, -70, -69, -68, 67, -66, 65}, (__m512i)(__v64qs){ 1, -2, 3, -4, -5, -6, -7, -8, 9, 10, 11, 12, -13, -14, 15, 16, -17, -18, -19, 20, -21, -22, 23, 24, 25, -26, 27, -28, -29, -30, -31, -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, 63, -64}), -127, 125, -127, 127, 127, 127, 115, 113, -111, -109, -127, -105, 103, 101, -99, -127, 127, 93, 127, -89, 127, 127, -83, -81, -127, 127, -75, 73, 71, 127, 67, 127, 127, 61, 59, 127, 55, -127, 51, 127, -127, 45, 127, -41, 127, 127, -35, -127, 127, 29, -27, 25, 127, -127, -127, 127, 127, -127, -11, -9, -7, 5, -3, 1));984 985__m512i test_mm512_mask_add_epi8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {986 //CHECK-LABEL: test_mm512_mask_add_epi8987 //CHECK: add <64 x i8> %{{.*}}, %{{.*}}988 //CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}989 return _mm512_mask_add_epi8(__W, __U, __A, __B);990}991 992TEST_CONSTEXPR(match_v64qi(_mm512_mask_add_epi8((__m512i)(__v64qs){ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}, 0x2488D358BA7928B1, (__m512i)(__v64qs){ -128, 127, 126, -125, -124, -123, 122, 121, -120, -119, 118, -117, 116, 115, -114, 113, -112, 111, -110, -109, -108, -107, -106, -105, 104, -103, -102, 101, 100, -99, 98, -97, -96, 95, 94, -93, 92, 91, 90, -89, 88, 87, -86, -85, -84, -83, -82, 81, -80, 79, -78, 77, -76, 75, 74, -73, -72, 71, -70, -69, -68, 67, -66, 65}, (__m512i)(__v64qs){ 1, -2, 3, -4, -5, -6, -7, -8, 9, 10, 11, 12, -13, -14, 15, 16, -17, -18, -19, 20, -21, -22, 23, 24, 25, -26, 27, -28, -29, -30, -31, -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, 63, -64}), -127, 99, 99, 99, 127, 127, 99, 113, 99, 99, 99, -105, 99, 101, 99, 99, 127, 99, 99, -89, 127, 127, -83, 99, 99, 127, 99, 73, 71, 127, 99, 127, 99, 99, 99, 127, 55, 99, 51, 99, -127, 45, 99, 99, 127, 99, -35, -127, 99, 99, 99, 25, 99, 99, 99, 127, 99, 99, -11, 99, 99, 5, 99, 99));993 994__m512i test_mm512_maskz_add_epi8 (__mmask64 __U, __m512i __A, __m512i __B) {995 //CHECK-LABEL: test_mm512_maskz_add_epi8996 //CHECK: add <64 x i8> %{{.*}}, %{{.*}}997 //CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}998 return _mm512_maskz_add_epi8(__U, __A, __B);999}1000 1001TEST_CONSTEXPR(match_v64qi(_mm512_maskz_add_epi8(0x2488D358BA7928B1, (__m512i)(__v64qs){ -128, 127, 126, -125, -124, -123, 122, 121, -120, -119, 118, -117, 116, 115, -114, 113, -112, 111, -110, -109, -108, -107, -106, -105, 104, -103, -102, 101, 100, -99, 98, -97, -96, 95, 94, -93, 92, 91, 90, -89, 88, 87, -86, -85, -84, -83, -82, 81, -80, 79, -78, 77, -76, 75, 74, -73, -72, 71, -70, -69, -68, 67, -66, 65}, (__m512i)(__v64qs){ 1, -2, 3, -4, -5, -6, -7, -8, 9, 10, 11, 12, -13, -14, 15, 16, -17, -18, -19, 20, -21, -22, 23, 24, 25, -26, 27, -28, -29, -30, -31, -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, 63, -64}), -127, 0, 0, 0, 127, 127, 0, 113, 0, 0, 0, -105, 0, 101, 0, 0, 127, 0, 0, -89, 127, 127, -83, 0, 0, 127, 0, 73, 71, 127, 0, 127, 0, 0, 0, 127, 55, 0, 51, 0, -127, 45, 0, 0, 127, 0, -35, -127, 0, 0, 0, 25, 0, 0, 0, 127, 0, 0, -11, 0, 0, 5, 0, 0));1002 1003__m512i test_mm512_sub_epi8 (__m512i __A, __m512i __B) {1004 //CHECK-LABEL: test_mm512_sub_epi81005 //CHECK: sub <64 x i8>1006 return _mm512_sub_epi8(__A, __B);1007}1008 1009TEST_CONSTEXPR(match_v64qi(_mm512_sub_epi8((__m512i)(__v64qs){ -128, 127, 126, -125, -124, -123, 122, 121, -120, -119, 118, -117, 116, 115, -114, 113, -112, 111, -110, -109, -108, -107, -106, -105, 104, -103, -102, 101, 100, -99, 98, -97, -96, 95, 94, -93, 92, 91, 90, -89, 88, 87, -86, -85, -84, -83, -82, 81, -80, 79, -78, 77, -76, 75, 74, -73, -72, 71, -70, -69, -68, 67, -66, 65}, (__m512i)(__v64qs){ 1, -2, 3, -4, -5, -6, -7, -8, 9, 10, 11, 12, -13, -14, 15, 16, -17, -18, -19, 20, -21, -22, 23, 24, 25, -26, 27, -28, -29, -30, -31, -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, 63, -64}), 127, -127, 123, -121, -119, -117, -127, -127, 127, 127, 107, 127, -127, -127, 127, 97, -95, -127, -91, 127, -87, -85, 127, 127, 79, -77, 127, -127, -127, -69, -127, -65, -63, -127, -127, -57, -127, 53, -127, -49, 47, -127, -43, 127, -39, -37, 127, 33, -31, -127, 127, -127, -23, 21, 19, -17, -15, 13, 127, 127, 127, -127, 127, -127));1010 1011__m512i test_mm512_mask_sub_epi8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {1012 //CHECK-LABEL: test_mm512_mask_sub_epi81013 //CHECK: sub <64 x i8> %{{.*}}, %{{.*}}1014 //CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}1015 return _mm512_mask_sub_epi8(__W, __U, __A, __B);1016}1017 1018TEST_CONSTEXPR(match_v64qi(_mm512_mask_sub_epi8((__m512i)(__v64qs){ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}, 0x2488D358BA7928B1, (__m512i)(__v64qs){ -128, 127, 126, -125, -124, -123, 122, 121, -120, -119, 118, -117, 116, 115, -114, 113, -112, 111, -110, -109, -108, -107, -106, -105, 104, -103, -102, 101, 100, -99, 98, -97, -96, 95, 94, -93, 92, 91, 90, -89, 88, 87, -86, -85, -84, -83, -82, 81, -80, 79, -78, 77, -76, 75, 74, -73, -72, 71, -70, -69, -68, 67, -66, 65}, (__m512i)(__v64qs){ 1, -2, 3, -4, -5, -6, -7, -8, 9, 10, 11, 12, -13, -14, 15, 16, -17, -18, -19, 20, -21, -22, 23, 24, 25, -26, 27, -28, -29, -30, -31, -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, 63, -64}), 127, 99, 99, 99, -119, -117, 99, -127, 99, 99, 99, 127, 99, -127, 99, 99, -95, 99, 99, 127, -87, -85, 127, 99, 99, -77, 99, -127, -127, -69, 99, -65, 99, 99, 99, -57, -127, 99, -127, 99, 47, -127, 99, 99, -39, 99, 127, 33, 99, 99, 99, -127, 99, 99, 99, -17, 99, 99, 127, 99, 99, -127, 99, 99));1019 1020__m512i test_mm512_maskz_sub_epi8 (__mmask64 __U, __m512i __A, __m512i __B) {1021 //CHECK-LABEL: test_mm512_maskz_sub_epi81022 //CHECK: sub <64 x i8> %{{.*}}, %{{.*}}1023 //CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}1024 return _mm512_maskz_sub_epi8(__U, __A, __B);1025}1026 1027TEST_CONSTEXPR(match_v64qi(_mm512_maskz_sub_epi8(0x2488D358BA7928B1, (__m512i)(__v64qs){ -128, 127, 126, -125, -124, -123, 122, 121, -120, -119, 118, -117, 116, 115, -114, 113, -112, 111, -110, -109, -108, -107, -106, -105, 104, -103, -102, 101, 100, -99, 98, -97, -96, 95, 94, -93, 92, 91, 90, -89, 88, 87, -86, -85, -84, -83, -82, 81, -80, 79, -78, 77, -76, 75, 74, -73, -72, 71, -70, -69, -68, 67, -66, 65}, (__m512i)(__v64qs){ 1, -2, 3, -4, -5, -6, -7, -8, 9, 10, 11, 12, -13, -14, 15, 16, -17, -18, -19, 20, -21, -22, 23, 24, 25, -26, 27, -28, -29, -30, -31, -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, 63, -64}), 127, 0, 0, 0, -119, -117, 0, -127, 0, 0, 0, 127, 0, -127, 0, 0, -95, 0, 0, 127, -87, -85, 127, 0, 0, -77, 0, -127, -127, -69, 0, -65, 0, 0, 0, -57, -127, 0, -127, 0, 47, -127, 0, 0, -39, 0, 127, 33, 0, 0, 0, -127, 0, 0, 0, -17, 0, 0, 127, 0, 0, -127, 0, 0));1028 1029__m512i test_mm512_add_epi16 (__m512i __A, __m512i __B) {1030 //CHECK-LABEL: test_mm512_add_epi161031 //CHECK: add <32 x i16>1032 return _mm512_add_epi16(__A, __B);1033}1034 1035TEST_CONSTEXPR(match_v32hi(_mm512_add_epi16((__m512i)(__v32hi){ 64, 65, 66, 67, -68, 69, -70, 71, 72, -73, 74, -75, 76, 77, -78, -79, 80, 81, 82, -83, -84, -85, 86, 87, -88, 89, -90, 91, 92, -93, 94, 95}, (__m512i)(__v32hi){ 1, 2, -3, -4, 5, 6, -7, -8, -9, -10, -11, 12, 13, -14, 15, 16, -17, -18, 19, -20, -21, 22, -23, -24, 25, -26, -27, -28, -29, 30, -31, -32}), 65, 67, 63, 63, -63, 75, -77, 63, 63, -83, 63, -63, 89, 63, -63, -63, 63, 63, 101, -103, -105, -63, 63, 63, -63, 63, -117, 63, 63, -63, 63, 63));1036 1037__m512i test_mm512_mask_add_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {1038 //CHECK-LABEL: test_mm512_mask_add_epi161039 //CHECK: add <32 x i16> %{{.*}}, %{{.*}}1040 //CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}1041 return _mm512_mask_add_epi16(__W, __U, __A, __B);1042}1043 1044TEST_CONSTEXPR(match_v32hi(_mm512_mask_add_epi16((__m512i)(__v32hi){ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}, 0xB885E123, (__m512i)(__v32hi){ 64, 65, 66, 67, -68, 69, -70, 71, 72, -73, 74, -75, 76, 77, -78, -79, 80, 81, 82, -83, -84, -85, 86, 87, -88, 89, -90, 91, 92, -93, 94, 95}, (__m512i)(__v32hi){ 1, 2, -3, -4, 5, 6, -7, -8, -9, -10, -11, 12, 13, -14, 15, 16, -17, -18, 19, -20, -21, 22, -23, -24, 25, -26, -27, -28, -29, 30, -31, -32}), 65, 67, 99, 99, 99, 75, 99, 99, 63, 99, 99, 99, 99, 63, -63, -63, 63, 99, 101, 99, 99, 99, 99, 63, 99, 99, 99, 63, 63, -63, 99, 63));1045 1046__m512i test_mm512_maskz_add_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {1047 //CHECK-LABEL: test_mm512_maskz_add_epi161048 //CHECK: add <32 x i16> %{{.*}}, %{{.*}}1049 //CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}1050 return _mm512_maskz_add_epi16(__U, __A, __B);1051}1052 1053TEST_CONSTEXPR(match_v32hi(_mm512_maskz_add_epi16(0xB885E123, (__m512i)(__v32hi){ 64, 65, 66, 67, -68, 69, -70, 71, 72, -73, 74, -75, 76, 77, -78, -79, 80, 81, 82, -83, -84, -85, 86, 87, -88, 89, -90, 91, 92, -93, 94, 95}, (__m512i)(__v32hi){ 1, 2, -3, -4, 5, 6, -7, -8, -9, -10, -11, 12, 13, -14, 15, 16, -17, -18, 19, -20, -21, 22, -23, -24, 25, -26, -27, -28, -29, 30, -31, -32}), 65, 67, 0, 0, 0, 75, 0, 0, 63, 0, 0, 0, 0, 63, -63, -63, 63, 0, 101, 0, 0, 0, 0, 63, 0, 0, 0, 63, 63, -63, 0, 63));1054 1055__m512i test_mm512_sub_epi16 (__m512i __A, __m512i __B) {1056 //CHECK-LABEL: test_mm512_sub_epi161057 //CHECK: sub <32 x i16>1058 return _mm512_sub_epi16(__A, __B);1059}1060 1061TEST_CONSTEXPR(match_v32hi(_mm512_sub_epi16((__m512i)(__v32hi){ 64, 65, 66, 67, -68, 69, -70, 71, 72, -73, 74, -75, 76, 77, -78, -79, 80, 81, 82, -83, -84, -85, 86, 87, -88, 89, -90, 91, 92, -93, 94, 95}, (__m512i)(__v32hi){ 1, 2, -3, -4, 5, 6, -7, -8, -9, -10, -11, 12, 13, -14, 15, 16, -17, -18, 19, -20, -21, 22, -23, -24, 25, -26, -27, -28, -29, 30, -31, -32}), 63, 63, 69, 71, -73, 63, -63, 79, 81, -63, 85, -87, 63, 91, -93, -95, 97, 99, 63, -63, -63, -107, 109, 111, -113, 115, -63, 119, 121, -123, 125, 127));1062 1063__m512i test_mm512_mask_sub_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {1064 //CHECK-LABEL: test_mm512_mask_sub_epi161065 //CHECK: sub <32 x i16> %{{.*}}, %{{.*}}1066 //CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}1067 return _mm512_mask_sub_epi16(__W, __U, __A, __B);1068}1069 1070TEST_CONSTEXPR(match_v32hi(_mm512_mask_sub_epi16((__m512i)(__v32hi){ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}, 0xB885E123, (__m512i)(__v32hi){ 64, 65, 66, 67, -68, 69, -70, 71, 72, -73, 74, -75, 76, 77, -78, -79, 80, 81, 82, -83, -84, -85, 86, 87, -88, 89, -90, 91, 92, -93, 94, 95}, (__m512i)(__v32hi){ 1, 2, -3, -4, 5, 6, -7, -8, -9, -10, -11, 12, 13, -14, 15, 16, -17, -18, 19, -20, -21, 22, -23, -24, 25, -26, -27, -28, -29, 30, -31, -32}), 63, 63, 99, 99, 99, 63, 99, 99, 81, 99, 99, 99, 99, 91, -93, -95, 97, 99, 63, 99, 99, 99, 99, 111, 99, 99, 99, 119, 121, -123, 99, 127));1071 1072__m512i test_mm512_maskz_sub_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {1073 //CHECK-LABEL: test_mm512_maskz_sub_epi161074 //CHECK: sub <32 x i16> %{{.*}}, %{{.*}}1075 //CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}1076 return _mm512_maskz_sub_epi16(__U, __A, __B);1077}1078 1079TEST_CONSTEXPR(match_v32hi(_mm512_maskz_sub_epi16(0xB885E123, (__m512i)(__v32hi){ 64, 65, 66, 67, -68, 69, -70, 71, 72, -73, 74, -75, 76, 77, -78, -79, 80, 81, 82, -83, -84, -85, 86, 87, -88, 89, -90, 91, 92, -93, 94, 95}, (__m512i)(__v32hi){ 1, 2, -3, -4, 5, 6, -7, -8, -9, -10, -11, 12, 13, -14, 15, 16, -17, -18, 19, -20, -21, 22, -23, -24, 25, -26, -27, -28, -29, 30, -31, -32}), 63, 63, 0, 0, 0, 63, 0, 0, 81, 0, 0, 0, 0, 91, -93, -95, 97, 0, 63, 0, 0, 0, 0, 111, 0, 0, 0, 119, 121, -123, 0, 127));1080 1081__m512i test_mm512_mullo_epi16 (__m512i __A, __m512i __B) {1082 //CHECK-LABEL: test_mm512_mullo_epi161083 //CHECK: mul <32 x i16>1084 return _mm512_mullo_epi16(__A, __B);1085}1086TEST_CONSTEXPR(match_v32hi(_mm512_mullo_epi16((__m512i)(__v32hi){+1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16, +17, -18, +19, -20, +21, -22, +23, -24, +25, -26, +27, -28, +29, -30, +31, -32}, (__m512i)(__v32hi){-64, -62, +60, +58, -56, -54, +52, +50, -48, -46, +44, +42, -40, -38, +36, +34, -32, -30, +28, +26, -24, -22, +20, +18, -16, -14, +12, +10, -8, +6, -4, +2}), -64, 124, 180, -232, -280, 324, 364, -400, -432, 460, 484, -504, -520, 532, 540, -544, -544, 540, 532, -520, -504, 484, 460, -432, -400, 364, 324, -280, -232, -180, -124, -64));1087 1088__m512i test_mm512_mask_mullo_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {1089 //CHECK-LABEL: test_mm512_mask_mullo_epi161090 //CHECK: mul <32 x i16> %{{.*}}, %{{.*}}1091 //CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}1092 return _mm512_mask_mullo_epi16(__W, __U, __A, __B);1093}1094TEST_CONSTEXPR(match_v32hi(_mm512_mask_mullo_epi16((__m512i)(__v32hi){-1, +2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16, -17, +18, -19, +20, -21, +22, -23, +24, -25, +26, -27, +28, -29, +30, -31, +32}, 0x0000FFFF, (__m512i)(__v32hi){+2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16, -17, +18, -19, +20, -21, +22, -23, +24, -25, +26, -27, +28, -29, +30, -31, +32, -33}, (__m512i)(__v32hi){-3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16, -17, +18, -19, +20, -21, +22, -23, +24, -25, +26, -27, +28, -29, +30, -31, +32, -33, +34}), -6, -12, -20, -30, -42, -56, -72, -90, -110, -132, -156, -182, -210, -240, -272, -306, -17, +18, -19, +20, -21, +22, -23, +24, -25, +26, -27, +28, -29, +30, -31, +32));1095 1096__m512i test_mm512_maskz_mullo_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {1097 //CHECK-LABEL: test_mm512_maskz_mullo_epi161098 //CHECK: mul <32 x i16> %{{.*}}, %{{.*}}1099 //CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}1100 return _mm512_maskz_mullo_epi16(__U, __A, __B);1101}1102TEST_CONSTEXPR(match_v32hi(_mm512_maskz_mullo_epi16(0x0000FFFF, (__m512i)(__v32hi){+2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16, -17, +18, -19, +20, -21, +22, -23, +24, -25, +26, -27, +28, -29, +30, -31, +32, -33}, (__m512i)(__v32hi){-3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16, -17, +18, -19, +20, -21, +22, -23, +24, -25, +26, -27, +28, -29, +30, -31, +32, -33, +34}), -6, -12, -20, -30, -42, -56, -72, -90, -110, -132, -156, -182, -210, -240, -272, -306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));1103 1104__m512i test_mm512_mask_blend_epi8(__mmask64 __U, __m512i __A, __m512i __W) {1105 // CHECK-LABEL: test_mm512_mask_blend_epi81106 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}1107 return _mm512_mask_blend_epi8(__U,__A,__W); 1108}1109TEST_CONSTEXPR(match_v64qi(1110 _mm512_mask_blend_epi8(1111 (__mmask64) 0x00000001,1112 (__m512i)(__v64qi) {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},1113 (__m512i)(__v64qi){ 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}1114 ),1115 10, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 21116));1117__m512i test_mm512_mask_blend_epi16(__mmask32 __U, __m512i __A, __m512i __W) {1118 // CHECK-LABEL: test_mm512_mask_blend_epi161119 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}1120 return _mm512_mask_blend_epi16(__U,__A,__W); 1121}1122TEST_CONSTEXPR(match_v32hi(1123 _mm512_mask_blend_epi16(1124 (__mmask32) 0x00000001,1125 (__m512i)(__v32hi) {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},1126 (__m512i)(__v32hi){ 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}1127 ),1128 10, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 21129));1130 1131__m512i test_mm512_mask_blend_epi32(__mmask16 __U, __m512i __A, __m512i __W) {1132 // CHECK-LABEL: test_mm512_mask_blend_epi321133 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}1134 return _mm512_mask_blend_epi32(__U, __A, __W);1135}1136TEST_CONSTEXPR(match_v16si(1137 _mm512_mask_blend_epi32(1138 (__mmask16) 0x0001,1139 (__m512i)(__v16si) {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},1140 (__m512i)(__v16si){ 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}1141 ),1142 10, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 21143));1144 1145__m512i test_mm512_mask_blend_epi64(__mmask8 __U, __m512i __A, __m512i __W) {1146 // CHECK-LABEL: test_mm512_mask_blend_epi641147 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}1148 return _mm512_mask_blend_epi64(__U, __A, __W);1149}1150 1151TEST_CONSTEXPR(match_v8di(1152 _mm512_mask_blend_epi64(1153 (__mmask8)0x01,1154 (__m512i)(__v8di){2, 2, 2, 2, 2, 2, 2, 2},1155 (__m512i)(__v8di){10, 11, 12, 13, 14, 15, 16, 17}1156 ),1157 10, 2, 2, 2, 2, 2, 2, 21158));1159 1160__m512i test_mm512_abs_epi8(__m512i __A) {1161 // CHECK-LABEL: test_mm512_abs_epi81162 // CHECK: [[ABS:%.*]] = call <64 x i8> @llvm.abs.v64i8(<64 x i8> %{{.*}}, i1 false)1163 return _mm512_abs_epi8(__A); 1164}1165TEST_CONSTEXPR(match_v64qi(_mm512_abs_epi8((__m512i)(__v64qs){0, +1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16, +17, -18, +19, -20, +21, -22, +23, -24, +25, -26, +27, -28, +29, -30, +31, -32, +33, -34, +35, -36, +37, -38, +39, -40, +41, -42, +43, -44, +45, -46, +47, +100, +50, -100, +20, +80, -50, +120, -20, -100, -50, +100, -20, -80, +50, -120, +20}), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 100, 50, 100, 20, 80, 50, 120, 20, 100, 50, 100, 20, 80, 50, 120, 20));1166 1167__m512i test_mm512_mask_abs_epi8(__m512i __W, __mmask64 __U, __m512i __A) {1168 // CHECK-LABEL: test_mm512_mask_abs_epi81169 // CHECK: [[ABS:%.*]] = call <64 x i8> @llvm.abs.v64i8(<64 x i8> %{{.*}}, i1 false)1170 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> [[ABS]], <64 x i8> %{{.*}}1171 return _mm512_mask_abs_epi8(__W,__U,__A); 1172}1173TEST_CONSTEXPR(match_v64qi(_mm512_mask_abs_epi8((__m512i)(__v64qi){99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}, (__mmask64)0x000000000000001, (__m512i)(__v64qi){(char)-1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}), 1, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99));1174 1175__m512i test_mm512_maskz_abs_epi8(__mmask64 __U, __m512i __A) {1176 // CHECK-LABEL: test_mm512_maskz_abs_epi81177 // CHECK: [[ABS:%.*]] = call <64 x i8> @llvm.abs.v64i8(<64 x i8> %{{.*}}, i1 false)1178 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> [[ABS]], <64 x i8> %{{.*}}1179 return _mm512_maskz_abs_epi8(__U,__A); 1180}1181TEST_CONSTEXPR(match_v64qi(_mm512_maskz_abs_epi8((__mmask64)0x000000000000001, (__m512i)(__v64qi){(char)-1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}), 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));1182 1183__m512i test_mm512_abs_epi16(__m512i __A) {1184 // CHECK-LABEL: test_mm512_abs_epi161185 // CHECK: [[ABS:%.*]] = call <32 x i16> @llvm.abs.v32i16(<32 x i16> %{{.*}}, i1 false)1186 return _mm512_abs_epi16(__A); 1187}1188TEST_CONSTEXPR(match_v32hi(_mm512_abs_epi16((__m512i)(__v32hi){0, +1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16, +17, -18, +19, -20, +21, -22, +23, -24, +25, -26, +27, +32000, -32000, +32000, -32000}), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 32000, 32000, 32000, 32000));1189 1190__m512i test_mm512_mask_abs_epi16(__m512i __W, __mmask32 __U, __m512i __A) {1191 // CHECK-LABEL: test_mm512_mask_abs_epi161192 // CHECK: [[ABS:%.*]] = call <32 x i16> @llvm.abs.v32i16(<32 x i16> %{{.*}}, i1 false)1193 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> [[ABS]], <32 x i16> %{{.*}}1194 return _mm512_mask_abs_epi16(__W,__U,__A); 1195}1196TEST_CONSTEXPR(match_v32hi(_mm512_mask_abs_epi16((__m512i)(__v32hi){99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}, (__mmask32)0x00000001, (__m512i)(__v32hi){-1000, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5}), 1000, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99));1197 1198__m512i test_mm512_maskz_abs_epi16(__mmask32 __U, __m512i __A) {1199 // CHECK-LABEL: test_mm512_maskz_abs_epi161200 // CHECK: [[ABS:%.*]] = call <32 x i16> @llvm.abs.v32i16(<32 x i16> %{{.*}}, i1 false)1201 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> [[ABS]], <32 x i16> %{{.*}}1202 return _mm512_maskz_abs_epi16(__U,__A); 1203}1204TEST_CONSTEXPR(match_v32hi(_mm512_maskz_abs_epi16((__mmask32)0x00000001, (__m512i)(__v32hi){-1000, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5}), 1000, 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));1205 1206__m512i test_mm512_packs_epi32(__m512i __A, __m512i __B) {1207 // CHECK-LABEL: test_mm512_packs_epi321208 // CHECK: @llvm.x86.avx512.packssdw.5121209 return _mm512_packs_epi32(__A,__B); 1210}1211TEST_CONSTEXPR(match_v32hi(_mm512_packs_epi32((__m512i)(__v16si){40000, -50000, 32767, -32768, 70000, -70000, 42, -42, 0, 1, -1, 30000, 32768, -32769, 65535, -65536}, (__m512i)(__v16si){0, 1, -1, 65536, -1000000, 1000000, 32768, -32769, 123456, -123456, 32767, -32768, 22222, -22222, 40000, -40000}), 32767, -32768, 32767, -32768, 0, 1, -1, 32767, 32767, -32768, 42, -42, -32768, 32767, 32767, -32768, 0, 1, -1, 30000, 32767, -32768, 32767, -32768, 32767, -32768, 32767, -32768, 22222, -22222, 32767, -32768));1212__m512i test_mm512_maskz_packs_epi32(__mmask32 __M, __m512i __A, __m512i __B) {1213 // CHECK-LABEL: test_mm512_maskz_packs_epi321214 // CHECK: @llvm.x86.avx512.packssdw.5121215 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}1216 return _mm512_maskz_packs_epi32(__M,__A,__B); 1217}1218TEST_CONSTEXPR(match_v32hi(_mm512_maskz_packs_epi32((__mmask32)0xAAAAAAAA,(__m512i)(__v16si){40000,-50000,32767,-32768,70000,-70000,42,-42,0,1,-1,30000,32768,-32769,65535,-65536},(__m512i)(__v16si){0,1,-1,65536,-1000000,1000000,32768,-32769,123456,-123456,32767,-32768,22222,-22222,40000,-40000}),0,-32768,0,-32768,0,1,0,32767,0,-32768,0,-42,0,32767,0,-32768,0,1,0,30000,0,-32768,0,-32768,0,-32768,0,-32768,0,-22222,0,-32768));1219 1220__m512i test_mm512_mask_packs_epi32(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {1221 // CHECK-LABEL: test_mm512_mask_packs_epi321222 // CHECK: @llvm.x86.avx512.packssdw.5121223 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}1224 return _mm512_mask_packs_epi32(__W,__M,__A,__B); 1225}1226TEST_CONSTEXPR(match_v32hi(_mm512_mask_packs_epi32((__m512i)(__v32hi){1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32},(__mmask32)0xAAAAAAAA,(__m512i)(__v16si){40000,-50000,32767,-32768,70000,-70000,42,-42,0,1,-1,30000,32768,-32769,65535,-65536},(__m512i)(__v16si){0,1,-1,65536,-1000000,1000000,32768,-32769,123456,-123456,32767,-32768,22222,-22222,40000,-40000}),1,-32768,3,-32768,5,1,7,32767,9,-32768,11,-42,13,32767,15,-32768,17,1,19,30000,21,-32768,23,-32768,25,-32768,27,-32768,29,-22222,31,-32768));1227 1228__m512i test_mm512_packs_epi16(__m512i __A, __m512i __B) {1229 // CHECK-LABEL: test_mm512_packs_epi161230 // CHECK: @llvm.x86.avx512.packsswb.5121231 return _mm512_packs_epi16(__A,__B); 1232}1233TEST_CONSTEXPR(match_v64qi(_mm512_packs_epi16((__m512i)(__v32hi){130, -200, 127, -128, 300, -1000, 42, -42, 32767, -32767, 127, -128, 30000, -30000, 90, -90, 130, -200, 0, -1, 126, -127, 128, -129, 500, -500, 7, -7, 255, -255, 127, -128}, (__m512i)(__v32hi){0, 1, -1, 255, -129, 128, 20000, -32768, 5, -5, 100, -100, 127, -128, 512, -512, 1, 2, -2, 300, -300, 127, -128, 42, 0, 1, -1, 127, -128, 90, -90, -32768}), 127, -128, 127, -128, 127, -128, 42, -42, 0, 1, -1, 127, -128, 127, 127, -128, 127, -128, 127, -128, 127, -128, 90, -90, 5, -5, 100, -100, 127, -128, 127, -128, 127, -128, 0, -1, 126, -127, 127, -128, 1, 2, -2, 127, -128, 127, -128, 42, 127, -128, 7, -7, 127, -128, 127, -128, 0, 1, -1, 127, -128, 90, -90, -128));1234__m512i test_mm512_mask_packs_epi16(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {1235 // CHECK-LABEL: test_mm512_mask_packs_epi161236 // CHECK: @llvm.x86.avx512.packsswb.5121237 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}1238 return _mm512_mask_packs_epi16(__W,__M,__A,__B); 1239}1240TEST_CONSTEXPR(match_v64qi(_mm512_mask_packs_epi16((__m512i)(__v64qs){1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,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,63,64},(__mmask64)0xAAAAAAAAAAAAAAAA,(__m512i)(__v32hi){130,-200,127,-128,300,-1000,42,-42,32767,-32767,127,-128,30000,-30000,90,-90,130,-200,0,-1,126,-127,128,-129,500,-500,7,-7,255,-255,127,-128},(__m512i)(__v32hi){0,1,-1,255,-129,128,20000,-32768,5,-5,100,-100,127,-128,512,-512,1,2,-2,300,-300,127,-128,42,0,1,-1,127,-128,90,-90,-32768}),1,-128,3,-128,5,-128,7,-42,9,1,11,127,13,127,15,-128,17,-128,19,-128,21,-128,23,-90,25,-5,27,-100,29,-128,31,-128,33,-128,35,-1,37,-127,39,-128,41,2,43,127,45,127,47,42,49,-128,51,-7,53,-128,55,-128,57,1,59,127,61,90,63,-128));1241 1242__m512i test_mm512_maskz_packs_epi16(__mmask64 __M, __m512i __A, __m512i __B) {1243 // CHECK-LABEL: test_mm512_maskz_packs_epi161244 // CHECK: @llvm.x86.avx512.packsswb.5121245 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}1246 return _mm512_maskz_packs_epi16(__M,__A,__B); 1247}1248TEST_CONSTEXPR(match_v64qi(_mm512_maskz_packs_epi16((__mmask64)0xAAAAAAAAAAAAAAAA,(__m512i)(__v32hi){130,-200,127,-128,300,-1000,42,-42,32767,-32767,127,-128,30000,-30000,90,-90,130,-200,0,-1,126,-127,128,-129,500,-500,7,-7,255,-255,127,-128},(__m512i)(__v32hi){0,1,-1,255,-129,128,20000,-32768,5,-5,100,-100,127,-128,512,-512,1,2,-2,300,-300,127,-128,42,0,1,-1,127,-128,90,-90,-32768}),0,-128,0,-128,0,-128,0,-42,0,1,0,127,0,127,0,-128,0,-128,0,-128,0,-128,0,-90,0,-5,0,-100,0,-128,0,-128,0,-128,0,-1,0,-127,0,-128,0,2,0,127,0,127,0,42,0,-128,0,-7,0,-128,0,-128,0,1,0,127,0,90,0,-128));1249 1250__m512i test_mm512_packus_epi32(__m512i __A, __m512i __B) {1251 // CHECK-LABEL: test_mm512_packus_epi321252 // CHECK: @llvm.x86.avx512.packusdw.5121253 return _mm512_packus_epi32(__A,__B); 1254}1255TEST_CONSTEXPR(match_v32hi(_mm512_packus_epi32((__m512i)(__v16si){40000, -50000, 32767, -32768, 70000, -70000, 42, -42, 0, 1, -1, 65535, 32768, -32769, 22222, -22222}, (__m512i)(__v16si){0, 1, -1, 65536, -1000000, 1000000, 32768, -32769, 123456, -123456, 32767, -32768, 40000, -40000, 65535, 0}), -25536, 0, 32767, 0, 0, 1, 0, -1, -1, 0, 42, 0, 0, -1, -32768, 0, 0, 1, 0, -1, -1, 0, 32767, 0, -32768, 0, 22222, 0, -25536, 0, -1, 0));1256 1257__m512i test_mm512_maskz_packus_epi32(__mmask32 __M, __m512i __A, __m512i __B) {1258 // CHECK-LABEL: test_mm512_maskz_packus_epi321259 // CHECK: @llvm.x86.avx512.packusdw.5121260 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}1261 return _mm512_maskz_packus_epi32(__M,__A,__B); 1262}1263TEST_CONSTEXPR(match_v32hi(_mm512_maskz_packus_epi32((__mmask32)0xAAAAAAAA,(__m512i)(__v16si){40000,-50000,32767,-32768,70000,-70000,42,-42,0,1,-1,65535,32768,-32769,22222,-22222},(__m512i)(__v16si){0,1,-1,65536,-1000000,1000000,32768,-32769,123456,-123456,32767,-32768,40000,-40000,65535,0}),0,0,0,0,0,1,0,-1,0,0,0,0,0,-1,0,0,0,1,0,-1,0,0,0,0,0,0,0,0,0,0,0,0));1264 1265__m512i test_mm512_mask_packus_epi32(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {1266 // CHECK-LABEL: test_mm512_mask_packus_epi321267 // CHECK: @llvm.x86.avx512.packusdw.5121268 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}1269 return _mm512_mask_packus_epi32(__W,__M,__A,__B); 1270}1271TEST_CONSTEXPR(match_v32hi(_mm512_mask_packus_epi32((__m512i)(__v32hi){1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32},(__mmask32)0xAAAAAAAA,(__m512i)(__v16si){40000,-50000,32767,-32768,70000,-70000,42,-42,0,1,-1,65535,32768,-32769,22222,-22222},(__m512i)(__v16si){0,1,-1,65536,-1000000,1000000,32768,-32769,123456,-123456,32767,-32768,40000,-40000,65535,0}),1,0,3,0,5,1,7,-1,9,0,11,0,13,-1,15,0,17,1,19,-1,21,0,23,0,25,0,27,0,29,0,31,0));1272 1273__m512i test_mm512_packus_epi16(__m512i __A, __m512i __B) {1274 // CHECK-LABEL: test_mm512_packus_epi161275 // CHECK: @llvm.x86.avx512.packuswb.5121276 return _mm512_packus_epi16(__A,__B); 1277}1278TEST_CONSTEXPR(match_v64qi(_mm512_packus_epi16((__m512i)(__v32hi){-1, 0, 1, 127, 128, 255, 256, -200, 300, 42, -42, 500, 20000, -32768, 129, -129, -1, 0, 1, 127, 128, 255, 256, -200, 300, 42, -42, 500, 20000, -32768, 129, -129}, (__m512i)(__v32hi){0, 1, -1, 255, -129, 128, 20000, -32768, 32767, -32767, 127, -128, 30000, -30000, 90, -90, 0, 1, -1, 255, -129, 128, 20000, -32768, 32767, -32767, 127, -128, 30000, -30000, 90, -90}), 0, 0, 1, 127, -128, -1, -1, 0, 0, 1, 0, -1, 0, -128, -1, 0, -1, 42, 0, -1, -1, 0, -127, 0, -1, 0, 127, 0, -1, 0, 90, 0, 0, 0, 1, 127, -128, -1, -1, 0, 0, 1, 0, -1, 0, -128, -1, 0, -1, 42, 0, -1, -1, 0, -127, 0, -1, 0, 127, 0, -1, 0, 90, 0));1279 1280__m512i test_mm512_mask_packus_epi16(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {1281 // CHECK-LABEL: test_mm512_mask_packus_epi161282 // CHECK: @llvm.x86.avx512.packuswb.5121283 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}1284 return _mm512_mask_packus_epi16(__W,__M,__A,__B); 1285}1286TEST_CONSTEXPR(match_v64qi(_mm512_mask_packus_epi16((__m512i)(__v64qu){1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,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,63,64},(__mmask64)0xAAAAAAAAAAAAAAAA,(__m512i)(__v32hi){-1,0,1,127,128,255,256,-200,300,42,-42,500,20000,-32768,129,-129,-1,0,1,127,128,255,256,-200,300,42,-42,500,20000,-32768,129,-129},(__m512i)(__v32hi){0,1,-1,255,-129,128,20000,-32768,32767,-32767,127,-128,30000,-30000,90,-90,0,1,-1,255,-129,128,20000,-32768,32767,-32767,127,-128,30000,-30000,90,-90}),1,0,3,127,5,-1,7,0,9,1,11,-1,13,-128,15,0,17,42,19,-1,21,0,23,0,25,0,27,0,29,0,31,0,33,0,35,127,37,-1,39,0,41,1,43,-1,45,-128,47,0,49,42,51,-1,53,0,55,0,57,0,59,0,61,0,63,0));1287 1288__m512i test_mm512_maskz_packus_epi16(__mmask64 __M, __m512i __A, __m512i __B) {1289 // CHECK-LABEL: test_mm512_maskz_packus_epi161290 // CHECK: @llvm.x86.avx512.packuswb.5121291 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}1292 return _mm512_maskz_packus_epi16(__M,__A,__B); 1293}1294TEST_CONSTEXPR(match_v64qi(_mm512_maskz_packus_epi16((__mmask64)0xAAAAAAAAAAAAAAAA,(__m512i)(__v32hi){-1,0,1,127,128,255,256,-200,300,42,-42,500,20000,-32768,129,-129,-1,0,1,127,128,255,256,-200,300,42,-42,500,20000,-32768,129,-129},(__m512i)(__v32hi){0,1,-1,255,-129,128,20000,-32768,32767,-32767,127,-128,30000,-30000,90,-90,0,1,-1,255,-129,128,20000,-32768,32767,-32767,127,-128,30000,-30000,90,-90}),0,0,0,127,0,-1,0,0,0,1,0,-1,0,-128,0,0,0,42,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,-1,0,0,0,1,0,-1,0,-128,0,0,0,42,0,-1,0,0,0,0,0,0,0,0,0,0,0,0));1295 1296__m512i test_mm512_adds_epi8(__m512i __A, __m512i __B) {1297 // CHECK-LABEL: test_mm512_adds_epi81298 // CHECK: @llvm.sadd.sat.v64i81299 return _mm512_adds_epi8(__A,__B); 1300}1301TEST_CONSTEXPR(match_v64qi(_mm512_adds_epi8((__m512i)(__v64qs){0, +1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16, +17, -18, +19, -20, +21, -22, +23, -24, +25, -26, +27, -28, +29, -30, +31, -32, +33, -34, +35, -36, +37, -38, +39, -40, +41, -42, +43, -44, +45, -46, +47, +100, +50, -100, +20, +80, -50, +120, -20, -100, -50, +100, -20, -80, +50, -120, +20}, (__m512i)(__v64qs){0, +1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16, +17, -18, +19, -20, +21, -22, +23, -24, +25, -26, +27, -28, +29, -30, +31, -32, +33, -34, +35, -36, +37, -38, +39, -40, +41, -42, +43, -44, +45, -46, +47, +50, +80, -50, +110, +60, -30, +20, -10, +50, +80, -50, +110, +60, -30, +20, -10}), 0, +2, -4, +6, -8, +10, -12, +14, -16, +18, -20, +22, -24, +26, -28, +30, -32, +34, -36, +38, -40, +42, -44, +46, -48, +50, -52, +54, -56, +58, -60, +62, -64, +66, -68, +70, -72, +74, -76, +78, -80, +82, -84, +86, -88, +90, -92, +94, +127, +127, -128, +127, +127, -80, +127, -30, -50, +30, +50, +90, -20, +20, -100, +10));1302 1303__m512i test_mm512_mask_adds_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {1304 // CHECK-LABEL: test_mm512_mask_adds_epi81305 // CHECK: @llvm.sadd.sat.v64i81306 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}1307 return _mm512_mask_adds_epi8(__W,__U,__A,__B); 1308}1309TEST_CONSTEXPR(match_v64qi(_mm512_mask_adds_epi8((__m512i)(__v64qs){1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,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,63,64},(__mmask64)0xAAAAAAAAAAAAAAAA,(__m512i)(__v64qs){0,+1,-2,+3,-4,+5,-6,+7,-8,+9,-10,+11,-12,+13,-14,+15,-16,+17,-18,+19,-20,+21,-22,+23,-24,+25,-26,+27,-28,+29,-30,+31,-32,+33,-34,+35,-36,+37,-38,+39,-40,+41,-42,+43,-44,+45,-46,+47,+100,+50,-100,+20,+80,-50,+120,-20,-100,-50,+100,-20,-80,+50,-120,+20},(__m512i)(__v64qs){0,+1,-2,+3,-4,+5,-6,+7,-8,+9,-10,+11,-12,+13,-14,+15,-16,+17,-18,+19,-20,+21,-22,+23,-24,+25,-26,+27,-28,+29,-30,+31,-32,+33,-34,+35,-36,+37,-38,+39,-40,+41,-42,+43,-44,+45,-46,+47,+50,+80,-50,+110,+60,-30,+20,-10,+50,+80,-50,+110,+60,-30,+20,-10}),1,+2,3,+6,5,+10,7,+14,9,+18,11,+22,13,+26,15,+30,17,+34,19,+38,21,+42,23,+46,25,+50,27,+54,29,+58,31,+62,33,+66,35,+70,37,+74,39,+78,41,+82,43,+86,45,+90,47,+94,49,+127,51,+127,53,-80,+55,-30,57,+30,59,+90,61,+20,63,+10));1310 1311__m512i test_mm512_maskz_adds_epi8(__mmask64 __U, __m512i __A, __m512i __B) {1312 // CHECK-LABEL: test_mm512_maskz_adds_epi81313 // CHECK: @llvm.sadd.sat.v64i81314 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}1315 return _mm512_maskz_adds_epi8(__U,__A,__B); 1316}1317TEST_CONSTEXPR(match_v64qi(_mm512_maskz_adds_epi8((__mmask64)0xAAAAAAAAAAAAAAAA,(__m512i)(__v64qs){0,+1,-2,+3,-4,+5,-6,+7,-8,+9,-10,+11,-12,+13,-14,+15,-16,+17,-18,+19,-20,+21,-22,+23,-24,+25,-26,+27,-28,+29,-30,+31,-32,+33,-34,+35,-36,+37,-38,+39,-40,+41,-42,+43,-44,+45,-46,+47,+100,+50,-100,+20,+80,-50,+120,-20,-100,-50,+100,-20,-80,+50,-120,+20},(__m512i)(__v64qs){0,+1,-2,+3,-4,+5,-6,+7,-8,+9,-10,+11,-12,+13,-14,+15,-16,+17,-18,+19,-20,+21,-22,+23,-24,+25,-26,+27,-28,+29,-30,+31,-32,+33,-34,+35,-36,+37,-38,+39,-40,+41,-42,+43,-44,+45,-46,+47,+50,+80,-50,+110,+60,-30,+20,-10,+50,+80,-50,+110,+60,-30,+20,-10}),0,+2,0,+6,0,+10,0,+14,0,+18,0,+22,0,+26,0,+30,0,+34,0,+38,0,+42,0,+46,0,+50,0,+54,0,+58,0,+62,0,+66,0,+70,0,+74,0,+78,0,+82,0,+86,0,+90,0,+94,0,+127,0,+127,0,-80,0,-30,0,+30,0,+90,0,+20,0,+10));1318 1319__m512i test_mm512_adds_epi16(__m512i __A, __m512i __B) {1320 // CHECK-LABEL: test_mm512_adds_epi161321 // CHECK: @llvm.sadd.sat.v32i161322 return _mm512_adds_epi16(__A,__B); 1323}1324TEST_CONSTEXPR(match_v32hi(_mm512_adds_epi16((__m512i)(__v32hi){0,+1,-2,+3,-4,+5,-6,+7,-8,+9,-10,+11,-12,+13,-14,+15,-16,+17,-18,+19,-20,+21,-22,+23,-24,+25,-26,+27,+32000,-32000,+32000,-32000},(__m512i)(__v32hi){0,+1,-2,+3,-4,+5,-6,+7,-8,+9,-10,+11,-12,+13,-14,+15,-16,+17,-18,+19,-20,+21,-22,+23,-24,+25,-26,+27,+800,-800,-800,+800}),0,+2,-4,+6,-8,+10,-12,+14,-16,+18,-20,+22,-24,+26,-28,+30,-32,+34,-36,+38,-40,+42,-44,+46,-48,+50,-52,+54,+32767,-32768,+31200,-31200));1325 1326__m512i test_mm512_mask_adds_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {1327 // CHECK-LABEL: test_mm512_mask_adds_epi161328 // CHECK: @llvm.sadd.sat.v32i161329 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}1330 return _mm512_mask_adds_epi16(__W,__U,__A,__B); 1331}1332TEST_CONSTEXPR(match_v32hi(_mm512_mask_adds_epi16((__m512i)(__v32hi){1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32},(__mmask32)0xAAAAAAAAu,(__m512i)(__v32hi){0,+1,-2,+3,-4,+5,-6,+7,-8,+9,-10,+11,-12,+13,-14,+15,-16,+17,-18,+19,-20,+21,-22,+23,-24,+25,-26,+27,+32000,-32000,+32000,+32000},(__m512i)(__v32hi){0,+1,-2,+3,-4,+5,-6,+7,-8,+9,-10,+11,-12,+13,-14,+15,-16,+17,-18,+19,-20,+21,-22,+23,-24,+25,-26,+27,+800,-800,-800,+800}),1,+2,3,+6,5,+10,7,+14,9,+18,11,+22,13,+26,15,+30,17,+34,19,+38,21,+42,23,+46,25,+50,27,+54,29,-32768,31,+32767));1333 1334__m512i test_mm512_maskz_adds_epi16(__mmask32 __U, __m512i __A, __m512i __B) {1335 // CHECK-LABEL: test_mm512_maskz_adds_epi161336 // CHECK: @llvm.sadd.sat.v32i161337 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}1338return _mm512_maskz_adds_epi16(__U,__A,__B); 1339}1340TEST_CONSTEXPR(match_v32hi(_mm512_maskz_adds_epi16((__mmask32)0xAAAAAAAAu,(__m512i)(__v32hi){0,+1,-2,+3,-4,+5,-6,+7,-8,+9,-10,+11,-12,+13,-14,+15,-16,+17,-18,+19,-20,+21,-22,+23,-24,+25,-26,+27,+32000,-32000,+32000,+32000},(__m512i)(__v32hi){0,+1,-2,+3,-4,+5,-6,+7,-8,+9,-10,+11,-12,+13,-14,+15,-16,+17,-18,+19,-20,+21,-22,+23,-24,+25,-26,+27,+800,-800,-800,+800}),0,+2,0,+6,0,+10,0,+14,0,+18,0,+22,0,+26,0,+30,0,+34,0,+38,0,+42,0,+46,0,+50,0,+54,0,-32768,0,+32767));1341 1342__m512i test_mm512_adds_epu8(__m512i __A, __m512i __B) {1343 // CHECK-LABEL: test_mm512_adds_epu81344 // CHECK-NOT: @llvm.x86.avx512.mask.paddus.b.5121345 // CHECK: call <64 x i8> @llvm.uadd.sat.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})1346 return _mm512_adds_epu8(__A,__B); 1347}1348TEST_CONSTEXPR(match_v64qu(_mm512_adds_epu8((__m512i)(__v64qu){0, 0, 0, 0, 0, 0, 0, 0, +63, +63, +63, +63, +63, +63, +63, +63, +64, +64, +64, +64, +64, +64, +64, +64, +127, +127, +127, +127, +127, +127, +127, +127, +128, +128, +128, +128, +128, +128, +128, +128, +191, +191, +191, +191, +191, +191, +191, +191, +192, +192, +192, +192, +192, +192, +192, +192, +255, +255, +255, +255, +255, +255, +255, +255}, (__m512i)(__v64qu){0, +63, +64, +127, +128, +191, +192, +255, 0, +63, +64, +127, +128, +191, +192, +255, 0, +63, +64, +127, +128, +191, +192, +255, 0, +63, +64, +127, +128, +191, +192, +255, 0, +63, +64, +127, +128, +191, +192, +255, 0, +63, +64, +127, +128, +191, +192, +255, 0, +63, +64, +127, +128, +191, +192, +255, 0, +63, +64, +127, +128, +191, +192, +255}), 0, +63, +64, +127, +128, +191, +192, +255, +63, +126, +127, +190, +191, +254, +255, +255, +64, +127, +128, +191, +192, +255, +255, +255, +127, +190, +191, +254, +255, +255, +255, +255, +128, +191, +192, +255, +255, +255, +255, +255, +191, +254, +255, +255, +255, +255, +255, +255, +192, +255, +255, +255, +255, +255, +255, +255, +255, +255, +255, +255, +255, +255, +255, +255));1349 1350__m512i test_mm512_mask_adds_epu8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {1351 // CHECK-LABEL: test_mm512_mask_adds_epu81352 // CHECK-NOT: @llvm.x86.avx512.mask.paddus.b.5121353 // CHECK: call <64 x i8> @llvm.uadd.sat.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})1354 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}1355 return _mm512_mask_adds_epu8(__W,__U,__A,__B); 1356}1357TEST_CONSTEXPR(match_v64qu(_mm512_mask_adds_epu8((__m512i)(__v64qu){1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,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,63,64},(__mmask64)0xAAAAAAAAAAAAAAAA,(__m512i)(__v64qu){0,0,0,0,0,0,0,0,+63,+63,+63,+63,+63,+63,+63,+63,+64,+64,+64,+64,+64,+64,+64,+64,+127,+127,+127,+127,+127,+127,+127,+127,+128,+128,+128,+128,+128,+128,+128,+128,+191,+191,+191,+191,+191,+191,+191,+191,+192,+192,+192,+192,+192,+192,+192,+192,+255,+255,+255,+255,+255,+255,+255,+255},(__m512i)(__v64qu){0,+63,+64,+127,+128,+191,+192,+255,0,+63,+64,+127,+128,+191,+192,+255,0,+63,+64,+127,+128,+191,+192,+255,0,+63,+64,+127,+128,+191,+192,+255,0,+63,+64,+127,+128,+191,+192,+255,0,+63,+64,+127,+128,+191,+192,+255,0,+63,+64,+127,+128,+191,+192,+255,0,+63,+64,+127,+128,+191,+192,+255}),1,+63,3,+127,5,+191,7,+255,9,+126,11,+190,13,+254,15,+255,17,+127,19,+191,21,+255,23,+255,25,+190,27,+254,29,+255,31,+255,33,+191,35,+255,37,+255,39,+255,41,+254,43,+255,45,+255,47,+255,49,+255,51,+255,53,+255,55,+255,57,+255,59,+255,61,+255,63,+255));1358 1359__m512i test_mm512_maskz_adds_epu8(__mmask64 __U, __m512i __A, __m512i __B) {1360 // CHECK-LABEL: test_mm512_maskz_adds_epu81361 // CHECK-NOT: @llvm.x86.avx512.mask.paddus.b.5121362 // CHECK: call <64 x i8> @llvm.uadd.sat.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})1363 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}1364 return _mm512_maskz_adds_epu8(__U,__A,__B); 1365}1366TEST_CONSTEXPR(match_v64qu(_mm512_maskz_adds_epu8((__mmask64)0xAAAAAAAAAAAAAAAA,(__m512i)(__v64qu){0,0,0,0,0,0,0,0,+63,+63,+63,+63,+63,+63,+63,+63,+64,+64,+64,+64,+64,+64,+64,+64,+127,+127,+127,+127,+127,+127,+127,+127,+128,+128,+128,+128,+128,+128,+128,+128,+191,+191,+191,+191,+191,+191,+191,+191,+192,+192,+192,+192,+192,+192,+192,+192,+255,+255,+255,+255,+255,+255,+255,+255},(__m512i)(__v64qu){0,+63,+64,+127,+128,+191,+192,+255,0,+63,+64,+127,+128,+191,+192,+255,0,+63,+64,+127,+128,+191,+192,+255,0,+63,+64,+127,+128,+191,+192,+255,0,+63,+64,+127,+128,+191,+192,+255,0,+63,+64,+127,+128,+191,+192,+255,0,+63,+64,+127,+128,+191,+192,+255,0,+63,+64,+127,+128,+191,+192,+255}),0,+63,0,+127,0,+191,0,+255,0,+126,0,+190,0,+254,0,+255,0,+127,0,+191,0,+255,0,+255,0,+190,0,+254,0,+255,0,+255,0,+191,0,+255,0,+255,0,+255,0,+254,0,+255,0,+255,0,+255,0,+255,0,+255,0,+255,0,+255,0,+255,0,+255,0,+255,0,+255));1367 1368__m512i test_mm512_adds_epu16(__m512i __A, __m512i __B) {1369 // CHECK-LABEL: test_mm512_adds_epu161370 // CHECK-NOT: @llvm.x86.avx512.mask.paddus.w.5121371 // CHECK: call <32 x i16> @llvm.uadd.sat.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})1372 return _mm512_adds_epu16(__A,__B); 1373}1374TEST_CONSTEXPR(match_v32hu(_mm512_adds_epu16((__m512i)(__v32hu){0, 0, 0, 0, +16384, +16384, +16384, +16384, +16384, +16384, +32767, +32767, +32767, +32767, +32767, +32767, +32768, +32768, +32768, +32768, +32768, +32768, +49152, +49152, +49152, +49152, +49152, +49152, +65535, +65535, +65535, +65535}, (__m512i)(__v32hu){0, +32767, +32768, +65535, 0, +16384, +32767, +32768, +49152, +65535, 0, +16384, +32767, +32768, +49152, +65535, 0, +16384, +32767, +32768, +49152, +65535, 0, +16384, +32767, +32768, +49152, +65535, 0, +32767, +32768, +65535}), 0, +32767, +32768, +65535, +16384, +32768, +49151, +49152, +65535, +65535, +32767, +49151, +65534, +65535, +65535, +65535, +32768, +49152, +65535, +65535, +65535, +65535, +49152, +65535, +65535, +65535, +65535, +65535, +65535, +65535, +65535, +65535));1375 1376__m512i test_mm512_mask_adds_epu16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {1377 // CHECK-LABEL: test_mm512_mask_adds_epu161378 // CHECK-NOT: @llvm.x86.avx512.mask.paddus.w.5121379 // CHECK: call <32 x i16> @llvm.uadd.sat.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})1380 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}1381 return _mm512_mask_adds_epu16(__W,__U,__A,__B); 1382}1383TEST_CONSTEXPR(match_v32hu(_mm512_mask_adds_epu16((__m512i)(__v32hu){1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32},(__mmask32)0xAAAAAAAA,(__m512i)(__v32hu){0,0,0,0,+16384,+16384,+16384,+16384,+16384,+16384,+32767,+32767,+32767,+32767,+32767,+32767,+32768,+32768,+32768,+32768,+32768,+32768,+49152,+49152,+49152,+49152,+49152,+49152,+65535,+65535,+65535,+65535},(__m512i)(__v32hu){0,+32767,+32768,+65535,0,+16384,+32767,+32768,+49152,+65535,0,+16384,+32767,+32768,+49152,+65535,0,+16384,+32767,+32768,+49152,+65535,0,+16384,+32767,+32768,+49152,+65535,0,+32767,+32768,+65535}),1,+32767,3,+65535,5,+32768,7,+49152,9,+65535,11,+49151,13,+65535,15,+65535,17,+49152,19,+65535,21,+65535,23,+65535,25,+65535,27,+65535,29,+65535,31,+65535));1384 1385__m512i test_mm512_maskz_adds_epu16(__mmask32 __U, __m512i __A, __m512i __B) {1386 // CHECK-LABEL: test_mm512_maskz_adds_epu161387 // CHECK-NOT: @llvm.x86.avx512.mask.paddus.w.5121388 // CHECK: call <32 x i16> @llvm.uadd.sat.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})1389 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}1390 return _mm512_maskz_adds_epu16(__U,__A,__B); 1391}1392TEST_CONSTEXPR(match_v32hu(_mm512_maskz_adds_epu16((__mmask32)0xAAAAAAAA,(__m512i)(__v32hu){0,0,0,0,+16384,+16384,+16384,+16384,+16384,+16384,+32767,+32767,+32767,+32767,+32767,+32767,+32768,+32768,+32768,+32768,+32768,+32768,+49152,+49152,+49152,+49152,+49152,+49152,+65535,+65535,+65535,+65535},(__m512i)(__v32hu){0,+32767,+32768,+65535,0,+16384,+32767,+32768,+49152,+65535,0,+16384,+32767,+32768,+49152,+65535,0,+16384,+32767,+32768,+49152,+65535,0,+16384,+32767,+32768,+49152,+65535,0,+32767,+32768,+65535}),0,+32767,0,+65535,0,+32768,0,+49152,0,+65535,0,+49151,0,+65535,0,+65535,0,+49152,0,+65535,0,+65535,0,+65535,0,+65535,0,+65535,0,+65535,0,+65535));1393 1394__m512i test_mm512_avg_epu8(__m512i __A, __m512i __B) {1395 // CHECK-LABEL: test_mm512_avg_epu81396 // CHECK: @llvm.x86.avx512.pavg.b.5121397 return _mm512_avg_epu8(__A,__B); 1398}1399TEST_CONSTEXPR(match_v64qu(_mm512_avg_epu8((__m512i)(__v64qu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63, 64}, (__m512i)(__v64qu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63, 64}), 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63, 64));1400 1401__m512i test_mm512_mask_avg_epu8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {1402 // CHECK-LABEL: test_mm512_mask_avg_epu81403 // CHECK: @llvm.x86.avx512.pavg.b.5121404 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}1405 return _mm512_mask_avg_epu8(__W,__U,__A,__B); 1406}1407TEST_CONSTEXPR(match_v64qi(_mm512_mask_avg_epu8((__m512i)(__v64qi){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 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}, 0x00000000FFFFFFFF, (__m512i)(__v64qi){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63, 64}, (__m512i)(__v64qi){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63, 64}), 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 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));1408 1409__m512i test_mm512_maskz_avg_epu8(__mmask64 __U, __m512i __A, __m512i __B) {1410 // CHECK-LABEL: test_mm512_maskz_avg_epu81411 // CHECK: @llvm.x86.avx512.pavg.b.5121412 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}1413 return _mm512_maskz_avg_epu8(__U,__A,__B); 1414}1415TEST_CONSTEXPR(match_v64qi(_mm512_maskz_avg_epu8(0x00000000FFFFFFFF, (__m512i)(__v64qi){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63, 64}, (__m512i)(__v64qi){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63, 64}), 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 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));1416 1417__m512i test_mm512_avg_epu16(__m512i __A, __m512i __B) {1418 // CHECK-LABEL: test_mm512_avg_epu161419 // CHECK: @llvm.x86.avx512.pavg.w.5121420 return _mm512_avg_epu16(__A,__B); 1421}1422TEST_CONSTEXPR(match_v32hu(_mm512_avg_epu16((__m512i)(__v32hu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}, (__m512i)(__v32hu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}), 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32));1423 1424__m512i test_mm512_mask_avg_epu16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {1425 // CHECK-LABEL: test_mm512_mask_avg_epu161426 // CHECK: @llvm.x86.avx512.pavg.w.5121427 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}1428 return _mm512_mask_avg_epu16(__W,__U,__A,__B); 1429}1430TEST_CONSTEXPR(match_v32hi(_mm512_mask_avg_epu16((__m512i)(__v32hi){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0x0000FFFF, (__m512i)(__v32hi){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}, (__m512i)(__v32hi){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}), 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));1431 1432__m512i test_mm512_maskz_avg_epu16(__mmask32 __U, __m512i __A, __m512i __B) {1433 // CHECK-LABEL: test_mm512_maskz_avg_epu161434 // CHECK: @llvm.x86.avx512.pavg.w.5121435 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}1436 return _mm512_maskz_avg_epu16(__U,__A,__B); 1437}1438TEST_CONSTEXPR(match_v32hi(_mm512_maskz_avg_epu16(0x0000FFFF, (__m512i)(__v32hi){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}, (__m512i)(__v32hi){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}), 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));1439 1440__m512i test_mm512_max_epi8(__m512i __A, __m512i __B) {1441 // CHECK-LABEL: test_mm512_max_epi81442 // CHECK: [[RES:%.*]] = call <64 x i8> @llvm.smax.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})1443 return _mm512_max_epi8(__A,__B); 1444}1445 1446TEST_CONSTEXPR(match_v64qi(_mm512_max_epi8((__m512i)(__v64qs){0, +1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16, +17, -18, +19, -20, +21, -22, +23, -24, +25, -26, +27, -28, +29, -30, +31, -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, +63}, (__m512i)(__v64qs){0, -1, +2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16, -17, +18, -19, +20, -21, +22, -23, +24, -25, +26, -27, +28, -29, +30, -31, +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, -63}), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63));1447 1448__m512i test_mm512_maskz_max_epi8(__mmask64 __M, __m512i __A, __m512i __B) {1449 // CHECK-LABEL: test_mm512_maskz_max_epi81450 // CHECK: [[RES:%.*]] = call <64 x i8> @llvm.smax.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})1451 // CHECK: select <64 x i1> {{.*}}, <64 x i8> [[RES]], <64 x i8> {{.*}}1452 return _mm512_maskz_max_epi8(__M,__A,__B); 1453}1454 1455TEST_CONSTEXPR(match_v64qi(_mm512_maskz_max_epi8(0x00000000FFFFFFFF, (__m512i)(__v64qs){0, +1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16, +17, -18, +19, -20, +21, -22, +23, -24, +25, -26, +27, -28, +29, -30, +31, -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, +63}, (__m512i)(__v64qs){0, -1, +2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16, -17, +18, -19, +20, -21, +22, -23, +24, -25, +26, -27, +28, -29, +30, -31, +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, -63}), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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));1456 1457__m512i test_mm512_mask_max_epi8(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {1458 // CHECK-LABEL: test_mm512_mask_max_epi81459 // CHECK: [[RES:%.*]] = call <64 x i8> @llvm.smax.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})1460 // CHECK: select <64 x i1> {{.*}}, <64 x i8> [[RES]], <64 x i8> {{.*}}1461 return _mm512_mask_max_epi8(__W,__M,__A,__B); 1462}1463 1464TEST_CONSTEXPR(match_v64qi(_mm512_mask_max_epi8((__m512i)(__v64qs){-1, +2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16, -17, +18, -19, +20, -21, +22, -23, +24, -25, +26, -27, +28, -29, +30, -31, +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, -63, +64}, 0x00000000FFFFFFFF, (__m512i)(__v64qs){0, +1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16, +17, -18, +19, -20, +21, -22, +23, -24, +25, -26, +27, -28, +29, -30, +31, -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, +63}, (__m512i)(__v64qs){0, -1, +2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16, -17, +18, -19, +20, -21, +22, -23, +24, -25, +26, -27, +28, -29, +30, -31, +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, -63}), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, -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));1465 1466__m512i test_mm512_max_epi16(__m512i __A, __m512i __B) {1467 // CHECK-LABEL: test_mm512_max_epi161468 // CHECK: [[RES:%.*]] = call <32 x i16> @llvm.smax.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})1469 return _mm512_max_epi16(__A,__B); 1470}1471 1472TEST_CONSTEXPR(match_v32hi(_mm512_max_epi16((__m512i)(__v32hi){+1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16, +17, -18, +19, -20, +21, -22, +23, -24, +25, -26, +27, -28, +29, -30, +31, -32}, (__m512i)(__v32hi){-1, +2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16, -17, +18, -19, +20, -21, +22, -23, +24, -25, +26, -27, +28, -29, +30, -31, +32}), +1, +2, +3, +4, +5, +6, +7, +8, +9, +10, +11, +12, +13, +14, +15, +16, +17, +18, +19, +20, +21, +22, +23, +24, +25, +26, +27, +28, +29, +30, +31, +32));1473 1474__m512i test_mm512_maskz_max_epi16(__mmask32 __M, __m512i __A, __m512i __B) {1475 // CHECK-LABEL: test_mm512_maskz_max_epi161476 // CHECK: [[RES:%.*]] = call <32 x i16> @llvm.smax.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})1477 // CHECK: select <32 x i1> {{.*}}, <32 x i16> [[RES]], <32 x i16> {{.*}}1478 return _mm512_maskz_max_epi16(__M,__A,__B); 1479}1480 1481TEST_CONSTEXPR(match_v32hi(_mm512_maskz_max_epi16(0x0000FFFF, (__m512i)(__v32hi){+1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16, +17, -18, +19, -20, +21, -22, +23, -24, +25, -26, +27, -28, +29, -30, +31, -32}, (__m512i)(__v32hi){-1, +2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16, -17, +18, -19, +20, -21, +22, -23, +24, -25, +26, -27, +28, -29, +30, -31, +32}), +1, +2, +3, +4, +5, +6, +7, +8, +9, +10, +11, +12, +13, +14, +15, +16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));1482 1483__m512i test_mm512_mask_max_epi16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {1484 // CHECK-LABEL: test_mm512_mask_max_epi161485 // CHECK: [[RES:%.*]] = call <32 x i16> @llvm.smax.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})1486 // CHECK: select <32 x i1> {{.*}}, <32 x i16> [[RES]], <32 x i16> {{.*}}1487 return _mm512_mask_max_epi16(__W,__M,__A,__B); 1488}1489 1490TEST_CONSTEXPR(match_v32hi(_mm512_mask_max_epi16((__m512i)(__v32hi){-1, +2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16, -17, +18, -19, +20, -21, +22, -23, +24, -25, +26, -27, +28, -29, +30, -31, +32}, 0x0000FFFF, (__m512i)(__v32hi){+1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16, +17, -18, +19, -20, +21, -22, +23, -24, +25, -26, +27, -28, +29, -30, +31, -32}, (__m512i)(__v32hi){-1, +2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16, -17, +18, -19, +20, -21, +22, -23, +24, -25, +26, -27, +28, -29, +30, -31, +32}), +1, +2, +3, +4, +5, +6, +7, +8, +9, +10, +11, +12, +13, +14, +15, +16, -17, +18, -19, +20, -21, +22, -23, +24, -25, +26, -27, +28, -29, +30, -31, +32));1491 1492__m512i test_mm512_max_epu8(__m512i __A, __m512i __B) {1493 // CHECK-LABEL: test_mm512_max_epu81494 // CHECK: [[RES:%.*]] = call <64 x i8> @llvm.umax.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})1495 return _mm512_max_epu8(__A,__B); 1496}1497 1498TEST_CONSTEXPR(match_v64qu(_mm512_max_epu8((__m512i)(__v64qu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63, 64}, (__m512i)(__v64qu){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63}), 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63, 64));1499 1500__m512i test_mm512_maskz_max_epu8(__mmask64 __M, __m512i __A, __m512i __B) {1501 // CHECK-LABEL: test_mm512_maskz_max_epu81502 // CHECK: [[RES:%.*]] = call <64 x i8> @llvm.umax.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})1503 // CHECK: select <64 x i1> {{.*}}, <64 x i8> [[RES]], <64 x i8> {{.*}}1504 return _mm512_maskz_max_epu8(__M,__A,__B); 1505}1506 1507TEST_CONSTEXPR(match_v64qu(_mm512_maskz_max_epu8(0x00000000FFFFFFFF, (__m512i)(__v64qu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63, 64}, (__m512i)(__v64qu){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63}), 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 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));1508 1509__m512i test_mm512_mask_max_epu8(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {1510 // CHECK-LABEL: test_mm512_mask_max_epu81511 // CHECK: [[RES:%.*]] = call <64 x i8> @llvm.umax.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})1512 // CHECK: select <64 x i1> {{.*}}, <64 x i8> [[RES]], <64 x i8> {{.*}}1513 return _mm512_mask_max_epu8(__W,__M,__A,__B); 1514}1515 1516TEST_CONSTEXPR(match_v64qu(_mm512_mask_max_epu8((__m512i)(__v64qu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63, 64}, 0x00000000FFFFFFFF, (__m512i)(__v64qu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63, 64}, (__m512i)(__v64qu){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63}), 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63, 64));1517 1518__m512i test_mm512_max_epu16(__m512i __A, __m512i __B) {1519 // CHECK-LABEL: test_mm512_max_epu161520 // CHECK: [[RES:%.*]] = call <32 x i16> @llvm.umax.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})1521 return _mm512_max_epu16(__A,__B); 1522}1523 1524TEST_CONSTEXPR(match_v32hu(_mm512_max_epu16((__m512i)(__v32hu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}, (__m512i)(__v32hu){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}), 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32));1525 1526__m512i test_mm512_maskz_max_epu16(__mmask32 __M, __m512i __A, __m512i __B) {1527 // CHECK-LABEL: test_mm512_maskz_max_epu161528 // CHECK: [[RES:%.*]] = call <32 x i16> @llvm.umax.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})1529 // CHECK: select <32 x i1> {{.*}}, <32 x i16> [[RES]], <32 x i16> {{.*}}1530 return _mm512_maskz_max_epu16(__M,__A,__B); 1531}1532 1533TEST_CONSTEXPR(match_v32hu(_mm512_maskz_max_epu16(0x0000FFFF, (__m512i)(__v32hu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}, (__m512i)(__v32hu){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}), 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));1534 1535__m512i test_mm512_mask_max_epu16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {1536 // CHECK-LABEL: test_mm512_mask_max_epu161537 // CHECK: [[RES:%.*]] = call <32 x i16> @llvm.umax.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})1538 // CHECK: select <32 x i1> {{.*}}, <32 x i16> [[RES]], <32 x i16> {{.*}}1539 return _mm512_mask_max_epu16(__W,__M,__A,__B); 1540}1541 1542TEST_CONSTEXPR(match_v32hu(_mm512_mask_max_epu16((__m512i)(__v32hu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}, 0x0000FFFF, (__m512i)(__v32hu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}, (__m512i)(__v32hu){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}), 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32));1543 1544__m512i test_mm512_min_epi8(__m512i __A, __m512i __B) {1545 // CHECK-LABEL: test_mm512_min_epi81546 // CHECK: [[RES:%.*]] = call <64 x i8> @llvm.smin.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})1547 return _mm512_min_epi8(__A,__B); 1548}1549 1550TEST_CONSTEXPR(match_v64qi(_mm512_min_epi8((__m512i)(__v64qs){0, +1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16, +17, -18, +19, -20, +21, -22, +23, -24, +25, -26, +27, -28, +29, -30, +31, -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, +63}, (__m512i)(__v64qs){0, -1, +2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16, -17, +18, -19, +20, -21, +22, -23, +24, -25, +26, -27, +28, -29, +30, -31, +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, -63}), 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -19, -20, -21, -22, -23, -24, -25, -26, -27, -28, -29, -30, -31, -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, -63));1551 1552__m512i test_mm512_maskz_min_epi8(__mmask64 __M, __m512i __A, __m512i __B) {1553 // CHECK-LABEL: test_mm512_maskz_min_epi81554 // CHECK: [[RES:%.*]] = call <64 x i8> @llvm.smin.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})1555 // CHECK: select <64 x i1> {{.*}}, <64 x i8> [[RES]], <64 x i8> {{.*}}1556 return _mm512_maskz_min_epi8(__M,__A,__B); 1557}1558 1559TEST_CONSTEXPR(match_v64qi(_mm512_maskz_min_epi8(0x00000000FFFFFFFF, (__m512i)(__v64qs){0, +1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16, +17, -18, +19, -20, +21, -22, +23, -24, +25, -26, +27, -28, +29, -30, +31, -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, +63}, (__m512i)(__v64qs){0, -1, +2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16, -17, +18, -19, +20, -21, +22, -23, +24, -25, +26, -27, +28, -29, +30, -31, +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, -63}), 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -19, -20, -21, -22, -23, -24, -25, -26, -27, -28, -29, -30, -31, 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));1560 1561__m512i test_mm512_mask_min_epi8(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {1562 // CHECK-LABEL: test_mm512_mask_min_epi81563 // CHECK: [[RES:%.*]] = call <64 x i8> @llvm.smin.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})1564 // CHECK: select <64 x i1> {{.*}}, <64 x i8> [[RES]], <64 x i8> {{.*}}1565 return _mm512_mask_min_epi8(__W,__M,__A,__B); 1566}1567 1568TEST_CONSTEXPR(match_v64qi(_mm512_mask_min_epi8((__m512i)(__v64qs){-1, +2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16, -17, +18, -19, +20, -21, +22, -23, +24, -25, +26, -27, +28, -29, +30, -31, +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, -63, +64}, 0x00000000FFFFFFFF, (__m512i)(__v64qs){0, +1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16, +17, -18, +19, -20, +21, -22, +23, -24, +25, -26, +27, -28, +29, -30, +31, -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, +63}, (__m512i)(__v64qs){0, -1, +2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16, -17, +18, -19, +20, -21, +22, -23, +24, -25, +26, -27, +28, -29, +30, -31, +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, -63}), 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -19, -20, -21, -22, -23, -24, -25, -26, -27, -28, -29, -30, -31, -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));1569 1570__m512i test_mm512_min_epi16(__m512i __A, __m512i __B) {1571 // CHECK-LABEL: test_mm512_min_epi161572 // CHECK: [[RES:%.*]] = call <32 x i16> @llvm.smin.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})1573 return _mm512_min_epi16(__A,__B); 1574}1575 1576TEST_CONSTEXPR(match_v32hi(_mm512_min_epi16((__m512i)(__v32hi){+1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16, +17, -18, +19, -20, +21, -22, +23, -24, +25, -26, +27, -28, +29, -30, +31, -32}, (__m512i)(__v32hi){-1, +2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16, -17, +18, -19, +20, -21, +22, -23, +24, -25, +26, -27, +28, -29, +30, -31, +32}), -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -19, -20, -21, -22, -23, -24, -25, -26, -27, -28, -29, -30, -31, -32));1577 1578__m512i test_mm512_maskz_min_epi16(__mmask32 __M, __m512i __A, __m512i __B) {1579 // CHECK-LABEL: test_mm512_maskz_min_epi161580 // CHECK: [[RES:%.*]] = call <32 x i16> @llvm.smin.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})1581 // CHECK: select <32 x i1> {{.*}}, <32 x i16> [[RES]], <32 x i16> {{.*}}1582 return _mm512_maskz_min_epi16(__M,__A,__B); 1583}1584 1585TEST_CONSTEXPR(match_v32hi(_mm512_maskz_min_epi16(0x0000FFFF, (__m512i)(__v32hi){+1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16, +17, -18, +19, -20, +21, -22, +23, -24, +25, -26, +27, -28, +29, -30, +31, -32}, (__m512i)(__v32hi){-1, +2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16, -17, +18, -19, +20, -21, +22, -23, +24, -25, +26, -27, +28, -29, +30, -31, +32}), -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));1586 1587__m512i test_mm512_mask_min_epi16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {1588 // CHECK-LABEL: test_mm512_mask_min_epi161589 // CHECK: [[RES:%.*]] = call <32 x i16> @llvm.smin.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})1590 // CHECK: select <32 x i1> {{.*}}, <32 x i16> [[RES]], <32 x i16> {{.*}}1591 return _mm512_mask_min_epi16(__W,__M,__A,__B); 1592}1593 1594TEST_CONSTEXPR(match_v32hi(_mm512_mask_min_epi16((__m512i)(__v32hi){-1, +2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16, -17, +18, -19, +20, -21, +22, -23, +24, -25, +26, -27, +28, -29, +30, -31, +32}, 0x0000FFFF, (__m512i)(__v32hi){+1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16, +17, -18, +19, -20, +21, -22, +23, -24, +25, -26, +27, -28, +29, -30, +31, -32}, (__m512i)(__v32hi){-1, +2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16, -17, +18, -19, +20, -21, +22, -23, +24, -25, +26, -27, +28, -29, +30, -31, +32}), -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16, -17, +18, -19, +20, -21, +22, -23, +24, -25, +26, -27, +28, -29, +30, -31, +32));1595 1596__m512i test_mm512_min_epu8(__m512i __A, __m512i __B) {1597 // CHECK-LABEL: test_mm512_min_epu81598 // CHECK: [[RES:%.*]] = call <64 x i8> @llvm.umin.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})1599 return _mm512_min_epu8(__A,__B); 1600}1601 1602TEST_CONSTEXPR(match_v64qu(_mm512_min_epu8((__m512i)(__v64qu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63, 64}, (__m512i)(__v64qu){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63}), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63));1603 1604__m512i test_mm512_maskz_min_epu8(__mmask64 __M, __m512i __A, __m512i __B) {1605 // CHECK-LABEL: test_mm512_maskz_min_epu81606 // CHECK: [[RES:%.*]] = call <64 x i8> @llvm.umin.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})1607 // CHECK: select <64 x i1> {{.*}}, <64 x i8> [[RES]], <64 x i8> {{.*}}1608 return _mm512_maskz_min_epu8(__M,__A,__B); 1609}1610 1611TEST_CONSTEXPR(match_v64qu(_mm512_maskz_min_epu8(0x00000000FFFFFFFF, (__m512i)(__v64qu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63, 64}, (__m512i)(__v64qu){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63}), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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));1612 1613__m512i test_mm512_mask_min_epu8(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {1614 // CHECK-LABEL: test_mm512_mask_min_epu81615 // CHECK: [[RES:%.*]] = call <64 x i8> @llvm.umin.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})1616 // CHECK: select <64 x i1> {{.*}}, <64 x i8> [[RES]], <64 x i8> {{.*}}1617 return _mm512_mask_min_epu8(__W,__M,__A,__B); 1618}1619 1620TEST_CONSTEXPR(match_v64qu(_mm512_mask_min_epu8((__m512i)(__v64qu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63, 64}, 0x00000000FFFFFFFF, (__m512i)(__v64qu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63, 64}, (__m512i)(__v64qu){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63}), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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));1621 1622__m512i test_mm512_min_epu16(__m512i __A, __m512i __B) {1623 // CHECK-LABEL: test_mm512_min_epu161624 // CHECK: [[RES:%.*]] = call <32 x i16> @llvm.umin.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})1625 return _mm512_min_epu16(__A,__B); 1626}1627 1628TEST_CONSTEXPR(match_v32hu(_mm512_min_epu16((__m512i)(__v32hu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}, (__m512i)(__v32hu){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31));1629 1630__m512i test_mm512_maskz_min_epu16(__mmask32 __M, __m512i __A, __m512i __B) {1631 // CHECK-LABEL: test_mm512_maskz_min_epu161632 // CHECK: [[RES:%.*]] = call <32 x i16> @llvm.umin.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})1633 // CHECK: select <32 x i1> {{.*}}, <32 x i16> [[RES]], <32 x i16> {{.*}}1634 return _mm512_maskz_min_epu16(__M,__A,__B); 1635}1636 1637TEST_CONSTEXPR(match_v32hu(_mm512_maskz_min_epu16(0x0000FFFF, (__m512i)(__v32hu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}, (__m512i)(__v32hu){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));1638 1639__m512i test_mm512_mask_min_epu16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {1640 // CHECK-LABEL: test_mm512_mask_min_epu161641 // CHECK: [[RES:%.*]] = call <32 x i16> @llvm.umin.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})1642 // CHECK: select <32 x i1> {{.*}}, <32 x i16> [[RES]], <32 x i16> {{.*}}1643 return _mm512_mask_min_epu16(__W,__M,__A,__B); 1644}1645 1646TEST_CONSTEXPR(match_v32hu(_mm512_mask_min_epu16((__m512i)(__v32hu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}, 0x0000FFFF, (__m512i)(__v32hu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}, (__m512i)(__v32hu){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32));1647 1648__m512i test_mm512_shuffle_epi8(__m512i __A, __m512i __B) {1649 // CHECK-LABEL: test_mm512_shuffle_epi81650 // CHECK: @llvm.x86.avx512.pshuf.b.5121651 return _mm512_shuffle_epi8(__A,__B); 1652}1653 1654TEST_CONSTEXPR(match_v64qi(_mm512_shuffle_epi8((__m512i)(__v64qi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,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,63}, (__m512i)(__v64qs){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,-15,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,-15,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,-79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,-95}), 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,0,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,0,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,0,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,0));1655 1656__m512i test_mm512_mask_shuffle_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {1657 // CHECK-LABEL: test_mm512_mask_shuffle_epi81658 // CHECK: @llvm.x86.avx512.pshuf.b.5121659 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}1660 return _mm512_mask_shuffle_epi8(__W,__U,__A,__B); 1661}1662 1663TEST_CONSTEXPR(match_v64qi(_mm512_mask_shuffle_epi8((__m512i)(__v64qi){1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8}, 0xFFFFFFFF00000000, (__m512i)(__v64qi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,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,63}, (__m512i)(__v64qi){63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0}), 1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48));1664 1665__m512i test_mm512_maskz_shuffle_epi8(__mmask64 __U, __m512i __A, __m512i __B) {1666 // CHECK-LABEL: test_mm512_maskz_shuffle_epi81667 // CHECK: @llvm.x86.avx512.pshuf.b.5121668 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}1669 return _mm512_maskz_shuffle_epi8(__U,__A,__B); 1670}1671 1672TEST_CONSTEXPR(match_v64qi(_mm512_maskz_shuffle_epi8(0x8888888888888888,(__m512i)(__v64qi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,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,63}, (__m512i)(__v64qi){127,126,125,124,123,122,121,120,119,118,117,116,115,114,113,112,111,110,109,108,107,106,105,104,103,102,101,100,99,98,97,96,95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80,79,78,77,76,75,74,73,72,71,70,69,68,67,66,65,64}), 0,0,0,12,0,0,0,8,0,0,0,4,0,0,0,0,0,0,0,28,0,0,0,24,0,0,0,20,0,0,0,16,0,0,0,44,0,0,0,40,0,0,0,36,0,0,0,32,0,0,0,60,0,0,0,56,0,0,0,52,0,0,0,48));1673 1674__m512i test_mm512_subs_epi8(__m512i __A, __m512i __B) {1675 // CHECK-LABEL: test_mm512_subs_epi81676 // CHECK: @llvm.ssub.sat.v64i81677return _mm512_subs_epi8(__A,__B); 1678}1679TEST_CONSTEXPR(match_v64qi(_mm512_subs_epi8((__m512i)(__v64qs){0, +1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16, +17, -18, +19, -20, +21, -22, +23, -24, +25, -26, +27, -28, +29, -30, +31, -32, +33, -34, +35, -36, +37, -38, +39, -40, +41, -42, +43, -44, +45, -46, +47, +100, +50, -100, +20, +80, -50, +120, -20, -100, -50, +100, -20, -80, +50, -120, +20}, (__m512i)(__v64qs){0, -1, +2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16, -17, +18, -19, +20, -21, +22, -23, +24, -25, +26, -27, +28, -29, +30, -31, +32, -33, +34, -35, +36, -37, +38, -39, +40, -41, +42, -43, +44, -45, +46, -47, -50, -80, +50, -110, -60, +30, -20, +10, -50, -80, +50, -110, -60, +30, -20, +10}), 0, +2, -4, +6, -8, +10, -12, +14, -16, +18, -20, +22, -24, +26, -28, +30, -32, +34, -36, +38, -40, +42, -44, +46, -48, +50, -52, +54, -56, +58, -60, +62, -64, +66, -68, +70, -72, +74, -76, +78, -80, +82, -84, +86, -88, +90, -92, +94, +127, +127, -128, +127, +127, -80, +127, -30, -50, +30, +50, +90, -20, +20, -100, +10));1680 1681__m512i test_mm512_mask_subs_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {1682 // CHECK-LABEL: test_mm512_mask_subs_epi81683 // CHECK: @llvm.ssub.sat.v64i81684 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}1685return _mm512_mask_subs_epi8(__W,__U,__A,__B); 1686}1687TEST_CONSTEXPR(match_v64qi(_mm512_mask_subs_epi8((__m512i)(__v64qs){1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,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,63,64},(__mmask64)0xAAAAAAAAAAAAAAAA,(__m512i)(__v64qs){1,-100,3,4,5,-6,7,100,9,-100,11,12,13,-14,15,100,17,-100,19,20,21,-22,23,100,25,-100,27,28,29,-30,31,100,33,-100,35,36,37,-38,39,100,41,-100,43,44,45,-46,47,100,49,-100,51,52,53,-54,55,100,57,-100,59,60,61,-62,63,100},(__m512i)(__v64qs){1,100,3,4,5,6,7,-100,9,100,11,12,13,14,15,-100,17,100,19,20,21,22,23,-100,25,100,27,28,29,30,31,-100,33,100,35,36,37,38,39,-100,41,100,43,44,45,46,47,-100,49,100,51,52,53,54,55,-100,57,100,59,60,61,62,63,-100}),1,-128,3,0,5,-12,7,127,9,-128,11,0,13,-28,15,127,17,-128,19,0,21,-44,23,127,25,-128,27,0,29,-60,31,127,33,-128,35,0,37,-76,39,127,41,-128,43,0,45,-92,47,127,49,-128,51,0,53,-108,55,127,57,-128,59,0,61,-124,63,127));1688 1689__m512i test_mm512_maskz_subs_epi8(__mmask64 __U, __m512i __A, __m512i __B) {1690 // CHECK-LABEL: test_mm512_maskz_subs_epi81691 // CHECK: @llvm.ssub.sat.v64i81692 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}1693return _mm512_maskz_subs_epi8(__U,__A,__B); 1694}1695TEST_CONSTEXPR(match_v64qi(_mm512_maskz_subs_epi8((__mmask64)0xAAAAAAAAAAAAAAAA,(__m512i)(__v64qs){1,-100,3,4,5,-6,7,100,9,-100,11,12,13,-14,15,100,17,-100,19,20,21,-22,23,100,25,-100,27,28,29,-30,31,100,33,-100,35,36,37,-38,39,100,41,-100,43,44,45,-46,47,100,49,-100,51,52,53,-54,55,100,57,-100,59,60,61,-62,63,100},(__m512i)(__v64qs){1,100,3,4,5,6,7,-100,9,100,11,12,13,14,15,-100,17,100,19,20,21,22,23,-100,25,100,27,28,29,30,31,-100,33,100,35,36,37,38,39,-100,41,100,43,44,45,46,47,-100,49,100,51,52,53,54,55,-100,57,100,59,60,61,62,63,-100}),0,-128,0,0,0,-12,0,127,0,-128,0,0,0,-28,0,127,0,-128,0,0,0,-44,0,127,0,-128,0,0,0,-60,0,127,0,-128,0,0,0,-76,0,127,0,-128,0,0,0,-92,0,127,0,-128,0,0,0,-108,0,127,0,-128,0,0,0,-124,0,127));1696 1697__m512i test_mm512_subs_epi16(__m512i __A, __m512i __B) {1698 // CHECK-LABEL: test_mm512_subs_epi161699 // CHECK: @llvm.ssub.sat.v32i161700return _mm512_subs_epi16(__A,__B); 1701}1702TEST_CONSTEXPR(match_v32hi(_mm512_subs_epi16((__m512i)(__v32hi){0, +1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16, +17, -18, +19, -20, +21, -22, +23, -24, +25, -26, +27, +32000, -32000, +32000, -32000}, (__m512i)(__v32hi){0, -1, +2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16, -17, +18, -19, +20, -21, +22, -23, +24, -25, +26, -27, -800, +800, +800, -800}), 0, +2, -4, +6, -8, +10, -12, +14, -16, +18, -20, +22, -24, +26, -28, +30, -32, +34, -36, +38, -40, +42, -44, +46, -48, +50, -52, +54, +32767, -32768, +31200, -31200));1703__m512i test_mm512_mask_subs_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {1704 // CHECK-LABEL: test_mm512_mask_subs_epi161705 // CHECK: @llvm.ssub.sat.v32i161706 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}1707return _mm512_mask_subs_epi16(__W,__U,__A,__B); 1708}1709TEST_CONSTEXPR(match_v32hi(_mm512_mask_subs_epi16((__m512i)(__v32hi){1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32},(__mmask32)0xAAAAAAAA,(__m512i)(__v32hi){1,-30000,3,30000,5,-6,7,8,9,-30000,11,30000,13,-14,15,16,17,-30000,19,30000,21,-22,23,24,25,-30000,27,30000,29,-30,31,32},(__m512i)(__v32hi){1,30000,3,-30000,5,6,7,-8,9,30000,11,-30000,13,14,15,-16,17,30000,19,-30000,21,22,23,-24,25,30000,27,-30000,29,30,31,-32}),1,-32768,3,32767,5,-12,7,16,9,-32768,11,32767,13,-28,15,32,17,-32768,19,32767,21,-44,23,48,25,-32768,27,32767,29,-60,31,64));1710 1711__m512i test_mm512_maskz_subs_epi16(__mmask32 __U, __m512i __A, __m512i __B) {1712 // CHECK-LABEL: test_mm512_maskz_subs_epi161713 // CHECK: @llvm.ssub.sat.v32i161714 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}1715return _mm512_maskz_subs_epi16(__U,__A,__B); 1716}1717TEST_CONSTEXPR(match_v32hi(_mm512_maskz_subs_epi16((__mmask32)0xAAAAAAAAu,(__m512i)(__v32hi){1,-30000,3,30000,5,-6,7,8,9,-30000,11,30000,13,-14,15,16,17,-30000,19,30000,21,-22,23,24,25,-30000,27,30000,29,-30,31,32},(__m512i)(__v32hi){1,30000,3,-30000,5,6,7,-8,9,30000,11,-30000,13,14,15,-16,17,30000,19,-30000,21,22,23,-24,25,30000,27,-30000,29,30,31,-32}),0,-32768,0,32767,0,-12,0,16,0,-32768,0,32767,0,-28,0,32,0,-32768,0,32767,0,-44,0,48,0,-32768,0,32767,0,-60,0,64));1718 1719__m512i test_mm512_subs_epu8(__m512i __A, __m512i __B) {1720 // CHECK-LABEL: test_mm512_subs_epu81721 // CHECK-NOT: @llvm.x86.avx512.mask.psubus.b.5121722 // CHECK: call <64 x i8> @llvm.usub.sat.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})1723return _mm512_subs_epu8(__A,__B); 1724}1725TEST_CONSTEXPR(match_v64qu(_mm512_subs_epu8((__m512i)(__v64qu){0,0,0,0,0,0,0,0,+63,+63,+63,+63,+63,+63,+63,+63,+64,+64,+64,+64,+64,+64,+64,+64,+127,+127,+127,+127,+127,+127,+127,+127,+128,+128,+128,+128,+128,+128,+128,+128,+191,+191,+191,+191,+191,+191,+191,+191,+192,+192,+192,+192,+192,+192,+192,+192,+255,+255,+255,+255,+255,+255,+255,+255},(__m512i)(__v64qu){0,+63,+64,+127,+128,+191,+192,+255,0,+63,+64,+127,+128,+191,+192,+255,0,+63,+64,+127,+128,+191,+192,+255,0,+63,+64,+127,+128,+191,+192,+255,0,+63,+64,+127,+128,+191,+192,+255,0,+63,+64,+127,+128,+191,+192,+255,0,+63,+64,+127,+128,+191,+192,+255,0,+63,+64,+127,+128,+191,+192,+255}),0,0,0,0,0,0,0,0,+63,0,0,0,0,0,0,0,+64,+1,0,0,0,0,0,0,+127,+64,+63,0,0,0,0,0,+128,+65,+64,+1,0,0,0,0,+191,+128,+127,+64,+63,0,0,0,+192,+129,+128,+65,+64,+1,0,0,+255,+192,+191,+128,+127,+64,+63,+0));1726 1727__m512i test_mm512_mask_subs_epu8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {1728 // CHECK-LABEL: test_mm512_mask_subs_epu81729 // CHECK-NOT: @llvm.x86.avx512.mask.psubus.b.5121730 // CHECK: call <64 x i8> @llvm.usub.sat.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})1731 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}1732return _mm512_mask_subs_epu8(__W,__U,__A,__B); 1733}1734TEST_CONSTEXPR(match_v64qu(_mm512_mask_subs_epu8((__m512i)(__v64qu){1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,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,63,64},(__mmask64)0xAAAAAAAAAAAAAAAA,(__m512i)(__v64qu){0,250,0,128,0,20,0,255,0,0,0,1,0,100,0,255,0,250,0,128,0,20,0,255,0,0,0,1,0,100,0,255,0,250,0,128,0,20,0,255,0,0,0,1,0,100,0,255,0,250,0,128,0,20,0,255,0,0,0,1,0,100,0,255},(__m512i)(__v64qu){0,50,0,128,0,30,0,1,0,1,0,0,0,99,0,255,0,50,0,128,0,30,0,1,0,1,0,0,0,99,0,255,0,50,0,128,0,30,0,1,0,1,0,0,0,99,0,255,0,50,0,128,0,30,0,1,0,1,0,0,0,99,0,255}),1,200,3,0,5,0,7,254,9,0,11,1,13,1,15,0,17,200,19,0,21,0,23,254,25,0,27,1,29,1,31,0,33,200,35,0,37,0,39,254,41,0,43,1,45,1,47,0,49,200,51,0,53,0,55,254,57,0,59,1,61,1,63,0));1735 1736__m512i test_mm512_maskz_subs_epu8(__mmask64 __U, __m512i __A, __m512i __B) {1737 // CHECK-LABEL: test_mm512_maskz_subs_epu81738 // CHECK-NOT: @llvm.x86.avx512.mask.psubus.b.5121739 // CHECK: call <64 x i8> @llvm.usub.sat.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})1740 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}1741return _mm512_maskz_subs_epu8(__U,__A,__B); 1742}1743TEST_CONSTEXPR(match_v64qu(_mm512_maskz_subs_epu8((__mmask64)0xAAAAAAAAAAAAAAAA,(__m512i)(__v64qu){0,250,0,128,0,20,0,255,0,0,0,1,0,100,0,255,0,250,0,128,0,20,0,255,0,0,0,1,0,100,0,255,0,250,0,128,0,20,0,255,0,0,0,1,0,100,0,255,0,250,0,128,0,20,0,255,0,0,0,1,0,100,0,255},(__m512i)(__v64qu){0,50,0,128,0,30,0,1,0,1,0,0,0,99,0,255,0,50,0,128,0,30,0,1,0,1,0,0,0,99,0,255,0,50,0,128,0,30,0,1,0,1,0,0,0,99,0,255,0,50,0,128,0,30,0,1,0,1,0,0,0,99,0,255}),0,200,0,0,0,0,0,254,0,0,0,1,0,1,0,0,0,200,0,0,0,0,0,254,0,0,0,1,0,1,0,0,0,200,0,0,0,0,0,254,0,0,0,1,0,1,0,0,0,200,0,0,0,0,0,254,0,0,0,1,0,1,0,0));1744 1745__m512i test_mm512_subs_epu16(__m512i __A, __m512i __B) {1746 // CHECK-LABEL: test_mm512_subs_epu161747 // CHECK-NOT: @llvm.x86.avx512.mask.psubus.w.5121748 // CHECK: call <32 x i16> @llvm.usub.sat.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})1749return _mm512_subs_epu16(__A,__B); 1750}1751TEST_CONSTEXPR(match_v32hu(_mm512_subs_epu16((__m512i)(__v32hu){0, 0, 0, 0, +16384, +16384, +16384, +16384, +16384, +16384, +32767, +32767, +32767, +32767, +32767, +32767, +32768, +32768, +32768, +32768, +32768, +32768, +49152, +49152, +49152, +49152, +49152, +49152, +65535, +65535, +65535, +65535}, (__m512i)(__v32hu){0, +32767, +32768, +65535, 0, +16384, +32767, +32768, +49152, +65535, 0, +16384, +32767, +32768, +49152, +65535, 0, +16384, +32767, +32768, +49152, +65535, 0, +16384, +32767, +32768, +49152, +65535, 0, +32767, +32768, +65535}), 0, 0, 0, 0, +16384, 0, 0, 0, 0, 0, +32767, +16383, 0, 0, 0, 0, +32768, +16384, +1, 0, 0, 0, +49152, +32768, +16385, +16384, 0, 0, +65535, +32768, +32767, 0));1752 1753__m512i test_mm512_mask_subs_epu16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {1754 // CHECK-LABEL: test_mm512_mask_subs_epu161755 // CHECK-NOT: @llvm.x86.avx512.mask.psubus.w.5121756 // CHECK: call <32 x i16> @llvm.usub.sat.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})1757 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}1758return _mm512_mask_subs_epu16(__W,__U,__A,__B); 1759}1760TEST_CONSTEXPR(match_v32hu(_mm512_mask_subs_epu16((__m512i)(__v32hu){101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132},(__mmask32)0xAAAAAAAAu,(__m512i)(__v32hu){0,65000,0,40000,0,100,0,65535,0,0,0,1000,0,1,0,50000,0,65000,0,40000,0,100,0,65535,0,0,0,1000,0,1,0,50000},(__m512i)(__v32hu){0,5000,0,40000,0,200,0,1,0,1,0,65535,0,0,0,25000,0,5000,0,40000,0,200,0,1,0,1,0,65535,0,0,0,25000}),101,60000,103,0,105,0,107,65534,109,0,111,0,113,1,115,25000,117,60000,119,0,121,0,123,65534,125,0,127,0,129,1,131,25000));1761 1762__m512i test_mm512_maskz_subs_epu16(__mmask32 __U, __m512i __A, __m512i __B) {1763 // CHECK-LABEL: test_mm512_maskz_subs_epu161764 // CHECK-NOT: @llvm.x86.avx512.mask.psubus.w.5121765 // CHECK: call <32 x i16> @llvm.usub.sat.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})1766 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}1767return _mm512_maskz_subs_epu16(__U,__A,__B); 1768}1769TEST_CONSTEXPR(match_v32hu(_mm512_maskz_subs_epu16((__mmask32)0xAAAAAAAAu,(__m512i)(__v32hu){51,65000,0,40000,0,100,0,65535,42,0,0,1000,0,1,0,50000,69,65000,0,40000,0,100,0,65535,71,0,0,1000,0,1,0,50000},(__m512i)(__v32hu){2652,5000,0,40000,0,200,0,1,398,1,0,65535,0,0,0,25000,29625,5000,0,40000,0,200,0,1,25274,1,0,65535,0,0,0,25000}),0,60000,0,0,0,0,0,65534,0,0,0,0,0,1,0,25000,0,60000,0,0,0,0,0,65534,0,0,0,0,0,1,0,25000));1770 1771__m512i test_mm512_mask2_permutex2var_epi16(__m512i __A, __m512i __I, __mmask32 __U, __m512i __B) {1772 // CHECK-LABEL: test_mm512_mask2_permutex2var_epi161773 // CHECK: @llvm.x86.avx512.vpermi2var.hi.5121774 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}1775 return _mm512_mask2_permutex2var_epi16(__A,__I,__U,__B); 1776}1777__m512i test_mm512_permutex2var_epi16(__m512i __A, __m512i __I, __m512i __B) {1778 // CHECK-LABEL: test_mm512_permutex2var_epi161779 // CHECK: @llvm.x86.avx512.vpermi2var.hi.5121780 return _mm512_permutex2var_epi16(__A,__I,__B); 1781}1782__m512i test_mm512_mask_permutex2var_epi16(__m512i __A, __mmask32 __U, __m512i __I, __m512i __B) {1783 // CHECK-LABEL: test_mm512_mask_permutex2var_epi161784 // CHECK: @llvm.x86.avx512.vpermi2var.hi.5121785 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}1786 return _mm512_mask_permutex2var_epi16(__A,__U,__I,__B); 1787}1788__m512i test_mm512_maskz_permutex2var_epi16(__mmask32 __U, __m512i __A, __m512i __I, __m512i __B) {1789 // CHECK-LABEL: test_mm512_maskz_permutex2var_epi161790 // CHECK: @llvm.x86.avx512.vpermi2var.hi.5121791 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}1792 return _mm512_maskz_permutex2var_epi16(__U,__A,__I,__B); 1793}1794 1795TEST_CONSTEXPR(match_v32hi(1796 _mm512_permutex2var_epi16(1797 (__m512i)(__v32hi){1798 0, 10, 20, 30, 40, 50, 60, 70,1799 80, 90, 100, 110, 120, 130, 140, 150,1800 160, 170, 180, 190, 200, 210, 220, 230,1801 240, 250, 260, 270, 280, 290, 300, 310},1802 (__m512i)(__v32hi){1803 0, 32, 1, 33, 2, 34, 3, 35,1804 4, 36, 5, 37, 6, 38, 7, 39,1805 8, 40, 9, 41, 10, 42, 11, 43,1806 12, 44, 13, 45, 14, 46, 15, 47},1807 (__m512i)(__v32hi){1808 400, 410, 420, 430, 440, 450, 460, 470,1809 480, 490, 500, 510, 520, 530, 540, 550,1810 560, 570, 580, 590, 600, 610, 620, 630,1811 640, 650, 660, 670, 680, 690, 700, 710}),1812 0, 400, 10, 410, 20, 420, 30, 430,1813 40, 440, 50, 450, 60, 460, 70, 470,1814 80, 480, 90, 490, 100, 500, 110, 510,1815 120, 520, 130, 530, 140, 540, 150, 550));1816TEST_CONSTEXPR(match_v32hi(1817 _mm512_mask_permutex2var_epi16(1818 (__m512i)(__v32hi){1819 -1, -2, -3, -4, -5, -6, -7, -8,1820 -9, -10, -11, -12, -13, -14, -15, -16,1821 -17, -18, -19, -20, -21, -22, -23, -24,1822 -25, -26, -27, -28, -29, -30, -31, -32},1823 0xAAAAAAAA,1824 (__m512i)(__v32hi){1825 0, 32, 1, 33, 2, 34, 3, 35,1826 4, 36, 5, 37, 6, 38, 7, 39,1827 8, 40, 9, 41, 10, 42, 11, 43,1828 12, 44, 13, 45, 14, 46, 15, 47},1829 (__m512i)(__v32hi){1830 400, 410, 420, 430, 440, 450, 460, 470,1831 480, 490, 500, 510, 520, 530, 540, 550,1832 560, 570, 580, 590, 600, 610, 620, 630,1833 640, 650, 660, 670, 680, 690, 700, 710}),1834 -1, 400, -3, 410, -5, 420, -7, 430,1835 -9, 440, -11, 450, -13, 460, -15, 470,1836 -17, 480, -19, 490, -21, 500, -23, 510,1837 -25, 520, -27, 530, -29, 540, -31, 550));1838TEST_CONSTEXPR(match_v32hi(1839 _mm512_maskz_permutex2var_epi16(1840 0x55555555,1841 (__m512i)(__v32hi){1842 0, 10, 20, 30, 40, 50, 60, 70,1843 80, 90, 100, 110, 120, 130, 140, 150,1844 160, 170, 180, 190, 200, 210, 220, 230,1845 240, 250, 260, 270, 280, 290, 300, 310},1846 (__m512i)(__v32hi){1847 0, 32, 1, 33, 2, 34, 3, 35,1848 4, 36, 5, 37, 6, 38, 7, 39,1849 8, 40, 9, 41, 10, 42, 11, 43,1850 12, 44, 13, 45, 14, 46, 15, 47},1851 (__m512i)(__v32hi){1852 400, 410, 420, 430, 440, 450, 460, 470,1853 480, 490, 500, 510, 520, 530, 540, 550,1854 560, 570, 580, 590, 600, 610, 620, 630,1855 640, 650, 660, 670, 680, 690, 700, 710}),1856 0, 0, 10, 0, 20, 0, 30, 0,1857 40, 0, 50, 0, 60, 0, 70, 0,1858 80, 0, 90, 0, 100, 0, 110, 0,1859 120, 0, 130, 0, 140, 0, 150, 0));1860 1861TEST_CONSTEXPR(match_v64qu(1862 _mm512_permutex2var_epi8(1863 (__m512i)(__v64qu){1864 0, 10, 20, 30, 40, 50, 60, 70,1865 80, 90, 100, 110, 120, 127, 126, 125,1866 124, 123, 122, 121, 120, 119, 118, 117,1867 116, 115, 114, 113, 112, 111, 110, 109,1868 108, 107, 106, 105, 104, 103, 102, 101,1869 100, 99, 98, 97, 96, 95, 94, 93,1870 92, 91, 90, 89, 88, 87, 86, 85,1871 84, 83, 82, 81, 80, 79, 78, 77},1872 (__m512i)(__v64qu){1873 0, 64, 1, 65, 2, 66, 3, 67,1874 4, 68, 5, 69, 6, 70, 7, 71,1875 8, 72, 9, 73, 10, 74, 11, 75,1876 12, 76, 13, 77, 14, 78, 15, 79,1877 16, 80, 17, 81, 18, 82, 19, 83,1878 20, 84, 21, 85, 22, 86, 23, 87,1879 24, 88, 25, 89, 26, 90, 27, 91,1880 28, 92, 29, 93, 30, 94, 31, 95},1881 (__m512i)(__v64qu){1882 200, 210, 220, 230, 240, 250, 254, 253,1883 252, 251, 250, 249, 248, 247, 246, 245,1884 244, 243, 242, 241, 240, 239, 238, 237,1885 236, 235, 234, 233, 232, 231, 230, 229,1886 228, 227, 226, 225, 224, 223, 222, 221,1887 220, 219, 218, 217, 216, 215, 214, 213,1888 212, 211, 210, 209, 208, 207, 206, 205,1889 204, 203, 202, 201, 200, 199, 198, 197}),1890 0, 200, 10, 210, 20, 220, 30, 230,1891 40, 240, 50, 250, 60, 254, 70, 253,1892 80, 252, 90, 251, 100, 250, 110, 249,1893 120, 248, 127, 247, 126, 246, 125, 245,1894 124, 244, 123, 243, 122, 242, 121, 241,1895 120, 240, 119, 239, 118, 238, 117, 237,1896 116, 236, 115, 235, 114, 234, 113, 233,1897 112, 232, 111, 231, 110, 230, 109, 229));1898TEST_CONSTEXPR(match_v32hi(1899 _mm512_mask2_permutex2var_epi16(1900 (__m512i)(__v32hi){1901 0, 10, 20, 30, 40, 50, 60, 70,1902 80, 90, 100, 110, 120, 130, 140, 150,1903 160, 170, 180, 190, 200, 210, 220, 230,1904 240, 250, 260, 270, 280, 290, 300, 310},1905 (__m512i)(__v32hi){1906 0, 32, 1, 33, 2, 34, 3, 35,1907 4, 36, 5, 37, 6, 38, 7, 39,1908 8, 40, 9, 41, 10, 42, 11, 43,1909 12, 44, 13, 45, 14, 46, 15, 47},1910 0x55555555,1911 (__m512i)(__v32hi){1912 400, 410, 420, 430, 440, 450, 460, 470,1913 480, 490, 500, 510, 520, 530, 540, 550,1914 560, 570, 580, 590, 600, 610, 620, 630,1915 640, 650, 660, 670, 680, 690, 700, 710}),1916 0, 32, 10, 33, 20, 34, 30, 35,1917 40, 36, 50, 37, 60, 38, 70, 39,1918 80, 40, 90, 41, 100, 42, 110, 43,1919 120, 44, 130, 45, 140, 46, 150, 47));1920 1921__m512i test_mm512_mulhrs_epi16(__m512i __A, __m512i __B) {1922 // CHECK-LABEL: test_mm512_mulhrs_epi161923 // CHECK: @llvm.x86.avx512.pmul.hr.sw.5121924 return _mm512_mulhrs_epi16(__A,__B); 1925}1926TEST_CONSTEXPR(match_v32hi(_mm512_mulhrs_epi16((__m512i)(__v32hi){+100, +200, -300, -400, +500, +600, -700, +800, -900, -1000, +1100, +1200, -1300, -1400, +1500, +1600, -1700, -1800, +1900, +2000, -2100, -2200, +2300, +2400, -2500, -2600, +2700, +2800, -2900, -3000, +3100, +3200}, (__m512i)(__v32hi){+3200, -3100, +3000, -2900, +2800, -2700, +2600, -2500, +2400, -2300, +2200, -2100, +2000, -1900, +1800, -1700, +1600, -1500, +1400, -1300, +1200, -1100, +1000, -900, +800, -700, +600, -500, +400, -300, +200, -100}), +10, -19, -27, +35, +43, -49, -56, -61, -66, +70, +74, -77, -79, +81, +82, -83, -83, +82, +81, -79, -77, +74, +70, -66, -61, +56, +49, -43, -35, +27, +19, -10));1927 1928__m512i test_mm512_mask_mulhrs_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {1929 // CHECK-LABEL: test_mm512_mask_mulhrs_epi161930 // CHECK: @llvm.x86.avx512.pmul.hr.sw.5121931 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}1932 return _mm512_mask_mulhrs_epi16(__W,__U,__A,__B); 1933}1934TEST_CONSTEXPR(match_v32hi(_mm512_mask_mulhrs_epi16(_mm512_set1_epi16(1), 0x0000FFFF, (__m512i)(__v32hi){+100, +200, -300, -400, +500, +600, -700, +800, -900, -1000, +1100, +1200, -1300, -1400, +1500, +1600, -1700, -1800, +1900, +2000, -2100, -2200, +2300, +2400, -2500, -2600, +2700, +2800, -2900, -3000, +3100, +3200}, (__m512i)(__v32hi){+3200, -3100, +3000, -2900, +2800, -2700, +2600, -2500, +2400, -2300, +2200, -2100, +2000, -1900, +1800, -1700, +1600, -1500, +1400, -1300, +1200, -1100, +1000, -900, +800, -700, +600, -500, +400, -300, +200, -100}), +10, -19, -27, +35, +43, -49, -56, -61, -66, +70, +74, -77, -79, +81, +82, -83, +1, +1, +1, +1, +1, +1, +1, +1, +1, +1, +1, +1, +1, +1, +1, +1));1935 1936__m512i test_mm512_maskz_mulhrs_epi16(__mmask32 __U, __m512i __A, __m512i __B) {1937 // CHECK-LABEL: test_mm512_maskz_mulhrs_epi161938 // CHECK: @llvm.x86.avx512.pmul.hr.sw.5121939 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}1940 return _mm512_maskz_mulhrs_epi16(__U,__A,__B); 1941}1942TEST_CONSTEXPR(match_v32hi(_mm512_maskz_mulhrs_epi16(0x0000FFFF, (__m512i)(__v32hi){+100, +200, -300, -400, +500, +600, -700, +800, -900, -1000, +1100, +1200, -1300, -1400, +1500, +1600, -1700, -1800, +1900, +2000, -2100, -2200, +2300, +2400, -2500, -2600, +2700, +2800, -2900, -3000, +3100, +3200}, (__m512i)(__v32hi){+3200, -3100, +3000, -2900, +2800, -2700, +2600, -2500, +2400, -2300, +2200, -2100, +2000, -1900, +1800, -1700, +1600, -1500, +1400, -1300, +1200, -1100, +1000, -900, +800, -700, +600, -500, +400, -300, +200, -100}), +10, -19, -27, +35, +43, -49, -56, -61, -66, +70, +74, -77, -79, +81, +82, -83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));1943 1944__m512i test_mm512_mulhi_epi16(__m512i __A, __m512i __B) {1945 // CHECK-LABEL: test_mm512_mulhi_epi161946 // CHECK: @llvm.x86.avx512.pmulh.w.5121947 return _mm512_mulhi_epi16(__A,__B); 1948}1949TEST_CONSTEXPR(match_v32hi(_mm512_mulhi_epi16((__m512i)(__v32hi){+1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16, +17, -18, +19, -20, +21, -22, +23, -24, +25, -26, +27, -28, +29, -30, +31, -32}, (__m512i)(__v32hi){-64, -62, +60, +58, -56, -54, +52, +50, -48, -46, +44, +42, -40, -38, +36, +34, -32, -30, +28, +26, -24, -22, +20, +18, -16, -14, +12, +10, -8, +6, -4, +2}), -1, 0, 0, -1, -1, 0, 0, -1, -1, 0, 0, -1, -1, 0, 0, -1, -1, 0, 0, -1, -1, 0, 0, -1, -1, 0, 0, -1, -1, -1, -1, -1));1950 1951__m512i test_mm512_mask_mulhi_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {1952 // CHECK-LABEL: test_mm512_mask_mulhi_epi161953 // CHECK: @llvm.x86.avx512.pmulh.w.5121954 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}1955 return _mm512_mask_mulhi_epi16(__W,__U,__A,__B); 1956}1957TEST_CONSTEXPR(match_v32hi(_mm512_mask_mulhi_epi16(_mm512_set1_epi16(1), 0xF00FF00F, (__m512i)(__v32hi){+1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16, +17, -18, +19, -20, +21, -22, +23, -24, +25, -26, +27, -28, +29, -30, +31, -32}, (__m512i)(__v32hi){-64, -62, +60, +58, -56, -54, +52, +50, -48, -46, +44, +42, -40, -38, +36, +34, -32, -30, +28, +26, -24, -22, +20, +18, -16, -14, +12, +10, -8, +6, -4, +2}), -1, 0, 0, -1, 1, 1, 1, 1, 1, 1, 1, 1, -1, 0, 0, -1, -1, 0, 0, -1, 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1));1958 1959__m512i test_mm512_maskz_mulhi_epi16(__mmask32 __U, __m512i __A, __m512i __B) {1960 // CHECK-LABEL: test_mm512_maskz_mulhi_epi161961 // CHECK: @llvm.x86.avx512.pmulh.w.5121962 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}1963 return _mm512_maskz_mulhi_epi16(__U,__A,__B); 1964}1965TEST_CONSTEXPR(match_v32hi(_mm512_maskz_mulhi_epi16(0x0FF00FF0, (__m512i)(__v32hi){+1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16, +17, -18, +19, -20, +21, -22, +23, -24, +25, -26, +27, -28, +29, -30, +31, -32}, (__m512i)(__v32hi){-64, -62, +60, +58, -56, -54, +52, +50, -48, -46, +44, +42, -40, -38, +36, +34, -32, -30, +28, +26, -24, -22, +20, +18, -16, -14, +12, +10, -8, +6, -4, +2}), 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, -1, 0, 0, 0, 0));1966 1967__m512i test_mm512_mulhi_epu16(__m512i __A, __m512i __B) {1968 // CHECK-LABEL: test_mm512_mulhi_epu161969 // CHECK: @llvm.x86.avx512.pmulhu.w.5121970 return _mm512_mulhi_epu16(__A,__B); 1971}1972TEST_CONSTEXPR(match_v32hi(_mm512_mulhi_epu16((__m512i)(__v32hi){+1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16, +17, -18, +19, -20, +21, -22, +23, -24, +25, -26, +27, -28, +29, -30, +31, -32}, (__m512i)(__v32hi){-64, -62, +60, +58, -56, -54, +52, +50, -48, -46, +44, +42, -40, -38, +36, +34, -32, -30, +28, +26, -24, -22, +20, +18, -16, -14, +12, +10, -8, +6, -4, +2}), 0, -64, 0, 57, 4, -60, 0, 49, 8, -56, 0, 41, 12, -52, 0, 33, 16, -48, 0, 25, 20, -44, 0, 17, 24, -40, 0, 9, 28, 5, 30, 1));1973 1974__m512i test_mm512_mask_mulhi_epu16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {1975 // CHECK-LABEL: test_mm512_mask_mulhi_epu161976 // CHECK: @llvm.x86.avx512.pmulhu.w.5121977 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}1978 return _mm512_mask_mulhi_epu16(__W,__U,__A,__B); 1979}1980TEST_CONSTEXPR(match_v32hi(_mm512_mask_mulhi_epu16(_mm512_set1_epi16(1), 0x0FF00FF0, (__m512i)(__v32hi){+1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16, +17, -18, +19, -20, +21, -22, +23, -24, +25, -26, +27, -28, +29, -30, +31, -32}, (__m512i)(__v32hi){-64, -62, +60, +58, -56, -54, +52, +50, -48, -46, +44, +42, -40, -38, +36, +34, -32, -30, +28, +26, -24, -22, +20, +18, -16, -14, +12, +10, -8, +6, -4, +2}), 1, 1, 1, 1, 4, -60, 0, 49, 8, -56, 0, 41, 1, 1, 1, 1, 1, 1, 1, 1, 20, -44, 0, 17, 24, -40, 0, 9, 1, 1, 1, 1));1981 1982__m512i test_mm512_maskz_mulhi_epu16(__mmask32 __U, __m512i __A, __m512i __B) {1983 // CHECK-LABEL: test_mm512_maskz_mulhi_epu161984 // CHECK: @llvm.x86.avx512.pmulhu.w.5121985 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}1986 return _mm512_maskz_mulhi_epu16(__U,__A,__B); 1987}1988TEST_CONSTEXPR(match_v32hi(_mm512_maskz_mulhi_epu16(0xF00FF00F, (__m512i)(__v32hi){+1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16, +17, -18, +19, -20, +21, -22, +23, -24, +25, -26, +27, -28, +29, -30, +31, -32}, (__m512i)(__v32hi){-64, -62, +60, +58, -56, -54, +52, +50, -48, -46, +44, +42, -40, -38, +36, +34, -32, -30, +28, +26, -24, -22, +20, +18, -16, -14, +12, +10, -8, +6, -4, +2}), 0, -64, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 12, -52, 0, 33, 16, -48, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 28, 5, 30, 1));1989 1990__m512i test_mm512_maddubs_epi16(__m512i __X, __m512i __Y) {1991 // CHECK-LABEL: test_mm512_maddubs_epi161992 // CHECK: @llvm.x86.avx512.pmaddubs.w.5121993 return _mm512_maddubs_epi16(__X,__Y); 1994}1995TEST_CONSTEXPR(match_v32hi(_mm512_maddubs_epi16((__m512i)(__v64qi){2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3}, (__m512i)(__v64qs){5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5}), -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5));1996 1997__m512i test_mm512_mask_maddubs_epi16(__m512i __W, __mmask32 __U, __m512i __X, __m512i __Y) {1998 // CHECK-LABEL: test_mm512_mask_maddubs_epi161999 // CHECK: @llvm.x86.avx512.pmaddubs.w.5122000 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2001 return _mm512_mask_maddubs_epi16(__W,__U,__X,__Y); 2002}2003TEST_CONSTEXPR(match_v32hi(_mm512_mask_maddubs_epi16((__m512i)(__v32hi){-1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -19, -20, -21, -22, -23, -24, -25, -26, -27, -28, -29, -30, -31, -32}, 0x0000FFFF, (__m512i)(__v64qi){2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3}, (__m512i)(__v64qs){5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5}), -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -17, -18, -19, -20, -21, -22, -23, -24, -25, -26, -27, -28, -29, -30, -31, -32));2004 2005__m512i test_mm512_maskz_maddubs_epi16(__mmask32 __U, __m512i __X, __m512i __Y) {2006 // CHECK-LABEL: test_mm512_maskz_maddubs_epi162007 // CHECK: @llvm.x86.avx512.pmaddubs.w.5122008 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2009 return _mm512_maskz_maddubs_epi16(__U,__X,__Y); 2010}2011TEST_CONSTEXPR(match_v32hi(_mm512_maskz_maddubs_epi16(0x0000FFFF, (__m512i)(__v64qi){2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3}, (__m512i)(__v64qs){5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5, 5, -5}), -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));2012 2013__m512i test_mm512_madd_epi16(__m512i __A, __m512i __B) {2014 // CHECK-LABEL: test_mm512_madd_epi162015 // CHECK: @llvm.x86.avx512.pmaddw.d.5122016 return _mm512_madd_epi16(__A,__B); 2017}2018TEST_CONSTEXPR(match_v16si(_mm512_madd_epi16((__m512i)(__v32hi){1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4}, (__m512i)(__v32hi){1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8}), 3, 7, 22, 30, 9, 21, 44, 60, 3, 7, 22, 30, 9, 21, 44, 60));2019 2020__m512i test_mm512_mask_madd_epi16(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {2021 // CHECK-LABEL: test_mm512_mask_madd_epi162022 // CHECK: @llvm.x86.avx512.pmaddw.d.5122023 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}2024 return _mm512_mask_madd_epi16(__W,__U,__A,__B); 2025}2026TEST_CONSTEXPR(match_v16si(_mm512_mask_madd_epi16((__m512i)(__v16si){100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500, 1600}, 0xF0F0, (__m512i)(__v32hi){1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4}, (__m512i)(__v32hi){1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8}), 100, 200, 300, 400, 9, 21, 44, 60, 900, 1000, 1100, 1200, 9, 21, 44, 60));2027 2028__m512i test_mm512_maskz_madd_epi16(__mmask16 __U, __m512i __A, __m512i __B) {2029 // CHECK-LABEL: test_mm512_maskz_madd_epi162030 // CHECK: @llvm.x86.avx512.pmaddw.d.5122031 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}2032 return _mm512_maskz_madd_epi16(__U,__A,__B); 2033}2034TEST_CONSTEXPR(match_v16si(_mm512_maskz_madd_epi16(0xF0F0, (__m512i)(__v32hi){1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4}, (__m512i)(__v32hi){1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8}), 0, 0, 0, 0, 9, 21, 44, 60, 0, 0, 0, 0, 9, 21, 44, 60));2035 2036__m256i test_mm512_cvtsepi16_epi8(__m512i __A) {2037 // CHECK-LABEL: test_mm512_cvtsepi16_epi82038 // CHECK: @llvm.x86.avx512.mask.pmovs.wb.5122039 return _mm512_cvtsepi16_epi8(__A); 2040}2041 2042__m256i test_mm512_mask_cvtsepi16_epi8(__m256i __O, __mmask32 __M, __m512i __A) {2043 // CHECK-LABEL: test_mm512_mask_cvtsepi16_epi82044 // CHECK: @llvm.x86.avx512.mask.pmovs.wb.5122045 return _mm512_mask_cvtsepi16_epi8(__O, __M, __A); 2046}2047 2048__m256i test_mm512_maskz_cvtsepi16_epi8(__mmask32 __M, __m512i __A) {2049 // CHECK-LABEL: test_mm512_maskz_cvtsepi16_epi82050 // CHECK: @llvm.x86.avx512.mask.pmovs.wb.5122051 return _mm512_maskz_cvtsepi16_epi8(__M, __A); 2052}2053 2054__m256i test_mm512_cvtusepi16_epi8(__m512i __A) {2055 // CHECK-LABEL: test_mm512_cvtusepi16_epi82056 // CHECK: @llvm.x86.avx512.mask.pmovus.wb.5122057 return _mm512_cvtusepi16_epi8(__A); 2058}2059 2060__m256i test_mm512_mask_cvtusepi16_epi8(__m256i __O, __mmask32 __M, __m512i __A) {2061 // CHECK-LABEL: test_mm512_mask_cvtusepi16_epi82062 // CHECK: @llvm.x86.avx512.mask.pmovus.wb.5122063 return _mm512_mask_cvtusepi16_epi8(__O, __M, __A); 2064}2065 2066__m256i test_mm512_maskz_cvtusepi16_epi8(__mmask32 __M, __m512i __A) {2067 // CHECK-LABEL: test_mm512_maskz_cvtusepi16_epi82068 // CHECK: @llvm.x86.avx512.mask.pmovus.wb.5122069 return _mm512_maskz_cvtusepi16_epi8(__M, __A); 2070}2071 2072__m256i test_mm512_cvtepi16_epi8(__m512i __A) {2073 // CHECK-LABEL: test_mm512_cvtepi16_epi82074 // CHECK: trunc <32 x i16> %{{.*}} to <32 x i8>2075 return _mm512_cvtepi16_epi8(__A); 2076}2077 2078__m256i test_mm512_mask_cvtepi16_epi8(__m256i __O, __mmask32 __M, __m512i __A) {2079 // CHECK-LABEL: test_mm512_mask_cvtepi16_epi82080 // CHECK: trunc <32 x i16> %{{.*}} to <32 x i8>2081 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}2082 return _mm512_mask_cvtepi16_epi8(__O, __M, __A); 2083}2084 2085__m256i test_mm512_maskz_cvtepi16_epi8(__mmask32 __M, __m512i __A) {2086 // CHECK-LABEL: test_mm512_maskz_cvtepi16_epi82087 // CHECK: trunc <32 x i16> %{{.*}} to <32 x i8>2088 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}2089 return _mm512_maskz_cvtepi16_epi8(__M, __A); 2090}2091 2092__m512i test_mm512_unpackhi_epi8(__m512i __A, __m512i __B) {2093 // CHECK-LABEL: test_mm512_unpackhi_epi82094 // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 8, i32 72, i32 9, i32 73, i32 10, i32 74, i32 11, i32 75, i32 12, i32 76, i32 13, i32 77, i32 14, i32 78, i32 15, i32 79, i32 24, i32 88, i32 25, i32 89, i32 26, i32 90, i32 27, i32 91, i32 28, i32 92, i32 29, i32 93, i32 30, i32 94, i32 31, i32 95, i32 40, i32 104, i32 41, i32 105, i32 42, i32 106, i32 43, i32 107, i32 44, i32 108, i32 45, i32 109, i32 46, i32 110, i32 47, i32 111, i32 56, i32 120, i32 57, i32 121, i32 58, i32 122, i32 59, i32 123, i32 60, i32 124, i32 61, i32 125, i32 62, i32 126, i32 63, i32 127>2095 return _mm512_unpackhi_epi8(__A, __B); 2096}2097TEST_CONSTEXPR(match_v64qi(_mm512_unpackhi_epi8((__m512i)(__v64qi){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63}, (__m512i)(__v64qi){64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127}), 8, 72, 9, 73, 10, 74, 11, 75, 12, 76, 13, 77, 14, 78, 15, 79, 24, 88, 25, 89, 26, 90, 27, 91, 28, 92, 29, 93, 30, 94, 31, 95, 40, 104, 41, 105, 42, 106, 43, 107, 44, 108, 45, 109, 46, 110, 47, 111, 56, 120, 57, 121, 58, 122, 59, 123, 60, 124, 61, 125, 62, 126, 63, 127));2098 2099__m512i test_mm512_mask_unpackhi_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {2100 // CHECK-LABEL: test_mm512_mask_unpackhi_epi82101 // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 8, i32 72, i32 9, i32 73, i32 10, i32 74, i32 11, i32 75, i32 12, i32 76, i32 13, i32 77, i32 14, i32 78, i32 15, i32 79, i32 24, i32 88, i32 25, i32 89, i32 26, i32 90, i32 27, i32 91, i32 28, i32 92, i32 29, i32 93, i32 30, i32 94, i32 31, i32 95, i32 40, i32 104, i32 41, i32 105, i32 42, i32 106, i32 43, i32 107, i32 44, i32 108, i32 45, i32 109, i32 46, i32 110, i32 47, i32 111, i32 56, i32 120, i32 57, i32 121, i32 58, i32 122, i32 59, i32 123, i32 60, i32 124, i32 61, i32 125, i32 62, i32 126, i32 63, i32 127>2102 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}2103 return _mm512_mask_unpackhi_epi8(__W, __U, __A, __B); 2104}2105TEST_CONSTEXPR(match_v64qi(_mm512_mask_unpackhi_epi8((__m512i)(__v64qs){1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,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,63,64},(__mmask64)0xFAAAAAAAAAAAAAAA,(__m512i)(__v64qs){100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,-128,-127,-126,-125,-124,-123,-122,-121,-120,-119,-118,-117,-116,-115,-114,-113,-112,-111,-110,-109,-108,-107,-106,-105,-104,-103,-102,-101,-100,-99,-98,-97,-96,-95,-94,-93,-92,-91,-90,-89},(__m512i)(__v64qs){-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23,-24,-25,-26,-27,-28,-29,-30,-31,-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,-63,-64}),1,-9,3,-10,5,-11,7,-12,9,-13,11,-14,13,-15,15,-16,17,-25,19,-26,21,-27,23,-28,25,-29,27,-30,29,-31,31,-32,33,-41,35,-42,37,-43,39,-44,41,-45,43,-46,45,-47,47,-48,49,-57,51,-58,53,-59,55,-60,57,-61,59,-62,-90,-63,-89,-64));2106 2107__m512i test_mm512_maskz_unpackhi_epi8(__mmask64 __U, __m512i __A, __m512i __B) {2108 // CHECK-LABEL: test_mm512_maskz_unpackhi_epi82109 // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 8, i32 72, i32 9, i32 73, i32 10, i32 74, i32 11, i32 75, i32 12, i32 76, i32 13, i32 77, i32 14, i32 78, i32 15, i32 79, i32 24, i32 88, i32 25, i32 89, i32 26, i32 90, i32 27, i32 91, i32 28, i32 92, i32 29, i32 93, i32 30, i32 94, i32 31, i32 95, i32 40, i32 104, i32 41, i32 105, i32 42, i32 106, i32 43, i32 107, i32 44, i32 108, i32 45, i32 109, i32 46, i32 110, i32 47, i32 111, i32 56, i32 120, i32 57, i32 121, i32 58, i32 122, i32 59, i32 123, i32 60, i32 124, i32 61, i32 125, i32 62, i32 126, i32 63, i32 127>2110 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}2111 return _mm512_maskz_unpackhi_epi8(__U, __A, __B); 2112}2113TEST_CONSTEXPR(match_v64qi(_mm512_maskz_unpackhi_epi8((__mmask64)0xFAAAAAAAAAAAAAAA,(__m512i)(__v64qs){100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,-128,-127,-126,-125,-124,-123,-122,-121,-120,-119,-118,-117,-116,-115,-114,-113,-112,-111,-110,-109,-108,-107,-106,-105,-104,-103,-102,-101,-100,-99,-98,-97,-96,-95,-94,-93,-92,-91,-90,-89},(__m512i)(__v64qs){-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23,-24,-25,-26,-27,-28,-29,-30,-31,-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,-63,-64}),0,-9,0,-10,0,-11,0,-12,0,-13,0,-14,0,-15,0,-16,0,-25,0,-26,0,-27,0,-28,0,-29,0,-30,0,-31,0,-32,0,-41,0,-42,0,-43,0,-44,0,-45,0,-46,0,-47,0,-48,0,-57,0,-58,0,-59,0,-60,0,-61,0,-62,-90,-63,-89,-64));2114 2115__m512i test_mm512_unpackhi_epi16(__m512i __A, __m512i __B) {2116 // CHECK-LABEL: test_mm512_unpackhi_epi162117 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 4, i32 36, i32 5, i32 37, i32 6, i32 38, i32 7, i32 39, i32 12, i32 44, i32 13, i32 45, i32 14, i32 46, i32 15, i32 47, i32 20, i32 52, i32 21, i32 53, i32 22, i32 54, i32 23, i32 55, i32 28, i32 60, i32 29, i32 61, i32 30, i32 62, i32 31, i32 63>2118 return _mm512_unpackhi_epi16(__A, __B); 2119}2120TEST_CONSTEXPR(match_v32hi(_mm512_unpackhi_epi16((__m512i)(__v32hi){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}, (__m512i)(__v32hi){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, 63}), 4, 36, 5, 37, 6, 38, 7, 39, 12, 44, 13, 45, 14, 46, 15, 47, 20, 52, 21, 53, 22, 54, 23, 55, 28, 60, 29, 61, 30, 62, 31, 63));2121 2122 2123__m512i test_mm512_mask_unpackhi_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {2124 // CHECK-LABEL: test_mm512_mask_unpackhi_epi162125 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 4, i32 36, i32 5, i32 37, i32 6, i32 38, i32 7, i32 39, i32 12, i32 44, i32 13, i32 45, i32 14, i32 46, i32 15, i32 47, i32 20, i32 52, i32 21, i32 53, i32 22, i32 54, i32 23, i32 55, i32 28, i32 60, i32 29, i32 61, i32 30, i32 62, i32 31, i32 63>2126 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2127 return _mm512_mask_unpackhi_epi16(__W, __U, __A, __B); 2128}2129TEST_CONSTEXPR(match_v32hi(_mm512_mask_unpackhi_epi16((__m512i)(__v32hi){1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32},(__mmask32)0xFAAAAAAAu,(__m512i)(__v32hi){100,101,102,103,104,105,106,107,110,111,112,113,114,115,116,117,120,121,122,123,124,125,126,127,130,131,132,133,134,135,136,137},(__m512i)(__v32hi){200,201,202,203,204,205,206,207,210,211,212,213,214,215,216,217,220,221,222,223,224,225,226,227,230,231,232,233,234,235,236,237}),1,204,3,205,5,206,7,207,9,214,11,215,13,216,15,217,17,224,19,225,21,226,23,227,25,234,27,235,136,236,137,237));2130 2131__m512i test_mm512_maskz_unpackhi_epi16(__mmask32 __U, __m512i __A, __m512i __B) {2132 // CHECK-LABEL: test_mm512_maskz_unpackhi_epi162133 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 4, i32 36, i32 5, i32 37, i32 6, i32 38, i32 7, i32 39, i32 12, i32 44, i32 13, i32 45, i32 14, i32 46, i32 15, i32 47, i32 20, i32 52, i32 21, i32 53, i32 22, i32 54, i32 23, i32 55, i32 28, i32 60, i32 29, i32 61, i32 30, i32 62, i32 31, i32 63>2134 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2135 return _mm512_maskz_unpackhi_epi16(__U, __A, __B); 2136}2137TEST_CONSTEXPR(match_v32hi(_mm512_maskz_unpackhi_epi16((__mmask32)0xFAAAAAAAu,(__m512i)(__v32hi){100,101,102,103,104,105,106,107,110,111,112,113,114,115,116,117,120,121,122,123,124,125,126,127,130,131,132,133,134,135,136,137},(__m512i)(__v32hi){200,201,202,203,204,205,206,207,210,211,212,213,214,215,216,217,220,221,222,223,224,225,226,227,230,231,232,233,234,235,236,237}),0,204,0,205,0,206,0,207,0,214,0,215,0,216,0,217,0,224,0,225,0,226,0,227,0,234,0,235,136,236,137,237));2138 2139__m512i test_mm512_unpacklo_epi8(__m512i __A, __m512i __B) {2140 // CHECK-LABEL: test_mm512_unpacklo_epi82141 // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 0, i32 64, i32 1, i32 65, i32 2, i32 66, i32 3, i32 67, i32 4, i32 68, i32 5, i32 69, i32 6, i32 70, i32 7, i32 71, i32 16, i32 80, i32 17, i32 81, i32 18, i32 82, i32 19, i32 83, i32 20, i32 84, i32 21, i32 85, i32 22, i32 86, i32 23, i32 87, i32 32, i32 96, i32 33, i32 97, i32 34, i32 98, i32 35, i32 99, i32 36, i32 100, i32 37, i32 101, i32 38, i32 102, i32 39, i32 103, i32 48, i32 112, i32 49, i32 113, i32 50, i32 114, i32 51, i32 115, i32 52, i32 116, i32 53, i32 117, i32 54, i32 118, i32 55, i32 119>2142 return _mm512_unpacklo_epi8(__A, __B); 2143}2144TEST_CONSTEXPR(match_v64qi(_mm512_unpacklo_epi8((__m512i)(__v64qi){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63}, (__m512i)(__v64qi){64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127}), 0, 64, 1, 65, 2, 66, 3, 67, 4, 68, 5, 69, 6, 70, 7, 71, 16, 80, 17, 81, 18, 82, 19, 83, 20, 84, 21, 85, 22, 86, 23, 87, 32, 96, 33, 97, 34, 98, 35, 99, 36, 100, 37, 101, 38, 102, 39, 103, 48, 112, 49, 113, 50, 114, 51, 115, 52, 116, 53, 117, 54, 118, 55, 119));2145 2146__m512i test_mm512_mask_unpacklo_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {2147 // CHECK-LABEL: test_mm512_mask_unpacklo_epi82148 // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 0, i32 64, i32 1, i32 65, i32 2, i32 66, i32 3, i32 67, i32 4, i32 68, i32 5, i32 69, i32 6, i32 70, i32 7, i32 71, i32 16, i32 80, i32 17, i32 81, i32 18, i32 82, i32 19, i32 83, i32 20, i32 84, i32 21, i32 85, i32 22, i32 86, i32 23, i32 87, i32 32, i32 96, i32 33, i32 97, i32 34, i32 98, i32 35, i32 99, i32 36, i32 100, i32 37, i32 101, i32 38, i32 102, i32 39, i32 103, i32 48, i32 112, i32 49, i32 113, i32 50, i32 114, i32 51, i32 115, i32 52, i32 116, i32 53, i32 117, i32 54, i32 118, i32 55, i32 119>2149 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}2150 return _mm512_mask_unpacklo_epi8(__W, __U, __A, __B); 2151}2152TEST_CONSTEXPR(match_v64qi(_mm512_mask_unpacklo_epi8((__m512i)(__v64qs){1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,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,63,64},(__mmask64)0xFAAAAAAAAAAAAAAA,(__m512i)(__v64qs){100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23,-24,-25,-30,-31,-32,-33,-34,-35,-36,-37,-38,-39,-40,-41,-42,-43,-44,-45,-50,-51,-52,-53,-54,-55,-56,-57,-58,-59,-60,-61,-62,-63,-64,-65},(__m512i)(__v64qs){-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75}),1,-1,3,-2,5,-3,7,-4,9,-5,11,-6,13,-7,15,-8,17,20,19,21,21,22,23,23,25,24,27,25,29,26,31,27,33,40,35,41,37,42,39,43,41,44,43,45,45,46,47,47,49,60,51,61,53,62,55,63,57,64,59,65,-56,66,-57,67));2153 2154__m512i test_mm512_maskz_unpacklo_epi8(__mmask64 __U, __m512i __A, __m512i __B) {2155 // CHECK-LABEL: test_mm512_maskz_unpacklo_epi82156 // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 0, i32 64, i32 1, i32 65, i32 2, i32 66, i32 3, i32 67, i32 4, i32 68, i32 5, i32 69, i32 6, i32 70, i32 7, i32 71, i32 16, i32 80, i32 17, i32 81, i32 18, i32 82, i32 19, i32 83, i32 20, i32 84, i32 21, i32 85, i32 22, i32 86, i32 23, i32 87, i32 32, i32 96, i32 33, i32 97, i32 34, i32 98, i32 35, i32 99, i32 36, i32 100, i32 37, i32 101, i32 38, i32 102, i32 39, i32 103, i32 48, i32 112, i32 49, i32 113, i32 50, i32 114, i32 51, i32 115, i32 52, i32 116, i32 53, i32 117, i32 54, i32 118, i32 55, i32 119>2157 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}2158 return _mm512_maskz_unpacklo_epi8(__U, __A, __B); 2159}2160TEST_CONSTEXPR(match_v64qi(_mm512_maskz_unpacklo_epi8((__mmask64)0xFAAAAAAAAAAAAAAA,(__m512i)(__v64qs){100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23,-24,-25,-30,-31,-32,-33,-34,-35,-36,-37,-38,-39,-40,-41,-42,-43,-44,-45,-50,-51,-52,-53,-54,-55,-56,-57,-58,-59,-60,-61,-62,-63,-64,-65},(__m512i)(__v64qs){-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75}),0,-1,0,-2,0,-3,0,-4,0,-5,0,-6,0,-7,0,-8,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,40,0,41,0,42,0,43,0,44,0,45,0,46,0,47,0,60,0,61,0,62,0,63,0,64,0,65,-56,66,-57,67));2161 2162__m512i test_mm512_unpacklo_epi16(__m512i __A, __m512i __B) {2163 // CHECK-LABEL: test_mm512_unpacklo_epi162164 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 0, i32 32, i32 1, i32 33, i32 2, i32 34, i32 3, i32 35, i32 8, i32 40, i32 9, i32 41, i32 10, i32 42, i32 11, i32 43, i32 16, i32 48, i32 17, i32 49, i32 18, i32 50, i32 19, i32 51, i32 24, i32 56, i32 25, i32 57, i32 26, i32 58, i32 27, i32 59>2165 return _mm512_unpacklo_epi16(__A, __B); 2166}2167TEST_CONSTEXPR(match_v32hi(_mm512_unpacklo_epi16((__m512i)(__v32hi){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}, (__m512i)(__v32hi){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, 63}), 0, 32, 1, 33, 2, 34, 3, 35, 8, 40, 9, 41, 10, 42, 11, 43, 16, 48, 17, 49, 18, 50, 19, 51, 24, 56, 25, 57, 26, 58, 27, 59));2168 2169__m512i test_mm512_mask_unpacklo_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {2170 // CHECK-LABEL: test_mm512_mask_unpacklo_epi162171 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 0, i32 32, i32 1, i32 33, i32 2, i32 34, i32 3, i32 35, i32 8, i32 40, i32 9, i32 41, i32 10, i32 42, i32 11, i32 43, i32 16, i32 48, i32 17, i32 49, i32 18, i32 50, i32 19, i32 51, i32 24, i32 56, i32 25, i32 57, i32 26, i32 58, i32 27, i32 59>2172 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2173 return _mm512_mask_unpacklo_epi16(__W, __U, __A, __B); 2174}2175TEST_CONSTEXPR(match_v32hi(_mm512_mask_unpacklo_epi16((__m512i)(__v32hi){1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32},(__mmask32)0xFAAAAAAAu,(__m512i)(__v32hi){100,101,102,103,104,105,106,107,110,111,112,113,114,115,116,117,120,121,122,123,124,125,126,127,130,131,132,133,134,135,136,137},(__m512i)(__v32hi){200,201,202,203,204,205,206,207,210,211,212,213,214,215,216,217,220,221,222,223,224,225,226,227,230,231,232,233,234,235,236,237}),1,200,3,201,5,202,7,203,9,210,11,211,13,212,15,213,17,220,19,221,21,222,23,223,25,230,27,231,132,232,133,233));2176 2177__m512i test_mm512_maskz_unpacklo_epi16(__mmask32 __U, __m512i __A, __m512i __B) {2178 // CHECK-LABEL: test_mm512_maskz_unpacklo_epi162179 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 0, i32 32, i32 1, i32 33, i32 2, i32 34, i32 3, i32 35, i32 8, i32 40, i32 9, i32 41, i32 10, i32 42, i32 11, i32 43, i32 16, i32 48, i32 17, i32 49, i32 18, i32 50, i32 19, i32 51, i32 24, i32 56, i32 25, i32 57, i32 26, i32 58, i32 27, i32 59>2180 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2181 return _mm512_maskz_unpacklo_epi16(__U, __A, __B); 2182}2183TEST_CONSTEXPR(match_v32hi(_mm512_maskz_unpacklo_epi16((__mmask32)0xFAAAAAAAu,(__m512i)(__v32hi){100,101,102,103,104,105,106,107,110,111,112,113,114,115,116,117,120,121,122,123,124,125,126,127,130,131,132,133,134,135,136,137},(__m512i)(__v32hi){200,201,202,203,204,205,206,207,210,211,212,213,214,215,216,217,220,221,222,223,224,225,226,227,230,231,232,233,234,235,236,237}),0,200,0,201,0,202,0,203,0,210,0,211,0,212,0,213,0,220,0,221,0,222,0,223,0,230,0,231,132,232,133,233));2184 2185__m512i test_mm512_cvtepi8_epi16(__m256i __A) {2186 // CHECK-LABEL: test_mm512_cvtepi8_epi162187 // CHECK: sext <32 x i8> %{{.*}} to <32 x i16>2188 return _mm512_cvtepi8_epi16(__A); 2189}2190TEST_CONSTEXPR(match_v32hi(_mm512_cvtepi8_epi16((__m256i)(__v32qs){-3, 2, -1, 0, 1, -2, 3, -4, 5, -6, 7, -8, 9, -10, 11, -12, 13, -14, 15, -16, 17, -18, 19, -20, 21, -22, 23, -24, 25, -26, 27, -28}), -3, 2, -1, 0, 1, -2, 3, -4, 5, -6, 7, -8, 9, -10, 11, -12, 13, -14, 15, -16, 17, -18, 19, -20, 21, -22, 23, -24, 25, -26, 27, -28));2191 2192__m512i test_mm512_mask_cvtepi8_epi16(__m512i __W, __mmask32 __U, __m256i __A) {2193 // CHECK-LABEL: test_mm512_mask_cvtepi8_epi162194 // CHECK: sext <32 x i8> %{{.*}} to <32 x i16>2195 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2196 return _mm512_mask_cvtepi8_epi16(__W, __U, __A); 2197}2198 2199TEST_CONSTEXPR(match_v32hi(_mm512_mask_cvtepi8_epi16(_mm512_set1_epi16(-777), /*1001 1100 0011 1010 0011 1100 1010 0101=*/0x9c3a3ca5, (__m256i)(__v32qs){1, -2, 3, -4, 5, -6, 7, -8, 9, -10, 11, -12, 13, -14, 15, -16, 17, -18, 19, -20, 21, -22, 23, -24, 25, -26, 27, -28, 29, -30, 31, -32}), 1, -777, 3, -777, -777, -6, -777, -8, -777, -777, 11, -12, 13, -14, -777, -777, -777, -18, -777, -20, 21, -22, -777, -777, -777, -777, 27, -28, 29, -777, -777, -32));2200 2201__m512i test_mm512_maskz_cvtepi8_epi16(__mmask32 __U, __m256i __A) {2202 // CHECK-LABEL: test_mm512_maskz_cvtepi8_epi162203 // CHECK: sext <32 x i8> %{{.*}} to <32 x i16>2204 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2205 return _mm512_maskz_cvtepi8_epi16(__U, __A); 2206}2207 2208TEST_CONSTEXPR(match_v32hi(_mm512_maskz_cvtepi8_epi16(/*1001 1100 0011 1010 0011 1100 1010 0101=*/0x9c3a3ca5, (__m256i)(__v32qs){1, -2, 3, -4, 5, -6, 7, -8, 9, -10, 11, -12, 13, -14, 15, -16, 17, -18, 19, -20, 21, -22, 23, -24, 25, -26, 27, -28, 29, -30, 31, -32}), 1, 0, 3, 0, 0, -6, 0, -8, 0, 0, 11, -12, 13, -14, 0, 0, 0, -18, 0, -20, 21, -22, 0, 0, 0, 0, 27, -28, 29, 0, 0, -32));2209 2210__m512i test_mm512_cvtepu8_epi16(__m256i __A) {2211 // CHECK-LABEL: test_mm512_cvtepu8_epi162212 // CHECK: zext <32 x i8> %{{.*}} to <32 x i16>2213 return _mm512_cvtepu8_epi16(__A); 2214}2215TEST_CONSTEXPR(match_v32hi(_mm512_cvtepu8_epi16((__m256i)(__v32qs){-3, 2, -1, 0, 1, -2, 3, -4, 5, -6, 7, -8, 9, -10, 11, -12, 13, -14, 15, -16, 17, -18, 19, -20, 21, -22, 23, -24, 25, -26, 27, -28}), 253, 2, 255, 0, 1, 254, 3, 252, 5, 250, 7, 248, 9, 246, 11, 244, 13, 242, 15, 240, 17, 238, 19, 236, 21, 234, 23, 232, 25, 230, 27, 228));2216 2217__m512i test_mm512_mask_cvtepu8_epi16(__m512i __W, __mmask32 __U, __m256i __A) {2218 // CHECK-LABEL: test_mm512_mask_cvtepu8_epi162219 // CHECK: zext <32 x i8> %{{.*}} to <32 x i16>2220 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2221 return _mm512_mask_cvtepu8_epi16(__W, __U, __A); 2222}2223 2224TEST_CONSTEXPR(match_v32hi(_mm512_mask_cvtepu8_epi16(_mm512_set1_epi16(-777), /*1001 1100 0011 1010 0011 1100 1010 0101=*/0x9c3a3ca5, (__m256i)(__v32qu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}), 1, -777, 3, -777, -777, 6, -777, 8, -777, -777, 11, 12, 13, 14, -777, -777, -777, 18, -777, 20, 21, 22, -777, -777, -777, -777, 27, 28, 29, -777, -777, 32));2225 2226__m512i test_mm512_maskz_cvtepu8_epi16(__mmask32 __U, __m256i __A) {2227 // CHECK-LABEL: test_mm512_maskz_cvtepu8_epi162228 // CHECK: zext <32 x i8> %{{.*}} to <32 x i16>2229 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2230 return _mm512_maskz_cvtepu8_epi16(__U, __A); 2231}2232 2233TEST_CONSTEXPR(match_v32hi(_mm512_maskz_cvtepu8_epi16(/*1001 1100 0011 1010 0011 1100 1010 0101=*/0x9c3a3ca5, (__m256i)(__v32qu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}), 1, 0, 3, 0, 0, 6, 0, 8, 0, 0, 11, 12, 13, 14, 0, 0, 0, 18, 0, 20, 21, 22, 0, 0, 0, 0, 27, 28, 29, 0, 0, 32));2234 2235__m512i test_mm512_shufflehi_epi16(__m512i __A) {2236 // CHECK-LABEL: test_mm512_shufflehi_epi162237 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> poison, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 5, i32 5, i32 4, i32 4, i32 8, i32 9, i32 10, i32 11, i32 13, i32 13, i32 12, i32 12, i32 16, i32 17, i32 18, i32 19, i32 21, i32 21, i32 20, i32 20, i32 24, i32 25, i32 26, i32 27, i32 29, i32 29, i32 28, i32 28>2238 return _mm512_shufflehi_epi16(__A, 5); 2239}2240TEST_CONSTEXPR(match_v32hi(_mm512_shufflehi_epi16((((__m512i)(__v32hi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31})), 5), 0,1,2,3, 5,5,4,4, 8,9,10,11, 13,13,12,12, 16,17,18,19, 21,21,20,20, 24,25,26,27, 29,29,28,28));2241__m512i test_mm512_mask_shufflehi_epi16(__m512i __W, __mmask32 __U, __m512i __A) {2242 // CHECK-LABEL: test_mm512_mask_shufflehi_epi162243 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> poison, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 5, i32 5, i32 4, i32 4, i32 8, i32 9, i32 10, i32 11, i32 13, i32 13, i32 12, i32 12, i32 16, i32 17, i32 18, i32 19, i32 21, i32 21, i32 20, i32 20, i32 24, i32 25, i32 26, i32 27, i32 29, i32 29, i32 28, i32 28>2244 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2245 return _mm512_mask_shufflehi_epi16(__W, __U, __A, 5); 2246}2247TEST_CONSTEXPR(match_v32hi(_mm512_mask_shufflehi_epi16((((__m512i)(__v32hi){100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131})), 0xFFFF0000u, (((__m512i)(__v32hi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31})), 5), 100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115, 16,17,18,19,21,21,20,20, 24,25,26,27,29,29,28,28));2248TEST_CONSTEXPR(match_v32hi(_mm512_mask_shufflehi_epi16(((__m512i)(__v32hi){100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131}), 0x0000FFFFu, ((__m512i)(__v32hi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31}), 5), 0,1,2,3,5,5,4,4, 8,9,10,11,13,13,12,12, 116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131));2249 2250__m512i test_mm512_maskz_shufflehi_epi16(__mmask32 __U, __m512i __A) {2251 // CHECK-LABEL: test_mm512_maskz_shufflehi_epi162252 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> poison, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 5, i32 5, i32 4, i32 4, i32 8, i32 9, i32 10, i32 11, i32 13, i32 13, i32 12, i32 12, i32 16, i32 17, i32 18, i32 19, i32 21, i32 21, i32 20, i32 20, i32 24, i32 25, i32 26, i32 27, i32 29, i32 29, i32 28, i32 28>2253 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2254 return _mm512_maskz_shufflehi_epi16(__U, __A, 5); 2255}2256TEST_CONSTEXPR(match_v32hi(_mm512_maskz_shufflehi_epi16(0xAAAAAAAAu, (((__m512i)(__v32hi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31})), 5), 0,1,0,3,0,5,0,4, 0,9,0,11,0,13,0,12, 0,17,0,19,0,21,0,20, 0,25,0,27,0,29,0,28));2257TEST_CONSTEXPR(match_v32hi(_mm512_maskz_shufflehi_epi16(0x0000FFFFu, ((__m512i)(__v32hi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31}), 5), 0,1,2,3,5,5,4,4, 8,9,10,11,13,13,12,12, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0));2258 2259__m512i test_mm512_shufflelo_epi16(__m512i __A) {2260 // CHECK-LABEL: test_mm512_shufflelo_epi162261 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> poison, <32 x i32> <i32 1, i32 1, i32 0, i32 0, i32 4, i32 5, i32 6, i32 7, i32 9, i32 9, i32 8, i32 8, i32 12, i32 13, i32 14, i32 15, i32 17, i32 17, i32 16, i32 16, i32 20, i32 21, i32 22, i32 23, i32 25, i32 25, i32 24, i32 24, i32 28, i32 29, i32 30, i32 31>2262 return _mm512_shufflelo_epi16(__A, 5); 2263}2264TEST_CONSTEXPR( match_v32hi(_mm512_shufflelo_epi16(((__m512i)(__v32hi){ 0,1,2,3, 4,5,6,7, 8,9,10,11, 12,13,14,15, 16,17,18,19, 20,21,22,23, 24,25,26,27, 28,29,30,31}), 5), 1,1,0,0, 4,5,6,7, 9,9,8,8, 12,13,14,15, 17,17,16,16, 20,21,22,23, 25,25,24,24, 28,29,30,31));2265 2266__m512i test_mm512_mask_shufflelo_epi16(__m512i __W, __mmask32 __U, __m512i __A) {2267 // CHECK-LABEL: test_mm512_mask_shufflelo_epi162268 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> poison, <32 x i32> <i32 1, i32 1, i32 0, i32 0, i32 4, i32 5, i32 6, i32 7, i32 9, i32 9, i32 8, i32 8, i32 12, i32 13, i32 14, i32 15, i32 17, i32 17, i32 16, i32 16, i32 20, i32 21, i32 22, i32 23, i32 25, i32 25, i32 24, i32 24, i32 28, i32 29, i32 30, i32 31>2269 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2270 return _mm512_mask_shufflelo_epi16(__W, __U, __A, 5); 2271}2272TEST_CONSTEXPR(match_v32hi(_mm512_mask_shufflelo_epi16((((__m512i)(__v32hi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31})), 0xFFFFFFFF, (((__m512i)(__v32hi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31})), 5), 1,1,0,0, 4,5,6,7, 9,9,8,8, 12,13,14,15, 17,17,16,16, 20,21,22,23, 25,25,24,24, 28,29,30,31));2273TEST_CONSTEXPR(match_v32hi(_mm512_mask_shufflelo_epi16(((__m512i)(__v32hi){100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131}), 0x0000FFFFu, ((__m512i)(__v32hi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31}), 5), 1,1,0,0,4,5,6,7, 9,9,8,8,12,13,14,15, 116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131));2274 2275__m512i test_mm512_maskz_shufflelo_epi16(__mmask32 __U, __m512i __A) {2276 // CHECK-LABEL: test_mm512_maskz_shufflelo_epi162277 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> poison, <32 x i32> <i32 1, i32 1, i32 0, i32 0, i32 4, i32 5, i32 6, i32 7, i32 9, i32 9, i32 8, i32 8, i32 12, i32 13, i32 14, i32 15, i32 17, i32 17, i32 16, i32 16, i32 20, i32 21, i32 22, i32 23, i32 25, i32 25, i32 24, i32 24, i32 28, i32 29, i32 30, i32 31>2278 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2279 return _mm512_maskz_shufflelo_epi16(__U, __A, 5); 2280}2281TEST_CONSTEXPR(match_v32hi(_mm512_maskz_shufflelo_epi16(0xFFFFFFFF, (((__m512i)(__v32hi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31})), 5), 1,1,0,0, 4,5,6,7, 9,9,8,8, 12,13,14,15, 17,17,16,16, 20,21,22,23, 25,25,24,24, 28,29,30,31));2282TEST_CONSTEXPR(match_v32hi(_mm512_maskz_shufflelo_epi16(0x0000FFFFu, ((__m512i)(__v32hi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31}), 5), 1,1,0,0,4,5,6,7, 9,9,8,8,12,13,14,15, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0));2283 2284__m512i test_mm512_sllv_epi16(__m512i __A, __m512i __B) {2285 // CHECK-LABEL: test_mm512_sllv_epi162286 // CHECK: @llvm.x86.avx512.psllv.w.512(2287 return _mm512_sllv_epi16(__A, __B); 2288}2289TEST_CONSTEXPR(match_v32hi(_mm512_sllv_epi16((__m512i)(__v32hi){ -64, 65, 66, -67, 68, 69, -70, 71, -72, 73, 74, -75, 76, -77, 78, 79, -80, -81, -82, 83, -84, 85, 86, 87, 88, -89, -90, 91, 92, 93, -94, -95}, (__m512i)(__v32hi){ 1, -2, 3, -4, 5, 6, 7, 8, -9, 10, 11, 12, -13, 14, -15, -16, 17, 18, -19, -20, -21, 22, -23, 24, 25, -26, 27, -28, -29, -30, -31, -32}), -128, 0, 528, 0, 2176, 4416, -8960, 18176, 0, 9216, 20480, 20480, 0, -16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));2290 2291__m512i test_mm512_mask_sllv_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {2292 // CHECK-LABEL: test_mm512_mask_sllv_epi162293 // CHECK: @llvm.x86.avx512.psllv.w.512(2294 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2295 return _mm512_mask_sllv_epi16(__W, __U, __A, __B); 2296}2297TEST_CONSTEXPR(match_v32hi(_mm512_mask_sllv_epi16((__m512i)(__v32hi){ 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999}, 0xB120676B, (__m512i)(__v32hi){ -64, 65, 66, -67, 68, 69, -70, 71, -72, 73, 74, -75, 76, -77, 78, 79, -80, -81, -82, 83, -84, 85, 86, 87, 88, -89, -90, 91, 92, 93, -94, -95}, (__m512i)(__v32hi){ 1, -2, 3, -4, 5, 6, 7, 8, -9, 10, 11, 12, -13, 14, -15, -16, 17, 18, -19, -20, -21, 22, -23, 24, 25, -26, 27, -28, -29, -30, -31, -32}), -128, 0, 999, 0, 999, 4416, -8960, 999, 0, 9216, 20480, 999, 999, -16384, 0, 999, 999, 999, 999, 999, 999, 0, 999, 999, 0, 999, 999, 999, 0, 0, 999, 0));2298 2299__m512i test_mm512_maskz_sllv_epi16(__mmask32 __U, __m512i __A, __m512i __B) {2300 // CHECK-LABEL: test_mm512_maskz_sllv_epi162301 // CHECK: @llvm.x86.avx512.psllv.w.512(2302 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2303 return _mm512_maskz_sllv_epi16(__U, __A, __B); 2304}2305TEST_CONSTEXPR(match_v32hi(_mm512_maskz_sllv_epi16(0xB120676B, (__m512i)(__v32hi){ -64, 65, 66, -67, 68, 69, -70, 71, -72, 73, 74, -75, 76, -77, 78, 79, -80, -81, -82, 83, -84, 85, 86, 87, 88, -89, -90, 91, 92, 93, -94, -95}, (__m512i)(__v32hi){ 1, -2, 3, -4, 5, 6, 7, 8, -9, 10, 11, 12, -13, 14, -15, -16, 17, 18, -19, -20, -21, 22, -23, 24, 25, -26, 27, -28, -29, -30, -31, -32}), -128, 0, 0, 0, 0, 4416, -8960, 0, 0, 9216, 20480, 0, 0, -16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));2306 2307__m512i test_mm512_sll_epi16(__m512i __A, __m128i __B) {2308 // CHECK-LABEL: test_mm512_sll_epi162309 // CHECK: @llvm.x86.avx512.psll.w.5122310 return _mm512_sll_epi16(__A, __B);2311}2312TEST_CONSTEXPR(match_v32hi(_mm512_sll_epi16((__m512i)(__v32hi){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}, (__m128i)(__v8hi){1, 0, 0, 0, 0, 0, 0, 0}), 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62));2313TEST_CONSTEXPR(match_v32hi(_mm512_sll_epi16((__m512i)(__v32hi){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}, (__m128i)(__v8hi){16, 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));2314TEST_CONSTEXPR(match_v32hi(_mm512_sll_epi16((__m512i)(__v32hi){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}, (__m128i)(__v8hi){17, 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));2315TEST_CONSTEXPR(match_v32hi(_mm512_sll_epi16((__m512i)(__v32hi){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}, (__m128i)(__v8hi){0, 1, 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));2316TEST_CONSTEXPR(match_v32hi(_mm512_sll_epi16((__m512i)(__v32hi){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}, (__m128i)(__v8hi){0, 0, 1, 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));2317TEST_CONSTEXPR(match_v32hi(_mm512_sll_epi16((__m512i)(__v32hi){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}, (__m128i)(__v8hi){0, 0, 0, 1, 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));2318TEST_CONSTEXPR(match_v32hi(_mm512_sll_epi16((__m512i)(__v32hi){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}, (__m128i)(__v8hi){1, 0, 0, 0, 1, 1, 1, 1}), 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62));2319 2320__m512i test_mm512_mask_sll_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B) {2321 // CHECK-LABEL: test_mm512_mask_sll_epi162322 // CHECK: @llvm.x86.avx512.psll.w.5122323 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2324 return _mm512_mask_sll_epi16(__W, __U, __A, __B); 2325}2326 2327__m512i test_mm512_maskz_sll_epi16(__mmask32 __U, __m512i __A, __m128i __B) {2328 // CHECK-LABEL: test_mm512_maskz_sll_epi162329 // CHECK: @llvm.x86.avx512.psll.w.5122330 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2331 return _mm512_maskz_sll_epi16(__U, __A, __B);2332}2333TEST_CONSTEXPR(match_v32hi(_mm512_mask_sll_epi16((__m512i)(__v32hi){99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}, 0x5A5A5A5A, (__m512i)(__v32hi){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}, (__m128i)(__v8hi){1, 0, 0, 0, 0, 0, 0, 0}), 99, 2, 99, 6, 8, 99, 12, 99, 99, 18, 99, 22, 24, 99, 28, 99, 99, 34, 99, 38, 40, 99, 44, 99, 99, 50, 99, 54, 56, 99, 60, 99));2334TEST_CONSTEXPR(match_v32hi(_mm512_maskz_sll_epi16(0xA5A5A5A5, (__m512i)(__v32hi){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}, (__m128i)(__v8hi){1, 0, 0, 0, 0, 0, 0, 0}), 0, 0, 4, 0, 0, 10, 0, 14, 16, 0, 20, 0, 0, 26, 0, 30, 32, 0, 36, 0, 0, 42, 0, 46, 48, 0, 52, 0, 0, 58, 0, 62));2335 2336__m512i test_mm512_slli_epi16(__m512i __A) {2337 // CHECK-LABEL: test_mm512_slli_epi162338 // CHECK: @llvm.x86.avx512.pslli.w.5122339 return _mm512_slli_epi16(__A, 5); 2340}2341TEST_CONSTEXPR(match_v32hi(_mm512_slli_epi16((__m512i)(__v32hi){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}, 0), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31));2342TEST_CONSTEXPR(match_v32hi(_mm512_slli_epi16((__m512i)(__v32hi){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}, 1), 0, 0x2, 0x4, 0x6, 0x8, 0xa, 0xc, 0xe, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e, 0x20, 0x22, 0x24, 0x26, 0x28, 0x2a, 0x2c, 0x2e, 0x30, 0x32, 0x34, 0x36, 0x38, 0x3a, 0x3c, 0x3e));2343TEST_CONSTEXPR(match_v32hi(_mm512_slli_epi16((__m512i)(__v32hi){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}, 15), 0, 0x8000, 0x0, 0x8000, 0x0, 0x8000, 0x0, 0x8000, 0x0, 0x8000, 0x0, 0x8000, 0x0, 0x8000, 0x0, 0x8000, 0x0, 0x8000, 0x0, 0x8000, 0x0, 0x8000, 0x0, 0x8000, 0x0, 0x8000, 0x0, 0x8000, 0x0, 0x8000, 0x0, 0x8000));2344TEST_CONSTEXPR(match_v32hi(_mm512_slli_epi16((__m512i)(__v32hi){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}, 16), 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));2345TEST_CONSTEXPR(match_v32hi(_mm512_slli_epi16((__m512i)(__v32hi){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}, 17), 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));2346 2347__m512i test_mm512_slli_epi16_2(__m512i __A, unsigned int __B) {2348 // CHECK-LABEL: test_mm512_slli_epi16_22349 // CHECK: @llvm.x86.avx512.pslli.w.5122350 return _mm512_slli_epi16(__A, __B); 2351}2352 2353__m512i test_mm512_mask_slli_epi16(__m512i __W, __mmask32 __U, __m512i __A) {2354 // CHECK-LABEL: test_mm512_mask_slli_epi162355 // CHECK: @llvm.x86.avx512.pslli.w.5122356 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2357 return _mm512_mask_slli_epi16(__W, __U, __A, 5); 2358}2359TEST_CONSTEXPR(match_v32hi(_mm512_mask_slli_epi16((__m512i)(__v32hi){100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131}, (__mmask32)~(__mmask32)0, (__m512i)(__v32hi){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}, 1), 0x0, 0x2, 0x4, 0x6, 0x8, 0xa, 0xc, 0xe, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e, 0x20, 0x22, 0x24, 0x26, 0x28, 0x2a, 0x2c, 0x2e, 0x30, 0x32, 0x34, 0x36, 0x38, 0x3a, 0x3c, 0x3e));2360 2361__m512i test_mm512_mask_slli_epi16_2(__m512i __W, __mmask32 __U, __m512i __A, unsigned int __B) {2362 // CHECK-LABEL: test_mm512_mask_slli_epi16_22363 // CHECK: @llvm.x86.avx512.pslli.w.5122364 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2365 return _mm512_mask_slli_epi16(__W, __U, __A, __B); 2366}2367 2368__m512i test_mm512_maskz_slli_epi16(__mmask32 __U, __m512i __A) {2369 // CHECK-LABEL: test_mm512_maskz_slli_epi162370 // CHECK: @llvm.x86.avx512.pslli.w.5122371 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2372 return _mm512_maskz_slli_epi16(__U, __A, 5); 2373}2374TEST_CONSTEXPR(match_v32hi(_mm512_maskz_slli_epi16((__mmask32)0x00ffcc71, (__m512i)(__v32hi){0xff, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0xff, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, 16), 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));2375TEST_CONSTEXPR(match_v32hi(_mm512_maskz_slli_epi16((__mmask32)0, (__m512i)(__v32hi){0xff, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0xff, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, 16), 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));2376TEST_CONSTEXPR(match_v32hi(_mm512_maskz_slli_epi16((__mmask32)0xffffffff, (__m512i)(__v32hi){0xff, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0xff, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, 1), 0x1fe, 0x2, 0x4, 0x6, 0x8, 0xa, 0xc, 0xe, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e, 0x1fe, 0x2, 0x4, 0x6, 0x8, 0xa, 0xc, 0xe, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e));2377TEST_CONSTEXPR(match_v32hi(_mm512_maskz_slli_epi16((__mmask32)0x7fffffff, (__m512i)(__v32hi){0xff, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0xff, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, 1), 0x1fe, 0x2, 0x4, 0x6, 0x8, 0xa, 0xc, 0xe, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e, 0x1fe, 0x2, 0x4, 0x6, 0x8, 0xa, 0xc, 0xe, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0));2378TEST_CONSTEXPR(match_v32hi(_mm512_maskz_slli_epi16((__mmask32)0x71ccff00, (__m512i)(__v32hi){0xff, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0xff, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, 1), 0, 0, 0, 0, 0, 0, 0, 0, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e, 0, 0, 0x4, 0x6, 0, 0, 0xc, 0xe, 0x10, 0, 0, 0, 0x18, 0x1a, 0x1c, 0));2379 2380__m512i test_mm512_maskz_slli_epi16_2(__mmask32 __U, __m512i __A, unsigned int __B) {2381 // CHECK-LABEL: test_mm512_maskz_slli_epi16_22382 // CHECK: @llvm.x86.avx512.pslli.w.5122383 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2384 return _mm512_maskz_slli_epi16(__U, __A, __B); 2385}2386 2387__m512i test_mm512_bslli_epi128(__m512i __A) {2388 // CHECK-LABEL: test_mm512_bslli_epi1282389 // CHECK: shufflevector <64 x i8> zeroinitializer, <64 x i8> %{{.*}}, <64 x i32> <i32 11, i32 12, i32 13, i32 14, i32 15, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 27, i32 28, i32 29, i32 30, i32 31, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 43, i32 44, i32 45, i32 46, i32 47, i32 96, i32 97, i32 98, i32 99, i32 100, i32 101, i32 102, i32 103, i32 104, i32 105, i32 106, i32 59, i32 60, i32 61, i32 62, i32 63, i32 112, i32 113, i32 114, i32 115, i32 116, i32 117, i32 118, i32 119, i32 120, i32 121, i32 122>2390 return _mm512_bslli_epi128(__A, 5);2391}2392TEST_CONSTEXPR(match_v64qi(_mm512_bslli_epi128(((__m512i)(__v64qi){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63, 64}), 5), 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 0, 0, 0, 0, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 0, 0, 0, 0, 0, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 0, 0, 0, 0, 0, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59));2393TEST_CONSTEXPR(match_v64qi(_mm512_bslli_epi128(((__m512i)(__v64qi){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63, 64}), 16), 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));2394 2395__m512i test_mm512_srlv_epi16(__m512i __A, __m512i __B) {2396 // CHECK-LABEL: test_mm512_srlv_epi162397 // CHECK: @llvm.x86.avx512.psrlv.w.512(2398 return _mm512_srlv_epi16(__A, __B); 2399}2400TEST_CONSTEXPR(match_v32hi(_mm512_srlv_epi16((__m512i)(__v32hi){ -64, 65, 66, -67, 68, 69, -70, 71, -72, 73, 74, -75, 76, -77, 78, 79, -80, -81, -82, 83, -84, 85, 86, 87, 88, -89, -90, 91, 92, 93, -94, -95}, (__m512i)(__v32hi){ 1, -2, 3, -4, 5, 6, 7, 8, -9, 10, 11, 12, -13, 14, -15, -16, 17, 18, -19, -20, -21, 22, -23, 24, 25, -26, 27, -28, -29, -30, -31, -32}), 32736, 0, 8, 0, 2, 1, 511, 0, 0, 0, 0, 15, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));2401 2402__m512i test_mm512_mask_srlv_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {2403 // CHECK-LABEL: test_mm512_mask_srlv_epi162404 // CHECK: @llvm.x86.avx512.psrlv.w.512(2405 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2406 return _mm512_mask_srlv_epi16(__W, __U, __A, __B); 2407}2408TEST_CONSTEXPR(match_v32hi(_mm512_mask_srlv_epi16((__m512i)(__v32hi){ 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999}, 0xB120676B, (__m512i)(__v32hi){ -64, 65, 66, -67, 68, 69, -70, 71, -72, 73, 74, -75, 76, -77, 78, 79, -80, -81, -82, 83, -84, 85, 86, 87, 88, -89, -90, 91, 92, 93, -94, -95}, (__m512i)(__v32hi){ 1, -2, 3, -4, 5, 6, 7, 8, -9, 10, 11, 12, -13, 14, -15, -16, 17, 18, -19, -20, -21, 22, -23, 24, 25, -26, 27, -28, -29, -30, -31, -32}), 32736, 0, 999, 0, 999, 1, 511, 999, 0, 0, 0, 999, 999, 3, 0, 999, 999, 999, 999, 999, 999, 0, 999, 999, 0, 999, 999, 999, 0, 0, 999, 0));2409 2410__m512i test_mm512_maskz_srlv_epi16(__mmask32 __U, __m512i __A, __m512i __B) {2411 // CHECK-LABEL: test_mm512_maskz_srlv_epi162412 // CHECK: @llvm.x86.avx512.psrlv.w.512(2413 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2414 return _mm512_maskz_srlv_epi16(__U, __A, __B); 2415}2416TEST_CONSTEXPR(match_v32hi(_mm512_maskz_srlv_epi16(0xB120676B, (__m512i)(__v32hi){ -64, 65, 66, -67, 68, 69, -70, 71, -72, 73, 74, -75, 76, -77, 78, 79, -80, -81, -82, 83, -84, 85, 86, 87, 88, -89, -90, 91, 92, 93, -94, -95}, (__m512i)(__v32hi){ 1, -2, 3, -4, 5, 6, 7, 8, -9, 10, 11, 12, -13, 14, -15, -16, 17, 18, -19, -20, -21, 22, -23, 24, 25, -26, 27, -28, -29, -30, -31, -32}), 32736, 0, 0, 0, 0, 1, 511, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));2417 2418__m512i test_mm512_srav_epi16(__m512i __A, __m512i __B) {2419 // CHECK-LABEL: test_mm512_srav_epi162420 // CHECK: @llvm.x86.avx512.psrav.w.512(2421 return _mm512_srav_epi16(__A, __B); 2422}2423TEST_CONSTEXPR(match_v32hi(_mm512_srav_epi16((__m512i)(__v32hi){ -64, 65, 66, -67, 68, 69, -70, 71, -72, 73, 74, -75, 76, -77, 78, 79, -80, -81, -82, 83, -84, 85, 86, 87, 88, -89, -90, 91, 92, 93, -94, -95}, (__m512i)(__v32hi){ 1, -2, 3, -4, 5, 6, 7, 8, -9, 10, 11, 12, -13, 14, -15, -16, 17, 18, -19, -20, -21, 22, -23, 24, 25, -26, 27, -28, -29, -30, -31, -32}), -32, 0, 8, -1, 2, 1, -1, 0, -1, 0, 0, -1, 0, -1, 0, 0, -1, -1, -1, 0, -1, 0, 0, 0, 0, -1, -1, 0, 0, 0, -1, -1));2424 2425__m512i test_mm512_mask_srav_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {2426 // CHECK-LABEL: test_mm512_mask_srav_epi162427 // CHECK: @llvm.x86.avx512.psrav.w.512(2428 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2429 return _mm512_mask_srav_epi16(__W, __U, __A, __B); 2430}2431TEST_CONSTEXPR(match_v32hi(_mm512_mask_srav_epi16((__m512i)(__v32hi){ 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999}, 0xB120676B, (__m512i)(__v32hi){ -64, 65, 66, -67, 68, 69, -70, 71, -72, 73, 74, -75, 76, -77, 78, 79, -80, -81, -82, 83, -84, 85, 86, 87, 88, -89, -90, 91, 92, 93, -94, -95}, (__m512i)(__v32hi){ 1, -2, 3, -4, 5, 6, 7, 8, -9, 10, 11, 12, -13, 14, -15, -16, 17, 18, -19, -20, -21, 22, -23, 24, 25, -26, 27, -28, -29, -30, -31, -32}), -32, 0, 999, -1, 999, 1, -1, 999, -1, 0, 0, 999, 999, -1, 0, 999, 999, 999, 999, 999, 999, 0, 999, 999, 0, 999, 999, 999, 0, 0, 999, -1));2432 2433__m512i test_mm512_maskz_srav_epi16(__mmask32 __U, __m512i __A, __m512i __B) {2434 // CHECK-LABEL: test_mm512_maskz_srav_epi162435 // CHECK: @llvm.x86.avx512.psrav.w.512(2436 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2437 return _mm512_maskz_srav_epi16(__U, __A, __B); 2438}2439TEST_CONSTEXPR(match_v32hi(_mm512_maskz_srav_epi16(0xB120676B, (__m512i)(__v32hi){ -64, 65, 66, -67, 68, 69, -70, 71, -72, 73, 74, -75, 76, -77, 78, 79, -80, -81, -82, 83, -84, 85, 86, 87, 88, -89, -90, 91, 92, 93, -94, -95}, (__m512i)(__v32hi){ 1, -2, 3, -4, 5, 6, 7, 8, -9, 10, 11, 12, -13, 14, -15, -16, 17, 18, -19, -20, -21, 22, -23, 24, 25, -26, 27, -28, -29, -30, -31, -32}), -32, 0, 0, -1, 0, 1, -1, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1));2440 2441__m512i test_mm512_sra_epi16(__m512i __A, __m128i __B) {2442 // CHECK-LABEL: test_mm512_sra_epi162443 // CHECK: @llvm.x86.avx512.psra.w.5122444 return _mm512_sra_epi16(__A, __B);2445}2446TEST_CONSTEXPR(match_v32hi(_mm512_sra_epi16((__m512i)(__v32hi){0, -2, 4, -6, 8, -10, 12, -14, 16, -18, 20, -22, 24, -26, 28, -30, 32, -34, 36, -38, 40, -42, 44, -46, 48, -50, 52, -54, 56, -58, 60, -62}, (__m128i)(__v8hi){1, 0, 0, 0, 0, 0, 0, 0}), 0, -1, 2, -3, 4, -5, 6, -7, 8, -9, 10, -11, 12, -13, 14, -15, 16, -17, 18, -19, 20, -21, 22, -23, 24, -25, 26, -27, 28, -29, 30, -31));2447TEST_CONSTEXPR(match_v32hi(_mm512_sra_epi16((__m512i)(__v32hi){0, -2, 4, -6, 8, -10, 12, -14, 16, -18, 20, -22, 24, -26, 28, -30, 32, -34, 36, -38, 40, -42, 44, -46, 48, -50, 52, -54, 56, -58, 60, -62}, (__m128i)(__v8hi){16, 0, 0, 0, 0, 0, 0, 0}), 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1));2448TEST_CONSTEXPR(match_v32hi(_mm512_sra_epi16((__m512i)(__v32hi){0, -2, 4, -6, 8, -10, 12, -14, 16, -18, 20, -22, 24, -26, 28, -30, 32, -34, 36, -38, 40, -42, 44, -46, 48, -50, 52, -54, 56, -58, 60, -62}, (__m128i)(__v8hi){17, 0, 0, 0, 0, 0, 0, 0}), 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1));2449TEST_CONSTEXPR(match_v32hi(_mm512_sra_epi16((__m512i)(__v32hi){0, -2, 4, -6, 8, -10, 12, -14, 16, -18, 20, -22, 24, -26, 28, -30, 32, -34, 36, -38, 40, -42, 44, -46, 48, -50, 52, -54, 56, -58, 60, -62}, (__m128i)(__v8hi){0, 1, 0, 0, 0, 0, 0, 0}), 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1));2450TEST_CONSTEXPR(match_v32hi(_mm512_sra_epi16((__m512i)(__v32hi){0, -2, 4, -6, 8, -10, 12, -14, 16, -18, 20, -22, 24, -26, 28, -30, 32, -34, 36, -38, 40, -42, 44, -46, 48, -50, 52, -54, 56, -58, 60, -62}, (__m128i)(__v8hi){0, 0, 1, 0, 0, 0, 0, 0}), 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1));2451TEST_CONSTEXPR(match_v32hi(_mm512_sra_epi16((__m512i)(__v32hi){0, -2, 4, -6, 8, -10, 12, -14, 16, -18, 20, -22, 24, -26, 28, -30, 32, -34, 36, -38, 40, -42, 44, -46, 48, -50, 52, -54, 56, -58, 60, -62}, (__m128i)(__v8hi){0, 0, 0, 1, 0, 0, 0, 0}), 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1));2452TEST_CONSTEXPR(match_v32hi(_mm512_sra_epi16((__m512i)(__v32hi){0, -2, 4, -6, 8, -10, 12, -14, 16, -18, 20, -22, 24, -26, 28, -30, 32, -34, 36, -38, 40, -42, 44, -46, 48, -50, 52, -54, 56, -58, 60, -62}, (__m128i)(__v8hi){1, 0, 0, 0, 1, 1, 1, 1}), 0, -1, 2, -3, 4, -5, 6, -7, 8, -9, 10, -11, 12, -13, 14, -15, 16, -17, 18, -19, 20, -21, 22, -23, 24, -25, 26, -27, 28, -29, 30, -31));2453 2454__m512i test_mm512_mask_sra_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B) {2455 // CHECK-LABEL: test_mm512_mask_sra_epi162456 // CHECK: @llvm.x86.avx512.psra.w.5122457 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2458 return _mm512_mask_sra_epi16(__W, __U, __A, __B); 2459}2460 2461__m512i test_mm512_maskz_sra_epi16(__mmask32 __U, __m512i __A, __m128i __B) {2462 // CHECK-LABEL: test_mm512_maskz_sra_epi162463 // CHECK: @llvm.x86.avx512.psra.w.5122464 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2465 return _mm512_maskz_sra_epi16(__U, __A, __B);2466}2467TEST_CONSTEXPR(match_v32hi(_mm512_mask_sra_epi16((__m512i)(__v32hi){99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}, 0x5A5A5A5A, (__m512i)(__v32hi){0, -2, 4, -6, 8, -10, 12, -14, 16, -18, 20, -22, 24, -26, 28, -30, 32, -34, 36, -38, 40, -42, 44, -46, 48, -50, 52, -54, 56, -58, 60, -62}, (__m128i)(__v8hi){1, 0, 0, 0, 0, 0, 0, 0}), 99, -1, 99, -3, 4, 99, 6, 99, 99, -9, 99, -11, 12, 99, 14, 99, 99, -17, 99, -19, 20, 99, 22, 99, 99, -25, 99, -27, 28, 99, 30, 99));2468TEST_CONSTEXPR(match_v32hi(_mm512_maskz_sra_epi16(0xA5A5A5A5, (__m512i)(__v32hi){0, -2, 4, -6, 8, -10, 12, -14, 16, -18, 20, -22, 24, -26, 28, -30, 32, -34, 36, -38, 40, -42, 44, -46, 48, -50, 52, -54, 56, -58, 60, -62}, (__m128i)(__v8hi){1, 0, 0, 0, 0, 0, 0, 0}), 0, 0, 2, 0, 0, -5, 0, -7, 8, 0, 10, 0, 0, -13, 0, -15, 16, 0, 18, 0, 0, -21, 0, -23, 24, 0, 26, 0, 0, -29, 0, -31));2469 2470__m512i test_mm512_srai_epi16(__m512i __A) {2471 // CHECK-LABEL: test_mm512_srai_epi162472 // CHECK: @llvm.x86.avx512.psrai.w.5122473 return _mm512_srai_epi16(__A, 5); 2474}2475TEST_CONSTEXPR(match_v32hi(_mm512_srai_epi16((__m512i)(__v32hi){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}, 10), 0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0));2476 2477__m512i test_mm512_srai_epi16_2(__m512i __A, unsigned int __B) {2478 // CHECK-LABEL: test_mm512_srai_epi16_22479 // CHECK: @llvm.x86.avx512.psrai.w.5122480 return _mm512_srai_epi16(__A, __B); 2481}2482 2483__m512i test_mm512_mask_srai_epi16(__m512i __W, __mmask32 __U, __m512i __A) {2484 // CHECK-LABEL: test_mm512_mask_srai_epi162485 // CHECK: @llvm.x86.avx512.psrai.w.5122486 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2487 return _mm512_mask_srai_epi16(__W, __U, __A, 5); 2488}2489TEST_CONSTEXPR(match_v32hi(_mm512_mask_srai_epi16((__m512i)(__v32hi){100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131}, (__mmask32)~(__mmask32)0, (__m512i)(__v32hi){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}, 1), 0x0, 0x0, 0x1, 0x1, 0x2, 0x2, 0x3, 0x3, 0x4, 0x4, 0x5, 0x5, 0x6, 0x6, 0x7, 0x7, 0x8, 0x8, 0x9, 0x9, 0xa, 0xa, 0xb, 0xb, 0xc, 0xc, 0xd, 0xd, 0xe, 0xe, 0xf, 0xf));2490 2491__m512i test_mm512_mask_srai_epi16_2(__m512i __W, __mmask32 __U, __m512i __A, unsigned int __B) {2492 // CHECK-LABEL: test_mm512_mask_srai_epi16_22493 // CHECK: @llvm.x86.avx512.psrai.w.5122494 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2495 return _mm512_mask_srai_epi16(__W, __U, __A, __B); 2496}2497 2498__m512i test_mm512_maskz_srai_epi16(__mmask32 __U, __m512i __A) {2499 // CHECK-LABEL: test_mm512_maskz_srai_epi162500 // CHECK: @llvm.x86.avx512.psrai.w.5122501 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2502 return _mm512_maskz_srai_epi16(__U, __A, 5); 2503}2504TEST_CONSTEXPR(match_v32hi(_mm512_maskz_srai_epi16((__mmask32)0xAAAAAAAA, (__m512i)(__v32hi){-32768, 32767, -3, -2, -1, 0, 1, 2, -1234, 1234, -32767, 32766, -5, 5, -256, 256, -42, 42, -7, 7, -30000, 30000, -1, -1, 0, -2, 2, -32768, 32767, -32768, -123, 123 }, 5), 0, 1023, 0, -1, 0, 0, 0, 0, 0, 38, 0, 1023, 0, 0, 0, 8, 0, 1, 0, 0, 0, 937, 0, -1, 0, -1, 0, -1024, 0, -1024, 0, 3 ));2505 2506__m512i test_mm512_maskz_srai_epi16_2(__mmask32 __U, __m512i __A, unsigned int __B) {2507 // CHECK-LABEL: test_mm512_maskz_srai_epi16_22508 // CHECK: @llvm.x86.avx512.psrai.w.5122509 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2510 return _mm512_maskz_srai_epi16(__U, __A, __B); 2511}2512 2513__m512i test_mm512_srl_epi16(__m512i __A, __m128i __B) {2514 // CHECK-LABEL: test_mm512_srl_epi162515 // CHECK: @llvm.x86.avx512.psrl.w.5122516 return _mm512_srl_epi16(__A, __B);2517}2518TEST_CONSTEXPR(match_v32hi(_mm512_srl_epi16((__m512i)(__v32hi){0, -2, 4, -6, 8, -10, 12, -14, 16, -18, 20, -22, 24, -26, 28, -30, 32, -34, 36, -38, 40, -42, 44, -46, 48, -50, 52, -54, 56, -58, 60, -62}, (__m128i)(__v8hi){1, 0, 0, 0, 0, 0, 0, 0}), 0, 32767, 2, 32765, 4, 32763, 6, 32761, 8, 32759, 10, 32757, 12, 32755, 14, 32753, 16, 32751, 18, 32749, 20, 32747, 22, 32745, 24, 32743, 26, 32741, 28, 32739, 30, 32737));2519TEST_CONSTEXPR(match_v32hi(_mm512_srl_epi16((__m512i)(__v32hi){0, -2, 4, -6, 8, -10, 12, -14, 16, -18, 20, -22, 24, -26, 28, -30, 32, -34, 36, -38, 40, -42, 44, -46, 48, -50, 52, -54, 56, -58, 60, -62}, (__m128i)(__v8hi){16, 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));2520TEST_CONSTEXPR(match_v32hi(_mm512_srl_epi16((__m512i)(__v32hi){0, -2, 4, -6, 8, -10, 12, -14, 16, -18, 20, -22, 24, -26, 28, -30, 32, -34, 36, -38, 40, -42, 44, -46, 48, -50, 52, -54, 56, -58, 60, -62}, (__m128i)(__v8hi){17, 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));2521TEST_CONSTEXPR(match_v32hi(_mm512_srl_epi16((__m512i)(__v32hi){0, -2, 4, -6, 8, -10, 12, -14, 16, -18, 20, -22, 24, -26, 28, -30, 32, -34, 36, -38, 40, -42, 44, -46, 48, -50, 52, -54, 56, -58, 60, -62}, (__m128i)(__v8hi){0, 1, 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));2522TEST_CONSTEXPR(match_v32hi(_mm512_srl_epi16((__m512i)(__v32hi){0, -2, 4, -6, 8, -10, 12, -14, 16, -18, 20, -22, 24, -26, 28, -30, 32, -34, 36, -38, 40, -42, 44, -46, 48, -50, 52, -54, 56, -58, 60, -62}, (__m128i)(__v8hi){0, 0, 1, 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));2523TEST_CONSTEXPR(match_v32hi(_mm512_srl_epi16((__m512i)(__v32hi){0, -2, 4, -6, 8, -10, 12, -14, 16, -18, 20, -22, 24, -26, 28, -30, 32, -34, 36, -38, 40, -42, 44, -46, 48, -50, 52, -54, 56, -58, 60, -62}, (__m128i)(__v8hi){0, 0, 0, 1, 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));2524TEST_CONSTEXPR(match_v32hi(_mm512_srl_epi16((__m512i)(__v32hi){0, -2, 4, -6, 8, -10, 12, -14, 16, -18, 20, -22, 24, -26, 28, -30, 32, -34, 36, -38, 40, -42, 44, -46, 48, -50, 52, -54, 56, -58, 60, -62}, (__m128i)(__v8hi){1, 0, 0, 0, 1, 1, 1, 1}), 0, 32767, 2, 32765, 4, 32763, 6, 32761, 8, 32759, 10, 32757, 12, 32755, 14, 32753, 16, 32751, 18, 32749, 20, 32747, 22, 32745, 24, 32743, 26, 32741, 28, 32739, 30, 32737));2525 2526__m512i test_mm512_mask_srl_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B) {2527 // CHECK-LABEL: test_mm512_mask_srl_epi162528 // CHECK: @llvm.x86.avx512.psrl.w.5122529 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2530 return _mm512_mask_srl_epi16(__W, __U, __A, __B); 2531}2532 2533__m512i test_mm512_maskz_srl_epi16(__mmask32 __U, __m512i __A, __m128i __B) {2534 // CHECK-LABEL: test_mm512_maskz_srl_epi162535 // CHECK: @llvm.x86.avx512.psrl.w.5122536 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2537 return _mm512_maskz_srl_epi16(__U, __A, __B);2538}2539TEST_CONSTEXPR(match_v32hi(_mm512_mask_srl_epi16((__m512i)(__v32hi){99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}, 0x5A5A5A5A, (__m512i)(__v32hi){0, -2, 4, -6, 8, -10, 12, -14, 16, -18, 20, -22, 24, -26, 28, -30, 32, -34, 36, -38, 40, -42, 44, -46, 48, -50, 52, -54, 56, -58, 60, -62}, (__m128i)(__v8hi){1, 0, 0, 0, 0, 0, 0, 0}), 99, 32767, 99, 32765, 4, 99, 6, 99, 99, 32759, 99, 32757, 12, 99, 14, 99, 99, 32751, 99, 32749, 20, 99, 22, 99, 99, 32743, 99, 32741, 28, 99, 30, 99));2540TEST_CONSTEXPR(match_v32hi(_mm512_maskz_srl_epi16(0xA5A5A5A5, (__m512i)(__v32hi){0, -2, 4, -6, 8, -10, 12, -14, 16, -18, 20, -22, 24, -26, 28, -30, 32, -34, 36, -38, 40, -42, 44, -46, 48, -50, 52, -54, 56, -58, 60, -62}, (__m128i)(__v8hi){1, 0, 0, 0, 0, 0, 0, 0}), 0, 0, 2, 0, 0, 32763, 0, 32761, 8, 0, 10, 0, 0, 32755, 0, 32753, 16, 0, 18, 0, 0, 32747, 0, 32745, 24, 0, 26, 0, 0, 32739, 0, 32737));2541 2542__m512i test_mm512_srli_epi16(__m512i __A) {2543 // CHECK-LABEL: test_mm512_srli_epi162544 // CHECK: @llvm.x86.avx512.psrli.w.5122545 return _mm512_srli_epi16(__A, 5); 2546}2547TEST_CONSTEXPR(match_v32hi(_mm512_srli_epi16((__m512i)(__v32hi){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}, 15), 0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0));2548 2549__m512i test_mm512_srli_epi16_2(__m512i __A, unsigned int __B) {2550 // CHECK-LABEL: test_mm512_srli_epi16_22551 // CHECK: @llvm.x86.avx512.psrli.w.5122552 return _mm512_srli_epi16(__A, __B); 2553}2554 2555__m512i test_mm512_mask_srli_epi16(__m512i __W, __mmask32 __U, __m512i __A) {2556 // CHECK-LABEL: test_mm512_mask_srli_epi162557 // CHECK: @llvm.x86.avx512.psrli.w.5122558 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2559 return _mm512_mask_srli_epi16(__W, __U, __A, 5); 2560}2561TEST_CONSTEXPR(match_v32hi(_mm512_mask_srli_epi16((__m512i)(__v32hi){100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131}, (__mmask32)~(__mmask32)0, (__m512i)(__v32hi){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}, 1), 0x0, 0x0, 0x1, 0x1, 0x2, 0x2, 0x3, 0x3, 0x4, 0x4, 0x5, 0x5, 0x6, 0x6, 0x7, 0x7, 0x8, 0x8, 0x9, 0x9, 0xa, 0xa, 0xb, 0xb, 0xc, 0xc, 0xd, 0xd, 0xe, 0xe, 0xf, 0xf));2562 2563__m512i test_mm512_mask_srli_epi16_2(__m512i __W, __mmask32 __U, __m512i __A, unsigned int __B) {2564 // CHECK-LABEL: test_mm512_mask_srli_epi16_22565 // CHECK: @llvm.x86.avx512.psrli.w.5122566 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2567 return _mm512_mask_srli_epi16(__W, __U, __A, __B); 2568}2569 2570__m512i test_mm512_maskz_srli_epi16(__mmask32 __U, __m512i __A) {2571 // CHECK-LABEL: test_mm512_maskz_srli_epi162572 // CHECK: @llvm.x86.avx512.psrli.w.5122573 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2574 return _mm512_maskz_srli_epi16(__U, __A, 5); 2575}2576TEST_CONSTEXPR(match_v32hi(_mm512_maskz_srli_epi16((__mmask32)0x71ccff00, (__m512i)(__v32hi){0xff, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0xff, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, 1), 0, 0, 0, 0, 0, 0, 0, 0, 0x4, 0x4, 0x5, 0x5, 0x6, 0x6, 0x7, 0x7, 0, 0, 0x1, 0x1, 0, 0, 0x3, 0x3, 0x4, 0, 0, 0, 0x6, 0x6, 0x7, 0 ));2577 2578__m512i test_mm512_maskz_srli_epi16_2(__mmask32 __U, __m512i __A, int __B) {2579 // CHECK-LABEL: test_mm512_maskz_srli_epi16_22580 // CHECK: @llvm.x86.avx512.psrli.w.5122581 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2582 return _mm512_maskz_srli_epi16(__U, __A, __B); 2583}2584 2585__m512i test_mm512_bsrli_epi128(__m512i __A) {2586 // CHECK-LABEL: test_mm512_bsrli_epi1282587 // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> zeroinitializer, <64 x i32> <i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 64, i32 65, i32 66, i32 67, i32 68, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 80, i32 81, i32 82, i32 83, i32 84, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 96, i32 97, i32 98, i32 99, i32 100, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 112, i32 113, i32 114, i32 115, i32 116>2588 return _mm512_bsrli_epi128(__A, 5);2589}2590TEST_CONSTEXPR(match_v64qi(_mm512_bsrli_epi128(((__m512i)(__v64qi){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63, 64}), 5), 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 0, 0, 0, 0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 0, 0, 0, 0, 0, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 0, 0, 0, 0, 0, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 0, 0, 0, 0, 0));2591TEST_CONSTEXPR(match_v64qi(_mm512_bsrli_epi128(((__m512i)(__v64qi){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63, 64}), 16), 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));2592 2593__m512i test_mm512_mask_mov_epi16(__m512i __W, __mmask32 __U, __m512i __A) {2594 // CHECK-LABEL: test_mm512_mask_mov_epi162595 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2596 return _mm512_mask_mov_epi16(__W, __U, __A); 2597}2598TEST_CONSTEXPR(match_v32hi(_mm512_mask_mov_epi16((__m512i)(__v32hi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31},(__mmask32)0xAAAAAAAA,(__m512i)(__v32hi){-0,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23,-24,-25,-26,-27,-28,-29,-30,-31}),0,-1,2,-3,4,-5,6,-7,8,-9,10,-11,12,-13,14,-15,16,-17,18,-19,20,-21,22,-23,24,-25,26,-27,28,-29,30,-31));2599 2600__m512i test_mm512_maskz_mov_epi16(__mmask32 __U, __m512i __A) {2601 // CHECK-LABEL: test_mm512_maskz_mov_epi162602 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}2603 return _mm512_maskz_mov_epi16(__U, __A); 2604}2605TEST_CONSTEXPR(match_v32hi(_mm512_maskz_mov_epi16((__mmask32)0xAAAAAAAA,(__m512i)(__v32hi){-0,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23,-24,-25,-26,-27,-28,-29,-30,-31}),0,-1,0,-3,0,-5,0,-7,0,-9,0,-11,0,-13,0,-15,0,-17,0,-19,0,-21,0,-23,0,-25,0,-27,0,-29,0,-31));2606 2607__m512i test_mm512_mask_mov_epi8(__m512i __W, __mmask64 __U, __m512i __A) {2608 // CHECK-LABEL: test_mm512_mask_mov_epi82609 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}2610 return _mm512_mask_mov_epi8(__W, __U, __A); 2611}2612TEST_CONSTEXPR(match_v64qi(_mm512_mask_mov_epi8((__m512i)(__v64qs){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,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,63},(__mmask64)0xAAAAAAAAAAAAAAAA,(__m512i)(__v64qs){-0,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23,-24,-25,-26,-27,-28,-29,-30,-31,-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,-63}),0,-1,2,-3,4,-5,6,-7,8,-9,10,-11,12,-13,14,-15,16,-17,18,-19,20,-21,22,-23,24,-25,26,-27,28,-29,30,-31,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,-63));2613 2614__m512i test_mm512_maskz_mov_epi8(__mmask64 __U, __m512i __A) {2615 // CHECK-LABEL: test_mm512_maskz_mov_epi82616 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}2617 return _mm512_maskz_mov_epi8(__U, __A); 2618}2619TEST_CONSTEXPR(match_v64qi(_mm512_maskz_mov_epi8((__mmask64)0xAAAAAAAAAAAAAAAA,(__m512i)(__v64qs){-0,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23,-24,-25,-26,-27,-28,-29,-30,-31,-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,-63}),0,-1,0,-3,0,-5,0,-7,0,-9,0,-11,0,-13,0,-15,0,-17,0,-19,0,-21,0,-23,0,-25,0,-27,0,-29,0,-31,0,-33,0,-35,0,-37,0,-39,0,-41,0,-43,0,-45,0,-47,0,-49,0,-51,0,-53,0,-55,0,-57,0,-59,0,-61,0,-63));2620 2621__m512i test_mm512_mask_set1_epi8(__m512i __O, __mmask64 __M, char __A) {2622 // CHECK-LABEL: test_mm512_mask_set1_epi82623 // CHECK: insertelement <64 x i8> poison, i8 %{{.*}}, i32 02624 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 12625 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 22626 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 32627 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 42628 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 52629 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 62630 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 72631 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 82632 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 92633 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 102634 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 112635 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 122636 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 132637 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 142638 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 152639 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 162640 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 172641 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 182642 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 192643 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 202644 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 212645 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 222646 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 232647 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 242648 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 252649 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 262650 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 272651 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 282652 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 292653 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 302654 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 312655 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 342656 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 352657 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 362658 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 372659 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 382660 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 392661 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 402662 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 412663 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 422664 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 432665 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 442666 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 452667 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 462668 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 472669 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 482670 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 492671 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 502672 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 512673 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 522674 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 532675 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 542676 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 552677 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 562678 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 572679 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 582680 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 592681 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 602682 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 612683 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 622684 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 632685 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}2686 return _mm512_mask_set1_epi8(__O, __M, __A); 2687}2688TEST_CONSTEXPR(match_v64qi(_mm512_mask_set1_epi8((__m512i)(__v64qi){1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,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,63,64},(__mmask64)0xAAAAAAAAAAAAAAAA,(char)42),1,42,3,42,5,42,7,42,9,42,11,42,13,42,15,42,17,42,19,42,21,42,23,42,25,42,27,42,29,42,31,42,33,42,35,42,37,42,39,42,41,42,43,42,45,42,47,42,49,42,51,42,53,42,55,42,57,42,59,42,61,42,63,42));2689 2690__m512i test_mm512_maskz_set1_epi8(__mmask64 __M, char __A) {2691 // CHECK-LABEL: test_mm512_maskz_set1_epi82692 // CHECK: insertelement <64 x i8> poison, i8 %{{.*}}, i32 02693 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 12694 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 22695 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 32696 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 42697 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 52698 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 62699 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 72700 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 82701 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 92702 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 102703 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 112704 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 122705 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 132706 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 142707 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 152708 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 162709 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 172710 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 182711 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 192712 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 202713 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 212714 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 222715 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 232716 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 242717 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 252718 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 262719 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 272720 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 282721 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 292722 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 302723 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 312724 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 322725 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 332726 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 342727 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 352728 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 362729 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 372730 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 382731 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 392732 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 402733 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 412734 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 422735 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 432736 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 442737 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 452738 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 462739 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 472740 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 482741 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 492742 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 502743 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 512744 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 522745 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 532746 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 542747 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 552748 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 562749 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 572750 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 582751 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 592752 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 602753 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 612754 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 622755 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 632756 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}2757 return _mm512_maskz_set1_epi8(__M, __A); 2758}2759TEST_CONSTEXPR(match_v64qi(_mm512_maskz_set1_epi8((__mmask64)0xAAAAAAAAAAAAAAAA,(char)42),0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42));2760 2761__mmask64 test_mm512_kunpackd(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {2762 // CHECK-LABEL: test_mm512_kunpackd2763 // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>2764 // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>2765 // CHECK: [[LHS2:%.*]] = shufflevector <64 x i1> [[LHS]], <64 x i1> [[LHS]], <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>2766 // CHECK: [[RHS2:%.*]] = shufflevector <64 x i1> [[RHS]], <64 x i1> [[RHS]], <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>2767 // CHECK: [[CONCAT:%.*]] = shufflevector <32 x i1> [[RHS2]], <32 x i1> [[LHS2]], <64 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63>2768 return _mm512_mask_cmpneq_epu8_mask(_mm512_kunpackd(_mm512_cmpneq_epu8_mask(__B, __A),_mm512_cmpneq_epu8_mask(__C, __D)), __E, __F); 2769}2770 2771TEST_CONSTEXPR(_mm512_kunpackd(0xFFFFFFFF00000000ull, 0x00000000FFFFFFFFull) == 0x00000000FFFFFFFFull);2772TEST_CONSTEXPR(_mm512_kunpackd(0xABCDEF0123456789ull, 0x0123456789ABCDEFull) == 0x2345678989ABCDEFull);2773TEST_CONSTEXPR(_mm512_kunpackd(0x00000000FFFFFFFFull, 0xFFFFFFFF00000000ull) == 0xFFFFFFFF00000000ull);2774TEST_CONSTEXPR(_mm512_kunpackd(0xAAAA5555AAAA5555ull, 0x5555AAAA5555AAAAull) == 0xAAAA55555555AAAAull);2775TEST_CONSTEXPR(_mm512_kunpackd(0x123456789ABCDEFull, 0xFEDCBA9876543210ull) == 0x89ABCDEF76543210ull);2776 2777__mmask32 test_mm512_kunpackw(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {2778 // CHECK-LABEL: test_mm512_kunpackw2779 // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>2780 // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>2781 // CHECK: [[LHS2:%.*]] = shufflevector <32 x i1> [[LHS]], <32 x i1> [[LHS]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>2782 // CHECK: [[RHS2:%.*]] = shufflevector <32 x i1> [[RHS]], <32 x i1> [[RHS]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>2783 // CHECK: [[CONCAT:%.*]] = shufflevector <16 x i1> [[RHS2]], <16 x i1> [[LHS2]], <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>2784 return _mm512_mask_cmpneq_epu16_mask(_mm512_kunpackw(_mm512_cmpneq_epu16_mask(__B, __A),_mm512_cmpneq_epu16_mask(__C, __D)), __E, __F); 2785}2786 2787TEST_CONSTEXPR(_mm512_kunpackw(0xFFFF0000u, 0x0000FFFFu) == 0x0000FFFFu);2788TEST_CONSTEXPR(_mm512_kunpackw(0xABCD1234u, 0x56789ABCu) == 0x12349ABCu);2789TEST_CONSTEXPR(_mm512_kunpackw(0x0000FFFFu, 0xFFFF0000u) == 0xFFFF0000u);2790TEST_CONSTEXPR(_mm512_kunpackw(0xAAAA5555u, 0x5555AAAAu) == 0x5555AAAAu);2791TEST_CONSTEXPR(_mm512_kunpackw(0x12345678u, 0xABCDEF12u) == 0x5678EF12u);2792 2793__m512i test_mm512_loadu_epi16 (void *__P)2794{2795 // CHECK-LABEL: test_mm512_loadu_epi162796 // CHECK: load <8 x i64>, ptr %{{.*}}, align 1{{$}}2797 return _mm512_loadu_epi16 (__P);2798}2799 2800__m512i test_mm512_mask_loadu_epi16(__m512i __W, __mmask32 __U, void const *__P) {2801 // CHECK-LABEL: test_mm512_mask_loadu_epi162802 // CHECK: @llvm.masked.load.v32i16.p0(ptr align 1 %{{.*}}, <32 x i1> %{{.*}}, <32 x i16> %{{.*}})2803 return _mm512_mask_loadu_epi16(__W, __U, __P); 2804}2805 2806__m512i test_mm512_maskz_loadu_epi16(__mmask32 __U, void const *__P) {2807 // CHECK-LABEL: test_mm512_maskz_loadu_epi162808 // CHECK: @llvm.masked.load.v32i16.p0(ptr align 1 %{{.*}}, <32 x i1> %{{.*}}, <32 x i16> %{{.*}})2809 return _mm512_maskz_loadu_epi16(__U, __P); 2810}2811 2812__m512i test_mm512_loadu_epi8 (void *__P)2813{2814 // CHECK-LABEL: test_mm512_loadu_epi82815 // CHECK: load <8 x i64>, ptr %{{.*}}, align 1{{$}}2816 return _mm512_loadu_epi8 (__P);2817}2818 2819__m512i test_mm512_mask_loadu_epi8(__m512i __W, __mmask64 __U, void const *__P) {2820 // CHECK-LABEL: test_mm512_mask_loadu_epi82821 // CHECK: @llvm.masked.load.v64i8.p0(ptr align 1 %{{.*}}, <64 x i1> %{{.*}}, <64 x i8> %{{.*}})2822 return _mm512_mask_loadu_epi8(__W, __U, __P); 2823}2824 2825__m512i test_mm512_maskz_loadu_epi8(__mmask64 __U, void const *__P) {2826 // CHECK-LABEL: test_mm512_maskz_loadu_epi82827 // CHECK: @llvm.masked.load.v64i8.p0(ptr align 1 %{{.*}}, <64 x i1> %{{.*}}, <64 x i8> %{{.*}})2828 return _mm512_maskz_loadu_epi8(__U, __P); 2829}2830 2831void test_mm512_storeu_epi16(void *__P, __m512i __A) {2832 // CHECK-LABEL: test_mm512_storeu_epi162833 // CHECK: store <8 x i64> %{{.*}}, ptr %{{.*}}, align 1{{$}}2834 return _mm512_storeu_epi16(__P, __A); 2835}2836 2837void test_mm512_mask_storeu_epi16(void *__P, __mmask32 __U, __m512i __A) {2838 // CHECK-LABEL: test_mm512_mask_storeu_epi162839 // CHECK: @llvm.masked.store.v32i16.p0(<32 x i16> %{{.*}}, ptr align 1 %{{.*}}, <32 x i1> %{{.*}})2840 return _mm512_mask_storeu_epi16(__P, __U, __A);2841}2842 2843__mmask64 test_mm512_test_epi8_mask(__m512i __A, __m512i __B) {2844 // CHECK-LABEL: test_mm512_test_epi8_mask2845 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}2846 // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}}2847 return _mm512_test_epi8_mask(__A, __B); 2848}2849 2850void test_mm512_storeu_epi8(void *__P, __m512i __A) {2851 // CHECK-LABEL: test_mm512_storeu_epi82852 // CHECK: store <8 x i64> %{{.*}}, ptr %{{.*}}, align 1{{$}}2853 return _mm512_storeu_epi8(__P, __A);2854}2855 2856void test_mm512_mask_storeu_epi8(void *__P, __mmask64 __U, __m512i __A) {2857 // CHECK-LABEL: test_mm512_mask_storeu_epi82858 // CHECK: @llvm.masked.store.v64i8.p0(<64 x i8> %{{.*}}, ptr align 1 %{{.*}}, <64 x i1> %{{.*}})2859 return _mm512_mask_storeu_epi8(__P, __U, __A); 2860}2861__mmask64 test_mm512_mask_test_epi8_mask(__mmask64 __U, __m512i __A, __m512i __B) {2862 // CHECK-LABEL: test_mm512_mask_test_epi8_mask2863 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}2864 // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}}2865 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}2866 return _mm512_mask_test_epi8_mask(__U, __A, __B); 2867}2868 2869__mmask32 test_mm512_test_epi16_mask(__m512i __A, __m512i __B) {2870 // CHECK-LABEL: test_mm512_test_epi16_mask2871 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}2872 // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}}2873 return _mm512_test_epi16_mask(__A, __B); 2874}2875 2876__mmask32 test_mm512_mask_test_epi16_mask(__mmask32 __U, __m512i __A, __m512i __B) {2877 // CHECK-LABEL: test_mm512_mask_test_epi16_mask2878 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}2879 // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}}2880 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}2881 return _mm512_mask_test_epi16_mask(__U, __A, __B); 2882}2883 2884__mmask64 test_mm512_testn_epi8_mask(__m512i __A, __m512i __B) {2885 // CHECK-LABEL: test_mm512_testn_epi8_mask2886 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}2887 // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}2888 return _mm512_testn_epi8_mask(__A, __B); 2889}2890 2891__mmask64 test_mm512_mask_testn_epi8_mask(__mmask64 __U, __m512i __A, __m512i __B) {2892 // CHECK-LABEL: test_mm512_mask_testn_epi8_mask2893 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}2894 // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}2895 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}2896 return _mm512_mask_testn_epi8_mask(__U, __A, __B); 2897}2898 2899__mmask32 test_mm512_testn_epi16_mask(__m512i __A, __m512i __B) {2900 // CHECK-LABEL: test_mm512_testn_epi16_mask2901 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}2902 // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}2903 return _mm512_testn_epi16_mask(__A, __B); 2904}2905 2906__mmask32 test_mm512_mask_testn_epi16_mask(__mmask32 __U, __m512i __A, __m512i __B) {2907 // CHECK-LABEL: test_mm512_mask_testn_epi16_mask2908 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}2909 // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}2910 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}2911 return _mm512_mask_testn_epi16_mask(__U, __A, __B); 2912}2913 2914__mmask64 test_mm512_movepi8_mask(__m512i __A) {2915 // CHECK-LABEL: test_mm512_movepi8_mask2916 // CHECK: [[CMP:%.*]] = icmp slt <64 x i8> %{{.*}}, zeroinitializer2917 return _mm512_movepi8_mask(__A); 2918}2919 2920TEST_CONSTEXPR(_mm512_movepi8_mask(2921 ((__m512i)(__v64qi){0, 1, char(129), 3, 4, 5, 6, 7,2922 8, 9, 10, 11, 12, 13, 14, 15,2923 16, 17, 18, 19, 20, 21, 22, 23,2924 24, 25, 26, 27, 28, 29, 30, 31,2925 32, 33, 34, 35, 36, 37, 38, 39,2926 40, 41, 42, 43, 44, 45, 46, 47,2927 48, 49, 50, 51, 52, 53, 54, 55,2928 56, 57, 58, 59, 60, 61, 62, char(255)})2929) == (__mmask64)0x8000000000000004);2930 2931 2932__m512i test_mm512_movm_epi8(__mmask64 __A) {2933 // CHECK-LABEL: test_mm512_movm_epi82934 // CHECK: %{{.*}} = bitcast i64 %{{.*}} to <64 x i1>2935 // CHECK: %vpmovm2.i = sext <64 x i1> %{{.*}} to <64 x i8>2936 return _mm512_movm_epi8(__A); 2937}2938 2939TEST_CONSTEXPR(_mm512_movepi8_mask(2940 ((__m512i)(__v64qi){0, 1, char(129), 3, 4, 5, 6, 7,2941 8, 9, 10, 11, 12, 13, 14, 15,2942 16, 17, 18, 19, 20, 21, 22, 23,2943 24, 25, 26, 27, 28, 29, 30, 31,2944 32, 33, 34, 35, 36, 37, 38, 39,2945 40, 41, 42, 43, 44, 45, 46, 47,2946 48, 49, 50, 51, 52, 53, 54, 55,2947 56, 57, 58, 59, 60, 61, 62, char(255)})2948) == (__mmask64)0x8000000000000004);2949 2950 2951__m512i test_mm512_movm_epi16(__mmask32 __A) {2952 // CHECK-LABEL: test_mm512_movm_epi162953 // CHECK: %{{.*}} = bitcast i32 %{{.*}} to <32 x i1>2954 // CHECK: %vpmovm2.i = sext <32 x i1> %{{.*}} to <32 x i16>2955 return _mm512_movm_epi16(__A); 2956}2957 2958__m512i test_mm512_broadcastb_epi8(__m128i __A) {2959 // CHECK-LABEL: test_mm512_broadcastb_epi82960 // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <64 x i32> zeroinitializer2961 return _mm512_broadcastb_epi8(__A);2962}2963TEST_CONSTEXPR(match_v64qi(_mm512_broadcastb_epi8((__m128i)(__v16qi){42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}), 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42));2964 2965__m512i test_mm512_mask_broadcastb_epi8(__m512i __O, __mmask64 __M, __m128i __A) {2966 // CHECK-LABEL: test_mm512_mask_broadcastb_epi82967 // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <64 x i32> zeroinitializer2968 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}2969 return _mm512_mask_broadcastb_epi8(__O, __M, __A);2970}2971TEST_CONSTEXPR(match_v64qi(_mm512_mask_broadcastb_epi8((__m512i)(__v64qs){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,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,63},(__mmask64)0xAAAAAAAAAAAAAAAA,(__m128i)(__v16qs){-120,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}),0,-120,2,-120,4,-120,6,-120,8,-120,10,-120,12,-120,14,-120,16,-120,18,-120,20,-120,22,-120,24,-120,26,-120,28,-120,30,-120,32,-120,34,-120,36,-120,38,-120,40,-120,42,-120,44,-120,46,-120,48,-120,50,-120,52,-120,54,-120,56,-120,58,-120,60,-120,62,-120));2972 2973__m512i test_mm512_maskz_broadcastb_epi8(__mmask64 __M, __m128i __A) {2974 // CHECK-LABEL: test_mm512_maskz_broadcastb_epi82975 // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <64 x i32> zeroinitializer2976 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}2977 return _mm512_maskz_broadcastb_epi8(__M, __A);2978}2979TEST_CONSTEXPR(match_v64qi(_mm512_maskz_broadcastb_epi8((__mmask64)0xAAAAAAAAAAAAAAAA,(__m128i)(__v16qs){-120,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}),0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120));2980 2981__m512i test_mm512_broadcastw_epi16(__m128i __A) {2982 // CHECK-LABEL: test_mm512_broadcastw_epi162983 // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <32 x i32> zeroinitializer2984 return _mm512_broadcastw_epi16(__A);2985}2986TEST_CONSTEXPR(match_v32hi(_mm512_broadcastw_epi16((__m128i)(__v8hi){42, 3, 10, 8, 0, 256, 256, 128}), 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42));2987TEST_CONSTEXPR(match_v32hi(2988 _mm512_permutex2var_epi16((__m512i)(__v32hi){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,2989 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32},2990 (__m512i)(__v32hi){0, 31, 32, 63, 1, 33, 2, 34,2991 3, 35, 4, 36, 5, 37, 6, 38,2992 7, 39, 8, 40, 9, 41, 10, 42,2993 11, 43, 12, 44, 13, 45, 14, 46},2994 (__m512i)(__v32hi){101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,2995 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132}),2996 1, 32, 101, 132, 2, 102, 3, 103,2997 4, 104, 5, 105, 6, 106, 7, 107,2998 8, 108, 9, 109, 10, 110, 11, 111,2999 12, 112, 13, 113, 14, 114, 15, 115));3000TEST_CONSTEXPR(match_v32hi(3001 _mm512_mask_permutex2var_epi16((__m512i)(__v32hi){-1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16,3002 -17, -18, -19, -20, -21, -22, -23, -24, -25, -26, -27, -28, -29, -30, -31, -32},3003 0xAAAAAAAA,3004 (__m512i)(__v32hi){0, 31, 32, 63, 1, 33, 2, 34,3005 3, 35, 4, 36, 5, 37, 6, 38,3006 7, 39, 8, 40, 9, 41, 10, 42,3007 11, 43, 12, 44, 13, 45, 14, 46},3008 (__m512i)(__v32hi){101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,3009 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132}),3010 -1, -32, -3, 132, -5, 102, -7, 103,3011 -9, 104, -11, 105, -13, 106, -15, 107,3012 -17, 108, -19, 109, -21, 110, -23, 111,3013 -25, 112, -27, 113, -29, 114, -31, 115));3014 3015__m512i test_mm512_mask_broadcastw_epi16(__m512i __O, __mmask32 __M, __m128i __A) {3016 // CHECK-LABEL: test_mm512_mask_broadcastw_epi163017 // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <32 x i32> zeroinitializer3018 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}3019 return _mm512_mask_broadcastw_epi16(__O, __M, __A);3020}3021TEST_CONSTEXPR(match_v32hi(_mm512_mask_broadcastw_epi16((__m512i)(__v32hi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31},(__mmask32)0xAAAAAAAA,(__m128i)(__v8hi){-120,1,2,3,4,5,6,7}),0,-120,2,-120,4,-120,6,-120,8,-120,10,-120,12,-120,14,-120,16,-120,18,-120,20,-120,22,-120,24,-120,26,-120,28,-120,30,-120));3022 3023__m512i test_mm512_maskz_broadcastw_epi16(__mmask32 __M, __m128i __A) {3024 // CHECK-LABEL: test_mm512_maskz_broadcastw_epi163025 // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <32 x i32> zeroinitializer3026 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}3027 return _mm512_maskz_broadcastw_epi16(__M, __A);3028}3029TEST_CONSTEXPR(match_v32hi(_mm512_maskz_broadcastw_epi16((__mmask32)0xAAAAAAAAu,(__m128i)(__v8hi){-120,1,2,3,4,5,6,7}),0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120));3030 3031__m512i test_mm512_mask_set1_epi16(__m512i __O, __mmask32 __M, short __A) {3032 // CHECK-LABEL: test_mm512_mask_set1_epi163033 // CHECK: insertelement <32 x i16> poison, i16 %{{.*}}, i32 03034 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 13035 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 23036 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 33037 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 43038 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 53039 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 63040 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 73041 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 83042 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 93043 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 103044 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 113045 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 123046 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 133047 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 143048 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 153049 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 163050 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 173051 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 183052 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 193053 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 203054 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 213055 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 223056 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 233057 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 243058 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 253059 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 263060 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 273061 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 283062 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 293063 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 303064 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 313065 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}3066 return _mm512_mask_set1_epi16(__O, __M, __A); 3067}3068TEST_CONSTEXPR(match_v32hi(_mm512_mask_set1_epi16((__m512i)(__v32hi){1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32},(__mmask32)0xAAAAAAAA,-1),1,-1,3,-1,5,-1,7,-1,9,-1,11,-1,13,-1,15,-1,17,-1,19,-1,21,-1,23,-1,25,-1,27,-1,29,-1,31,-1));3069 3070__m512i test_mm512_maskz_set1_epi16(__mmask32 __M, short __A) {3071 // CHECK-LABEL: test_mm512_maskz_set1_epi163072 // CHECK: insertelement <32 x i16> poison, i16 %{{.*}}, i32 03073 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 13074 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 23075 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 33076 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 43077 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 53078 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 63079 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 73080 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 83081 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 93082 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 103083 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 113084 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 123085 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 133086 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 143087 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 153088 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 163089 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 173090 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 183091 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 193092 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 203093 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 213094 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 223095 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 233096 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 243097 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 253098 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 263099 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 273100 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 283101 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 293102 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 303103 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 313104 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}3105 return _mm512_maskz_set1_epi16(__M, __A); 3106}3107TEST_CONSTEXPR(match_v32hi(_mm512_maskz_set1_epi16((__mmask32)0xAAAAAAAA,42),0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42));3108 3109__m512i test_mm512_permutexvar_epi16(__m512i __A, __m512i __B) {3110 // CHECK-LABEL: test_mm512_permutexvar_epi163111 // CHECK: @llvm.x86.avx512.permvar.hi.5123112 return _mm512_permutexvar_epi16(__A, __B);3113}3114 3115TEST_CONSTEXPR(match_v32hi(_mm512_permutexvar_epi16((__m512i)(__v32hi){31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}, (__m512i)(__v32hi){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}), 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10));3116TEST_CONSTEXPR(match_v32hi(_mm512_permutexvar_epi16((__m512i)(__v32hi){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)(__v32hi){100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131}), 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100));3117 3118__m512i test_mm512_maskz_permutexvar_epi16(__mmask32 __M, __m512i __A, __m512i __B) {3119 // CHECK-LABEL: test_mm512_maskz_permutexvar_epi163120 // CHECK: @llvm.x86.avx512.permvar.hi.5123121 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}3122 return _mm512_maskz_permutexvar_epi16(__M, __A, __B); 3123}3124 3125__m512i test_mm512_mask_permutexvar_epi16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {3126 // CHECK-LABEL: test_mm512_mask_permutexvar_epi163127 // CHECK: @llvm.x86.avx512.permvar.hi.5123128 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}3129 return _mm512_mask_permutexvar_epi16(__W, __M, __A, __B);3130}3131 3132TEST_CONSTEXPR(match_v32hi(_mm512_mask_permutexvar_epi16((__m512i)(__v32hi){99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}, 0xFFFFFFFF, (__m512i)(__v32hi){31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}, (__m512i)(__v32hi){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}), 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10));3133TEST_CONSTEXPR(match_v32hi(_mm512_mask_permutexvar_epi16((__m512i)(__v32hi){99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}, 0xAAAAAAAA, (__m512i)(__v32hi){31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}, (__m512i)(__v32hi){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}), 99, 40, 99, 38, 99, 36, 99, 34, 99, 32, 99, 30, 99, 28, 99, 26, 99, 24, 99, 22, 99, 20, 99, 18, 99, 16, 99, 14, 99, 12, 99, 10));3134TEST_CONSTEXPR(match_v32hi(_mm512_maskz_permutexvar_epi16(0xFFFFFFFF, (__m512i)(__v32hi){31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}, (__m512i)(__v32hi){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}), 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10));3135TEST_CONSTEXPR(match_v32hi(_mm512_maskz_permutexvar_epi16(0xAAAAAAAA, (__m512i)(__v32hi){31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}, (__m512i)(__v32hi){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}), 0, 40, 0, 38, 0, 36, 0, 34, 0, 32, 0, 30, 0, 28, 0, 26, 0, 24, 0, 22, 0, 20, 0, 18, 0, 16, 0, 14, 0, 12, 0, 10));3136 3137__m512i test_mm512_alignr_epi8(__m512i __A,__m512i __B){3138 // CHECK-LABEL: test_mm512_alignr_epi83139 // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 64, i32 65, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 80, i32 81, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 96, i32 97, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 112, i32 113>3140 return _mm512_alignr_epi8(__A, __B, 2); 3141}3142TEST_CONSTEXPR(match_v64qi(_mm512_alignr_epi8(((__m512i)(__v64qs){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63, 64}), ((__m512i)(__v64qs){65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 127}), 2), 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 1, 2, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 17, 18, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 33, 34, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 127, 49, 50));3143TEST_CONSTEXPR(match_v64qi(_mm512_alignr_epi8(((__m512i)(__v64qs){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63, 64}), ((__m512i)(__v64qs){65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 127}), 16), 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63, 64));3144TEST_CONSTEXPR(match_v64qi(_mm512_alignr_epi8(((__m512i)(__v64qs){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63, 64}), ((__m512i)(__v64qs){65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 127}), 32), 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));3145 3146__m512i test_mm512_mask_alignr_epi8(__m512i __W, __mmask64 __U, __m512i __A,__m512i __B){3147 // CHECK-LABEL: test_mm512_mask_alignr_epi83148 // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 64, i32 65, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 80, i32 81, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 96, i32 97, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 112, i32 113>3149 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}3150 return _mm512_mask_alignr_epi8(__W, __U, __A, __B, 2); 3151}3152TEST_CONSTEXPR(match_v64qi(_mm512_mask_alignr_epi8(((__m512i)(__v64qs){127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127}), (__mmask64)0x000000000000000f, ((__m512i)(__v64qs){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63, 64}), ((__m512i)(__v64qs){65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 127}), 2), 67, 68, 69, 70, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127));3153 3154__m512i test_mm512_maskz_alignr_epi8(__mmask64 __U, __m512i __A,__m512i __B){3155 // CHECK-LABEL: test_mm512_maskz_alignr_epi83156 // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 64, i32 65, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 80, i32 81, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 96, i32 97, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 112, i32 113>3157 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}3158 return _mm512_maskz_alignr_epi8(__U, __A, __B, 2); 3159}3160TEST_CONSTEXPR(match_v64qi(_mm512_maskz_alignr_epi8((__mmask64)0x000000000000000f, ((__m512i)(__v64qs){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 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, 63, 64}), ((__m512i)(__v64qs){65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 127}), 2), 67, 68, 69, 70, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));3161 3162 3163 3164__m512i test_mm512_mm_dbsad_epu8(__m512i __A, __m512i __B) {3165 // CHECK-LABEL: test_mm512_mm_dbsad_epu83166 // CHECK: @llvm.x86.avx512.dbpsadbw.5123167 return _mm512_dbsad_epu8(__A, __B, 170); 3168}3169 3170__m512i test_mm512_mm_mask_dbsad_epu8(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {3171 // CHECK-LABEL: test_mm512_mm_mask_dbsad_epu83172 // CHECK: @llvm.x86.avx512.dbpsadbw.5123173 //CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}3174 return _mm512_mask_dbsad_epu8(__W, __U, __A, __B, 170); 3175}3176 3177__m512i test_mm512_mm_maskz_dbsad_epu8(__mmask32 __U, __m512i __A, __m512i __B) {3178 // CHECK-LABEL: test_mm512_mm_maskz_dbsad_epu83179 // CHECK: @llvm.x86.avx512.dbpsadbw.5123180 //CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}3181 return _mm512_maskz_dbsad_epu8(__U, __A, __B, 170); 3182}3183 3184__m512i test_mm512_sad_epu8(__m512i __A, __m512i __B) {3185 // CHECK-LABEL: test_mm512_sad_epu83186 // CHECK: @llvm.x86.avx512.psad.bw.5123187 return _mm512_sad_epu8(__A, __B); 3188}3189 3190__mmask32 test_mm512_movepi16_mask(__m512i __A) {3191 // CHECK-LABEL: test_mm512_movepi16_mask3192 // CHECK: [[CMP:%.*]] = icmp slt <32 x i16> %{{.*}}, zeroinitializer3193 return _mm512_movepi16_mask(__A); 3194}3195 3196TEST_CONSTEXPR(_mm512_movepi16_mask(3197 ((__m512i)(__v32hi){0, 1, short(32768), 3, 4, 5, 6, 7,3198 8, 9, 10, 11, 12, 13, 14, 15,3199 16, 17, 18, 19, 20, 21, 22, 23,3200 24, 25, 26, 27, 28, 29, 30, short(32768)})3201) == (__mmask32)0x80000004);3202 3203void test_mm512_mask_cvtepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)3204{3205 // CHECK-LABEL: test_mm512_mask_cvtepi16_storeu_epi83206 // CHECK: @llvm.x86.avx512.mask.pmov.wb.mem.5123207 _mm512_mask_cvtepi16_storeu_epi8 ( __P, __M, __A);3208}3209 3210void test_mm512_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)3211{3212 // CHECK-LABEL: test_mm512_mask_cvtsepi16_storeu_epi83213 // CHECK: @llvm.x86.avx512.mask.pmovs.wb.mem.5123214 _mm512_mask_cvtsepi16_storeu_epi8 ( __P, __M, __A);3215}3216 3217void test_mm512_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)3218{3219 // CHECK-LABEL: test_mm512_mask_cvtusepi16_storeu_epi83220 // CHECK: @llvm.x86.avx512.mask.pmovus.wb.mem.5123221 _mm512_mask_cvtusepi16_storeu_epi8 ( __P, __M, __A);3222}3223