1 // RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512bw -emit-llvm -o - -Wall -Werror -Wsign-conversion | FileCheck %s
2 // RUN: %clang_cc1 -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 %s
3 
4 
5 #include <immintrin.h>
6 
test_knot_mask32(__mmask32 a)7 __mmask32 test_knot_mask32(__mmask32 a) {
8   // CHECK-LABEL: @test_knot_mask32
9   // CHECK: [[IN:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
10   // CHECK: [[NOT:%.*]] = xor <32 x i1> [[IN]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
11   // CHECK: bitcast <32 x i1> [[NOT]] to i32
12   return _knot_mask32(a);
13 }
14 
test_knot_mask64(__mmask64 a)15 __mmask64 test_knot_mask64(__mmask64 a) {
16   // CHECK-LABEL: @test_knot_mask64
17   // CHECK: [[IN:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
18   // CHECK: [[NOT:%.*]] = xor <64 x i1> [[IN]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
19   // CHECK: bitcast <64 x i1> [[NOT]] to i64
20   return _knot_mask64(a);
21 }
22 
test_kand_mask32(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)23 __mmask32 test_kand_mask32(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
24   // CHECK-LABEL: @test_kand_mask32
25   // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
26   // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
27   // CHECK: [[RES:%.*]] = and <32 x i1> [[LHS]], [[RHS]]
28   // CHECK: bitcast <32 x i1> [[RES]] to i32
29   return _mm512_mask_cmpneq_epu16_mask(_kand_mask32(_mm512_cmpneq_epu16_mask(__A, __B),
30                                                     _mm512_cmpneq_epu16_mask(__C, __D)),
31                                                     __E, __F);
32 }
33 
test_kand_mask64(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)34 __mmask64 test_kand_mask64(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
35   // CHECK-LABEL: @test_kand_mask64
36   // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
37   // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
38   // CHECK: [[RES:%.*]] = and <64 x i1> [[LHS]], [[RHS]]
39   // CHECK: bitcast <64 x i1> [[RES]] to i64
40   return _mm512_mask_cmpneq_epu8_mask(_kand_mask64(_mm512_cmpneq_epu8_mask(__A, __B),
41                                                    _mm512_cmpneq_epu8_mask(__C, __D)),
42                                                    __E, __F);
43 }
44 
test_kandn_mask32(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)45 __mmask32 test_kandn_mask32(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
46   // CHECK-LABEL: @test_kandn_mask32
47   // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
48   // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
49   // CHECK: [[NOT:%.*]] = xor <32 x i1> [[LHS]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
50   // CHECK: [[RES:%.*]] = and <32 x i1> [[NOT]], [[RHS]]
51   // CHECK: bitcast <32 x i1> [[RES]] to i32
52   return _mm512_mask_cmpneq_epu16_mask(_kandn_mask32(_mm512_cmpneq_epu16_mask(__A, __B),
53                                                      _mm512_cmpneq_epu16_mask(__C, __D)),
54                                                      __E, __F);
55 }
56 
test_kandn_mask64(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)57 __mmask64 test_kandn_mask64(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
58   // CHECK-LABEL: @test_kandn_mask64
59   // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
60   // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
61   // CHECK: [[NOT:%.*]] = xor <64 x i1> [[LHS]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
62   // CHECK: [[RES:%.*]] = and <64 x i1> [[NOT]], [[RHS]]
63   // CHECK: bitcast <64 x i1> [[RES]] to i64
64   return _mm512_mask_cmpneq_epu8_mask(_kandn_mask64(_mm512_cmpneq_epu8_mask(__A, __B),
65                                                     _mm512_cmpneq_epu8_mask(__C, __D)),
66                                                     __E, __F);
67 }
68 
test_kor_mask32(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)69 __mmask32 test_kor_mask32(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
70   // CHECK-LABEL: @test_kor_mask32
71   // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
72   // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
73   // CHECK: [[RES:%.*]] = or <32 x i1> [[LHS]], [[RHS]]
74   // CHECK: bitcast <32 x i1> [[RES]] to i32
75   return _mm512_mask_cmpneq_epu16_mask(_kor_mask32(_mm512_cmpneq_epu16_mask(__A, __B),
76                                                    _mm512_cmpneq_epu16_mask(__C, __D)),
77                                                    __E, __F);
78 }
79 
test_kor_mask64(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)80 __mmask64 test_kor_mask64(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
81   // CHECK-LABEL: @test_kor_mask64
82   // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
83   // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
84   // CHECK: [[RES:%.*]] = or <64 x i1> [[LHS]], [[RHS]]
85   // CHECK: bitcast <64 x i1> [[RES]] to i64
86   return _mm512_mask_cmpneq_epu8_mask(_kor_mask64(_mm512_cmpneq_epu8_mask(__A, __B),
87                                                   _mm512_cmpneq_epu8_mask(__C, __D)),
88                                                   __E, __F);
89 }
90 
test_kxnor_mask32(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)91 __mmask32 test_kxnor_mask32(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
92   // CHECK-LABEL: @test_kxnor_mask32
93   // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
94   // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
95   // CHECK: [[NOT:%.*]] = xor <32 x i1> [[LHS]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
96   // CHECK: [[RES:%.*]] = xor <32 x i1> [[NOT]], [[RHS]]
97   // CHECK: bitcast <32 x i1> [[RES]] to i32
98   return _mm512_mask_cmpneq_epu16_mask(_kxnor_mask32(_mm512_cmpneq_epu16_mask(__A, __B),
99                                                      _mm512_cmpneq_epu16_mask(__C, __D)),
100                                                      __E, __F);
101 }
102 
test_kxnor_mask64(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)103 __mmask64 test_kxnor_mask64(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
104   // CHECK-LABEL: @test_kxnor_mask64
105   // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
106   // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
107   // CHECK: [[NOT:%.*]] = xor <64 x i1> [[LHS]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
108   // CHECK: [[RES:%.*]] = xor <64 x i1> [[NOT]], [[RHS]]
109   // CHECK: bitcast <64 x i1> [[RES]] to i64
110   return _mm512_mask_cmpneq_epu8_mask(_kxnor_mask64(_mm512_cmpneq_epu8_mask(__A, __B),
111                                                     _mm512_cmpneq_epu8_mask(__C, __D)),
112                                                     __E, __F);
113 }
114 
test_kxor_mask32(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)115 __mmask32 test_kxor_mask32(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
116   // CHECK-LABEL: @test_kxor_mask32
117   // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
118   // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
119   // CHECK: [[RES:%.*]] = xor <32 x i1> [[LHS]], [[RHS]]
120   // CHECK: bitcast <32 x i1> [[RES]] to i32
121   return _mm512_mask_cmpneq_epu16_mask(_kxor_mask32(_mm512_cmpneq_epu16_mask(__A, __B),
122                                                     _mm512_cmpneq_epu16_mask(__C, __D)),
123                                                     __E, __F);
124 }
125 
test_kxor_mask64(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)126 __mmask64 test_kxor_mask64(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
127   // CHECK-LABEL: @test_kxor_mask64
128   // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
129   // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
130   // CHECK: [[RES:%.*]] = xor <64 x i1> [[LHS]], [[RHS]]
131   // CHECK: bitcast <64 x i1> [[RES]] to i64
132   return _mm512_mask_cmpneq_epu8_mask(_kxor_mask64(_mm512_cmpneq_epu8_mask(__A, __B),
133                                                    _mm512_cmpneq_epu8_mask(__C, __D)),
134                                                    __E, __F);
135 }
136 
test_kortestz_mask32_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D)137 unsigned char test_kortestz_mask32_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
138   // CHECK-LABEL: @test_kortestz_mask32_u8
139   // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
140   // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
141   // CHECK: [[OR:%.*]] = or <32 x i1> [[LHS]], [[RHS]]
142   // CHECK: [[CAST:%.*]] = bitcast <32 x i1> [[OR]] to i32
143   // CHECK: [[CMP:%.*]] = icmp eq i32 [[CAST]], 0
144   // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32
145   // CHECK: trunc i32 [[ZEXT]] to i8
146   return _kortestz_mask32_u8(_mm512_cmpneq_epu16_mask(__A, __B),
147                              _mm512_cmpneq_epu16_mask(__C, __D));
148 }
149 
test_kortestc_mask32_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D)150 unsigned char test_kortestc_mask32_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
151   // CHECK-LABEL: @test_kortestc_mask32_u8
152   // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
153   // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
154   // CHECK: [[OR:%.*]] = or <32 x i1> [[LHS]], [[RHS]]
155   // CHECK: [[CAST:%.*]] = bitcast <32 x i1> [[OR]] to i32
156   // CHECK: [[CMP:%.*]] = icmp eq i32 [[CAST]], -1
157   // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32
158   // CHECK: trunc i32 [[ZEXT]] to i8
159   return _kortestc_mask32_u8(_mm512_cmpneq_epu16_mask(__A, __B),
160                              _mm512_cmpneq_epu16_mask(__C, __D));
161 }
162 
test_kortest_mask32_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D,unsigned char * CF)163 unsigned char test_kortest_mask32_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, unsigned char *CF) {
164   // CHECK-LABEL: @test_kortest_mask32_u8
165   // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
166   // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
167   // CHECK: [[OR:%.*]] = or <32 x i1> [[LHS]], [[RHS]]
168   // CHECK: [[CAST:%.*]] = bitcast <32 x i1> [[OR]] to i32
169   // CHECK: [[CMP:%.*]] = icmp eq i32 [[CAST]], -1
170   // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32
171   // CHECK: trunc i32 [[ZEXT]] to i8
172   // CHECK: [[LHS2:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
173   // CHECK: [[RHS2:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
174   // CHECK: [[OR2:%.*]] = or <32 x i1> [[LHS2]], [[RHS2]]
175   // CHECK: [[CAST2:%.*]] = bitcast <32 x i1> [[OR2]] to i32
176   // CHECK: [[CMP2:%.*]] = icmp eq i32 [[CAST2]], 0
177   // CHECK: [[ZEXT2:%.*]] = zext i1 [[CMP2]] to i32
178   // CHECK: trunc i32 [[ZEXT2]] to i8
179   return _kortest_mask32_u8(_mm512_cmpneq_epu16_mask(__A, __B),
180                             _mm512_cmpneq_epu16_mask(__C, __D), CF);
181 }
182 
test_kortestz_mask64_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D)183 unsigned char test_kortestz_mask64_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
184   // CHECK-LABEL: @test_kortestz_mask64_u8
185   // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
186   // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
187   // CHECK: [[OR:%.*]] = or <64 x i1> [[LHS]], [[RHS]]
188   // CHECK: [[CAST:%.*]] = bitcast <64 x i1> [[OR]] to i64
189   // CHECK: [[CMP:%.*]] = icmp eq i64 [[CAST]], 0
190   // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32
191   // CHECK: trunc i32 [[ZEXT]] to i8
192   return _kortestz_mask64_u8(_mm512_cmpneq_epu8_mask(__A, __B),
193                              _mm512_cmpneq_epu8_mask(__C, __D));
194 }
195 
test_kortestc_mask64_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D)196 unsigned char test_kortestc_mask64_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
197   // CHECK-LABEL: @test_kortestc_mask64_u8
198   // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
199   // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
200   // CHECK: [[OR:%.*]] = or <64 x i1> [[LHS]], [[RHS]]
201   // CHECK: [[CAST:%.*]] = bitcast <64 x i1> [[OR]] to i64
202   // CHECK: [[CMP:%.*]] = icmp eq i64 [[CAST]], -1
203   // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32
204   // CHECK: trunc i32 [[ZEXT]] to i8
205   return _kortestc_mask64_u8(_mm512_cmpneq_epu8_mask(__A, __B),
206                              _mm512_cmpneq_epu8_mask(__C, __D));
207 }
208 
test_kortest_mask64_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D,unsigned char * CF)209 unsigned char test_kortest_mask64_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, unsigned char *CF) {
210   // CHECK-LABEL: @test_kortest_mask64_u8
211   // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
212   // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
213   // CHECK: [[OR:%.*]] = or <64 x i1> [[LHS]], [[RHS]]
214   // CHECK: [[CAST:%.*]] = bitcast <64 x i1> [[OR]] to i64
215   // CHECK: [[CMP:%.*]] = icmp eq i64 [[CAST]], -1
216   // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32
217   // CHECK: trunc i32 [[ZEXT]] to i8
218   // CHECK: [[LHS2:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
219   // CHECK: [[RHS2:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
220   // CHECK: [[OR2:%.*]] = or <64 x i1> [[LHS2]], [[RHS2]]
221   // CHECK: [[CAST2:%.*]] = bitcast <64 x i1> [[OR2]] to i64
222   // CHECK: [[CMP2:%.*]] = icmp eq i64 [[CAST2]], 0
223   // CHECK: [[ZEXT2:%.*]] = zext i1 [[CMP2]] to i32
224   // CHECK: trunc i32 [[ZEXT2]] to i8
225   return _kortest_mask64_u8(_mm512_cmpneq_epu8_mask(__A, __B),
226                             _mm512_cmpneq_epu8_mask(__C, __D), CF);
227 }
228 
test_ktestz_mask32_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D)229 unsigned char test_ktestz_mask32_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
230   // CHECK-LABEL: @test_ktestz_mask32_u8
231   // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
232   // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
233   // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestz.d(<32 x i1> [[LHS]], <32 x i1> [[RHS]])
234   // CHECK: trunc i32 [[RES]] to i8
235   return _ktestz_mask32_u8(_mm512_cmpneq_epu16_mask(__A, __B),
236                            _mm512_cmpneq_epu16_mask(__C, __D));
237 }
238 
test_ktestc_mask32_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D)239 unsigned char test_ktestc_mask32_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
240   // CHECK-LABEL: @test_ktestc_mask32_u8
241   // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
242   // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
243   // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestc.d(<32 x i1> [[LHS]], <32 x i1> [[RHS]])
244   // CHECK: trunc i32 [[RES]] to i8
245   return _ktestc_mask32_u8(_mm512_cmpneq_epu16_mask(__A, __B),
246                            _mm512_cmpneq_epu16_mask(__C, __D));
247 }
248 
test_ktest_mask32_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D,unsigned char * CF)249 unsigned char test_ktest_mask32_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, unsigned char *CF) {
250   // CHECK-LABEL: @test_ktest_mask32_u8
251   // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
252   // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
253   // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestc.d(<32 x i1> [[LHS]], <32 x i1> [[RHS]])
254   // CHECK: trunc i32 [[RES]] to i8
255   // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
256   // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
257   // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestz.d(<32 x i1> [[LHS]], <32 x i1> [[RHS]])
258   // CHECK: trunc i32 [[RES]] to i8
259   return _ktest_mask32_u8(_mm512_cmpneq_epu16_mask(__A, __B),
260                           _mm512_cmpneq_epu16_mask(__C, __D), CF);
261 }
262 
test_ktestz_mask64_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D)263 unsigned char test_ktestz_mask64_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
264   // CHECK-LABEL: @test_ktestz_mask64_u8
265   // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
266   // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
267   // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestz.q(<64 x i1> [[LHS]], <64 x i1> [[RHS]])
268   // CHECK: trunc i32 [[RES]] to i8
269   return _ktestz_mask64_u8(_mm512_cmpneq_epu8_mask(__A, __B),
270                            _mm512_cmpneq_epu8_mask(__C, __D));
271 }
272 
test_ktestc_mask64_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D)273 unsigned char test_ktestc_mask64_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
274   // CHECK-LABEL: @test_ktestc_mask64_u8
275   // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
276   // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
277   // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestc.q(<64 x i1> [[LHS]], <64 x i1> [[RHS]])
278   // CHECK: trunc i32 [[RES]] to i8
279   return _ktestc_mask64_u8(_mm512_cmpneq_epu8_mask(__A, __B),
280                            _mm512_cmpneq_epu8_mask(__C, __D));
281 }
282 
test_ktest_mask64_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D,unsigned char * CF)283 unsigned char test_ktest_mask64_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, unsigned char *CF) {
284   // CHECK-LABEL: @test_ktest_mask64_u8
285   // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
286   // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
287   // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestc.q(<64 x i1> [[LHS]], <64 x i1> [[RHS]])
288   // CHECK: trunc i32 [[RES]] to i8
289   // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
290   // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
291   // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestz.q(<64 x i1> [[LHS]], <64 x i1> [[RHS]])
292   // CHECK: trunc i32 [[RES]] to i8
293   return _ktest_mask64_u8(_mm512_cmpneq_epu8_mask(__A, __B),
294                           _mm512_cmpneq_epu8_mask(__C, __D), CF);
295 }
296 
test_kadd_mask32(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)297 __mmask32 test_kadd_mask32(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
298   // CHECK-LABEL: @test_kadd_mask32
299   // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
300   // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
301   // CHECK: [[RES:%.*]] = call <32 x i1> @llvm.x86.avx512.kadd.d(<32 x i1> [[LHS]], <32 x i1> [[RHS]])
302   // CHECK: bitcast <32 x i1> [[RES]] to i32
303   return _mm512_mask_cmpneq_epu16_mask(_kadd_mask32(_mm512_cmpneq_epu16_mask(__A, __B),
304                                                     _mm512_cmpneq_epu16_mask(__C, __D)),
305                                                     __E, __F);
306 }
307 
test_kadd_mask64(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)308 __mmask64 test_kadd_mask64(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
309   // CHECK-LABEL: @test_kadd_mask64
310   // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
311   // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
312   // CHECK: [[RES:%.*]] = call <64 x i1> @llvm.x86.avx512.kadd.q(<64 x i1> [[LHS]], <64 x i1> [[RHS]])
313   // CHECK: bitcast <64 x i1> [[RES]] to i64
314   return _mm512_mask_cmpneq_epu8_mask(_kadd_mask64(_mm512_cmpneq_epu8_mask(__A, __B),
315                                                    _mm512_cmpneq_epu8_mask(__C, __D)),
316                                                    __E, __F);
317 }
318 
test_kshiftli_mask32(__m512i A,__m512i B,__m512i C,__m512i D)319 __mmask32 test_kshiftli_mask32(__m512i A, __m512i B, __m512i C, __m512i D) {
320   // CHECK-LABEL: @test_kshiftli_mask32
321   // CHECK: [[VAL:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
322   // 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>
323   // CHECK: bitcast <32 x i1> [[RES]] to i32
324   return _mm512_mask_cmpneq_epu16_mask(_kshiftli_mask32(_mm512_cmpneq_epu16_mask(A, B), 31), C, D);
325 }
326 
test_kshiftri_mask32(__m512i A,__m512i B,__m512i C,__m512i D)327 __mmask32 test_kshiftri_mask32(__m512i A, __m512i B, __m512i C, __m512i D) {
328   // CHECK-LABEL: @test_kshiftri_mask32
329   // CHECK: [[VAL:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
330   // 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>
331   // CHECK: bitcast <32 x i1> [[RES]] to i32
332   return _mm512_mask_cmpneq_epu16_mask(_kshiftri_mask32(_mm512_cmpneq_epu16_mask(A, B), 31), C, D);
333 }
334 
test_kshiftli_mask64(__m512i A,__m512i B,__m512i C,__m512i D)335 __mmask64 test_kshiftli_mask64(__m512i A, __m512i B, __m512i C, __m512i D) {
336   // CHECK-LABEL: @test_kshiftli_mask64
337   // CHECK: [[VAL:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
338   // 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>
339   // CHECK: bitcast <64 x i1> [[RES]] to i64
340   return _mm512_mask_cmpneq_epu8_mask(_kshiftli_mask64(_mm512_cmpneq_epu8_mask(A, B), 32), C, D);
341 }
342 
test_kshiftri_mask64(__m512i A,__m512i B,__m512i C,__m512i D)343 __mmask64 test_kshiftri_mask64(__m512i A, __m512i B, __m512i C, __m512i D) {
344   // CHECK-LABEL: @test_kshiftri_mask64
345   // CHECK: [[VAL:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
346   // 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>
347   // CHECK: bitcast <64 x i1> [[RES]] to i64
348   return _mm512_mask_cmpneq_epu8_mask(_kshiftri_mask64(_mm512_cmpneq_epu8_mask(A, B), 32), C, D);
349 }
350 
test_cvtmask32_u32(__m512i A,__m512i B)351 unsigned int test_cvtmask32_u32(__m512i A, __m512i B) {
352   // CHECK-LABEL: @test_cvtmask32_u32
353   // CHECK: bitcast <32 x i1> %{{.*}} to i32
354   // CHECK: bitcast i32 %{{.*}} to <32 x i1>
355   return _cvtmask32_u32(_mm512_cmpneq_epu16_mask(A, B));
356 }
357 
test_cvtmask64_u64(__m512i A,__m512i B)358 unsigned long long test_cvtmask64_u64(__m512i A, __m512i B) {
359   // CHECK-LABEL: @test_cvtmask64_u64
360   // CHECK: bitcast <64 x i1> %{{.*}} to i64
361   // CHECK: bitcast i64 %{{.*}} to <64 x i1>
362   return _cvtmask64_u64(_mm512_cmpneq_epu8_mask(A, B));
363 }
364 
test_cvtu32_mask32(__m512i A,__m512i B,unsigned int C)365 __mmask32 test_cvtu32_mask32(__m512i A, __m512i B, unsigned int C) {
366   // CHECK-LABEL: @test_cvtu32_mask32
367   // CHECK: bitcast i32 %{{.*}} to <32 x i1>
368   return _mm512_mask_cmpneq_epu16_mask(_cvtu32_mask32(C), A, B);
369 }
370 
test_cvtu64_mask64(__m512i A,__m512i B,unsigned long long C)371 __mmask64 test_cvtu64_mask64(__m512i A, __m512i B, unsigned long long C) {
372   // CHECK-LABEL: @test_cvtu64_mask64
373   // CHECK: bitcast i64 %{{.*}} to <64 x i1>
374   return _mm512_mask_cmpneq_epu8_mask(_cvtu64_mask64(C), A, B);
375 }
376 
test_load_mask32(__mmask32 * A,__m512i B,__m512i C)377 __mmask32 test_load_mask32(__mmask32 *A, __m512i B, __m512i C) {
378   // CHECK-LABEL: @test_load_mask32
379   // CHECK: [[LOAD:%.*]] = load i32, i32* %{{.*}}
380   // CHECK: bitcast i32 [[LOAD]] to <32 x i1>
381   return _mm512_mask_cmpneq_epu16_mask(_load_mask32(A), B, C);
382 }
383 
test_load_mask64(__mmask64 * A,__m512i B,__m512i C)384 __mmask64 test_load_mask64(__mmask64 *A, __m512i B, __m512i C) {
385   // CHECK-LABEL: @test_load_mask64
386   // CHECK: [[LOAD:%.*]] = load i64, i64* %{{.*}}
387   // CHECK: bitcast i64 [[LOAD]] to <64 x i1>
388   return _mm512_mask_cmpneq_epu8_mask(_load_mask64(A), B, C);
389 }
390 
test_store_mask32(__mmask32 * A,__m512i B,__m512i C)391 void test_store_mask32(__mmask32 *A, __m512i B, __m512i C) {
392   // CHECK-LABEL: @test_store_mask32
393   // CHECK: bitcast <32 x i1> %{{.*}} to i32
394   // CHECK: store i32 %{{.*}}, i32* %{{.*}}
395   _store_mask32(A, _mm512_cmpneq_epu16_mask(B, C));
396 }
397 
test_store_mask64(__mmask64 * A,__m512i B,__m512i C)398 void test_store_mask64(__mmask64 *A, __m512i B, __m512i C) {
399   // CHECK-LABEL: @test_store_mask64
400   // CHECK: bitcast <64 x i1> %{{.*}} to i64
401   // CHECK: store i64 %{{.*}}, i64* %{{.*}}
402   _store_mask64(A, _mm512_cmpneq_epu8_mask(B, C));
403 }
404 
test_mm512_cmpeq_epi8_mask(__m512i __a,__m512i __b)405 __mmask64 test_mm512_cmpeq_epi8_mask(__m512i __a, __m512i __b) {
406   // CHECK-LABEL: @test_mm512_cmpeq_epi8_mask
407   // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
408   return (__mmask64)_mm512_cmpeq_epi8_mask(__a, __b);
409 }
410 
test_mm512_mask_cmpeq_epi8_mask(__mmask64 __u,__m512i __a,__m512i __b)411 __mmask64 test_mm512_mask_cmpeq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
412   // CHECK-LABEL: @test_mm512_mask_cmpeq_epi8_mask
413   // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
414   // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
415   return (__mmask64)_mm512_mask_cmpeq_epi8_mask(__u, __a, __b);
416 }
417 
test_mm512_cmpeq_epi16_mask(__m512i __a,__m512i __b)418 __mmask32 test_mm512_cmpeq_epi16_mask(__m512i __a, __m512i __b) {
419   // CHECK-LABEL: @test_mm512_cmpeq_epi16_mask
420   // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
421   return (__mmask32)_mm512_cmpeq_epi16_mask(__a, __b);
422 }
423 
test_mm512_mask_cmpeq_epi16_mask(__mmask32 __u,__m512i __a,__m512i __b)424 __mmask32 test_mm512_mask_cmpeq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
425   // CHECK-LABEL: @test_mm512_mask_cmpeq_epi16_mask
426   // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
427   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
428   return (__mmask32)_mm512_mask_cmpeq_epi16_mask(__u, __a, __b);
429 }
430 
test_mm512_cmpgt_epi8_mask(__m512i __a,__m512i __b)431 __mmask64 test_mm512_cmpgt_epi8_mask(__m512i __a, __m512i __b) {
432   // CHECK-LABEL: @test_mm512_cmpgt_epi8_mask
433   // CHECK: icmp sgt <64 x i8> %{{.*}}, %{{.*}}
434   return (__mmask64)_mm512_cmpgt_epi8_mask(__a, __b);
435 }
436 
test_mm512_mask_cmpgt_epi8_mask(__mmask64 __u,__m512i __a,__m512i __b)437 __mmask64 test_mm512_mask_cmpgt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
438   // CHECK-LABEL: @test_mm512_mask_cmpgt_epi8_mask
439   // CHECK: icmp sgt <64 x i8> %{{.*}}, %{{.*}}
440   // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
441   return (__mmask64)_mm512_mask_cmpgt_epi8_mask(__u, __a, __b);
442 }
443 
test_mm512_cmpgt_epi16_mask(__m512i __a,__m512i __b)444 __mmask32 test_mm512_cmpgt_epi16_mask(__m512i __a, __m512i __b) {
445   // CHECK-LABEL: @test_mm512_cmpgt_epi16_mask
446   // CHECK: icmp sgt <32 x i16> %{{.*}}, %{{.*}}
447   return (__mmask32)_mm512_cmpgt_epi16_mask(__a, __b);
448 }
449 
test_mm512_mask_cmpgt_epi16_mask(__mmask32 __u,__m512i __a,__m512i __b)450 __mmask32 test_mm512_mask_cmpgt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
451   // CHECK-LABEL: @test_mm512_mask_cmpgt_epi16_mask
452   // CHECK: icmp sgt <32 x i16> %{{.*}}, %{{.*}}
453   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
454   return (__mmask32)_mm512_mask_cmpgt_epi16_mask(__u, __a, __b);
455 }
456 
test_mm512_cmpeq_epu8_mask(__m512i __a,__m512i __b)457 __mmask64 test_mm512_cmpeq_epu8_mask(__m512i __a, __m512i __b) {
458   // CHECK-LABEL: @test_mm512_cmpeq_epu8_mask
459   // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
460   return (__mmask64)_mm512_cmpeq_epu8_mask(__a, __b);
461 }
462 
test_mm512_mask_cmpeq_epu8_mask(__mmask64 __u,__m512i __a,__m512i __b)463 __mmask64 test_mm512_mask_cmpeq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
464   // CHECK-LABEL: @test_mm512_mask_cmpeq_epu8_mask
465   // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
466   // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
467   return (__mmask64)_mm512_mask_cmpeq_epu8_mask(__u, __a, __b);
468 }
469 
test_mm512_cmpeq_epu16_mask(__m512i __a,__m512i __b)470 __mmask32 test_mm512_cmpeq_epu16_mask(__m512i __a, __m512i __b) {
471   // CHECK-LABEL: @test_mm512_cmpeq_epu16_mask
472   // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
473   return (__mmask32)_mm512_cmpeq_epu16_mask(__a, __b);
474 }
475 
test_mm512_mask_cmpeq_epu16_mask(__mmask32 __u,__m512i __a,__m512i __b)476 __mmask32 test_mm512_mask_cmpeq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
477   // CHECK-LABEL: @test_mm512_mask_cmpeq_epu16_mask
478   // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
479   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
480   return (__mmask32)_mm512_mask_cmpeq_epu16_mask(__u, __a, __b);
481 }
482 
test_mm512_cmpgt_epu8_mask(__m512i __a,__m512i __b)483 __mmask64 test_mm512_cmpgt_epu8_mask(__m512i __a, __m512i __b) {
484   // CHECK-LABEL: @test_mm512_cmpgt_epu8_mask
485   // CHECK: icmp ugt <64 x i8> %{{.*}}, %{{.*}}
486   return (__mmask64)_mm512_cmpgt_epu8_mask(__a, __b);
487 }
488 
test_mm512_mask_cmpgt_epu8_mask(__mmask64 __u,__m512i __a,__m512i __b)489 __mmask64 test_mm512_mask_cmpgt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
490   // CHECK-LABEL: @test_mm512_mask_cmpgt_epu8_mask
491   // CHECK: icmp ugt <64 x i8> %{{.*}}, %{{.*}}
492   // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
493   return (__mmask64)_mm512_mask_cmpgt_epu8_mask(__u, __a, __b);
494 }
495 
test_mm512_cmpgt_epu16_mask(__m512i __a,__m512i __b)496 __mmask32 test_mm512_cmpgt_epu16_mask(__m512i __a, __m512i __b) {
497   // CHECK-LABEL: @test_mm512_cmpgt_epu16_mask
498   // CHECK: icmp ugt <32 x i16> %{{.*}}, %{{.*}}
499   return (__mmask32)_mm512_cmpgt_epu16_mask(__a, __b);
500 }
501 
test_mm512_mask_cmpgt_epu16_mask(__mmask32 __u,__m512i __a,__m512i __b)502 __mmask32 test_mm512_mask_cmpgt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
503   // CHECK-LABEL: @test_mm512_mask_cmpgt_epu16_mask
504   // CHECK: icmp ugt <32 x i16> %{{.*}}, %{{.*}}
505   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
506   return (__mmask32)_mm512_mask_cmpgt_epu16_mask(__u, __a, __b);
507 }
508 
test_mm512_cmpge_epi8_mask(__m512i __a,__m512i __b)509 __mmask64 test_mm512_cmpge_epi8_mask(__m512i __a, __m512i __b) {
510   // CHECK-LABEL: @test_mm512_cmpge_epi8_mask
511   // CHECK: icmp sge <64 x i8> %{{.*}}, %{{.*}}
512   return (__mmask64)_mm512_cmpge_epi8_mask(__a, __b);
513 }
514 
test_mm512_mask_cmpge_epi8_mask(__mmask64 __u,__m512i __a,__m512i __b)515 __mmask64 test_mm512_mask_cmpge_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
516   // CHECK-LABEL: @test_mm512_mask_cmpge_epi8_mask
517   // CHECK: icmp sge <64 x i8> %{{.*}}, %{{.*}}
518   // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
519   return (__mmask64)_mm512_mask_cmpge_epi8_mask(__u, __a, __b);
520 }
521 
test_mm512_cmpge_epu8_mask(__m512i __a,__m512i __b)522 __mmask64 test_mm512_cmpge_epu8_mask(__m512i __a, __m512i __b) {
523   // CHECK-LABEL: @test_mm512_cmpge_epu8_mask
524   // CHECK: icmp uge <64 x i8> %{{.*}}, %{{.*}}
525   return (__mmask64)_mm512_cmpge_epu8_mask(__a, __b);
526 }
527 
test_mm512_mask_cmpge_epu8_mask(__mmask64 __u,__m512i __a,__m512i __b)528 __mmask64 test_mm512_mask_cmpge_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
529   // CHECK-LABEL: @test_mm512_mask_cmpge_epu8_mask
530   // CHECK: icmp uge <64 x i8> %{{.*}}, %{{.*}}
531   // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
532   return (__mmask64)_mm512_mask_cmpge_epu8_mask(__u, __a, __b);
533 }
534 
test_mm512_cmpge_epi16_mask(__m512i __a,__m512i __b)535 __mmask32 test_mm512_cmpge_epi16_mask(__m512i __a, __m512i __b) {
536   // CHECK-LABEL: @test_mm512_cmpge_epi16_mask
537   // CHECK: icmp sge <32 x i16> %{{.*}}, %{{.*}}
538   return (__mmask32)_mm512_cmpge_epi16_mask(__a, __b);
539 }
540 
test_mm512_mask_cmpge_epi16_mask(__mmask32 __u,__m512i __a,__m512i __b)541 __mmask32 test_mm512_mask_cmpge_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
542   // CHECK-LABEL: @test_mm512_mask_cmpge_epi16_mask
543   // CHECK: icmp sge <32 x i16> %{{.*}}, %{{.*}}
544   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
545   return (__mmask32)_mm512_mask_cmpge_epi16_mask(__u, __a, __b);
546 }
547 
test_mm512_cmpge_epu16_mask(__m512i __a,__m512i __b)548 __mmask32 test_mm512_cmpge_epu16_mask(__m512i __a, __m512i __b) {
549   // CHECK-LABEL: @test_mm512_cmpge_epu16_mask
550   // CHECK: icmp uge <32 x i16> %{{.*}}, %{{.*}}
551   return (__mmask32)_mm512_cmpge_epu16_mask(__a, __b);
552 }
553 
test_mm512_mask_cmpge_epu16_mask(__mmask32 __u,__m512i __a,__m512i __b)554 __mmask32 test_mm512_mask_cmpge_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
555   // CHECK-LABEL: @test_mm512_mask_cmpge_epu16_mask
556   // CHECK: icmp uge <32 x i16> %{{.*}}, %{{.*}}
557   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
558   return (__mmask32)_mm512_mask_cmpge_epu16_mask(__u, __a, __b);
559 }
560 
test_mm512_cmple_epi8_mask(__m512i __a,__m512i __b)561 __mmask64 test_mm512_cmple_epi8_mask(__m512i __a, __m512i __b) {
562   // CHECK-LABEL: @test_mm512_cmple_epi8_mask
563   // CHECK: icmp sle <64 x i8> %{{.*}}, %{{.*}}
564   return (__mmask64)_mm512_cmple_epi8_mask(__a, __b);
565 }
566 
test_mm512_mask_cmple_epi8_mask(__mmask64 __u,__m512i __a,__m512i __b)567 __mmask64 test_mm512_mask_cmple_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
568   // CHECK-LABEL: @test_mm512_mask_cmple_epi8_mask
569   // CHECK: icmp sle <64 x i8> %{{.*}}, %{{.*}}
570   // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
571   return (__mmask64)_mm512_mask_cmple_epi8_mask(__u, __a, __b);
572 }
573 
test_mm512_cmple_epu8_mask(__m512i __a,__m512i __b)574 __mmask64 test_mm512_cmple_epu8_mask(__m512i __a, __m512i __b) {
575   // CHECK-LABEL: @test_mm512_cmple_epu8_mask
576   // CHECK: icmp ule <64 x i8> %{{.*}}, %{{.*}}
577   return (__mmask64)_mm512_cmple_epu8_mask(__a, __b);
578 }
579 
test_mm512_mask_cmple_epu8_mask(__mmask64 __u,__m512i __a,__m512i __b)580 __mmask64 test_mm512_mask_cmple_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
581   // CHECK-LABEL: @test_mm512_mask_cmple_epu8_mask
582   // CHECK: icmp ule <64 x i8> %{{.*}}, %{{.*}}
583   // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
584   return (__mmask64)_mm512_mask_cmple_epu8_mask(__u, __a, __b);
585 }
586 
test_mm512_cmple_epi16_mask(__m512i __a,__m512i __b)587 __mmask32 test_mm512_cmple_epi16_mask(__m512i __a, __m512i __b) {
588   // CHECK-LABEL: @test_mm512_cmple_epi16_mask
589   // CHECK: icmp sle <32 x i16> %{{.*}}, %{{.*}}
590   return (__mmask32)_mm512_cmple_epi16_mask(__a, __b);
591 }
592 
test_mm512_mask_cmple_epi16_mask(__mmask32 __u,__m512i __a,__m512i __b)593 __mmask32 test_mm512_mask_cmple_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
594   // CHECK-LABEL: @test_mm512_mask_cmple_epi16_mask
595   // CHECK: icmp sle <32 x i16> %{{.*}}, %{{.*}}
596   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
597   return (__mmask32)_mm512_mask_cmple_epi16_mask(__u, __a, __b);
598 }
599 
test_mm512_cmple_epu16_mask(__m512i __a,__m512i __b)600 __mmask32 test_mm512_cmple_epu16_mask(__m512i __a, __m512i __b) {
601   // CHECK-LABEL: @test_mm512_cmple_epu16_mask
602   // CHECK: icmp ule <32 x i16> %{{.*}}, %{{.*}}
603   return (__mmask32)_mm512_cmple_epu16_mask(__a, __b);
604 }
605 
test_mm512_mask_cmple_epu16_mask(__mmask32 __u,__m512i __a,__m512i __b)606 __mmask32 test_mm512_mask_cmple_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
607   // CHECK-LABEL: @test_mm512_mask_cmple_epu16_mask
608   // CHECK: icmp ule <32 x i16> %{{.*}}, %{{.*}}
609   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
610   return (__mmask32)_mm512_mask_cmple_epu16_mask(__u, __a, __b);
611 }
612 
test_mm512_cmplt_epi8_mask(__m512i __a,__m512i __b)613 __mmask64 test_mm512_cmplt_epi8_mask(__m512i __a, __m512i __b) {
614   // CHECK-LABEL: @test_mm512_cmplt_epi8_mask
615   // CHECK: icmp slt <64 x i8> %{{.*}}, %{{.*}}
616   return (__mmask64)_mm512_cmplt_epi8_mask(__a, __b);
617 }
618 
test_mm512_mask_cmplt_epi8_mask(__mmask64 __u,__m512i __a,__m512i __b)619 __mmask64 test_mm512_mask_cmplt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
620   // CHECK-LABEL: @test_mm512_mask_cmplt_epi8_mask
621   // CHECK: icmp slt <64 x i8> %{{.*}}, %{{.*}}
622   // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
623   return (__mmask64)_mm512_mask_cmplt_epi8_mask(__u, __a, __b);
624 }
625 
test_mm512_cmplt_epu8_mask(__m512i __a,__m512i __b)626 __mmask64 test_mm512_cmplt_epu8_mask(__m512i __a, __m512i __b) {
627   // CHECK-LABEL: @test_mm512_cmplt_epu8_mask
628   // CHECK: icmp ult <64 x i8> %{{.*}}, %{{.*}}
629   return (__mmask64)_mm512_cmplt_epu8_mask(__a, __b);
630 }
631 
test_mm512_mask_cmplt_epu8_mask(__mmask64 __u,__m512i __a,__m512i __b)632 __mmask64 test_mm512_mask_cmplt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
633   // CHECK-LABEL: @test_mm512_mask_cmplt_epu8_mask
634   // CHECK: icmp ult <64 x i8> %{{.*}}, %{{.*}}
635   // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
636   return (__mmask64)_mm512_mask_cmplt_epu8_mask(__u, __a, __b);
637 }
638 
test_mm512_cmplt_epi16_mask(__m512i __a,__m512i __b)639 __mmask32 test_mm512_cmplt_epi16_mask(__m512i __a, __m512i __b) {
640   // CHECK-LABEL: @test_mm512_cmplt_epi16_mask
641   // CHECK: icmp slt <32 x i16> %{{.*}}, %{{.*}}
642   return (__mmask32)_mm512_cmplt_epi16_mask(__a, __b);
643 }
644 
test_mm512_mask_cmplt_epi16_mask(__mmask32 __u,__m512i __a,__m512i __b)645 __mmask32 test_mm512_mask_cmplt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
646   // CHECK-LABEL: @test_mm512_mask_cmplt_epi16_mask
647   // CHECK: icmp slt <32 x i16> %{{.*}}, %{{.*}}
648   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
649   return (__mmask32)_mm512_mask_cmplt_epi16_mask(__u, __a, __b);
650 }
651 
test_mm512_cmplt_epu16_mask(__m512i __a,__m512i __b)652 __mmask32 test_mm512_cmplt_epu16_mask(__m512i __a, __m512i __b) {
653   // CHECK-LABEL: @test_mm512_cmplt_epu16_mask
654   // CHECK: icmp ult <32 x i16> %{{.*}}, %{{.*}}
655   return (__mmask32)_mm512_cmplt_epu16_mask(__a, __b);
656 }
657 
test_mm512_mask_cmplt_epu16_mask(__mmask32 __u,__m512i __a,__m512i __b)658 __mmask32 test_mm512_mask_cmplt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
659   // CHECK-LABEL: @test_mm512_mask_cmplt_epu16_mask
660   // CHECK: icmp ult <32 x i16> %{{.*}}, %{{.*}}
661   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
662   return (__mmask32)_mm512_mask_cmplt_epu16_mask(__u, __a, __b);
663 }
664 
test_mm512_cmpneq_epi8_mask(__m512i __a,__m512i __b)665 __mmask64 test_mm512_cmpneq_epi8_mask(__m512i __a, __m512i __b) {
666   // CHECK-LABEL: @test_mm512_cmpneq_epi8_mask
667   // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}}
668   return (__mmask64)_mm512_cmpneq_epi8_mask(__a, __b);
669 }
670 
test_mm512_mask_cmpneq_epi8_mask(__mmask64 __u,__m512i __a,__m512i __b)671 __mmask64 test_mm512_mask_cmpneq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
672   // CHECK-LABEL: @test_mm512_mask_cmpneq_epi8_mask
673   // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}}
674   // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
675   return (__mmask64)_mm512_mask_cmpneq_epi8_mask(__u, __a, __b);
676 }
677 
test_mm512_cmpneq_epu8_mask(__m512i __a,__m512i __b)678 __mmask64 test_mm512_cmpneq_epu8_mask(__m512i __a, __m512i __b) {
679   // CHECK-LABEL: @test_mm512_cmpneq_epu8_mask
680   // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}}
681   return (__mmask64)_mm512_cmpneq_epu8_mask(__a, __b);
682 }
683 
test_mm512_mask_cmpneq_epu8_mask(__mmask64 __u,__m512i __a,__m512i __b)684 __mmask64 test_mm512_mask_cmpneq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
685   // CHECK-LABEL: @test_mm512_mask_cmpneq_epu8_mask
686   // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}}
687   // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
688   return (__mmask64)_mm512_mask_cmpneq_epu8_mask(__u, __a, __b);
689 }
690 
test_mm512_cmpneq_epi16_mask(__m512i __a,__m512i __b)691 __mmask32 test_mm512_cmpneq_epi16_mask(__m512i __a, __m512i __b) {
692   // CHECK-LABEL: @test_mm512_cmpneq_epi16_mask
693   // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}}
694   return (__mmask32)_mm512_cmpneq_epi16_mask(__a, __b);
695 }
696 
test_mm512_mask_cmpneq_epi16_mask(__mmask32 __u,__m512i __a,__m512i __b)697 __mmask32 test_mm512_mask_cmpneq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
698   // CHECK-LABEL: @test_mm512_mask_cmpneq_epi16_mask
699   // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}}
700   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
701   return (__mmask32)_mm512_mask_cmpneq_epi16_mask(__u, __a, __b);
702 }
703 
test_mm512_cmpneq_epu16_mask(__m512i __a,__m512i __b)704 __mmask32 test_mm512_cmpneq_epu16_mask(__m512i __a, __m512i __b) {
705   // CHECK-LABEL: @test_mm512_cmpneq_epu16_mask
706   // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}}
707   return (__mmask32)_mm512_cmpneq_epu16_mask(__a, __b);
708 }
709 
test_mm512_mask_cmpneq_epu16_mask(__mmask32 __u,__m512i __a,__m512i __b)710 __mmask32 test_mm512_mask_cmpneq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
711   // CHECK-LABEL: @test_mm512_mask_cmpneq_epu16_mask
712   // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}}
713   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
714   return (__mmask32)_mm512_mask_cmpneq_epu16_mask(__u, __a, __b);
715 }
716 
test_mm512_cmp_epi8_mask(__m512i __a,__m512i __b)717 __mmask64 test_mm512_cmp_epi8_mask(__m512i __a, __m512i __b) {
718   // CHECK-LABEL: @test_mm512_cmp_epi8_mask
719   // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
720   return (__mmask64)_mm512_cmp_epi8_mask(__a, __b, 0);
721 }
722 
test_mm512_mask_cmp_epi8_mask(__mmask64 __u,__m512i __a,__m512i __b)723 __mmask64 test_mm512_mask_cmp_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
724   // CHECK-LABEL: @test_mm512_mask_cmp_epi8_mask
725   // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
726   // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
727   return (__mmask64)_mm512_mask_cmp_epi8_mask(__u, __a, __b, 0);
728 }
729 
test_mm512_cmp_epu8_mask(__m512i __a,__m512i __b)730 __mmask64 test_mm512_cmp_epu8_mask(__m512i __a, __m512i __b) {
731   // CHECK-LABEL: @test_mm512_cmp_epu8_mask
732   // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
733   return (__mmask64)_mm512_cmp_epu8_mask(__a, __b, 0);
734 }
735 
test_mm512_mask_cmp_epu8_mask(__mmask64 __u,__m512i __a,__m512i __b)736 __mmask64 test_mm512_mask_cmp_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
737   // CHECK-LABEL: @test_mm512_mask_cmp_epu8_mask
738   // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
739   // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
740   return (__mmask64)_mm512_mask_cmp_epu8_mask(__u, __a, __b, 0);
741 }
742 
test_mm512_cmp_epi16_mask(__m512i __a,__m512i __b)743 __mmask32 test_mm512_cmp_epi16_mask(__m512i __a, __m512i __b) {
744   // CHECK-LABEL: @test_mm512_cmp_epi16_mask
745   // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
746   return (__mmask32)_mm512_cmp_epi16_mask(__a, __b, 0);
747 }
748 
test_mm512_mask_cmp_epi16_mask(__mmask32 __u,__m512i __a,__m512i __b)749 __mmask32 test_mm512_mask_cmp_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
750   // CHECK-LABEL: @test_mm512_mask_cmp_epi16_mask
751   // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
752   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
753   return (__mmask32)_mm512_mask_cmp_epi16_mask(__u, __a, __b, 0);
754 }
755 
test_mm512_cmp_epu16_mask(__m512i __a,__m512i __b)756 __mmask32 test_mm512_cmp_epu16_mask(__m512i __a, __m512i __b) {
757   // CHECK-LABEL: @test_mm512_cmp_epu16_mask
758   // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
759   return (__mmask32)_mm512_cmp_epu16_mask(__a, __b, 0);
760 }
761 
test_mm512_mask_cmp_epu16_mask(__mmask32 __u,__m512i __a,__m512i __b)762 __mmask32 test_mm512_mask_cmp_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
763   // CHECK-LABEL: @test_mm512_mask_cmp_epu16_mask
764   // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
765   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
766   return (__mmask32)_mm512_mask_cmp_epu16_mask(__u, __a, __b, 0);
767 }
768 
test_mm512_add_epi8(__m512i __A,__m512i __B)769 __m512i test_mm512_add_epi8 (__m512i __A, __m512i __B) {
770   //CHECK-LABEL: @test_mm512_add_epi8
771   //CHECK: add <64 x i8>
772   return _mm512_add_epi8(__A,__B);
773 }
774 
test_mm512_mask_add_epi8(__m512i __W,__mmask64 __U,__m512i __A,__m512i __B)775 __m512i test_mm512_mask_add_epi8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
776   //CHECK-LABEL: @test_mm512_mask_add_epi8
777   //CHECK: add <64 x i8> %{{.*}}, %{{.*}}
778   //CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
779   return _mm512_mask_add_epi8(__W, __U, __A, __B);
780 }
781 
test_mm512_maskz_add_epi8(__mmask64 __U,__m512i __A,__m512i __B)782 __m512i test_mm512_maskz_add_epi8 (__mmask64 __U, __m512i __A, __m512i __B) {
783   //CHECK-LABEL: @test_mm512_maskz_add_epi8
784   //CHECK: add <64 x i8> %{{.*}}, %{{.*}}
785   //CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
786   return _mm512_maskz_add_epi8(__U, __A, __B);
787 }
788 
test_mm512_sub_epi8(__m512i __A,__m512i __B)789 __m512i test_mm512_sub_epi8 (__m512i __A, __m512i __B) {
790   //CHECK-LABEL: @test_mm512_sub_epi8
791   //CHECK: sub <64 x i8>
792   return _mm512_sub_epi8(__A, __B);
793 }
794 
test_mm512_mask_sub_epi8(__m512i __W,__mmask64 __U,__m512i __A,__m512i __B)795 __m512i test_mm512_mask_sub_epi8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
796   //CHECK-LABEL: @test_mm512_mask_sub_epi8
797   //CHECK: sub <64 x i8> %{{.*}}, %{{.*}}
798   //CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
799   return _mm512_mask_sub_epi8(__W, __U, __A, __B);
800 }
801 
test_mm512_maskz_sub_epi8(__mmask64 __U,__m512i __A,__m512i __B)802 __m512i test_mm512_maskz_sub_epi8 (__mmask64 __U, __m512i __A, __m512i __B) {
803   //CHECK-LABEL: @test_mm512_maskz_sub_epi8
804   //CHECK: sub <64 x i8> %{{.*}}, %{{.*}}
805   //CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
806   return _mm512_maskz_sub_epi8(__U, __A, __B);
807 }
808 
test_mm512_add_epi16(__m512i __A,__m512i __B)809 __m512i test_mm512_add_epi16 (__m512i __A, __m512i __B) {
810   //CHECK-LABEL: @test_mm512_add_epi16
811   //CHECK: add <32 x i16>
812   return _mm512_add_epi16(__A, __B);
813 }
814 
test_mm512_mask_add_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)815 __m512i test_mm512_mask_add_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
816   //CHECK-LABEL: @test_mm512_mask_add_epi16
817   //CHECK: add <32 x i16> %{{.*}}, %{{.*}}
818   //CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
819   return _mm512_mask_add_epi16(__W, __U, __A, __B);
820 }
821 
test_mm512_maskz_add_epi16(__mmask32 __U,__m512i __A,__m512i __B)822 __m512i test_mm512_maskz_add_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
823   //CHECK-LABEL: @test_mm512_maskz_add_epi16
824   //CHECK: add <32 x i16> %{{.*}}, %{{.*}}
825   //CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
826   return _mm512_maskz_add_epi16(__U, __A, __B);
827 }
828 
test_mm512_sub_epi16(__m512i __A,__m512i __B)829 __m512i test_mm512_sub_epi16 (__m512i __A, __m512i __B) {
830   //CHECK-LABEL: @test_mm512_sub_epi16
831   //CHECK: sub <32 x i16>
832   return _mm512_sub_epi16(__A, __B);
833 }
834 
test_mm512_mask_sub_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)835 __m512i test_mm512_mask_sub_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
836   //CHECK-LABEL: @test_mm512_mask_sub_epi16
837   //CHECK: sub <32 x i16> %{{.*}}, %{{.*}}
838   //CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
839   return _mm512_mask_sub_epi16(__W, __U, __A, __B);
840 }
841 
test_mm512_maskz_sub_epi16(__mmask32 __U,__m512i __A,__m512i __B)842 __m512i test_mm512_maskz_sub_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
843   //CHECK-LABEL: @test_mm512_maskz_sub_epi16
844   //CHECK: sub <32 x i16> %{{.*}}, %{{.*}}
845   //CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
846   return _mm512_maskz_sub_epi16(__U, __A, __B);
847 }
848 
test_mm512_mullo_epi16(__m512i __A,__m512i __B)849 __m512i test_mm512_mullo_epi16 (__m512i __A, __m512i __B) {
850   //CHECK-LABEL: @test_mm512_mullo_epi16
851   //CHECK: mul <32 x i16>
852   return _mm512_mullo_epi16(__A, __B);
853 }
854 
test_mm512_mask_mullo_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)855 __m512i test_mm512_mask_mullo_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
856   //CHECK-LABEL: @test_mm512_mask_mullo_epi16
857   //CHECK: mul <32 x i16> %{{.*}}, %{{.*}}
858   //CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
859   return _mm512_mask_mullo_epi16(__W, __U, __A, __B);
860 }
861 
test_mm512_maskz_mullo_epi16(__mmask32 __U,__m512i __A,__m512i __B)862 __m512i test_mm512_maskz_mullo_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
863   //CHECK-LABEL: @test_mm512_maskz_mullo_epi16
864   //CHECK: mul <32 x i16> %{{.*}}, %{{.*}}
865   //CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
866   return _mm512_maskz_mullo_epi16(__U, __A, __B);
867 }
868 
test_mm512_mask_blend_epi8(__mmask64 __U,__m512i __A,__m512i __W)869 __m512i test_mm512_mask_blend_epi8(__mmask64 __U, __m512i __A, __m512i __W) {
870   // CHECK-LABEL: @test_mm512_mask_blend_epi8
871   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
872   return _mm512_mask_blend_epi8(__U,__A,__W);
873 }
test_mm512_mask_blend_epi16(__mmask32 __U,__m512i __A,__m512i __W)874 __m512i test_mm512_mask_blend_epi16(__mmask32 __U, __m512i __A, __m512i __W) {
875   // CHECK-LABEL: @test_mm512_mask_blend_epi16
876   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
877   return _mm512_mask_blend_epi16(__U,__A,__W);
878 }
test_mm512_abs_epi8(__m512i __A)879 __m512i test_mm512_abs_epi8(__m512i __A) {
880   // CHECK-LABEL: @test_mm512_abs_epi8
881   // CHECK: [[SUB:%.*]] = sub <64 x i8> zeroinitializer, [[A:%.*]]
882   // CHECK: [[CMP:%.*]] = icmp sgt <64 x i8> [[A]], zeroinitializer
883   // CHECK: select <64 x i1> [[CMP]], <64 x i8> [[A]], <64 x i8> [[SUB]]
884   return _mm512_abs_epi8(__A);
885 }
test_mm512_mask_abs_epi8(__m512i __W,__mmask64 __U,__m512i __A)886 __m512i test_mm512_mask_abs_epi8(__m512i __W, __mmask64 __U, __m512i __A) {
887   // CHECK-LABEL: @test_mm512_mask_abs_epi8
888   // CHECK: [[SUB:%.*]] = sub <64 x i8> zeroinitializer, [[A:%.*]]
889   // CHECK: [[CMP:%.*]] = icmp sgt <64 x i8> [[A]], zeroinitializer
890   // CHECK: [[SEL:%.*]] = select <64 x i1> [[CMP]], <64 x i8> [[A]], <64 x i8> [[SUB]]
891   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> [[SEL]], <64 x i8> %{{.*}}
892   return _mm512_mask_abs_epi8(__W,__U,__A);
893 }
test_mm512_maskz_abs_epi8(__mmask64 __U,__m512i __A)894 __m512i test_mm512_maskz_abs_epi8(__mmask64 __U, __m512i __A) {
895   // CHECK-LABEL: @test_mm512_maskz_abs_epi8
896   // CHECK: [[SUB:%.*]] = sub <64 x i8> zeroinitializer, [[A:%.*]]
897   // CHECK: [[CMP:%.*]] = icmp sgt <64 x i8> [[A]], zeroinitializer
898   // CHECK: [[SEL:%.*]] = select <64 x i1> [[CMP]], <64 x i8> [[A]], <64 x i8> [[SUB]]
899   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> [[SEL]], <64 x i8> %{{.*}}
900   return _mm512_maskz_abs_epi8(__U,__A);
901 }
test_mm512_abs_epi16(__m512i __A)902 __m512i test_mm512_abs_epi16(__m512i __A) {
903   // CHECK-LABEL: @test_mm512_abs_epi16
904   // CHECK: [[SUB:%.*]] = sub <32 x i16> zeroinitializer, [[A:%.*]]
905   // CHECK: [[CMP:%.*]] = icmp sgt <32 x i16> [[A]], zeroinitializer
906   // CHECK: select <32 x i1> [[CMP]], <32 x i16> [[A]], <32 x i16> [[SUB]]
907   return _mm512_abs_epi16(__A);
908 }
test_mm512_mask_abs_epi16(__m512i __W,__mmask32 __U,__m512i __A)909 __m512i test_mm512_mask_abs_epi16(__m512i __W, __mmask32 __U, __m512i __A) {
910   // CHECK-LABEL: @test_mm512_mask_abs_epi16
911   // CHECK: [[SUB:%.*]] = sub <32 x i16> zeroinitializer, [[A:%.*]]
912   // CHECK: [[CMP:%.*]] = icmp sgt <32 x i16> [[A]], zeroinitializer
913   // CHECK: [[SEL:%.*]] = select <32 x i1> [[CMP]], <32 x i16> [[A]], <32 x i16> [[SUB]]
914   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> [[SEL]], <32 x i16> %{{.*}}
915   return _mm512_mask_abs_epi16(__W,__U,__A);
916 }
test_mm512_maskz_abs_epi16(__mmask32 __U,__m512i __A)917 __m512i test_mm512_maskz_abs_epi16(__mmask32 __U, __m512i __A) {
918   // CHECK-LABEL: @test_mm512_maskz_abs_epi16
919   // CHECK: [[SUB:%.*]] = sub <32 x i16> zeroinitializer, [[A:%.*]]
920   // CHECK: [[CMP:%.*]] = icmp sgt <32 x i16> [[A]], zeroinitializer
921   // CHECK: [[SEL:%.*]] = select <32 x i1> [[CMP]], <32 x i16> [[A]], <32 x i16> [[SUB]]
922   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> [[SEL]], <32 x i16> %{{.*}}
923   return _mm512_maskz_abs_epi16(__U,__A);
924 }
test_mm512_packs_epi32(__m512i __A,__m512i __B)925 __m512i test_mm512_packs_epi32(__m512i __A, __m512i __B) {
926   // CHECK-LABEL: @test_mm512_packs_epi32
927   // CHECK: @llvm.x86.avx512.packssdw.512
928   return _mm512_packs_epi32(__A,__B);
929 }
test_mm512_maskz_packs_epi32(__mmask32 __M,__m512i __A,__m512i __B)930 __m512i test_mm512_maskz_packs_epi32(__mmask32 __M, __m512i __A, __m512i __B) {
931   // CHECK-LABEL: @test_mm512_maskz_packs_epi32
932   // CHECK: @llvm.x86.avx512.packssdw.512
933   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
934   return _mm512_maskz_packs_epi32(__M,__A,__B);
935 }
test_mm512_mask_packs_epi32(__m512i __W,__mmask32 __M,__m512i __A,__m512i __B)936 __m512i test_mm512_mask_packs_epi32(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {
937   // CHECK-LABEL: @test_mm512_mask_packs_epi32
938   // CHECK: @llvm.x86.avx512.packssdw.512
939   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
940   return _mm512_mask_packs_epi32(__W,__M,__A,__B);
941 }
test_mm512_packs_epi16(__m512i __A,__m512i __B)942 __m512i test_mm512_packs_epi16(__m512i __A, __m512i __B) {
943   // CHECK-LABEL: @test_mm512_packs_epi16
944   // CHECK: @llvm.x86.avx512.packsswb.512
945   return _mm512_packs_epi16(__A,__B);
946 }
test_mm512_mask_packs_epi16(__m512i __W,__mmask64 __M,__m512i __A,__m512i __B)947 __m512i test_mm512_mask_packs_epi16(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {
948   // CHECK-LABEL: @test_mm512_mask_packs_epi16
949   // CHECK: @llvm.x86.avx512.packsswb.512
950   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
951   return _mm512_mask_packs_epi16(__W,__M,__A,__B);
952 }
test_mm512_maskz_packs_epi16(__mmask64 __M,__m512i __A,__m512i __B)953 __m512i test_mm512_maskz_packs_epi16(__mmask64 __M, __m512i __A, __m512i __B) {
954   // CHECK-LABEL: @test_mm512_maskz_packs_epi16
955   // CHECK: @llvm.x86.avx512.packsswb.512
956   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
957   return _mm512_maskz_packs_epi16(__M,__A,__B);
958 }
test_mm512_packus_epi32(__m512i __A,__m512i __B)959 __m512i test_mm512_packus_epi32(__m512i __A, __m512i __B) {
960   // CHECK-LABEL: @test_mm512_packus_epi32
961   // CHECK: @llvm.x86.avx512.packusdw.512
962   return _mm512_packus_epi32(__A,__B);
963 }
test_mm512_maskz_packus_epi32(__mmask32 __M,__m512i __A,__m512i __B)964 __m512i test_mm512_maskz_packus_epi32(__mmask32 __M, __m512i __A, __m512i __B) {
965   // CHECK-LABEL: @test_mm512_maskz_packus_epi32
966   // CHECK: @llvm.x86.avx512.packusdw.512
967   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
968   return _mm512_maskz_packus_epi32(__M,__A,__B);
969 }
test_mm512_mask_packus_epi32(__m512i __W,__mmask32 __M,__m512i __A,__m512i __B)970 __m512i test_mm512_mask_packus_epi32(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {
971   // CHECK-LABEL: @test_mm512_mask_packus_epi32
972   // CHECK: @llvm.x86.avx512.packusdw.512
973   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
974   return _mm512_mask_packus_epi32(__W,__M,__A,__B);
975 }
test_mm512_packus_epi16(__m512i __A,__m512i __B)976 __m512i test_mm512_packus_epi16(__m512i __A, __m512i __B) {
977   // CHECK-LABEL: @test_mm512_packus_epi16
978   // CHECK: @llvm.x86.avx512.packuswb.512
979   return _mm512_packus_epi16(__A,__B);
980 }
test_mm512_mask_packus_epi16(__m512i __W,__mmask64 __M,__m512i __A,__m512i __B)981 __m512i test_mm512_mask_packus_epi16(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {
982   // CHECK-LABEL: @test_mm512_mask_packus_epi16
983   // CHECK: @llvm.x86.avx512.packuswb.512
984   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
985   return _mm512_mask_packus_epi16(__W,__M,__A,__B);
986 }
test_mm512_maskz_packus_epi16(__mmask64 __M,__m512i __A,__m512i __B)987 __m512i test_mm512_maskz_packus_epi16(__mmask64 __M, __m512i __A, __m512i __B) {
988   // CHECK-LABEL: @test_mm512_maskz_packus_epi16
989   // CHECK: @llvm.x86.avx512.packuswb.512
990   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
991   return _mm512_maskz_packus_epi16(__M,__A,__B);
992 }
test_mm512_adds_epi8(__m512i __A,__m512i __B)993 __m512i test_mm512_adds_epi8(__m512i __A, __m512i __B) {
994   // CHECK-LABEL: @test_mm512_adds_epi8
995   // CHECK: @llvm.sadd.sat.v64i8
996   return _mm512_adds_epi8(__A,__B);
997 }
test_mm512_mask_adds_epi8(__m512i __W,__mmask64 __U,__m512i __A,__m512i __B)998 __m512i test_mm512_mask_adds_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
999   // CHECK-LABEL: @test_mm512_mask_adds_epi8
1000   // CHECK: @llvm.sadd.sat.v64i8
1001   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1002  return _mm512_mask_adds_epi8(__W,__U,__A,__B);
1003 }
test_mm512_maskz_adds_epi8(__mmask64 __U,__m512i __A,__m512i __B)1004 __m512i test_mm512_maskz_adds_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
1005   // CHECK-LABEL: @test_mm512_maskz_adds_epi8
1006   // CHECK: @llvm.sadd.sat.v64i8
1007   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1008   return _mm512_maskz_adds_epi8(__U,__A,__B);
1009 }
test_mm512_adds_epi16(__m512i __A,__m512i __B)1010 __m512i test_mm512_adds_epi16(__m512i __A, __m512i __B) {
1011   // CHECK-LABEL: @test_mm512_adds_epi16
1012   // CHECK: @llvm.sadd.sat.v32i16
1013  return _mm512_adds_epi16(__A,__B);
1014 }
test_mm512_mask_adds_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1015 __m512i test_mm512_mask_adds_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1016   // CHECK-LABEL: @test_mm512_mask_adds_epi16
1017   // CHECK: @llvm.sadd.sat.v32i16
1018   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1019   return _mm512_mask_adds_epi16(__W,__U,__A,__B);
1020 }
test_mm512_maskz_adds_epi16(__mmask32 __U,__m512i __A,__m512i __B)1021 __m512i test_mm512_maskz_adds_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1022   // CHECK-LABEL: @test_mm512_maskz_adds_epi16
1023   // CHECK: @llvm.sadd.sat.v32i16
1024   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1025 return _mm512_maskz_adds_epi16(__U,__A,__B);
1026 }
test_mm512_adds_epu8(__m512i __A,__m512i __B)1027 __m512i test_mm512_adds_epu8(__m512i __A, __m512i __B) {
1028   // CHECK-LABEL: @test_mm512_adds_epu8
1029   // CHECK-NOT: @llvm.x86.avx512.mask.paddus.b.512
1030   // CHECK: call <64 x i8> @llvm.uadd.sat.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})
1031   return _mm512_adds_epu8(__A,__B);
1032 }
test_mm512_mask_adds_epu8(__m512i __W,__mmask64 __U,__m512i __A,__m512i __B)1033 __m512i test_mm512_mask_adds_epu8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1034   // CHECK-LABEL: @test_mm512_mask_adds_epu8
1035   // CHECK-NOT: @llvm.x86.avx512.mask.paddus.b.512
1036   // CHECK: call <64 x i8> @llvm.uadd.sat.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})
1037   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1038   return _mm512_mask_adds_epu8(__W,__U,__A,__B);
1039 }
test_mm512_maskz_adds_epu8(__mmask64 __U,__m512i __A,__m512i __B)1040 __m512i test_mm512_maskz_adds_epu8(__mmask64 __U, __m512i __A, __m512i __B) {
1041   // CHECK-LABEL: @test_mm512_maskz_adds_epu8
1042   // CHECK-NOT: @llvm.x86.avx512.mask.paddus.b.512
1043   // CHECK: call <64 x i8> @llvm.uadd.sat.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})
1044   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1045   return _mm512_maskz_adds_epu8(__U,__A,__B);
1046 }
test_mm512_adds_epu16(__m512i __A,__m512i __B)1047 __m512i test_mm512_adds_epu16(__m512i __A, __m512i __B) {
1048   // CHECK-LABEL: @test_mm512_adds_epu16
1049   // CHECK-NOT: @llvm.x86.avx512.mask.paddus.w.512
1050   // CHECK: call <32 x i16> @llvm.uadd.sat.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})
1051   return _mm512_adds_epu16(__A,__B);
1052 }
test_mm512_mask_adds_epu16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1053 __m512i test_mm512_mask_adds_epu16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1054   // CHECK-LABEL: @test_mm512_mask_adds_epu16
1055   // CHECK-NOT: @llvm.x86.avx512.mask.paddus.w.512
1056   // CHECK: call <32 x i16> @llvm.uadd.sat.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})
1057   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1058   return _mm512_mask_adds_epu16(__W,__U,__A,__B);
1059 }
test_mm512_maskz_adds_epu16(__mmask32 __U,__m512i __A,__m512i __B)1060 __m512i test_mm512_maskz_adds_epu16(__mmask32 __U, __m512i __A, __m512i __B) {
1061   // CHECK-LABEL: @test_mm512_maskz_adds_epu16
1062   // CHECK-NOT: @llvm.x86.avx512.mask.paddus.w.512
1063   // CHECK: call <32 x i16> @llvm.uadd.sat.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})
1064   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1065   return _mm512_maskz_adds_epu16(__U,__A,__B);
1066 }
test_mm512_avg_epu8(__m512i __A,__m512i __B)1067 __m512i test_mm512_avg_epu8(__m512i __A, __m512i __B) {
1068   // CHECK-LABEL: @test_mm512_avg_epu8
1069   // CHECK: @llvm.x86.avx512.pavg.b.512
1070   return _mm512_avg_epu8(__A,__B);
1071 }
test_mm512_mask_avg_epu8(__m512i __W,__mmask64 __U,__m512i __A,__m512i __B)1072 __m512i test_mm512_mask_avg_epu8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1073   // CHECK-LABEL: @test_mm512_mask_avg_epu8
1074   // CHECK: @llvm.x86.avx512.pavg.b.512
1075   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1076   return _mm512_mask_avg_epu8(__W,__U,__A,__B);
1077 }
test_mm512_maskz_avg_epu8(__mmask64 __U,__m512i __A,__m512i __B)1078 __m512i test_mm512_maskz_avg_epu8(__mmask64 __U, __m512i __A, __m512i __B) {
1079   // CHECK-LABEL: @test_mm512_maskz_avg_epu8
1080   // CHECK: @llvm.x86.avx512.pavg.b.512
1081   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1082   return _mm512_maskz_avg_epu8(__U,__A,__B);
1083 }
test_mm512_avg_epu16(__m512i __A,__m512i __B)1084 __m512i test_mm512_avg_epu16(__m512i __A, __m512i __B) {
1085   // CHECK-LABEL: @test_mm512_avg_epu16
1086   // CHECK: @llvm.x86.avx512.pavg.w.512
1087   return _mm512_avg_epu16(__A,__B);
1088 }
test_mm512_mask_avg_epu16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1089 __m512i test_mm512_mask_avg_epu16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1090   // CHECK-LABEL: @test_mm512_mask_avg_epu16
1091   // CHECK: @llvm.x86.avx512.pavg.w.512
1092   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1093   return _mm512_mask_avg_epu16(__W,__U,__A,__B);
1094 }
test_mm512_maskz_avg_epu16(__mmask32 __U,__m512i __A,__m512i __B)1095 __m512i test_mm512_maskz_avg_epu16(__mmask32 __U, __m512i __A, __m512i __B) {
1096   // CHECK-LABEL: @test_mm512_maskz_avg_epu16
1097   // CHECK: @llvm.x86.avx512.pavg.w.512
1098   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1099   return _mm512_maskz_avg_epu16(__U,__A,__B);
1100 }
test_mm512_max_epi8(__m512i __A,__m512i __B)1101 __m512i test_mm512_max_epi8(__m512i __A, __m512i __B) {
1102   // CHECK-LABEL: @test_mm512_max_epi8
1103   // CHECK:       [[CMP:%.*]] = icmp sgt <64 x i8> [[X:%.*]], [[Y:%.*]]
1104   // CHECK-NEXT:  [[RES:%.*]] = select <64 x i1> [[CMP]], <64 x i8> [[X]], <64 x i8> [[Y]]
1105   return _mm512_max_epi8(__A,__B);
1106 }
test_mm512_maskz_max_epi8(__mmask64 __M,__m512i __A,__m512i __B)1107 __m512i test_mm512_maskz_max_epi8(__mmask64 __M, __m512i __A, __m512i __B) {
1108   // CHECK-LABEL: @test_mm512_maskz_max_epi8
1109   // CHECK:       [[CMP:%.*]] = icmp sgt <64 x i8> [[X:%.*]], [[Y:%.*]]
1110   // CHECK-NEXT:  [[RES:%.*]] = select <64 x i1> [[CMP]], <64 x i8> [[X]], <64 x i8> [[Y]]
1111   // CHECK:       select <64 x i1> {{.*}}, <64 x i8> [[RES]], <64 x i8> {{.*}}
1112   return _mm512_maskz_max_epi8(__M,__A,__B);
1113 }
test_mm512_mask_max_epi8(__m512i __W,__mmask64 __M,__m512i __A,__m512i __B)1114 __m512i test_mm512_mask_max_epi8(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {
1115   // CHECK-LABEL: @test_mm512_mask_max_epi8
1116   // CHECK:       [[CMP:%.*]] = icmp sgt <64 x i8> [[X:%.*]], [[Y:%.*]]
1117   // CHECK-NEXT:  [[RES:%.*]] = select <64 x i1> [[CMP]], <64 x i8> [[X]], <64 x i8> [[Y]]
1118   // CHECK:       select <64 x i1> {{.*}}, <64 x i8> [[RES]], <64 x i8> {{.*}}
1119   return _mm512_mask_max_epi8(__W,__M,__A,__B);
1120 }
test_mm512_max_epi16(__m512i __A,__m512i __B)1121 __m512i test_mm512_max_epi16(__m512i __A, __m512i __B) {
1122   // CHECK-LABEL: @test_mm512_max_epi16
1123   // CHECK:       [[CMP:%.*]] = icmp sgt <32 x i16> [[X:%.*]], [[Y:%.*]]
1124   // CHECK-NEXT:  [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i16> [[X]], <32 x i16> [[Y]]
1125   return _mm512_max_epi16(__A,__B);
1126 }
test_mm512_maskz_max_epi16(__mmask32 __M,__m512i __A,__m512i __B)1127 __m512i test_mm512_maskz_max_epi16(__mmask32 __M, __m512i __A, __m512i __B) {
1128   // CHECK-LABEL: @test_mm512_maskz_max_epi16
1129   // CHECK:       [[CMP:%.*]] = icmp sgt <32 x i16> [[X:%.*]], [[Y:%.*]]
1130   // CHECK-NEXT:  [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i16> [[X]], <32 x i16> [[Y]]
1131   // CHECK:       select <32 x i1> {{.*}}, <32 x i16> [[RES]], <32 x i16> {{.*}}
1132   return _mm512_maskz_max_epi16(__M,__A,__B);
1133 }
test_mm512_mask_max_epi16(__m512i __W,__mmask32 __M,__m512i __A,__m512i __B)1134 __m512i test_mm512_mask_max_epi16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {
1135   // CHECK-LABEL: @test_mm512_mask_max_epi16
1136   // CHECK:       [[CMP:%.*]] = icmp sgt <32 x i16> [[X:%.*]], [[Y:%.*]]
1137   // CHECK-NEXT:  [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i16> [[X]], <32 x i16> [[Y]]
1138   // CHECK:       select <32 x i1> {{.*}}, <32 x i16> [[RES]], <32 x i16> {{.*}}
1139   return _mm512_mask_max_epi16(__W,__M,__A,__B);
1140 }
test_mm512_max_epu8(__m512i __A,__m512i __B)1141 __m512i test_mm512_max_epu8(__m512i __A, __m512i __B) {
1142   // CHECK-LABEL: @test_mm512_max_epu8
1143   // CHECK:       [[CMP:%.*]] = icmp ugt <64 x i8> [[X:%.*]], [[Y:%.*]]
1144   // CHECK-NEXT:  [[RES:%.*]] = select <64 x i1> [[CMP]], <64 x i8> [[X]], <64 x i8> [[Y]]
1145   return _mm512_max_epu8(__A,__B);
1146 }
test_mm512_maskz_max_epu8(__mmask64 __M,__m512i __A,__m512i __B)1147 __m512i test_mm512_maskz_max_epu8(__mmask64 __M, __m512i __A, __m512i __B) {
1148   // CHECK-LABEL: @test_mm512_maskz_max_epu8
1149   // CHECK:       [[CMP:%.*]] = icmp ugt <64 x i8> [[X:%.*]], [[Y:%.*]]
1150   // CHECK-NEXT:  [[RES:%.*]] = select <64 x i1> [[CMP]], <64 x i8> [[X]], <64 x i8> [[Y]]
1151   // CHECK:       select <64 x i1> {{.*}}, <64 x i8> [[RES]], <64 x i8> {{.*}}
1152   return _mm512_maskz_max_epu8(__M,__A,__B);
1153 }
test_mm512_mask_max_epu8(__m512i __W,__mmask64 __M,__m512i __A,__m512i __B)1154 __m512i test_mm512_mask_max_epu8(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {
1155   // CHECK-LABEL: @test_mm512_mask_max_epu8
1156   // CHECK:       [[CMP:%.*]] = icmp ugt <64 x i8> [[X:%.*]], [[Y:%.*]]
1157   // CHECK-NEXT:  [[RES:%.*]] = select <64 x i1> [[CMP]], <64 x i8> [[X]], <64 x i8> [[Y]]
1158   // CHECK:       select <64 x i1> {{.*}}, <64 x i8> [[RES]], <64 x i8> {{.*}}
1159   return _mm512_mask_max_epu8(__W,__M,__A,__B);
1160 }
test_mm512_max_epu16(__m512i __A,__m512i __B)1161 __m512i test_mm512_max_epu16(__m512i __A, __m512i __B) {
1162   // CHECK-LABEL: @test_mm512_max_epu16
1163   // CHECK:       [[CMP:%.*]] = icmp ugt <32 x i16> [[X:%.*]], [[Y:%.*]]
1164   // CHECK-NEXT:  [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i16> [[X]], <32 x i16> [[Y]]
1165   return _mm512_max_epu16(__A,__B);
1166 }
test_mm512_maskz_max_epu16(__mmask32 __M,__m512i __A,__m512i __B)1167 __m512i test_mm512_maskz_max_epu16(__mmask32 __M, __m512i __A, __m512i __B) {
1168   // CHECK-LABEL: @test_mm512_maskz_max_epu16
1169   // CHECK:       [[CMP:%.*]] = icmp ugt <32 x i16> [[X:%.*]], [[Y:%.*]]
1170   // CHECK-NEXT:  [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i16> [[X]], <32 x i16> [[Y]]
1171   // CHECK:       select <32 x i1> {{.*}}, <32 x i16> [[RES]], <32 x i16> {{.*}}
1172   return _mm512_maskz_max_epu16(__M,__A,__B);
1173 }
test_mm512_mask_max_epu16(__m512i __W,__mmask32 __M,__m512i __A,__m512i __B)1174 __m512i test_mm512_mask_max_epu16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {
1175   // CHECK-LABEL: @test_mm512_mask_max_epu16
1176   // CHECK:       [[CMP:%.*]] = icmp ugt <32 x i16> [[X:%.*]], [[Y:%.*]]
1177   // CHECK-NEXT:  [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i16> [[X]], <32 x i16> [[Y]]
1178   // CHECK:       select <32 x i1> {{.*}}, <32 x i16> [[RES]], <32 x i16> {{.*}}
1179   return _mm512_mask_max_epu16(__W,__M,__A,__B);
1180 }
test_mm512_min_epi8(__m512i __A,__m512i __B)1181 __m512i test_mm512_min_epi8(__m512i __A, __m512i __B) {
1182   // CHECK-LABEL: @test_mm512_min_epi8
1183   // CHECK:       [[CMP:%.*]] = icmp slt <64 x i8> [[X:%.*]], [[Y:%.*]]
1184   // CHECK-NEXT:  [[RES:%.*]] = select <64 x i1> [[CMP]], <64 x i8> [[X]], <64 x i8> [[Y]]
1185   return _mm512_min_epi8(__A,__B);
1186 }
test_mm512_maskz_min_epi8(__mmask64 __M,__m512i __A,__m512i __B)1187 __m512i test_mm512_maskz_min_epi8(__mmask64 __M, __m512i __A, __m512i __B) {
1188   // CHECK-LABEL: @test_mm512_maskz_min_epi8
1189   // CHECK:       [[CMP:%.*]] = icmp slt <64 x i8> [[X:%.*]], [[Y:%.*]]
1190   // CHECK-NEXT:  [[RES:%.*]] = select <64 x i1> [[CMP]], <64 x i8> [[X]], <64 x i8> [[Y]]
1191   // CHECK:       select <64 x i1> {{.*}}, <64 x i8> [[RES]], <64 x i8> {{.*}}
1192   return _mm512_maskz_min_epi8(__M,__A,__B);
1193 }
test_mm512_mask_min_epi8(__m512i __W,__mmask64 __M,__m512i __A,__m512i __B)1194 __m512i test_mm512_mask_min_epi8(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {
1195   // CHECK-LABEL: @test_mm512_mask_min_epi8
1196   // CHECK:       [[CMP:%.*]] = icmp slt <64 x i8> [[X:%.*]], [[Y:%.*]]
1197   // CHECK-NEXT:  [[RES:%.*]] = select <64 x i1> [[CMP]], <64 x i8> [[X]], <64 x i8> [[Y]]
1198   // CHECK:       select <64 x i1> {{.*}}, <64 x i8> [[RES]], <64 x i8> {{.*}}
1199   return _mm512_mask_min_epi8(__W,__M,__A,__B);
1200 }
test_mm512_min_epi16(__m512i __A,__m512i __B)1201 __m512i test_mm512_min_epi16(__m512i __A, __m512i __B) {
1202   // CHECK-LABEL: @test_mm512_min_epi16
1203   // CHECK:       [[CMP:%.*]] = icmp slt <32 x i16> [[X:%.*]], [[Y:%.*]]
1204   // CHECK-NEXT:  [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i16> [[X]], <32 x i16> [[Y]]
1205   return _mm512_min_epi16(__A,__B);
1206 }
test_mm512_maskz_min_epi16(__mmask32 __M,__m512i __A,__m512i __B)1207 __m512i test_mm512_maskz_min_epi16(__mmask32 __M, __m512i __A, __m512i __B) {
1208   // CHECK-LABEL: @test_mm512_maskz_min_epi16
1209   // CHECK:       [[CMP:%.*]] = icmp slt <32 x i16> [[X:%.*]], [[Y:%.*]]
1210   // CHECK-NEXT:  [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i16> [[X]], <32 x i16> [[Y]]
1211   // CHECK:       select <32 x i1> {{.*}}, <32 x i16> [[RES]], <32 x i16> {{.*}}
1212   return _mm512_maskz_min_epi16(__M,__A,__B);
1213 }
test_mm512_mask_min_epi16(__m512i __W,__mmask32 __M,__m512i __A,__m512i __B)1214 __m512i test_mm512_mask_min_epi16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {
1215   // CHECK-LABEL: @test_mm512_mask_min_epi16
1216   // CHECK:       [[CMP:%.*]] = icmp slt <32 x i16> [[X:%.*]], [[Y:%.*]]
1217   // CHECK-NEXT:  [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i16> [[X]], <32 x i16> [[Y]]
1218   // CHECK:       select <32 x i1> {{.*}}, <32 x i16> [[RES]], <32 x i16> {{.*}}
1219   return _mm512_mask_min_epi16(__W,__M,__A,__B);
1220 }
test_mm512_min_epu8(__m512i __A,__m512i __B)1221 __m512i test_mm512_min_epu8(__m512i __A, __m512i __B) {
1222   // CHECK-LABEL: @test_mm512_min_epu8
1223   // CHECK:       [[CMP:%.*]] = icmp ult <64 x i8> [[X:%.*]], [[Y:%.*]]
1224   // CHECK-NEXT:  [[RES:%.*]] = select <64 x i1> [[CMP]], <64 x i8> [[X]], <64 x i8> [[Y]]
1225   return _mm512_min_epu8(__A,__B);
1226 }
test_mm512_maskz_min_epu8(__mmask64 __M,__m512i __A,__m512i __B)1227 __m512i test_mm512_maskz_min_epu8(__mmask64 __M, __m512i __A, __m512i __B) {
1228   // CHECK-LABEL: @test_mm512_maskz_min_epu8
1229   // CHECK:       [[CMP:%.*]] = icmp ult <64 x i8> [[X:%.*]], [[Y:%.*]]
1230   // CHECK-NEXT:  [[RES:%.*]] = select <64 x i1> [[CMP]], <64 x i8> [[X]], <64 x i8> [[Y]]
1231   // CHECK:       select <64 x i1> {{.*}}, <64 x i8> [[RES]], <64 x i8> {{.*}}
1232   return _mm512_maskz_min_epu8(__M,__A,__B);
1233 }
test_mm512_mask_min_epu8(__m512i __W,__mmask64 __M,__m512i __A,__m512i __B)1234 __m512i test_mm512_mask_min_epu8(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {
1235   // CHECK-LABEL: @test_mm512_mask_min_epu8
1236   // CHECK:       [[CMP:%.*]] = icmp ult <64 x i8> [[X:%.*]], [[Y:%.*]]
1237   // CHECK-NEXT:  [[RES:%.*]] = select <64 x i1> [[CMP]], <64 x i8> [[X]], <64 x i8> [[Y]]
1238   // CHECK:       select <64 x i1> {{.*}}, <64 x i8> [[RES]], <64 x i8> {{.*}}
1239   return _mm512_mask_min_epu8(__W,__M,__A,__B);
1240 }
test_mm512_min_epu16(__m512i __A,__m512i __B)1241 __m512i test_mm512_min_epu16(__m512i __A, __m512i __B) {
1242   // CHECK-LABEL: @test_mm512_min_epu16
1243   // CHECK:       [[CMP:%.*]] = icmp ult <32 x i16> [[X:%.*]], [[Y:%.*]]
1244   // CHECK-NEXT:  [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i16> [[X]], <32 x i16> [[Y]]
1245   return _mm512_min_epu16(__A,__B);
1246 }
test_mm512_maskz_min_epu16(__mmask32 __M,__m512i __A,__m512i __B)1247 __m512i test_mm512_maskz_min_epu16(__mmask32 __M, __m512i __A, __m512i __B) {
1248   // CHECK-LABEL: @test_mm512_maskz_min_epu16
1249   // CHECK:       [[CMP:%.*]] = icmp ult <32 x i16> [[X:%.*]], [[Y:%.*]]
1250   // CHECK-NEXT:  [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i16> [[X]], <32 x i16> [[Y]]
1251   // CHECK:       select <32 x i1> {{.*}}, <32 x i16> [[RES]], <32 x i16> {{.*}}
1252   return _mm512_maskz_min_epu16(__M,__A,__B);
1253 }
test_mm512_mask_min_epu16(__m512i __W,__mmask32 __M,__m512i __A,__m512i __B)1254 __m512i test_mm512_mask_min_epu16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {
1255   // CHECK-LABEL: @test_mm512_mask_min_epu16
1256   // CHECK:       [[CMP:%.*]] = icmp ult <32 x i16> [[X:%.*]], [[Y:%.*]]
1257   // CHECK-NEXT:  [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i16> [[X]], <32 x i16> [[Y]]
1258   // CHECK:       select <32 x i1> {{.*}}, <32 x i16> [[RES]], <32 x i16> {{.*}}
1259   return _mm512_mask_min_epu16(__W,__M,__A,__B);
1260 }
test_mm512_shuffle_epi8(__m512i __A,__m512i __B)1261 __m512i test_mm512_shuffle_epi8(__m512i __A, __m512i __B) {
1262   // CHECK-LABEL: @test_mm512_shuffle_epi8
1263   // CHECK: @llvm.x86.avx512.pshuf.b.512
1264   return _mm512_shuffle_epi8(__A,__B);
1265 }
test_mm512_mask_shuffle_epi8(__m512i __W,__mmask64 __U,__m512i __A,__m512i __B)1266 __m512i test_mm512_mask_shuffle_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1267   // CHECK-LABEL: @test_mm512_mask_shuffle_epi8
1268   // CHECK: @llvm.x86.avx512.pshuf.b.512
1269   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1270   return _mm512_mask_shuffle_epi8(__W,__U,__A,__B);
1271 }
test_mm512_maskz_shuffle_epi8(__mmask64 __U,__m512i __A,__m512i __B)1272 __m512i test_mm512_maskz_shuffle_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
1273   // CHECK-LABEL: @test_mm512_maskz_shuffle_epi8
1274   // CHECK: @llvm.x86.avx512.pshuf.b.512
1275   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1276   return _mm512_maskz_shuffle_epi8(__U,__A,__B);
1277 }
test_mm512_subs_epi8(__m512i __A,__m512i __B)1278 __m512i test_mm512_subs_epi8(__m512i __A, __m512i __B) {
1279   // CHECK-LABEL: @test_mm512_subs_epi8
1280   // CHECK: @llvm.ssub.sat.v64i8
1281 return _mm512_subs_epi8(__A,__B);
1282 }
test_mm512_mask_subs_epi8(__m512i __W,__mmask64 __U,__m512i __A,__m512i __B)1283 __m512i test_mm512_mask_subs_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1284   // CHECK-LABEL: @test_mm512_mask_subs_epi8
1285   // CHECK: @llvm.ssub.sat.v64i8
1286   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1287 return _mm512_mask_subs_epi8(__W,__U,__A,__B);
1288 }
test_mm512_maskz_subs_epi8(__mmask64 __U,__m512i __A,__m512i __B)1289 __m512i test_mm512_maskz_subs_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
1290   // CHECK-LABEL: @test_mm512_maskz_subs_epi8
1291   // CHECK: @llvm.ssub.sat.v64i8
1292   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1293 return _mm512_maskz_subs_epi8(__U,__A,__B);
1294 }
test_mm512_subs_epi16(__m512i __A,__m512i __B)1295 __m512i test_mm512_subs_epi16(__m512i __A, __m512i __B) {
1296   // CHECK-LABEL: @test_mm512_subs_epi16
1297   // CHECK: @llvm.ssub.sat.v32i16
1298 return _mm512_subs_epi16(__A,__B);
1299 }
test_mm512_mask_subs_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1300 __m512i test_mm512_mask_subs_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1301   // CHECK-LABEL: @test_mm512_mask_subs_epi16
1302   // CHECK: @llvm.ssub.sat.v32i16
1303   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1304 return _mm512_mask_subs_epi16(__W,__U,__A,__B);
1305 }
test_mm512_maskz_subs_epi16(__mmask32 __U,__m512i __A,__m512i __B)1306 __m512i test_mm512_maskz_subs_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1307   // CHECK-LABEL: @test_mm512_maskz_subs_epi16
1308   // CHECK: @llvm.ssub.sat.v32i16
1309   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1310 return _mm512_maskz_subs_epi16(__U,__A,__B);
1311 }
test_mm512_subs_epu8(__m512i __A,__m512i __B)1312 __m512i test_mm512_subs_epu8(__m512i __A, __m512i __B) {
1313   // CHECK-LABEL: @test_mm512_subs_epu8
1314   // CHECK-NOT: @llvm.x86.avx512.mask.psubus.b.512
1315   // CHECK: call <64 x i8> @llvm.usub.sat.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})
1316 return _mm512_subs_epu8(__A,__B);
1317 }
test_mm512_mask_subs_epu8(__m512i __W,__mmask64 __U,__m512i __A,__m512i __B)1318 __m512i test_mm512_mask_subs_epu8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1319   // CHECK-LABEL: @test_mm512_mask_subs_epu8
1320   // CHECK-NOT: @llvm.x86.avx512.mask.psubus.b.512
1321   // CHECK: call <64 x i8> @llvm.usub.sat.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})
1322   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1323 return _mm512_mask_subs_epu8(__W,__U,__A,__B);
1324 }
test_mm512_maskz_subs_epu8(__mmask64 __U,__m512i __A,__m512i __B)1325 __m512i test_mm512_maskz_subs_epu8(__mmask64 __U, __m512i __A, __m512i __B) {
1326   // CHECK-LABEL: @test_mm512_maskz_subs_epu8
1327   // CHECK-NOT: @llvm.x86.avx512.mask.psubus.b.512
1328   // CHECK: call <64 x i8> @llvm.usub.sat.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})
1329   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1330 return _mm512_maskz_subs_epu8(__U,__A,__B);
1331 }
test_mm512_subs_epu16(__m512i __A,__m512i __B)1332 __m512i test_mm512_subs_epu16(__m512i __A, __m512i __B) {
1333   // CHECK-LABEL: @test_mm512_subs_epu16
1334   // CHECK-NOT: @llvm.x86.avx512.mask.psubus.w.512
1335   // CHECK: call <32 x i16> @llvm.usub.sat.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})
1336 return _mm512_subs_epu16(__A,__B);
1337 }
test_mm512_mask_subs_epu16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1338 __m512i test_mm512_mask_subs_epu16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1339   // CHECK-LABEL: @test_mm512_mask_subs_epu16
1340   // CHECK-NOT: @llvm.x86.avx512.mask.psubus.w.512
1341   // CHECK: call <32 x i16> @llvm.usub.sat.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})
1342   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1343 return _mm512_mask_subs_epu16(__W,__U,__A,__B);
1344 }
test_mm512_maskz_subs_epu16(__mmask32 __U,__m512i __A,__m512i __B)1345 __m512i test_mm512_maskz_subs_epu16(__mmask32 __U, __m512i __A, __m512i __B) {
1346   // CHECK-LABEL: @test_mm512_maskz_subs_epu16
1347   // CHECK-NOT: @llvm.x86.avx512.mask.psubus.w.512
1348   // CHECK: call <32 x i16> @llvm.usub.sat.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})
1349   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1350 return _mm512_maskz_subs_epu16(__U,__A,__B);
1351 }
test_mm512_mask2_permutex2var_epi16(__m512i __A,__m512i __I,__mmask32 __U,__m512i __B)1352 __m512i test_mm512_mask2_permutex2var_epi16(__m512i __A, __m512i __I, __mmask32 __U, __m512i __B) {
1353   // CHECK-LABEL: @test_mm512_mask2_permutex2var_epi16
1354   // CHECK: @llvm.x86.avx512.vpermi2var.hi.512
1355   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1356   return _mm512_mask2_permutex2var_epi16(__A,__I,__U,__B);
1357 }
test_mm512_permutex2var_epi16(__m512i __A,__m512i __I,__m512i __B)1358 __m512i test_mm512_permutex2var_epi16(__m512i __A, __m512i __I, __m512i __B) {
1359   // CHECK-LABEL: @test_mm512_permutex2var_epi16
1360   // CHECK: @llvm.x86.avx512.vpermi2var.hi.512
1361   return _mm512_permutex2var_epi16(__A,__I,__B);
1362 }
test_mm512_mask_permutex2var_epi16(__m512i __A,__mmask32 __U,__m512i __I,__m512i __B)1363 __m512i test_mm512_mask_permutex2var_epi16(__m512i __A, __mmask32 __U, __m512i __I, __m512i __B) {
1364   // CHECK-LABEL: @test_mm512_mask_permutex2var_epi16
1365   // CHECK: @llvm.x86.avx512.vpermi2var.hi.512
1366   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1367   return _mm512_mask_permutex2var_epi16(__A,__U,__I,__B);
1368 }
test_mm512_maskz_permutex2var_epi16(__mmask32 __U,__m512i __A,__m512i __I,__m512i __B)1369 __m512i test_mm512_maskz_permutex2var_epi16(__mmask32 __U, __m512i __A, __m512i __I, __m512i __B) {
1370   // CHECK-LABEL: @test_mm512_maskz_permutex2var_epi16
1371   // CHECK: @llvm.x86.avx512.vpermi2var.hi.512
1372   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1373   return _mm512_maskz_permutex2var_epi16(__U,__A,__I,__B);
1374 }
1375 
test_mm512_mulhrs_epi16(__m512i __A,__m512i __B)1376 __m512i test_mm512_mulhrs_epi16(__m512i __A, __m512i __B) {
1377   // CHECK-LABEL: @test_mm512_mulhrs_epi16
1378   // CHECK: @llvm.x86.avx512.pmul.hr.sw.512
1379   return _mm512_mulhrs_epi16(__A,__B);
1380 }
test_mm512_mask_mulhrs_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1381 __m512i test_mm512_mask_mulhrs_epi16(__m512i __W, __mmask32 __U, __m512i __A,        __m512i __B) {
1382   // CHECK-LABEL: @test_mm512_mask_mulhrs_epi16
1383   // CHECK: @llvm.x86.avx512.pmul.hr.sw.512
1384   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1385   return _mm512_mask_mulhrs_epi16(__W,__U,__A,__B);
1386 }
test_mm512_maskz_mulhrs_epi16(__mmask32 __U,__m512i __A,__m512i __B)1387 __m512i test_mm512_maskz_mulhrs_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1388   // CHECK-LABEL: @test_mm512_maskz_mulhrs_epi16
1389   // CHECK: @llvm.x86.avx512.pmul.hr.sw.512
1390   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1391   return _mm512_maskz_mulhrs_epi16(__U,__A,__B);
1392 }
test_mm512_mulhi_epi16(__m512i __A,__m512i __B)1393 __m512i test_mm512_mulhi_epi16(__m512i __A, __m512i __B) {
1394   // CHECK-LABEL: @test_mm512_mulhi_epi16
1395   // CHECK: @llvm.x86.avx512.pmulh.w.512
1396   return _mm512_mulhi_epi16(__A,__B);
1397 }
test_mm512_mask_mulhi_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1398 __m512i test_mm512_mask_mulhi_epi16(__m512i __W, __mmask32 __U, __m512i __A,       __m512i __B) {
1399   // CHECK-LABEL: @test_mm512_mask_mulhi_epi16
1400   // CHECK: @llvm.x86.avx512.pmulh.w.512
1401   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1402   return _mm512_mask_mulhi_epi16(__W,__U,__A,__B);
1403 }
test_mm512_maskz_mulhi_epi16(__mmask32 __U,__m512i __A,__m512i __B)1404 __m512i test_mm512_maskz_mulhi_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1405   // CHECK-LABEL: @test_mm512_maskz_mulhi_epi16
1406   // CHECK: @llvm.x86.avx512.pmulh.w.512
1407   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1408   return _mm512_maskz_mulhi_epi16(__U,__A,__B);
1409 }
test_mm512_mulhi_epu16(__m512i __A,__m512i __B)1410 __m512i test_mm512_mulhi_epu16(__m512i __A, __m512i __B) {
1411   // CHECK-LABEL: @test_mm512_mulhi_epu16
1412   // CHECK: @llvm.x86.avx512.pmulhu.w.512
1413   return _mm512_mulhi_epu16(__A,__B);
1414 }
test_mm512_mask_mulhi_epu16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1415 __m512i test_mm512_mask_mulhi_epu16(__m512i __W, __mmask32 __U, __m512i __A,       __m512i __B) {
1416   // CHECK-LABEL: @test_mm512_mask_mulhi_epu16
1417   // CHECK: @llvm.x86.avx512.pmulhu.w.512
1418   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1419   return _mm512_mask_mulhi_epu16(__W,__U,__A,__B);
1420 }
test_mm512_maskz_mulhi_epu16(__mmask32 __U,__m512i __A,__m512i __B)1421 __m512i test_mm512_maskz_mulhi_epu16(__mmask32 __U, __m512i __A, __m512i __B) {
1422   // CHECK-LABEL: @test_mm512_maskz_mulhi_epu16
1423   // CHECK: @llvm.x86.avx512.pmulhu.w.512
1424   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1425   return _mm512_maskz_mulhi_epu16(__U,__A,__B);
1426 }
1427 
test_mm512_maddubs_epi16(__m512i __X,__m512i __Y)1428 __m512i test_mm512_maddubs_epi16(__m512i __X, __m512i __Y) {
1429   // CHECK-LABEL: @test_mm512_maddubs_epi16
1430   // CHECK: @llvm.x86.avx512.pmaddubs.w.512
1431   return _mm512_maddubs_epi16(__X,__Y);
1432 }
test_mm512_mask_maddubs_epi16(__m512i __W,__mmask32 __U,__m512i __X,__m512i __Y)1433 __m512i test_mm512_mask_maddubs_epi16(__m512i __W, __mmask32 __U, __m512i __X,         __m512i __Y) {
1434   // CHECK-LABEL: @test_mm512_mask_maddubs_epi16
1435   // CHECK: @llvm.x86.avx512.pmaddubs.w.512
1436   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1437   return _mm512_mask_maddubs_epi16(__W,__U,__X,__Y);
1438 }
test_mm512_maskz_maddubs_epi16(__mmask32 __U,__m512i __X,__m512i __Y)1439 __m512i test_mm512_maskz_maddubs_epi16(__mmask32 __U, __m512i __X, __m512i __Y) {
1440   // CHECK-LABEL: @test_mm512_maskz_maddubs_epi16
1441   // CHECK: @llvm.x86.avx512.pmaddubs.w.512
1442   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1443   return _mm512_maskz_maddubs_epi16(__U,__X,__Y);
1444 }
test_mm512_madd_epi16(__m512i __A,__m512i __B)1445 __m512i test_mm512_madd_epi16(__m512i __A, __m512i __B) {
1446   // CHECK-LABEL: @test_mm512_madd_epi16
1447   // CHECK: @llvm.x86.avx512.pmaddw.d.512
1448   return _mm512_madd_epi16(__A,__B);
1449 }
test_mm512_mask_madd_epi16(__m512i __W,__mmask16 __U,__m512i __A,__m512i __B)1450 __m512i test_mm512_mask_madd_epi16(__m512i __W, __mmask16 __U, __m512i __A,      __m512i __B) {
1451   // CHECK-LABEL: @test_mm512_mask_madd_epi16
1452   // CHECK: @llvm.x86.avx512.pmaddw.d.512
1453   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1454   return _mm512_mask_madd_epi16(__W,__U,__A,__B);
1455 }
test_mm512_maskz_madd_epi16(__mmask16 __U,__m512i __A,__m512i __B)1456 __m512i test_mm512_maskz_madd_epi16(__mmask16 __U, __m512i __A, __m512i __B) {
1457   // CHECK-LABEL: @test_mm512_maskz_madd_epi16
1458   // CHECK: @llvm.x86.avx512.pmaddw.d.512
1459   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1460   return _mm512_maskz_madd_epi16(__U,__A,__B);
1461 }
1462 
test_mm512_cvtsepi16_epi8(__m512i __A)1463 __m256i test_mm512_cvtsepi16_epi8(__m512i __A) {
1464   // CHECK-LABEL: @test_mm512_cvtsepi16_epi8
1465   // CHECK: @llvm.x86.avx512.mask.pmovs.wb.512
1466   return _mm512_cvtsepi16_epi8(__A);
1467 }
1468 
test_mm512_mask_cvtsepi16_epi8(__m256i __O,__mmask32 __M,__m512i __A)1469 __m256i test_mm512_mask_cvtsepi16_epi8(__m256i __O, __mmask32 __M, __m512i __A) {
1470   // CHECK-LABEL: @test_mm512_mask_cvtsepi16_epi8
1471   // CHECK: @llvm.x86.avx512.mask.pmovs.wb.512
1472   return _mm512_mask_cvtsepi16_epi8(__O, __M, __A);
1473 }
1474 
test_mm512_maskz_cvtsepi16_epi8(__mmask32 __M,__m512i __A)1475 __m256i test_mm512_maskz_cvtsepi16_epi8(__mmask32 __M, __m512i __A) {
1476   // CHECK-LABEL: @test_mm512_maskz_cvtsepi16_epi8
1477   // CHECK: @llvm.x86.avx512.mask.pmovs.wb.512
1478   return _mm512_maskz_cvtsepi16_epi8(__M, __A);
1479 }
1480 
test_mm512_cvtusepi16_epi8(__m512i __A)1481 __m256i test_mm512_cvtusepi16_epi8(__m512i __A) {
1482   // CHECK-LABEL: @test_mm512_cvtusepi16_epi8
1483   // CHECK: @llvm.x86.avx512.mask.pmovus.wb.512
1484   return _mm512_cvtusepi16_epi8(__A);
1485 }
1486 
test_mm512_mask_cvtusepi16_epi8(__m256i __O,__mmask32 __M,__m512i __A)1487 __m256i test_mm512_mask_cvtusepi16_epi8(__m256i __O, __mmask32 __M, __m512i __A) {
1488   // CHECK-LABEL: @test_mm512_mask_cvtusepi16_epi8
1489   // CHECK: @llvm.x86.avx512.mask.pmovus.wb.512
1490   return _mm512_mask_cvtusepi16_epi8(__O, __M, __A);
1491 }
1492 
test_mm512_maskz_cvtusepi16_epi8(__mmask32 __M,__m512i __A)1493 __m256i test_mm512_maskz_cvtusepi16_epi8(__mmask32 __M, __m512i __A) {
1494   // CHECK-LABEL: @test_mm512_maskz_cvtusepi16_epi8
1495   // CHECK: @llvm.x86.avx512.mask.pmovus.wb.512
1496   return _mm512_maskz_cvtusepi16_epi8(__M, __A);
1497 }
1498 
test_mm512_cvtepi16_epi8(__m512i __A)1499 __m256i test_mm512_cvtepi16_epi8(__m512i __A) {
1500   // CHECK-LABEL: @test_mm512_cvtepi16_epi8
1501   // CHECK: trunc <32 x i16> %{{.*}} to <32 x i8>
1502   return _mm512_cvtepi16_epi8(__A);
1503 }
1504 
test_mm512_mask_cvtepi16_epi8(__m256i __O,__mmask32 __M,__m512i __A)1505 __m256i test_mm512_mask_cvtepi16_epi8(__m256i __O, __mmask32 __M, __m512i __A) {
1506   // CHECK-LABEL: @test_mm512_mask_cvtepi16_epi8
1507   // CHECK: trunc <32 x i16> %{{.*}} to <32 x i8>
1508   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1509   return _mm512_mask_cvtepi16_epi8(__O, __M, __A);
1510 }
1511 
test_mm512_maskz_cvtepi16_epi8(__mmask32 __M,__m512i __A)1512 __m256i test_mm512_maskz_cvtepi16_epi8(__mmask32 __M, __m512i __A) {
1513   // CHECK-LABEL: @test_mm512_maskz_cvtepi16_epi8
1514   // CHECK: trunc <32 x i16> %{{.*}} to <32 x i8>
1515   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1516   return _mm512_maskz_cvtepi16_epi8(__M, __A);
1517 }
1518 
test_mm512_unpackhi_epi8(__m512i __A,__m512i __B)1519 __m512i test_mm512_unpackhi_epi8(__m512i __A, __m512i __B) {
1520   // CHECK-LABEL: @test_mm512_unpackhi_epi8
1521   // 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>
1522   return _mm512_unpackhi_epi8(__A, __B);
1523 }
1524 
test_mm512_mask_unpackhi_epi8(__m512i __W,__mmask64 __U,__m512i __A,__m512i __B)1525 __m512i test_mm512_mask_unpackhi_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1526   // CHECK-LABEL: @test_mm512_mask_unpackhi_epi8
1527   // 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>
1528   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1529   return _mm512_mask_unpackhi_epi8(__W, __U, __A, __B);
1530 }
1531 
test_mm512_maskz_unpackhi_epi8(__mmask64 __U,__m512i __A,__m512i __B)1532 __m512i test_mm512_maskz_unpackhi_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
1533   // CHECK-LABEL: @test_mm512_maskz_unpackhi_epi8
1534   // 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>
1535   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1536   return _mm512_maskz_unpackhi_epi8(__U, __A, __B);
1537 }
1538 
test_mm512_unpackhi_epi16(__m512i __A,__m512i __B)1539 __m512i test_mm512_unpackhi_epi16(__m512i __A, __m512i __B) {
1540   // CHECK-LABEL: @test_mm512_unpackhi_epi16
1541   // 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>
1542   return _mm512_unpackhi_epi16(__A, __B);
1543 }
1544 
test_mm512_mask_unpackhi_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1545 __m512i test_mm512_mask_unpackhi_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1546   // CHECK-LABEL: @test_mm512_mask_unpackhi_epi16
1547   // 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>
1548   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1549   return _mm512_mask_unpackhi_epi16(__W, __U, __A, __B);
1550 }
1551 
test_mm512_maskz_unpackhi_epi16(__mmask32 __U,__m512i __A,__m512i __B)1552 __m512i test_mm512_maskz_unpackhi_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1553   // CHECK-LABEL: @test_mm512_maskz_unpackhi_epi16
1554   // 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>
1555   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1556   return _mm512_maskz_unpackhi_epi16(__U, __A, __B);
1557 }
1558 
test_mm512_unpacklo_epi8(__m512i __A,__m512i __B)1559 __m512i test_mm512_unpacklo_epi8(__m512i __A, __m512i __B) {
1560   // CHECK-LABEL: @test_mm512_unpacklo_epi8
1561   // 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>
1562   return _mm512_unpacklo_epi8(__A, __B);
1563 }
1564 
test_mm512_mask_unpacklo_epi8(__m512i __W,__mmask64 __U,__m512i __A,__m512i __B)1565 __m512i test_mm512_mask_unpacklo_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1566   // CHECK-LABEL: @test_mm512_mask_unpacklo_epi8
1567   // 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>
1568   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1569   return _mm512_mask_unpacklo_epi8(__W, __U, __A, __B);
1570 }
1571 
test_mm512_maskz_unpacklo_epi8(__mmask64 __U,__m512i __A,__m512i __B)1572 __m512i test_mm512_maskz_unpacklo_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
1573   // CHECK-LABEL: @test_mm512_maskz_unpacklo_epi8
1574   // 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>
1575   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1576   return _mm512_maskz_unpacklo_epi8(__U, __A, __B);
1577 }
1578 
test_mm512_unpacklo_epi16(__m512i __A,__m512i __B)1579 __m512i test_mm512_unpacklo_epi16(__m512i __A, __m512i __B) {
1580   // CHECK-LABEL: @test_mm512_unpacklo_epi16
1581   // 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>
1582   return _mm512_unpacklo_epi16(__A, __B);
1583 }
1584 
test_mm512_mask_unpacklo_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1585 __m512i test_mm512_mask_unpacklo_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1586   // CHECK-LABEL: @test_mm512_mask_unpacklo_epi16
1587   // 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>
1588   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1589   return _mm512_mask_unpacklo_epi16(__W, __U, __A, __B);
1590 }
1591 
test_mm512_maskz_unpacklo_epi16(__mmask32 __U,__m512i __A,__m512i __B)1592 __m512i test_mm512_maskz_unpacklo_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1593   // CHECK-LABEL: @test_mm512_maskz_unpacklo_epi16
1594   // 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>
1595   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1596   return _mm512_maskz_unpacklo_epi16(__U, __A, __B);
1597 }
1598 
test_mm512_cvtepi8_epi16(__m256i __A)1599 __m512i test_mm512_cvtepi8_epi16(__m256i __A) {
1600   // CHECK-LABEL: @test_mm512_cvtepi8_epi16
1601   // CHECK: sext <32 x i8> %{{.*}} to <32 x i16>
1602   return _mm512_cvtepi8_epi16(__A);
1603 }
1604 
test_mm512_mask_cvtepi8_epi16(__m512i __W,__mmask32 __U,__m256i __A)1605 __m512i test_mm512_mask_cvtepi8_epi16(__m512i __W, __mmask32 __U, __m256i __A) {
1606   // CHECK-LABEL: @test_mm512_mask_cvtepi8_epi16
1607   // CHECK: sext <32 x i8> %{{.*}} to <32 x i16>
1608   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1609   return _mm512_mask_cvtepi8_epi16(__W, __U, __A);
1610 }
1611 
test_mm512_maskz_cvtepi8_epi16(__mmask32 __U,__m256i __A)1612 __m512i test_mm512_maskz_cvtepi8_epi16(__mmask32 __U, __m256i __A) {
1613   // CHECK-LABEL: @test_mm512_maskz_cvtepi8_epi16
1614   // CHECK: sext <32 x i8> %{{.*}} to <32 x i16>
1615   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1616   return _mm512_maskz_cvtepi8_epi16(__U, __A);
1617 }
1618 
test_mm512_cvtepu8_epi16(__m256i __A)1619 __m512i test_mm512_cvtepu8_epi16(__m256i __A) {
1620   // CHECK-LABEL: @test_mm512_cvtepu8_epi16
1621   // CHECK: zext <32 x i8> %{{.*}} to <32 x i16>
1622   return _mm512_cvtepu8_epi16(__A);
1623 }
1624 
test_mm512_mask_cvtepu8_epi16(__m512i __W,__mmask32 __U,__m256i __A)1625 __m512i test_mm512_mask_cvtepu8_epi16(__m512i __W, __mmask32 __U, __m256i __A) {
1626   // CHECK-LABEL: @test_mm512_mask_cvtepu8_epi16
1627   // CHECK: zext <32 x i8> %{{.*}} to <32 x i16>
1628   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1629   return _mm512_mask_cvtepu8_epi16(__W, __U, __A);
1630 }
1631 
test_mm512_maskz_cvtepu8_epi16(__mmask32 __U,__m256i __A)1632 __m512i test_mm512_maskz_cvtepu8_epi16(__mmask32 __U, __m256i __A) {
1633   // CHECK-LABEL: @test_mm512_maskz_cvtepu8_epi16
1634   // CHECK: zext <32 x i8> %{{.*}} to <32 x i16>
1635   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1636   return _mm512_maskz_cvtepu8_epi16(__U, __A);
1637 }
1638 
test_mm512_shufflehi_epi16(__m512i __A)1639 __m512i test_mm512_shufflehi_epi16(__m512i __A) {
1640   // CHECK-LABEL: @test_mm512_shufflehi_epi16
1641   // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> undef, <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>
1642   return _mm512_shufflehi_epi16(__A, 5);
1643 }
1644 
test_mm512_mask_shufflehi_epi16(__m512i __W,__mmask32 __U,__m512i __A)1645 __m512i test_mm512_mask_shufflehi_epi16(__m512i __W, __mmask32 __U, __m512i __A) {
1646   // CHECK-LABEL: @test_mm512_mask_shufflehi_epi16
1647   // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> undef, <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>
1648   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1649   return _mm512_mask_shufflehi_epi16(__W, __U, __A, 5);
1650 }
1651 
test_mm512_maskz_shufflehi_epi16(__mmask32 __U,__m512i __A)1652 __m512i test_mm512_maskz_shufflehi_epi16(__mmask32 __U, __m512i __A) {
1653   // CHECK-LABEL: @test_mm512_maskz_shufflehi_epi16
1654   // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> undef, <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>
1655   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1656   return _mm512_maskz_shufflehi_epi16(__U, __A, 5);
1657 }
1658 
test_mm512_shufflelo_epi16(__m512i __A)1659 __m512i test_mm512_shufflelo_epi16(__m512i __A) {
1660   // CHECK-LABEL: @test_mm512_shufflelo_epi16
1661   // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> undef, <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>
1662   return _mm512_shufflelo_epi16(__A, 5);
1663 }
1664 
test_mm512_mask_shufflelo_epi16(__m512i __W,__mmask32 __U,__m512i __A)1665 __m512i test_mm512_mask_shufflelo_epi16(__m512i __W, __mmask32 __U, __m512i __A) {
1666   // CHECK-LABEL: @test_mm512_mask_shufflelo_epi16
1667   // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> undef, <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>
1668   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1669   return _mm512_mask_shufflelo_epi16(__W, __U, __A, 5);
1670 }
1671 
test_mm512_maskz_shufflelo_epi16(__mmask32 __U,__m512i __A)1672 __m512i test_mm512_maskz_shufflelo_epi16(__mmask32 __U, __m512i __A) {
1673   // CHECK-LABEL: @test_mm512_maskz_shufflelo_epi16
1674   // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> undef, <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>
1675   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1676   return _mm512_maskz_shufflelo_epi16(__U, __A, 5);
1677 }
1678 
test_mm512_sllv_epi16(__m512i __A,__m512i __B)1679 __m512i test_mm512_sllv_epi16(__m512i __A, __m512i __B) {
1680   // CHECK-LABEL: @test_mm512_sllv_epi16
1681   // CHECK: @llvm.x86.avx512.psllv.w.512(
1682   return _mm512_sllv_epi16(__A, __B);
1683 }
1684 
test_mm512_mask_sllv_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1685 __m512i test_mm512_mask_sllv_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1686   // CHECK-LABEL: @test_mm512_mask_sllv_epi16
1687   // CHECK: @llvm.x86.avx512.psllv.w.512(
1688   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1689   return _mm512_mask_sllv_epi16(__W, __U, __A, __B);
1690 }
1691 
test_mm512_maskz_sllv_epi16(__mmask32 __U,__m512i __A,__m512i __B)1692 __m512i test_mm512_maskz_sllv_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1693   // CHECK-LABEL: @test_mm512_maskz_sllv_epi16
1694   // CHECK: @llvm.x86.avx512.psllv.w.512(
1695   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1696   return _mm512_maskz_sllv_epi16(__U, __A, __B);
1697 }
1698 
test_mm512_sll_epi16(__m512i __A,__m128i __B)1699 __m512i test_mm512_sll_epi16(__m512i __A, __m128i __B) {
1700   // CHECK-LABEL: @test_mm512_sll_epi16
1701   // CHECK: @llvm.x86.avx512.psll.w.512
1702   return _mm512_sll_epi16(__A, __B);
1703 }
1704 
test_mm512_mask_sll_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m128i __B)1705 __m512i test_mm512_mask_sll_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B) {
1706   // CHECK-LABEL: @test_mm512_mask_sll_epi16
1707   // CHECK: @llvm.x86.avx512.psll.w.512
1708   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1709   return _mm512_mask_sll_epi16(__W, __U, __A, __B);
1710 }
1711 
test_mm512_maskz_sll_epi16(__mmask32 __U,__m512i __A,__m128i __B)1712 __m512i test_mm512_maskz_sll_epi16(__mmask32 __U, __m512i __A, __m128i __B) {
1713   // CHECK-LABEL: @test_mm512_maskz_sll_epi16
1714   // CHECK: @llvm.x86.avx512.psll.w.512
1715   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1716   return _mm512_maskz_sll_epi16(__U, __A, __B);
1717 }
1718 
test_mm512_slli_epi16(__m512i __A)1719 __m512i test_mm512_slli_epi16(__m512i __A) {
1720   // CHECK-LABEL: @test_mm512_slli_epi16
1721   // CHECK: @llvm.x86.avx512.pslli.w.512
1722   return _mm512_slli_epi16(__A, 5);
1723 }
1724 
test_mm512_slli_epi16_2(__m512i __A,unsigned int __B)1725 __m512i test_mm512_slli_epi16_2(__m512i __A, unsigned int __B) {
1726   // CHECK-LABEL: @test_mm512_slli_epi16_2
1727   // CHECK: @llvm.x86.avx512.pslli.w.512
1728   return _mm512_slli_epi16(__A, __B);
1729 }
1730 
test_mm512_mask_slli_epi16(__m512i __W,__mmask32 __U,__m512i __A)1731 __m512i test_mm512_mask_slli_epi16(__m512i __W, __mmask32 __U, __m512i __A) {
1732   // CHECK-LABEL: @test_mm512_mask_slli_epi16
1733   // CHECK: @llvm.x86.avx512.pslli.w.512
1734   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1735   return _mm512_mask_slli_epi16(__W, __U, __A, 5);
1736 }
1737 
test_mm512_mask_slli_epi16_2(__m512i __W,__mmask32 __U,__m512i __A,unsigned int __B)1738 __m512i test_mm512_mask_slli_epi16_2(__m512i __W, __mmask32 __U, __m512i __A, unsigned int __B) {
1739   // CHECK-LABEL: @test_mm512_mask_slli_epi16_2
1740   // CHECK: @llvm.x86.avx512.pslli.w.512
1741   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1742   return _mm512_mask_slli_epi16(__W, __U, __A, __B);
1743 }
1744 
test_mm512_maskz_slli_epi16(__mmask32 __U,__m512i __A)1745 __m512i test_mm512_maskz_slli_epi16(__mmask32 __U, __m512i __A) {
1746   // CHECK-LABEL: @test_mm512_maskz_slli_epi16
1747   // CHECK: @llvm.x86.avx512.pslli.w.512
1748   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1749   return _mm512_maskz_slli_epi16(__U, __A, 5);
1750 }
1751 
test_mm512_maskz_slli_epi16_2(__mmask32 __U,__m512i __A,unsigned int __B)1752 __m512i test_mm512_maskz_slli_epi16_2(__mmask32 __U, __m512i __A, unsigned int __B) {
1753   // CHECK-LABEL: @test_mm512_maskz_slli_epi16_2
1754   // CHECK: @llvm.x86.avx512.pslli.w.512
1755   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1756   return _mm512_maskz_slli_epi16(__U, __A, __B);
1757 }
1758 
test_mm512_bslli_epi128(__m512i __A)1759 __m512i test_mm512_bslli_epi128(__m512i __A) {
1760   // CHECK-LABEL: @test_mm512_bslli_epi128
1761   // 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>
1762   return _mm512_bslli_epi128(__A, 5);
1763 }
1764 
test_mm512_srlv_epi16(__m512i __A,__m512i __B)1765 __m512i test_mm512_srlv_epi16(__m512i __A, __m512i __B) {
1766   // CHECK-LABEL: @test_mm512_srlv_epi16
1767   // CHECK: @llvm.x86.avx512.psrlv.w.512(
1768   return _mm512_srlv_epi16(__A, __B);
1769 }
1770 
test_mm512_mask_srlv_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1771 __m512i test_mm512_mask_srlv_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1772   // CHECK-LABEL: @test_mm512_mask_srlv_epi16
1773   // CHECK: @llvm.x86.avx512.psrlv.w.512(
1774   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1775   return _mm512_mask_srlv_epi16(__W, __U, __A, __B);
1776 }
1777 
test_mm512_maskz_srlv_epi16(__mmask32 __U,__m512i __A,__m512i __B)1778 __m512i test_mm512_maskz_srlv_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1779   // CHECK-LABEL: @test_mm512_maskz_srlv_epi16
1780   // CHECK: @llvm.x86.avx512.psrlv.w.512(
1781   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1782   return _mm512_maskz_srlv_epi16(__U, __A, __B);
1783 }
1784 
test_mm512_srav_epi16(__m512i __A,__m512i __B)1785 __m512i test_mm512_srav_epi16(__m512i __A, __m512i __B) {
1786   // CHECK-LABEL: @test_mm512_srav_epi16
1787   // CHECK: @llvm.x86.avx512.psrav.w.512(
1788   return _mm512_srav_epi16(__A, __B);
1789 }
1790 
test_mm512_mask_srav_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1791 __m512i test_mm512_mask_srav_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1792   // CHECK-LABEL: @test_mm512_mask_srav_epi16
1793   // CHECK: @llvm.x86.avx512.psrav.w.512(
1794   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1795   return _mm512_mask_srav_epi16(__W, __U, __A, __B);
1796 }
1797 
test_mm512_maskz_srav_epi16(__mmask32 __U,__m512i __A,__m512i __B)1798 __m512i test_mm512_maskz_srav_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1799   // CHECK-LABEL: @test_mm512_maskz_srav_epi16
1800   // CHECK: @llvm.x86.avx512.psrav.w.512(
1801   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1802   return _mm512_maskz_srav_epi16(__U, __A, __B);
1803 }
1804 
test_mm512_sra_epi16(__m512i __A,__m128i __B)1805 __m512i test_mm512_sra_epi16(__m512i __A, __m128i __B) {
1806   // CHECK-LABEL: @test_mm512_sra_epi16
1807   // CHECK: @llvm.x86.avx512.psra.w.512
1808   return _mm512_sra_epi16(__A, __B);
1809 }
1810 
test_mm512_mask_sra_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m128i __B)1811 __m512i test_mm512_mask_sra_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B) {
1812   // CHECK-LABEL: @test_mm512_mask_sra_epi16
1813   // CHECK: @llvm.x86.avx512.psra.w.512
1814   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1815   return _mm512_mask_sra_epi16(__W, __U, __A, __B);
1816 }
1817 
test_mm512_maskz_sra_epi16(__mmask32 __U,__m512i __A,__m128i __B)1818 __m512i test_mm512_maskz_sra_epi16(__mmask32 __U, __m512i __A, __m128i __B) {
1819   // CHECK-LABEL: @test_mm512_maskz_sra_epi16
1820   // CHECK: @llvm.x86.avx512.psra.w.512
1821   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1822   return _mm512_maskz_sra_epi16(__U, __A, __B);
1823 }
1824 
test_mm512_srai_epi16(__m512i __A)1825 __m512i test_mm512_srai_epi16(__m512i __A) {
1826   // CHECK-LABEL: @test_mm512_srai_epi16
1827   // CHECK: @llvm.x86.avx512.psrai.w.512
1828   return _mm512_srai_epi16(__A, 5);
1829 }
1830 
test_mm512_srai_epi16_2(__m512i __A,unsigned int __B)1831 __m512i test_mm512_srai_epi16_2(__m512i __A, unsigned int __B) {
1832   // CHECK-LABEL: @test_mm512_srai_epi16_2
1833   // CHECK: @llvm.x86.avx512.psrai.w.512
1834   return _mm512_srai_epi16(__A, __B);
1835 }
1836 
test_mm512_mask_srai_epi16(__m512i __W,__mmask32 __U,__m512i __A)1837 __m512i test_mm512_mask_srai_epi16(__m512i __W, __mmask32 __U, __m512i __A) {
1838   // CHECK-LABEL: @test_mm512_mask_srai_epi16
1839   // CHECK: @llvm.x86.avx512.psrai.w.512
1840   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1841   return _mm512_mask_srai_epi16(__W, __U, __A, 5);
1842 }
1843 
test_mm512_mask_srai_epi16_2(__m512i __W,__mmask32 __U,__m512i __A,unsigned int __B)1844 __m512i test_mm512_mask_srai_epi16_2(__m512i __W, __mmask32 __U, __m512i __A, unsigned int __B) {
1845   // CHECK-LABEL: @test_mm512_mask_srai_epi16_2
1846   // CHECK: @llvm.x86.avx512.psrai.w.512
1847   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1848   return _mm512_mask_srai_epi16(__W, __U, __A, __B);
1849 }
1850 
test_mm512_maskz_srai_epi16(__mmask32 __U,__m512i __A)1851 __m512i test_mm512_maskz_srai_epi16(__mmask32 __U, __m512i __A) {
1852   // CHECK-LABEL: @test_mm512_maskz_srai_epi16
1853   // CHECK: @llvm.x86.avx512.psrai.w.512
1854   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1855   return _mm512_maskz_srai_epi16(__U, __A, 5);
1856 }
1857 
test_mm512_maskz_srai_epi16_2(__mmask32 __U,__m512i __A,unsigned int __B)1858 __m512i test_mm512_maskz_srai_epi16_2(__mmask32 __U, __m512i __A, unsigned int __B) {
1859   // CHECK-LABEL: @test_mm512_maskz_srai_epi16_2
1860   // CHECK: @llvm.x86.avx512.psrai.w.512
1861   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1862   return _mm512_maskz_srai_epi16(__U, __A, __B);
1863 }
1864 
test_mm512_srl_epi16(__m512i __A,__m128i __B)1865 __m512i test_mm512_srl_epi16(__m512i __A, __m128i __B) {
1866   // CHECK-LABEL: @test_mm512_srl_epi16
1867   // CHECK: @llvm.x86.avx512.psrl.w.512
1868   return _mm512_srl_epi16(__A, __B);
1869 }
1870 
test_mm512_mask_srl_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m128i __B)1871 __m512i test_mm512_mask_srl_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B) {
1872   // CHECK-LABEL: @test_mm512_mask_srl_epi16
1873   // CHECK: @llvm.x86.avx512.psrl.w.512
1874   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1875   return _mm512_mask_srl_epi16(__W, __U, __A, __B);
1876 }
1877 
test_mm512_maskz_srl_epi16(__mmask32 __U,__m512i __A,__m128i __B)1878 __m512i test_mm512_maskz_srl_epi16(__mmask32 __U, __m512i __A, __m128i __B) {
1879   // CHECK-LABEL: @test_mm512_maskz_srl_epi16
1880   // CHECK: @llvm.x86.avx512.psrl.w.512
1881   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1882   return _mm512_maskz_srl_epi16(__U, __A, __B);
1883 }
1884 
test_mm512_srli_epi16(__m512i __A)1885 __m512i test_mm512_srli_epi16(__m512i __A) {
1886   // CHECK-LABEL: @test_mm512_srli_epi16
1887   // CHECK: @llvm.x86.avx512.psrli.w.512
1888   return _mm512_srli_epi16(__A, 5);
1889 }
1890 
test_mm512_srli_epi16_2(__m512i __A,unsigned int __B)1891 __m512i test_mm512_srli_epi16_2(__m512i __A, unsigned int __B) {
1892   // CHECK-LABEL: @test_mm512_srli_epi16_2
1893   // CHECK: @llvm.x86.avx512.psrli.w.512
1894   return _mm512_srli_epi16(__A, __B);
1895 }
1896 
test_mm512_mask_srli_epi16(__m512i __W,__mmask32 __U,__m512i __A)1897 __m512i test_mm512_mask_srli_epi16(__m512i __W, __mmask32 __U, __m512i __A) {
1898   // CHECK-LABEL: @test_mm512_mask_srli_epi16
1899   // CHECK: @llvm.x86.avx512.psrli.w.512
1900   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1901   return _mm512_mask_srli_epi16(__W, __U, __A, 5);
1902 }
1903 
test_mm512_mask_srli_epi16_2(__m512i __W,__mmask32 __U,__m512i __A,unsigned int __B)1904 __m512i test_mm512_mask_srli_epi16_2(__m512i __W, __mmask32 __U, __m512i __A, unsigned int __B) {
1905   // CHECK-LABEL: @test_mm512_mask_srli_epi16_2
1906   // CHECK: @llvm.x86.avx512.psrli.w.512
1907   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1908   return _mm512_mask_srli_epi16(__W, __U, __A, __B);
1909 }
1910 
test_mm512_maskz_srli_epi16(__mmask32 __U,__m512i __A)1911 __m512i test_mm512_maskz_srli_epi16(__mmask32 __U, __m512i __A) {
1912   // CHECK-LABEL: @test_mm512_maskz_srli_epi16
1913   // CHECK: @llvm.x86.avx512.psrli.w.512
1914   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1915   return _mm512_maskz_srli_epi16(__U, __A, 5);
1916 }
1917 
test_mm512_maskz_srli_epi16_2(__mmask32 __U,__m512i __A,int __B)1918 __m512i test_mm512_maskz_srli_epi16_2(__mmask32 __U, __m512i __A, int __B) {
1919   // CHECK-LABEL: @test_mm512_maskz_srli_epi16_2
1920   // CHECK: @llvm.x86.avx512.psrli.w.512
1921   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1922   return _mm512_maskz_srli_epi16(__U, __A, __B);
1923 }
1924 
test_mm512_bsrli_epi128(__m512i __A)1925 __m512i test_mm512_bsrli_epi128(__m512i __A) {
1926   // CHECK-LABEL: @test_mm512_bsrli_epi128
1927   // 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>
1928   return _mm512_bsrli_epi128(__A, 5);
1929 }
test_mm512_mask_mov_epi16(__m512i __W,__mmask32 __U,__m512i __A)1930 __m512i test_mm512_mask_mov_epi16(__m512i __W, __mmask32 __U, __m512i __A) {
1931   // CHECK-LABEL: @test_mm512_mask_mov_epi16
1932   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1933   return _mm512_mask_mov_epi16(__W, __U, __A);
1934 }
1935 
test_mm512_maskz_mov_epi16(__mmask32 __U,__m512i __A)1936 __m512i test_mm512_maskz_mov_epi16(__mmask32 __U, __m512i __A) {
1937   // CHECK-LABEL: @test_mm512_maskz_mov_epi16
1938   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1939   return _mm512_maskz_mov_epi16(__U, __A);
1940 }
1941 
test_mm512_mask_mov_epi8(__m512i __W,__mmask64 __U,__m512i __A)1942 __m512i test_mm512_mask_mov_epi8(__m512i __W, __mmask64 __U, __m512i __A) {
1943   // CHECK-LABEL: @test_mm512_mask_mov_epi8
1944   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1945   return _mm512_mask_mov_epi8(__W, __U, __A);
1946 }
1947 
test_mm512_maskz_mov_epi8(__mmask64 __U,__m512i __A)1948 __m512i test_mm512_maskz_mov_epi8(__mmask64 __U, __m512i __A) {
1949   // CHECK-LABEL: @test_mm512_maskz_mov_epi8
1950   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1951   return _mm512_maskz_mov_epi8(__U, __A);
1952 }
1953 
test_mm512_mask_set1_epi8(__m512i __O,__mmask64 __M,char __A)1954 __m512i test_mm512_mask_set1_epi8(__m512i __O, __mmask64 __M, char __A) {
1955   // CHECK-LABEL: @test_mm512_mask_set1_epi8
1956   // CHECK: insertelement <64 x i8> undef, i8 %{{.*}}, i32 0
1957   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 1
1958   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 2
1959   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 3
1960   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 4
1961   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 5
1962   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 6
1963   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 7
1964   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 8
1965   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 9
1966   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 10
1967   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 11
1968   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 12
1969   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 13
1970   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 14
1971   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 15
1972   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 16
1973   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 17
1974   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 18
1975   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 19
1976   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 20
1977   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 21
1978   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 22
1979   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 23
1980   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 24
1981   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 25
1982   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 26
1983   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 27
1984   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 28
1985   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 29
1986   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 30
1987   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 31
1988   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 34
1989   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 35
1990   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 36
1991   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 37
1992   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 38
1993   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 39
1994   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 40
1995   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 41
1996   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 42
1997   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 43
1998   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 44
1999   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 45
2000   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 46
2001   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 47
2002   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 48
2003   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 49
2004   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 50
2005   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 51
2006   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 52
2007   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 53
2008   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 54
2009   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 55
2010   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 56
2011   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 57
2012   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 58
2013   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 59
2014   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 60
2015   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 61
2016   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 62
2017   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 63
2018   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
2019   return _mm512_mask_set1_epi8(__O, __M, __A);
2020 }
2021 
test_mm512_maskz_set1_epi8(__mmask64 __M,char __A)2022 __m512i test_mm512_maskz_set1_epi8(__mmask64 __M, char __A) {
2023   // CHECK-LABEL: @test_mm512_maskz_set1_epi8
2024   // CHECK: insertelement <64 x i8> undef, i8 %{{.*}}, i32 0
2025   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 1
2026   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 2
2027   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 3
2028   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 4
2029   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 5
2030   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 6
2031   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 7
2032   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 8
2033   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 9
2034   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 10
2035   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 11
2036   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 12
2037   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 13
2038   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 14
2039   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 15
2040   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 16
2041   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 17
2042   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 18
2043   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 19
2044   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 20
2045   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 21
2046   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 22
2047   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 23
2048   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 24
2049   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 25
2050   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 26
2051   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 27
2052   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 28
2053   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 29
2054   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 30
2055   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 31
2056   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 32
2057   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 33
2058   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 34
2059   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 35
2060   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 36
2061   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 37
2062   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 38
2063   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 39
2064   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 40
2065   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 41
2066   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 42
2067   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 43
2068   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 44
2069   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 45
2070   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 46
2071   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 47
2072   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 48
2073   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 49
2074   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 50
2075   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 51
2076   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 52
2077   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 53
2078   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 54
2079   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 55
2080   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 56
2081   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 57
2082   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 58
2083   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 59
2084   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 60
2085   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 61
2086   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 62
2087   // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 63
2088   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
2089   return _mm512_maskz_set1_epi8(__M, __A);
2090 }
2091 
test_mm512_kunpackd(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)2092 __mmask64 test_mm512_kunpackd(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
2093   // CHECK-LABEL: @test_mm512_kunpackd
2094   // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
2095   // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
2096   // 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>
2097   // 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>
2098   // 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>
2099   // CHECK: bitcast <64 x i1> [[CONCAT]] to i64
2100   return _mm512_mask_cmpneq_epu8_mask(_mm512_kunpackd(_mm512_cmpneq_epu8_mask(__B, __A),_mm512_cmpneq_epu8_mask(__C, __D)), __E, __F);
2101 }
2102 
test_mm512_kunpackw(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)2103 __mmask32 test_mm512_kunpackw(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
2104   // CHECK-LABEL: @test_mm512_kunpackw
2105   // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
2106   // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
2107   // 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>
2108   // 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>
2109   // 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>
2110   return _mm512_mask_cmpneq_epu16_mask(_mm512_kunpackw(_mm512_cmpneq_epu16_mask(__B, __A),_mm512_cmpneq_epu16_mask(__C, __D)), __E, __F);
2111 }
2112 
test_mm512_loadu_epi16(void * __P)2113 __m512i test_mm512_loadu_epi16 (void *__P)
2114 {
2115   // CHECK-LABEL: @test_mm512_loadu_epi16
2116   // CHECK: load <8 x i64>, <8 x i64>* %{{.*}}, align 1{{$}}
2117   return _mm512_loadu_epi16 (__P);
2118 }
2119 
test_mm512_mask_loadu_epi16(__m512i __W,__mmask32 __U,void const * __P)2120 __m512i test_mm512_mask_loadu_epi16(__m512i __W, __mmask32 __U, void const *__P) {
2121   // CHECK-LABEL: @test_mm512_mask_loadu_epi16
2122   // CHECK: @llvm.masked.load.v32i16.p0v32i16(<32 x i16>* %{{.*}}, i32 1, <32 x i1> %{{.*}}, <32 x i16> %{{.*}})
2123   return _mm512_mask_loadu_epi16(__W, __U, __P);
2124 }
2125 
test_mm512_maskz_loadu_epi16(__mmask32 __U,void const * __P)2126 __m512i test_mm512_maskz_loadu_epi16(__mmask32 __U, void const *__P) {
2127   // CHECK-LABEL: @test_mm512_maskz_loadu_epi16
2128   // CHECK: @llvm.masked.load.v32i16.p0v32i16(<32 x i16>* %{{.*}}, i32 1, <32 x i1> %{{.*}}, <32 x i16> %{{.*}})
2129   return _mm512_maskz_loadu_epi16(__U, __P);
2130 }
2131 
test_mm512_loadu_epi8(void * __P)2132 __m512i test_mm512_loadu_epi8 (void *__P)
2133 {
2134   // CHECK-LABEL: @test_mm512_loadu_epi8
2135   // CHECK: load <8 x i64>, <8 x i64>* %{{.*}}, align 1{{$}}
2136   return _mm512_loadu_epi8 (__P);
2137 }
2138 
test_mm512_mask_loadu_epi8(__m512i __W,__mmask64 __U,void const * __P)2139 __m512i test_mm512_mask_loadu_epi8(__m512i __W, __mmask64 __U, void const *__P) {
2140   // CHECK-LABEL: @test_mm512_mask_loadu_epi8
2141   // CHECK: @llvm.masked.load.v64i8.p0v64i8(<64 x i8>* %{{.*}}, i32 1, <64 x i1> %{{.*}}, <64 x i8> %{{.*}})
2142   return _mm512_mask_loadu_epi8(__W, __U, __P);
2143 }
2144 
test_mm512_maskz_loadu_epi8(__mmask64 __U,void const * __P)2145 __m512i test_mm512_maskz_loadu_epi8(__mmask64 __U, void const *__P) {
2146   // CHECK-LABEL: @test_mm512_maskz_loadu_epi8
2147   // CHECK: @llvm.masked.load.v64i8.p0v64i8(<64 x i8>* %{{.*}}, i32 1, <64 x i1> %{{.*}}, <64 x i8> %{{.*}})
2148   return _mm512_maskz_loadu_epi8(__U, __P);
2149 }
2150 
test_mm512_storeu_epi16(void * __P,__m512i __A)2151 void test_mm512_storeu_epi16(void *__P, __m512i __A) {
2152   // CHECK-LABEL: @test_mm512_storeu_epi16
2153   // CHECK: store <8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, align 1{{$}}
2154   return _mm512_storeu_epi16(__P, __A);
2155 }
2156 
test_mm512_mask_storeu_epi16(void * __P,__mmask32 __U,__m512i __A)2157 void test_mm512_mask_storeu_epi16(void *__P, __mmask32 __U, __m512i __A) {
2158   // CHECK-LABEL: @test_mm512_mask_storeu_epi16
2159   // CHECK: @llvm.masked.store.v32i16.p0v32i16(<32 x i16> %{{.*}}, <32 x i16>* %{{.*}}, i32 1, <32 x i1> %{{.*}})
2160   return _mm512_mask_storeu_epi16(__P, __U, __A);
2161 }
2162 
test_mm512_test_epi8_mask(__m512i __A,__m512i __B)2163 __mmask64 test_mm512_test_epi8_mask(__m512i __A, __m512i __B) {
2164   // CHECK-LABEL: @test_mm512_test_epi8_mask
2165   // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2166   // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}}
2167   return _mm512_test_epi8_mask(__A, __B);
2168 }
2169 
test_mm512_storeu_epi8(void * __P,__m512i __A)2170 void test_mm512_storeu_epi8(void *__P, __m512i __A) {
2171   // CHECK-LABEL: @test_mm512_storeu_epi8
2172   // CHECK: store <8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, align 1{{$}}
2173   return _mm512_storeu_epi8(__P, __A);
2174 }
2175 
test_mm512_mask_storeu_epi8(void * __P,__mmask64 __U,__m512i __A)2176 void test_mm512_mask_storeu_epi8(void *__P, __mmask64 __U, __m512i __A) {
2177   // CHECK-LABEL: @test_mm512_mask_storeu_epi8
2178   // CHECK: @llvm.masked.store.v64i8.p0v64i8(<64 x i8> %{{.*}}, <64 x i8>* %{{.*}}, i32 1, <64 x i1> %{{.*}})
2179   return _mm512_mask_storeu_epi8(__P, __U, __A);
2180 }
test_mm512_mask_test_epi8_mask(__mmask64 __U,__m512i __A,__m512i __B)2181 __mmask64 test_mm512_mask_test_epi8_mask(__mmask64 __U, __m512i __A, __m512i __B) {
2182   // CHECK-LABEL: @test_mm512_mask_test_epi8_mask
2183   // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2184   // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}}
2185   // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
2186   return _mm512_mask_test_epi8_mask(__U, __A, __B);
2187 }
2188 
test_mm512_test_epi16_mask(__m512i __A,__m512i __B)2189 __mmask32 test_mm512_test_epi16_mask(__m512i __A, __m512i __B) {
2190   // CHECK-LABEL: @test_mm512_test_epi16_mask
2191   // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2192   // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}}
2193   return _mm512_test_epi16_mask(__A, __B);
2194 }
2195 
test_mm512_mask_test_epi16_mask(__mmask32 __U,__m512i __A,__m512i __B)2196 __mmask32 test_mm512_mask_test_epi16_mask(__mmask32 __U, __m512i __A, __m512i __B) {
2197   // CHECK-LABEL: @test_mm512_mask_test_epi16_mask
2198   // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2199   // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}}
2200   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
2201   return _mm512_mask_test_epi16_mask(__U, __A, __B);
2202 }
2203 
test_mm512_testn_epi8_mask(__m512i __A,__m512i __B)2204 __mmask64 test_mm512_testn_epi8_mask(__m512i __A, __m512i __B) {
2205   // CHECK-LABEL: @test_mm512_testn_epi8_mask
2206   // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2207   // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
2208   return _mm512_testn_epi8_mask(__A, __B);
2209 }
2210 
test_mm512_mask_testn_epi8_mask(__mmask64 __U,__m512i __A,__m512i __B)2211 __mmask64 test_mm512_mask_testn_epi8_mask(__mmask64 __U, __m512i __A, __m512i __B) {
2212   // CHECK-LABEL: @test_mm512_mask_testn_epi8_mask
2213   // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2214   // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
2215   // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
2216   return _mm512_mask_testn_epi8_mask(__U, __A, __B);
2217 }
2218 
test_mm512_testn_epi16_mask(__m512i __A,__m512i __B)2219 __mmask32 test_mm512_testn_epi16_mask(__m512i __A, __m512i __B) {
2220   // CHECK-LABEL: @test_mm512_testn_epi16_mask
2221   // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2222   // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
2223   return _mm512_testn_epi16_mask(__A, __B);
2224 }
2225 
test_mm512_mask_testn_epi16_mask(__mmask32 __U,__m512i __A,__m512i __B)2226 __mmask32 test_mm512_mask_testn_epi16_mask(__mmask32 __U, __m512i __A, __m512i __B) {
2227   // CHECK-LABEL: @test_mm512_mask_testn_epi16_mask
2228   // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2229   // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
2230   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
2231   return _mm512_mask_testn_epi16_mask(__U, __A, __B);
2232 }
2233 
test_mm512_movepi8_mask(__m512i __A)2234 __mmask64 test_mm512_movepi8_mask(__m512i __A) {
2235   // CHECK-LABEL: @test_mm512_movepi8_mask
2236   // CHECK: [[CMP:%.*]] = icmp slt <64 x i8> %{{.*}}, zeroinitializer
2237   // CHECK: bitcast <64 x i1> [[CMP]] to i64
2238   return _mm512_movepi8_mask(__A);
2239 }
2240 
test_mm512_movm_epi8(__mmask64 __A)2241 __m512i test_mm512_movm_epi8(__mmask64 __A) {
2242   // CHECK-LABEL: @test_mm512_movm_epi8
2243   // CHECK:  %{{.*}} = bitcast i64 %{{.*}} to <64 x i1>
2244   // CHECK:  %vpmovm2.i = sext <64 x i1> %{{.*}} to <64 x i8>
2245   return _mm512_movm_epi8(__A);
2246 }
2247 
test_mm512_movm_epi16(__mmask32 __A)2248 __m512i test_mm512_movm_epi16(__mmask32 __A) {
2249   // CHECK-LABEL: @test_mm512_movm_epi16
2250   // CHECK:  %{{.*}} = bitcast i32 %{{.*}} to <32 x i1>
2251   // CHECK:  %vpmovm2.i = sext <32 x i1> %{{.*}} to <32 x i16>
2252   return _mm512_movm_epi16(__A);
2253 }
2254 
test_mm512_broadcastb_epi8(__m128i __A)2255 __m512i test_mm512_broadcastb_epi8(__m128i __A) {
2256   // CHECK-LABEL: @test_mm512_broadcastb_epi8
2257   // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <64 x i32> zeroinitializer
2258   return _mm512_broadcastb_epi8(__A);
2259 }
2260 
test_mm512_mask_broadcastb_epi8(__m512i __O,__mmask64 __M,__m128i __A)2261 __m512i test_mm512_mask_broadcastb_epi8(__m512i __O, __mmask64 __M, __m128i __A) {
2262   // CHECK-LABEL: @test_mm512_mask_broadcastb_epi8
2263   // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <64 x i32> zeroinitializer
2264   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
2265   return _mm512_mask_broadcastb_epi8(__O, __M, __A);
2266 }
2267 
test_mm512_maskz_broadcastb_epi8(__mmask64 __M,__m128i __A)2268 __m512i test_mm512_maskz_broadcastb_epi8(__mmask64 __M, __m128i __A) {
2269   // CHECK-LABEL: @test_mm512_maskz_broadcastb_epi8
2270   // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <64 x i32> zeroinitializer
2271   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
2272   return _mm512_maskz_broadcastb_epi8(__M, __A);
2273 }
2274 
test_mm512_broadcastw_epi16(__m128i __A)2275 __m512i test_mm512_broadcastw_epi16(__m128i __A) {
2276   // CHECK-LABEL: @test_mm512_broadcastw_epi16
2277   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <32 x i32> zeroinitializer
2278   return _mm512_broadcastw_epi16(__A);
2279 }
2280 
test_mm512_mask_broadcastw_epi16(__m512i __O,__mmask32 __M,__m128i __A)2281 __m512i test_mm512_mask_broadcastw_epi16(__m512i __O, __mmask32 __M, __m128i __A) {
2282   // CHECK-LABEL: @test_mm512_mask_broadcastw_epi16
2283   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <32 x i32> zeroinitializer
2284   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
2285   return _mm512_mask_broadcastw_epi16(__O, __M, __A);
2286 }
2287 
test_mm512_maskz_broadcastw_epi16(__mmask32 __M,__m128i __A)2288 __m512i test_mm512_maskz_broadcastw_epi16(__mmask32 __M, __m128i __A) {
2289   // CHECK-LABEL: @test_mm512_maskz_broadcastw_epi16
2290   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <32 x i32> zeroinitializer
2291   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
2292   return _mm512_maskz_broadcastw_epi16(__M, __A);
2293 }
2294 
test_mm512_mask_set1_epi16(__m512i __O,__mmask32 __M,short __A)2295 __m512i test_mm512_mask_set1_epi16(__m512i __O, __mmask32 __M, short __A) {
2296   // CHECK-LABEL: @test_mm512_mask_set1_epi16
2297   // CHECK: insertelement <32 x i16> undef, i16 %{{.*}}, i32 0
2298   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 1
2299   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 2
2300   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 3
2301   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 4
2302   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 5
2303   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 6
2304   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 7
2305   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 8
2306   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 9
2307   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 10
2308   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 11
2309   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 12
2310   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 13
2311   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 14
2312   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 15
2313   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 16
2314   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 17
2315   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 18
2316   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 19
2317   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 20
2318   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 21
2319   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 22
2320   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 23
2321   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 24
2322   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 25
2323   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 26
2324   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 27
2325   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 28
2326   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 29
2327   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 30
2328   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 31
2329   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
2330   return _mm512_mask_set1_epi16(__O, __M, __A);
2331 }
2332 
test_mm512_maskz_set1_epi16(__mmask32 __M,short __A)2333 __m512i test_mm512_maskz_set1_epi16(__mmask32 __M, short __A) {
2334   // CHECK-LABEL: @test_mm512_maskz_set1_epi16
2335   // CHECK: insertelement <32 x i16> undef, i16 %{{.*}}, i32 0
2336   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 1
2337   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 2
2338   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 3
2339   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 4
2340   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 5
2341   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 6
2342   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 7
2343   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 8
2344   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 9
2345   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 10
2346   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 11
2347   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 12
2348   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 13
2349   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 14
2350   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 15
2351   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 16
2352   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 17
2353   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 18
2354   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 19
2355   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 20
2356   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 21
2357   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 22
2358   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 23
2359   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 24
2360   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 25
2361   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 26
2362   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 27
2363   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 28
2364   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 29
2365   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 30
2366   // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 31
2367   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
2368   return _mm512_maskz_set1_epi16(__M, __A);
2369 }
test_mm512_permutexvar_epi16(__m512i __A,__m512i __B)2370 __m512i test_mm512_permutexvar_epi16(__m512i __A, __m512i __B) {
2371   // CHECK-LABEL: @test_mm512_permutexvar_epi16
2372   // CHECK: @llvm.x86.avx512.permvar.hi.512
2373  return _mm512_permutexvar_epi16(__A, __B);
2374 }
2375 
test_mm512_maskz_permutexvar_epi16(__mmask32 __M,__m512i __A,__m512i __B)2376 __m512i test_mm512_maskz_permutexvar_epi16(__mmask32 __M, __m512i __A, __m512i __B) {
2377  // CHECK-LABEL: @test_mm512_maskz_permutexvar_epi16
2378   // CHECK: @llvm.x86.avx512.permvar.hi.512
2379   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
2380   return _mm512_maskz_permutexvar_epi16(__M, __A, __B);
2381 }
2382 
test_mm512_mask_permutexvar_epi16(__m512i __W,__mmask32 __M,__m512i __A,__m512i __B)2383 __m512i test_mm512_mask_permutexvar_epi16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {
2384   // CHECK-LABEL: @test_mm512_mask_permutexvar_epi16
2385   // CHECK: @llvm.x86.avx512.permvar.hi.512
2386   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
2387   return _mm512_mask_permutexvar_epi16(__W, __M, __A, __B);
2388 }
test_mm512_alignr_epi8(__m512i __A,__m512i __B)2389 __m512i test_mm512_alignr_epi8(__m512i __A,__m512i __B){
2390     // CHECK-LABEL: @test_mm512_alignr_epi8
2391     // 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>
2392     return _mm512_alignr_epi8(__A, __B, 2);
2393 }
2394 
test_mm512_mask_alignr_epi8(__m512i __W,__mmask64 __U,__m512i __A,__m512i __B)2395 __m512i test_mm512_mask_alignr_epi8(__m512i __W, __mmask64 __U, __m512i __A,__m512i __B){
2396     // CHECK-LABEL: @test_mm512_mask_alignr_epi8
2397     // 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>
2398     // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
2399     return _mm512_mask_alignr_epi8(__W, __U, __A, __B, 2);
2400 }
2401 
test_mm512_maskz_alignr_epi8(__mmask64 __U,__m512i __A,__m512i __B)2402 __m512i test_mm512_maskz_alignr_epi8(__mmask64 __U, __m512i __A,__m512i __B){
2403     // CHECK-LABEL: @test_mm512_maskz_alignr_epi8
2404     // 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>
2405     // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
2406    return _mm512_maskz_alignr_epi8(__U, __A, __B, 2);
2407 }
2408 
2409 
2410 
test_mm512_mm_dbsad_epu8(__m512i __A,__m512i __B)2411 __m512i test_mm512_mm_dbsad_epu8(__m512i __A, __m512i __B) {
2412   // CHECK-LABEL: @test_mm512_mm_dbsad_epu8
2413   // CHECK: @llvm.x86.avx512.dbpsadbw.512
2414   return _mm512_dbsad_epu8(__A, __B, 170);
2415 }
2416 
test_mm512_mm_mask_dbsad_epu8(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)2417 __m512i test_mm512_mm_mask_dbsad_epu8(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
2418   // CHECK-LABEL: @test_mm512_mm_mask_dbsad_epu8
2419   // CHECK: @llvm.x86.avx512.dbpsadbw.512
2420   //CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
2421   return _mm512_mask_dbsad_epu8(__W, __U, __A, __B, 170);
2422 }
2423 
test_mm512_mm_maskz_dbsad_epu8(__mmask32 __U,__m512i __A,__m512i __B)2424 __m512i test_mm512_mm_maskz_dbsad_epu8(__mmask32 __U, __m512i __A, __m512i __B) {
2425   // CHECK-LABEL: @test_mm512_mm_maskz_dbsad_epu8
2426   // CHECK: @llvm.x86.avx512.dbpsadbw.512
2427   //CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
2428   return _mm512_maskz_dbsad_epu8(__U, __A, __B, 170);
2429 }
2430 
test_mm512_sad_epu8(__m512i __A,__m512i __B)2431 __m512i test_mm512_sad_epu8(__m512i __A, __m512i __B) {
2432   // CHECK-LABEL: @test_mm512_sad_epu8
2433   // CHECK: @llvm.x86.avx512.psad.bw.512
2434   return _mm512_sad_epu8(__A, __B);
2435 }
2436 
test_mm512_movepi16_mask(__m512i __A)2437 __mmask32 test_mm512_movepi16_mask(__m512i __A) {
2438   // CHECK-LABEL: @test_mm512_movepi16_mask
2439   // CHECK: [[CMP:%.*]] = icmp slt <32 x i16> %{{.*}}, zeroinitializer
2440   // CHECK: bitcast <32 x i1> [[CMP]] to i32
2441   return _mm512_movepi16_mask(__A);
2442 }
2443 
test_mm512_mask_cvtepi16_storeu_epi8(void * __P,__mmask32 __M,__m512i __A)2444 void test_mm512_mask_cvtepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
2445 {
2446  // CHECK-LABEL: @test_mm512_mask_cvtepi16_storeu_epi8
2447  // CHECK: @llvm.x86.avx512.mask.pmov.wb.mem.512
2448  _mm512_mask_cvtepi16_storeu_epi8 ( __P,  __M, __A);
2449 }
2450 
test_mm512_mask_cvtsepi16_storeu_epi8(void * __P,__mmask32 __M,__m512i __A)2451 void test_mm512_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
2452 {
2453  // CHECK-LABEL: @test_mm512_mask_cvtsepi16_storeu_epi8
2454  // CHECK: @llvm.x86.avx512.mask.pmovs.wb.mem.512
2455  _mm512_mask_cvtsepi16_storeu_epi8 ( __P,  __M, __A);
2456 }
2457 
test_mm512_mask_cvtusepi16_storeu_epi8(void * __P,__mmask32 __M,__m512i __A)2458 void test_mm512_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
2459 {
2460  // CHECK-LABEL: @test_mm512_mask_cvtusepi16_storeu_epi8
2461  // CHECK: @llvm.x86.avx512.mask.pmovus.wb.mem.512
2462  _mm512_mask_cvtusepi16_storeu_epi8 ( __P, __M, __A);
2463 }
2464