brintos

brintos / llvm-project-archived public Read only

0
0
Text · 265.6 KiB · fd50ab9 Raw
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