1 // RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512bw -emit-llvm -o - -Wall -Werror | FileCheck %s
2 // RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512bw -fno-signed-char -emit-llvm -o - -Wall -Werror | FileCheck %s
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);
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);
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)),
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)),
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)),
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)),
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)),
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)),
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)),
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)),
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)),
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)),
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));
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));
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);
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));
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));
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);
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));
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));
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);
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));
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));
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);
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)),
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)),
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);
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);
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);
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);
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));
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));
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);
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);
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);
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);
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));
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));
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
1067 __m512i test_mm512_avg_epu8(__m512i __A, __m512i __B) {
1068 // CHECK-LABEL: @test_mm512_avg_epu8
1069 // CHECK-NOT: @llvm.x86.avx512.mask.pavg.b.512
1070 // CHECK: zext <64 x i8> %{{.*}} to <64 x i16>
1071 // CHECK: zext <64 x i8> %{{.*}} to <64 x i16>
1072 // CHECK: add <64 x i16> %{{.*}}, %{{.*}}
1073 // CHECK: add <64 x i16> %{{.*}}, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
1074 // CHECK: lshr <64 x i16> %{{.*}}, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
1075 // CHECK: trunc <64 x i16> %{{.*}} to <64 x i8>
1076 return _mm512_avg_epu8(__A,__B);
1078 __m512i test_mm512_mask_avg_epu8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1079 // CHECK-LABEL: @test_mm512_mask_avg_epu8
1080 // CHECK-NOT: @llvm.x86.avx512.mask.pavg.b.512
1081 // CHECK: zext <64 x i8> %{{.*}} to <64 x i16>
1082 // CHECK: zext <64 x i8> %{{.*}} to <64 x i16>
1083 // CHECK: add <64 x i16> %{{.*}}, %{{.*}}
1084 // CHECK: add <64 x i16> %{{.*}}, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
1085 // CHECK: lshr <64 x i16> %{{.*}}, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
1086 // CHECK: trunc <64 x i16> %{{.*}} to <64 x i8>
1087 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1088 return _mm512_mask_avg_epu8(__W,__U,__A,__B);
1090 __m512i test_mm512_maskz_avg_epu8(__mmask64 __U, __m512i __A, __m512i __B) {
1091 // CHECK-LABEL: @test_mm512_maskz_avg_epu8
1092 // CHECK-NOT: @llvm.x86.avx512.mask.pavg.b.512
1093 // CHECK: zext <64 x i8> %{{.*}} to <64 x i16>
1094 // CHECK: zext <64 x i8> %{{.*}} to <64 x i16>
1095 // CHECK: add <64 x i16> %{{.*}}, %{{.*}}
1096 // CHECK: add <64 x i16> %{{.*}}, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
1097 // CHECK: lshr <64 x i16> %{{.*}}, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
1098 // CHECK: trunc <64 x i16> %{{.*}} to <64 x i8>
1099 // CHECK: store <8 x i64> zeroinitializer
1100 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1101 return _mm512_maskz_avg_epu8(__U,__A,__B);
1103 __m512i test_mm512_avg_epu16(__m512i __A, __m512i __B) {
1104 // CHECK-LABEL: @test_mm512_avg_epu16
1105 // CHECK-NOT: @llvm.x86.avx512.mask.pavg.w.512
1106 // CHECK: zext <32 x i16> %{{.*}} to <32 x i32>
1107 // CHECK: zext <32 x i16> %{{.*}} to <32 x i32>
1108 // CHECK: add <32 x i32> %{{.*}}, %{{.*}}
1109 // CHECK: add <32 x i32> %{{.*}}, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
1110 // CHECK: lshr <32 x i32> %{{.*}}, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
1111 // CHECK: trunc <32 x i32> %{{.*}} to <32 x i16>
1112 return _mm512_avg_epu16(__A,__B);
1114 __m512i test_mm512_mask_avg_epu16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1115 // CHECK-LABEL: @test_mm512_mask_avg_epu16
1116 // CHECK-NOT: @llvm.x86.avx512.mask.pavg.w.512
1117 // CHECK: zext <32 x i16> %{{.*}} to <32 x i32>
1118 // CHECK: zext <32 x i16> %{{.*}} to <32 x i32>
1119 // CHECK: add <32 x i32> %{{.*}}, %{{.*}}
1120 // CHECK: add <32 x i32> %{{.*}}, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
1121 // CHECK: lshr <32 x i32> %{{.*}}, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
1122 // CHECK: trunc <32 x i32> %{{.*}} to <32 x i16>
1123 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1124 return _mm512_mask_avg_epu16(__W,__U,__A,__B);
1126 __m512i test_mm512_maskz_avg_epu16(__mmask32 __U, __m512i __A, __m512i __B) {
1127 // CHECK-LABEL: @test_mm512_maskz_avg_epu16
1128 // CHECK-NOT: @llvm.x86.avx512.mask.pavg.w.512
1129 // CHECK: zext <32 x i16> %{{.*}} to <32 x i32>
1130 // CHECK: zext <32 x i16> %{{.*}} to <32 x i32>
1131 // CHECK: add <32 x i32> %{{.*}}, %{{.*}}
1132 // CHECK: add <32 x i32> %{{.*}}, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
1133 // CHECK: lshr <32 x i32> %{{.*}}, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
1134 // CHECK: trunc <32 x i32> %{{.*}} to <32 x i16>
1135 // CHECK: store <8 x i64> zeroinitializer
1136 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1137 return _mm512_maskz_avg_epu16(__U,__A,__B);
1139 __m512i test_mm512_max_epi8(__m512i __A, __m512i __B) {
1140 // CHECK-LABEL: @test_mm512_max_epi8
1141 // CHECK: [[CMP:%.*]] = icmp sgt <64 x i8> [[X:%.*]], [[Y:%.*]]
1142 // CHECK-NEXT: [[RES:%.*]] = select <64 x i1> [[CMP]], <64 x i8> [[X]], <64 x i8> [[Y]]
1143 return _mm512_max_epi8(__A,__B);
1145 __m512i test_mm512_maskz_max_epi8(__mmask64 __M, __m512i __A, __m512i __B) {
1146 // CHECK-LABEL: @test_mm512_maskz_max_epi8
1147 // CHECK: [[CMP:%.*]] = icmp sgt <64 x i8> [[X:%.*]], [[Y:%.*]]
1148 // CHECK-NEXT: [[RES:%.*]] = select <64 x i1> [[CMP]], <64 x i8> [[X]], <64 x i8> [[Y]]
1149 // CHECK: select <64 x i1> {{.*}}, <64 x i8> [[RES]], <64 x i8> {{.*}}
1150 return _mm512_maskz_max_epi8(__M,__A,__B);
1152 __m512i test_mm512_mask_max_epi8(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {
1153 // CHECK-LABEL: @test_mm512_mask_max_epi8
1154 // CHECK: [[CMP:%.*]] = icmp sgt <64 x i8> [[X:%.*]], [[Y:%.*]]
1155 // CHECK-NEXT: [[RES:%.*]] = select <64 x i1> [[CMP]], <64 x i8> [[X]], <64 x i8> [[Y]]
1156 // CHECK: select <64 x i1> {{.*}}, <64 x i8> [[RES]], <64 x i8> {{.*}}
1157 return _mm512_mask_max_epi8(__W,__M,__A,__B);
1159 __m512i test_mm512_max_epi16(__m512i __A, __m512i __B) {
1160 // CHECK-LABEL: @test_mm512_max_epi16
1161 // CHECK: [[CMP:%.*]] = icmp sgt <32 x i16> [[X:%.*]], [[Y:%.*]]
1162 // CHECK-NEXT: [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i16> [[X]], <32 x i16> [[Y]]
1163 return _mm512_max_epi16(__A,__B);
1165 __m512i test_mm512_maskz_max_epi16(__mmask32 __M, __m512i __A, __m512i __B) {
1166 // CHECK-LABEL: @test_mm512_maskz_max_epi16
1167 // CHECK: [[CMP:%.*]] = icmp sgt <32 x i16> [[X:%.*]], [[Y:%.*]]
1168 // CHECK-NEXT: [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i16> [[X]], <32 x i16> [[Y]]
1169 // CHECK: select <32 x i1> {{.*}}, <32 x i16> [[RES]], <32 x i16> {{.*}}
1170 return _mm512_maskz_max_epi16(__M,__A,__B);
1172 __m512i test_mm512_mask_max_epi16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {
1173 // CHECK-LABEL: @test_mm512_mask_max_epi16
1174 // CHECK: [[CMP:%.*]] = icmp sgt <32 x i16> [[X:%.*]], [[Y:%.*]]
1175 // CHECK-NEXT: [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i16> [[X]], <32 x i16> [[Y]]
1176 // CHECK: select <32 x i1> {{.*}}, <32 x i16> [[RES]], <32 x i16> {{.*}}
1177 return _mm512_mask_max_epi16(__W,__M,__A,__B);
1179 __m512i test_mm512_max_epu8(__m512i __A, __m512i __B) {
1180 // CHECK-LABEL: @test_mm512_max_epu8
1181 // CHECK: [[CMP:%.*]] = icmp ugt <64 x i8> [[X:%.*]], [[Y:%.*]]
1182 // CHECK-NEXT: [[RES:%.*]] = select <64 x i1> [[CMP]], <64 x i8> [[X]], <64 x i8> [[Y]]
1183 return _mm512_max_epu8(__A,__B);
1185 __m512i test_mm512_maskz_max_epu8(__mmask64 __M, __m512i __A, __m512i __B) {
1186 // CHECK-LABEL: @test_mm512_maskz_max_epu8
1187 // CHECK: [[CMP:%.*]] = icmp ugt <64 x i8> [[X:%.*]], [[Y:%.*]]
1188 // CHECK-NEXT: [[RES:%.*]] = select <64 x i1> [[CMP]], <64 x i8> [[X]], <64 x i8> [[Y]]
1189 // CHECK: select <64 x i1> {{.*}}, <64 x i8> [[RES]], <64 x i8> {{.*}}
1190 return _mm512_maskz_max_epu8(__M,__A,__B);
1192 __m512i test_mm512_mask_max_epu8(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {
1193 // CHECK-LABEL: @test_mm512_mask_max_epu8
1194 // CHECK: [[CMP:%.*]] = icmp ugt <64 x i8> [[X:%.*]], [[Y:%.*]]
1195 // CHECK-NEXT: [[RES:%.*]] = select <64 x i1> [[CMP]], <64 x i8> [[X]], <64 x i8> [[Y]]
1196 // CHECK: select <64 x i1> {{.*}}, <64 x i8> [[RES]], <64 x i8> {{.*}}
1197 return _mm512_mask_max_epu8(__W,__M,__A,__B);
1199 __m512i test_mm512_max_epu16(__m512i __A, __m512i __B) {
1200 // CHECK-LABEL: @test_mm512_max_epu16
1201 // CHECK: [[CMP:%.*]] = icmp ugt <32 x i16> [[X:%.*]], [[Y:%.*]]
1202 // CHECK-NEXT: [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i16> [[X]], <32 x i16> [[Y]]
1203 return _mm512_max_epu16(__A,__B);
1205 __m512i test_mm512_maskz_max_epu16(__mmask32 __M, __m512i __A, __m512i __B) {
1206 // CHECK-LABEL: @test_mm512_maskz_max_epu16
1207 // CHECK: [[CMP:%.*]] = icmp ugt <32 x i16> [[X:%.*]], [[Y:%.*]]
1208 // CHECK-NEXT: [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i16> [[X]], <32 x i16> [[Y]]
1209 // CHECK: select <32 x i1> {{.*}}, <32 x i16> [[RES]], <32 x i16> {{.*}}
1210 return _mm512_maskz_max_epu16(__M,__A,__B);
1212 __m512i test_mm512_mask_max_epu16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {
1213 // CHECK-LABEL: @test_mm512_mask_max_epu16
1214 // CHECK: [[CMP:%.*]] = icmp ugt <32 x i16> [[X:%.*]], [[Y:%.*]]
1215 // CHECK-NEXT: [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i16> [[X]], <32 x i16> [[Y]]
1216 // CHECK: select <32 x i1> {{.*}}, <32 x i16> [[RES]], <32 x i16> {{.*}}
1217 return _mm512_mask_max_epu16(__W,__M,__A,__B);
1219 __m512i test_mm512_min_epi8(__m512i __A, __m512i __B) {
1220 // CHECK-LABEL: @test_mm512_min_epi8
1221 // CHECK: [[CMP:%.*]] = icmp slt <64 x i8> [[X:%.*]], [[Y:%.*]]
1222 // CHECK-NEXT: [[RES:%.*]] = select <64 x i1> [[CMP]], <64 x i8> [[X]], <64 x i8> [[Y]]
1223 return _mm512_min_epi8(__A,__B);
1225 __m512i test_mm512_maskz_min_epi8(__mmask64 __M, __m512i __A, __m512i __B) {
1226 // CHECK-LABEL: @test_mm512_maskz_min_epi8
1227 // CHECK: [[CMP:%.*]] = icmp slt <64 x i8> [[X:%.*]], [[Y:%.*]]
1228 // CHECK-NEXT: [[RES:%.*]] = select <64 x i1> [[CMP]], <64 x i8> [[X]], <64 x i8> [[Y]]
1229 // CHECK: select <64 x i1> {{.*}}, <64 x i8> [[RES]], <64 x i8> {{.*}}
1230 return _mm512_maskz_min_epi8(__M,__A,__B);
1232 __m512i test_mm512_mask_min_epi8(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {
1233 // CHECK-LABEL: @test_mm512_mask_min_epi8
1234 // CHECK: [[CMP:%.*]] = icmp slt <64 x i8> [[X:%.*]], [[Y:%.*]]
1235 // CHECK-NEXT: [[RES:%.*]] = select <64 x i1> [[CMP]], <64 x i8> [[X]], <64 x i8> [[Y]]
1236 // CHECK: select <64 x i1> {{.*}}, <64 x i8> [[RES]], <64 x i8> {{.*}}
1237 return _mm512_mask_min_epi8(__W,__M,__A,__B);
1239 __m512i test_mm512_min_epi16(__m512i __A, __m512i __B) {
1240 // CHECK-LABEL: @test_mm512_min_epi16
1241 // CHECK: [[CMP:%.*]] = icmp slt <32 x i16> [[X:%.*]], [[Y:%.*]]
1242 // CHECK-NEXT: [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i16> [[X]], <32 x i16> [[Y]]
1243 return _mm512_min_epi16(__A,__B);
1245 __m512i test_mm512_maskz_min_epi16(__mmask32 __M, __m512i __A, __m512i __B) {
1246 // CHECK-LABEL: @test_mm512_maskz_min_epi16
1247 // CHECK: [[CMP:%.*]] = icmp slt <32 x i16> [[X:%.*]], [[Y:%.*]]
1248 // CHECK-NEXT: [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i16> [[X]], <32 x i16> [[Y]]
1249 // CHECK: select <32 x i1> {{.*}}, <32 x i16> [[RES]], <32 x i16> {{.*}}
1250 return _mm512_maskz_min_epi16(__M,__A,__B);
1252 __m512i test_mm512_mask_min_epi16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {
1253 // CHECK-LABEL: @test_mm512_mask_min_epi16
1254 // CHECK: [[CMP:%.*]] = icmp slt <32 x i16> [[X:%.*]], [[Y:%.*]]
1255 // CHECK-NEXT: [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i16> [[X]], <32 x i16> [[Y]]
1256 // CHECK: select <32 x i1> {{.*}}, <32 x i16> [[RES]], <32 x i16> {{.*}}
1257 return _mm512_mask_min_epi16(__W,__M,__A,__B);
1259 __m512i test_mm512_min_epu8(__m512i __A, __m512i __B) {
1260 // CHECK-LABEL: @test_mm512_min_epu8
1261 // CHECK: [[CMP:%.*]] = icmp ult <64 x i8> [[X:%.*]], [[Y:%.*]]
1262 // CHECK-NEXT: [[RES:%.*]] = select <64 x i1> [[CMP]], <64 x i8> [[X]], <64 x i8> [[Y]]
1263 return _mm512_min_epu8(__A,__B);
1265 __m512i test_mm512_maskz_min_epu8(__mmask64 __M, __m512i __A, __m512i __B) {
1266 // CHECK-LABEL: @test_mm512_maskz_min_epu8
1267 // CHECK: [[CMP:%.*]] = icmp ult <64 x i8> [[X:%.*]], [[Y:%.*]]
1268 // CHECK-NEXT: [[RES:%.*]] = select <64 x i1> [[CMP]], <64 x i8> [[X]], <64 x i8> [[Y]]
1269 // CHECK: select <64 x i1> {{.*}}, <64 x i8> [[RES]], <64 x i8> {{.*}}
1270 return _mm512_maskz_min_epu8(__M,__A,__B);
1272 __m512i test_mm512_mask_min_epu8(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {
1273 // CHECK-LABEL: @test_mm512_mask_min_epu8
1274 // CHECK: [[CMP:%.*]] = icmp ult <64 x i8> [[X:%.*]], [[Y:%.*]]
1275 // CHECK-NEXT: [[RES:%.*]] = select <64 x i1> [[CMP]], <64 x i8> [[X]], <64 x i8> [[Y]]
1276 // CHECK: select <64 x i1> {{.*}}, <64 x i8> [[RES]], <64 x i8> {{.*}}
1277 return _mm512_mask_min_epu8(__W,__M,__A,__B);
1279 __m512i test_mm512_min_epu16(__m512i __A, __m512i __B) {
1280 // CHECK-LABEL: @test_mm512_min_epu16
1281 // CHECK: [[CMP:%.*]] = icmp ult <32 x i16> [[X:%.*]], [[Y:%.*]]
1282 // CHECK-NEXT: [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i16> [[X]], <32 x i16> [[Y]]
1283 return _mm512_min_epu16(__A,__B);
1285 __m512i test_mm512_maskz_min_epu16(__mmask32 __M, __m512i __A, __m512i __B) {
1286 // CHECK-LABEL: @test_mm512_maskz_min_epu16
1287 // CHECK: [[CMP:%.*]] = icmp ult <32 x i16> [[X:%.*]], [[Y:%.*]]
1288 // CHECK-NEXT: [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i16> [[X]], <32 x i16> [[Y]]
1289 // CHECK: select <32 x i1> {{.*}}, <32 x i16> [[RES]], <32 x i16> {{.*}}
1290 return _mm512_maskz_min_epu16(__M,__A,__B);
1292 __m512i test_mm512_mask_min_epu16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {
1293 // CHECK-LABEL: @test_mm512_mask_min_epu16
1294 // CHECK: [[CMP:%.*]] = icmp ult <32 x i16> [[X:%.*]], [[Y:%.*]]
1295 // CHECK-NEXT: [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i16> [[X]], <32 x i16> [[Y]]
1296 // CHECK: select <32 x i1> {{.*}}, <32 x i16> [[RES]], <32 x i16> {{.*}}
1297 return _mm512_mask_min_epu16(__W,__M,__A,__B);
1299 __m512i test_mm512_shuffle_epi8(__m512i __A, __m512i __B) {
1300 // CHECK-LABEL: @test_mm512_shuffle_epi8
1301 // CHECK: @llvm.x86.avx512.pshuf.b.512
1302 return _mm512_shuffle_epi8(__A,__B);
1304 __m512i test_mm512_mask_shuffle_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1305 // CHECK-LABEL: @test_mm512_mask_shuffle_epi8
1306 // CHECK: @llvm.x86.avx512.pshuf.b.512
1307 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1308 return _mm512_mask_shuffle_epi8(__W,__U,__A,__B);
1310 __m512i test_mm512_maskz_shuffle_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
1311 // CHECK-LABEL: @test_mm512_maskz_shuffle_epi8
1312 // CHECK: @llvm.x86.avx512.pshuf.b.512
1313 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1314 return _mm512_maskz_shuffle_epi8(__U,__A,__B);
1316 __m512i test_mm512_subs_epi8(__m512i __A, __m512i __B) {
1317 // CHECK-LABEL: @test_mm512_subs_epi8
1318 // CHECK: @llvm.ssub.sat.v64i8
1319 return _mm512_subs_epi8(__A,__B);
1321 __m512i test_mm512_mask_subs_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1322 // CHECK-LABEL: @test_mm512_mask_subs_epi8
1323 // CHECK: @llvm.ssub.sat.v64i8
1324 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1325 return _mm512_mask_subs_epi8(__W,__U,__A,__B);
1327 __m512i test_mm512_maskz_subs_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
1328 // CHECK-LABEL: @test_mm512_maskz_subs_epi8
1329 // CHECK: @llvm.ssub.sat.v64i8
1330 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1331 return _mm512_maskz_subs_epi8(__U,__A,__B);
1333 __m512i test_mm512_subs_epi16(__m512i __A, __m512i __B) {
1334 // CHECK-LABEL: @test_mm512_subs_epi16
1335 // CHECK: @llvm.ssub.sat.v32i16
1336 return _mm512_subs_epi16(__A,__B);
1338 __m512i test_mm512_mask_subs_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1339 // CHECK-LABEL: @test_mm512_mask_subs_epi16
1340 // CHECK: @llvm.ssub.sat.v32i16
1341 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1342 return _mm512_mask_subs_epi16(__W,__U,__A,__B);
1344 __m512i test_mm512_maskz_subs_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1345 // CHECK-LABEL: @test_mm512_maskz_subs_epi16
1346 // CHECK: @llvm.ssub.sat.v32i16
1347 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1348 return _mm512_maskz_subs_epi16(__U,__A,__B);
1350 __m512i test_mm512_subs_epu8(__m512i __A, __m512i __B) {
1351 // CHECK-LABEL: @test_mm512_subs_epu8
1352 // CHECK-NOT: @llvm.x86.avx512.mask.psubus.b.512
1353 // CHECK: call <64 x i8> @llvm.usub.sat.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})
1354 return _mm512_subs_epu8(__A,__B);
1356 __m512i test_mm512_mask_subs_epu8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1357 // CHECK-LABEL: @test_mm512_mask_subs_epu8
1358 // CHECK-NOT: @llvm.x86.avx512.mask.psubus.b.512
1359 // CHECK: call <64 x i8> @llvm.usub.sat.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})
1360 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1361 return _mm512_mask_subs_epu8(__W,__U,__A,__B);
1363 __m512i test_mm512_maskz_subs_epu8(__mmask64 __U, __m512i __A, __m512i __B) {
1364 // CHECK-LABEL: @test_mm512_maskz_subs_epu8
1365 // CHECK-NOT: @llvm.x86.avx512.mask.psubus.b.512
1366 // CHECK: call <64 x i8> @llvm.usub.sat.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})
1367 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1368 return _mm512_maskz_subs_epu8(__U,__A,__B);
1370 __m512i test_mm512_subs_epu16(__m512i __A, __m512i __B) {
1371 // CHECK-LABEL: @test_mm512_subs_epu16
1372 // CHECK-NOT: @llvm.x86.avx512.mask.psubus.w.512
1373 // CHECK: call <32 x i16> @llvm.usub.sat.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})
1374 return _mm512_subs_epu16(__A,__B);
1376 __m512i test_mm512_mask_subs_epu16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1377 // CHECK-LABEL: @test_mm512_mask_subs_epu16
1378 // CHECK-NOT: @llvm.x86.avx512.mask.psubus.w.512
1379 // CHECK: call <32 x i16> @llvm.usub.sat.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})
1380 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1381 return _mm512_mask_subs_epu16(__W,__U,__A,__B);
1383 __m512i test_mm512_maskz_subs_epu16(__mmask32 __U, __m512i __A, __m512i __B) {
1384 // CHECK-LABEL: @test_mm512_maskz_subs_epu16
1385 // CHECK-NOT: @llvm.x86.avx512.mask.psubus.w.512
1386 // CHECK: call <32 x i16> @llvm.usub.sat.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})
1387 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1388 return _mm512_maskz_subs_epu16(__U,__A,__B);
1390 __m512i test_mm512_mask2_permutex2var_epi16(__m512i __A, __m512i __I, __mmask32 __U, __m512i __B) {
1391 // CHECK-LABEL: @test_mm512_mask2_permutex2var_epi16
1392 // CHECK: @llvm.x86.avx512.vpermi2var.hi.512
1393 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1394 return _mm512_mask2_permutex2var_epi16(__A,__I,__U,__B);
1396 __m512i test_mm512_permutex2var_epi16(__m512i __A, __m512i __I, __m512i __B) {
1397 // CHECK-LABEL: @test_mm512_permutex2var_epi16
1398 // CHECK: @llvm.x86.avx512.vpermi2var.hi.512
1399 return _mm512_permutex2var_epi16(__A,__I,__B);
1401 __m512i test_mm512_mask_permutex2var_epi16(__m512i __A, __mmask32 __U, __m512i __I, __m512i __B) {
1402 // CHECK-LABEL: @test_mm512_mask_permutex2var_epi16
1403 // CHECK: @llvm.x86.avx512.vpermi2var.hi.512
1404 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1405 return _mm512_mask_permutex2var_epi16(__A,__U,__I,__B);
1407 __m512i test_mm512_maskz_permutex2var_epi16(__mmask32 __U, __m512i __A, __m512i __I, __m512i __B) {
1408 // CHECK-LABEL: @test_mm512_maskz_permutex2var_epi16
1409 // CHECK: @llvm.x86.avx512.vpermi2var.hi.512
1410 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1411 return _mm512_maskz_permutex2var_epi16(__U,__A,__I,__B);
1414 __m512i test_mm512_mulhrs_epi16(__m512i __A, __m512i __B) {
1415 // CHECK-LABEL: @test_mm512_mulhrs_epi16
1416 // CHECK: @llvm.x86.avx512.pmul.hr.sw.512
1417 return _mm512_mulhrs_epi16(__A,__B);
1419 __m512i test_mm512_mask_mulhrs_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1420 // CHECK-LABEL: @test_mm512_mask_mulhrs_epi16
1421 // CHECK: @llvm.x86.avx512.pmul.hr.sw.512
1422 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1423 return _mm512_mask_mulhrs_epi16(__W,__U,__A,__B);
1425 __m512i test_mm512_maskz_mulhrs_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1426 // CHECK-LABEL: @test_mm512_maskz_mulhrs_epi16
1427 // CHECK: @llvm.x86.avx512.pmul.hr.sw.512
1428 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1429 return _mm512_maskz_mulhrs_epi16(__U,__A,__B);
1431 __m512i test_mm512_mulhi_epi16(__m512i __A, __m512i __B) {
1432 // CHECK-LABEL: @test_mm512_mulhi_epi16
1433 // CHECK: @llvm.x86.avx512.pmulh.w.512
1434 return _mm512_mulhi_epi16(__A,__B);
1436 __m512i test_mm512_mask_mulhi_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1437 // CHECK-LABEL: @test_mm512_mask_mulhi_epi16
1438 // CHECK: @llvm.x86.avx512.pmulh.w.512
1439 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1440 return _mm512_mask_mulhi_epi16(__W,__U,__A,__B);
1442 __m512i test_mm512_maskz_mulhi_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1443 // CHECK-LABEL: @test_mm512_maskz_mulhi_epi16
1444 // CHECK: @llvm.x86.avx512.pmulh.w.512
1445 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1446 return _mm512_maskz_mulhi_epi16(__U,__A,__B);
1448 __m512i test_mm512_mulhi_epu16(__m512i __A, __m512i __B) {
1449 // CHECK-LABEL: @test_mm512_mulhi_epu16
1450 // CHECK: @llvm.x86.avx512.pmulhu.w.512
1451 return _mm512_mulhi_epu16(__A,__B);
1453 __m512i test_mm512_mask_mulhi_epu16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1454 // CHECK-LABEL: @test_mm512_mask_mulhi_epu16
1455 // CHECK: @llvm.x86.avx512.pmulhu.w.512
1456 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1457 return _mm512_mask_mulhi_epu16(__W,__U,__A,__B);
1459 __m512i test_mm512_maskz_mulhi_epu16(__mmask32 __U, __m512i __A, __m512i __B) {
1460 // CHECK-LABEL: @test_mm512_maskz_mulhi_epu16
1461 // CHECK: @llvm.x86.avx512.pmulhu.w.512
1462 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1463 return _mm512_maskz_mulhi_epu16(__U,__A,__B);
1466 __m512i test_mm512_maddubs_epi16(__m512i __X, __m512i __Y) {
1467 // CHECK-LABEL: @test_mm512_maddubs_epi16
1468 // CHECK: @llvm.x86.avx512.pmaddubs.w.512
1469 return _mm512_maddubs_epi16(__X,__Y);
1471 __m512i test_mm512_mask_maddubs_epi16(__m512i __W, __mmask32 __U, __m512i __X, __m512i __Y) {
1472 // CHECK-LABEL: @test_mm512_mask_maddubs_epi16
1473 // CHECK: @llvm.x86.avx512.pmaddubs.w.512
1474 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1475 return _mm512_mask_maddubs_epi16(__W,__U,__X,__Y);
1477 __m512i test_mm512_maskz_maddubs_epi16(__mmask32 __U, __m512i __X, __m512i __Y) {
1478 // CHECK-LABEL: @test_mm512_maskz_maddubs_epi16
1479 // CHECK: @llvm.x86.avx512.pmaddubs.w.512
1480 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1481 return _mm512_maskz_maddubs_epi16(__U,__X,__Y);
1483 __m512i test_mm512_madd_epi16(__m512i __A, __m512i __B) {
1484 // CHECK-LABEL: @test_mm512_madd_epi16
1485 // CHECK: @llvm.x86.avx512.pmaddw.d.512
1486 return _mm512_madd_epi16(__A,__B);
1488 __m512i test_mm512_mask_madd_epi16(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {
1489 // CHECK-LABEL: @test_mm512_mask_madd_epi16
1490 // CHECK: @llvm.x86.avx512.pmaddw.d.512
1491 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1492 return _mm512_mask_madd_epi16(__W,__U,__A,__B);
1494 __m512i test_mm512_maskz_madd_epi16(__mmask16 __U, __m512i __A, __m512i __B) {
1495 // CHECK-LABEL: @test_mm512_maskz_madd_epi16
1496 // CHECK: @llvm.x86.avx512.pmaddw.d.512
1497 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1498 return _mm512_maskz_madd_epi16(__U,__A,__B);
1501 __m256i test_mm512_cvtsepi16_epi8(__m512i __A) {
1502 // CHECK-LABEL: @test_mm512_cvtsepi16_epi8
1503 // CHECK: @llvm.x86.avx512.mask.pmovs.wb.512
1504 return _mm512_cvtsepi16_epi8(__A);
1507 __m256i test_mm512_mask_cvtsepi16_epi8(__m256i __O, __mmask32 __M, __m512i __A) {
1508 // CHECK-LABEL: @test_mm512_mask_cvtsepi16_epi8
1509 // CHECK: @llvm.x86.avx512.mask.pmovs.wb.512
1510 return _mm512_mask_cvtsepi16_epi8(__O, __M, __A);
1513 __m256i test_mm512_maskz_cvtsepi16_epi8(__mmask32 __M, __m512i __A) {
1514 // CHECK-LABEL: @test_mm512_maskz_cvtsepi16_epi8
1515 // CHECK: @llvm.x86.avx512.mask.pmovs.wb.512
1516 return _mm512_maskz_cvtsepi16_epi8(__M, __A);
1519 __m256i test_mm512_cvtusepi16_epi8(__m512i __A) {
1520 // CHECK-LABEL: @test_mm512_cvtusepi16_epi8
1521 // CHECK: @llvm.x86.avx512.mask.pmovus.wb.512
1522 return _mm512_cvtusepi16_epi8(__A);
1525 __m256i test_mm512_mask_cvtusepi16_epi8(__m256i __O, __mmask32 __M, __m512i __A) {
1526 // CHECK-LABEL: @test_mm512_mask_cvtusepi16_epi8
1527 // CHECK: @llvm.x86.avx512.mask.pmovus.wb.512
1528 return _mm512_mask_cvtusepi16_epi8(__O, __M, __A);
1531 __m256i test_mm512_maskz_cvtusepi16_epi8(__mmask32 __M, __m512i __A) {
1532 // CHECK-LABEL: @test_mm512_maskz_cvtusepi16_epi8
1533 // CHECK: @llvm.x86.avx512.mask.pmovus.wb.512
1534 return _mm512_maskz_cvtusepi16_epi8(__M, __A);
1537 __m256i test_mm512_cvtepi16_epi8(__m512i __A) {
1538 // CHECK-LABEL: @test_mm512_cvtepi16_epi8
1539 // CHECK: trunc <32 x i16> %{{.*}} to <32 x i8>
1540 return _mm512_cvtepi16_epi8(__A);
1543 __m256i test_mm512_mask_cvtepi16_epi8(__m256i __O, __mmask32 __M, __m512i __A) {
1544 // CHECK-LABEL: @test_mm512_mask_cvtepi16_epi8
1545 // CHECK: trunc <32 x i16> %{{.*}} to <32 x i8>
1546 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1547 return _mm512_mask_cvtepi16_epi8(__O, __M, __A);
1550 __m256i test_mm512_maskz_cvtepi16_epi8(__mmask32 __M, __m512i __A) {
1551 // CHECK-LABEL: @test_mm512_maskz_cvtepi16_epi8
1552 // CHECK: trunc <32 x i16> %{{.*}} to <32 x i8>
1553 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1554 return _mm512_maskz_cvtepi16_epi8(__M, __A);
1557 __m512i test_mm512_unpackhi_epi8(__m512i __A, __m512i __B) {
1558 // CHECK-LABEL: @test_mm512_unpackhi_epi8
1559 // 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>
1560 return _mm512_unpackhi_epi8(__A, __B);
1563 __m512i test_mm512_mask_unpackhi_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1564 // CHECK-LABEL: @test_mm512_mask_unpackhi_epi8
1565 // 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>
1566 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1567 return _mm512_mask_unpackhi_epi8(__W, __U, __A, __B);
1570 __m512i test_mm512_maskz_unpackhi_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
1571 // CHECK-LABEL: @test_mm512_maskz_unpackhi_epi8
1572 // 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>
1573 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1574 return _mm512_maskz_unpackhi_epi8(__U, __A, __B);
1577 __m512i test_mm512_unpackhi_epi16(__m512i __A, __m512i __B) {
1578 // CHECK-LABEL: @test_mm512_unpackhi_epi16
1579 // 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>
1580 return _mm512_unpackhi_epi16(__A, __B);
1583 __m512i test_mm512_mask_unpackhi_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1584 // CHECK-LABEL: @test_mm512_mask_unpackhi_epi16
1585 // 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>
1586 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1587 return _mm512_mask_unpackhi_epi16(__W, __U, __A, __B);
1590 __m512i test_mm512_maskz_unpackhi_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1591 // CHECK-LABEL: @test_mm512_maskz_unpackhi_epi16
1592 // 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>
1593 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1594 return _mm512_maskz_unpackhi_epi16(__U, __A, __B);
1597 __m512i test_mm512_unpacklo_epi8(__m512i __A, __m512i __B) {
1598 // CHECK-LABEL: @test_mm512_unpacklo_epi8
1599 // 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>
1600 return _mm512_unpacklo_epi8(__A, __B);
1603 __m512i test_mm512_mask_unpacklo_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1604 // CHECK-LABEL: @test_mm512_mask_unpacklo_epi8
1605 // 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>
1606 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1607 return _mm512_mask_unpacklo_epi8(__W, __U, __A, __B);
1610 __m512i test_mm512_maskz_unpacklo_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
1611 // CHECK-LABEL: @test_mm512_maskz_unpacklo_epi8
1612 // 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>
1613 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1614 return _mm512_maskz_unpacklo_epi8(__U, __A, __B);
1617 __m512i test_mm512_unpacklo_epi16(__m512i __A, __m512i __B) {
1618 // CHECK-LABEL: @test_mm512_unpacklo_epi16
1619 // 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>
1620 return _mm512_unpacklo_epi16(__A, __B);
1623 __m512i test_mm512_mask_unpacklo_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1624 // CHECK-LABEL: @test_mm512_mask_unpacklo_epi16
1625 // 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>
1626 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1627 return _mm512_mask_unpacklo_epi16(__W, __U, __A, __B);
1630 __m512i test_mm512_maskz_unpacklo_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1631 // CHECK-LABEL: @test_mm512_maskz_unpacklo_epi16
1632 // 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>
1633 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1634 return _mm512_maskz_unpacklo_epi16(__U, __A, __B);
1637 __m512i test_mm512_cvtepi8_epi16(__m256i __A) {
1638 // CHECK-LABEL: @test_mm512_cvtepi8_epi16
1639 // CHECK: sext <32 x i8> %{{.*}} to <32 x i16>
1640 return _mm512_cvtepi8_epi16(__A);
1643 __m512i test_mm512_mask_cvtepi8_epi16(__m512i __W, __mmask32 __U, __m256i __A) {
1644 // CHECK-LABEL: @test_mm512_mask_cvtepi8_epi16
1645 // CHECK: sext <32 x i8> %{{.*}} to <32 x i16>
1646 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1647 return _mm512_mask_cvtepi8_epi16(__W, __U, __A);
1650 __m512i test_mm512_maskz_cvtepi8_epi16(__mmask32 __U, __m256i __A) {
1651 // CHECK-LABEL: @test_mm512_maskz_cvtepi8_epi16
1652 // CHECK: sext <32 x i8> %{{.*}} to <32 x i16>
1653 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1654 return _mm512_maskz_cvtepi8_epi16(__U, __A);
1657 __m512i test_mm512_cvtepu8_epi16(__m256i __A) {
1658 // CHECK-LABEL: @test_mm512_cvtepu8_epi16
1659 // CHECK: zext <32 x i8> %{{.*}} to <32 x i16>
1660 return _mm512_cvtepu8_epi16(__A);
1663 __m512i test_mm512_mask_cvtepu8_epi16(__m512i __W, __mmask32 __U, __m256i __A) {
1664 // CHECK-LABEL: @test_mm512_mask_cvtepu8_epi16
1665 // CHECK: zext <32 x i8> %{{.*}} to <32 x i16>
1666 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1667 return _mm512_mask_cvtepu8_epi16(__W, __U, __A);
1670 __m512i test_mm512_maskz_cvtepu8_epi16(__mmask32 __U, __m256i __A) {
1671 // CHECK-LABEL: @test_mm512_maskz_cvtepu8_epi16
1672 // CHECK: zext <32 x i8> %{{.*}} to <32 x i16>
1673 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1674 return _mm512_maskz_cvtepu8_epi16(__U, __A);
1677 __m512i test_mm512_shufflehi_epi16(__m512i __A) {
1678 // CHECK-LABEL: @test_mm512_shufflehi_epi16
1679 // 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>
1680 return _mm512_shufflehi_epi16(__A, 5);
1683 __m512i test_mm512_mask_shufflehi_epi16(__m512i __W, __mmask32 __U, __m512i __A) {
1684 // CHECK-LABEL: @test_mm512_mask_shufflehi_epi16
1685 // 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>
1686 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1687 return _mm512_mask_shufflehi_epi16(__W, __U, __A, 5);
1690 __m512i test_mm512_maskz_shufflehi_epi16(__mmask32 __U, __m512i __A) {
1691 // CHECK-LABEL: @test_mm512_maskz_shufflehi_epi16
1692 // 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>
1693 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1694 return _mm512_maskz_shufflehi_epi16(__U, __A, 5);
1697 __m512i test_mm512_shufflelo_epi16(__m512i __A) {
1698 // CHECK-LABEL: @test_mm512_shufflelo_epi16
1699 // 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>
1700 return _mm512_shufflelo_epi16(__A, 5);
1703 __m512i test_mm512_mask_shufflelo_epi16(__m512i __W, __mmask32 __U, __m512i __A) {
1704 // CHECK-LABEL: @test_mm512_mask_shufflelo_epi16
1705 // 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>
1706 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1707 return _mm512_mask_shufflelo_epi16(__W, __U, __A, 5);
1710 __m512i test_mm512_maskz_shufflelo_epi16(__mmask32 __U, __m512i __A) {
1711 // CHECK-LABEL: @test_mm512_maskz_shufflelo_epi16
1712 // 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>
1713 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1714 return _mm512_maskz_shufflelo_epi16(__U, __A, 5);
1717 __m512i test_mm512_sllv_epi16(__m512i __A, __m512i __B) {
1718 // CHECK-LABEL: @test_mm512_sllv_epi16
1719 // CHECK: @llvm.x86.avx512.psllv.w.512(
1720 return _mm512_sllv_epi16(__A, __B);
1723 __m512i test_mm512_mask_sllv_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1724 // CHECK-LABEL: @test_mm512_mask_sllv_epi16
1725 // CHECK: @llvm.x86.avx512.psllv.w.512(
1726 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1727 return _mm512_mask_sllv_epi16(__W, __U, __A, __B);
1730 __m512i test_mm512_maskz_sllv_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1731 // CHECK-LABEL: @test_mm512_maskz_sllv_epi16
1732 // CHECK: @llvm.x86.avx512.psllv.w.512(
1733 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1734 return _mm512_maskz_sllv_epi16(__U, __A, __B);
1737 __m512i test_mm512_sll_epi16(__m512i __A, __m128i __B) {
1738 // CHECK-LABEL: @test_mm512_sll_epi16
1739 // CHECK: @llvm.x86.avx512.psll.w.512
1740 return _mm512_sll_epi16(__A, __B);
1743 __m512i test_mm512_mask_sll_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B) {
1744 // CHECK-LABEL: @test_mm512_mask_sll_epi16
1745 // CHECK: @llvm.x86.avx512.psll.w.512
1746 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1747 return _mm512_mask_sll_epi16(__W, __U, __A, __B);
1750 __m512i test_mm512_maskz_sll_epi16(__mmask32 __U, __m512i __A, __m128i __B) {
1751 // CHECK-LABEL: @test_mm512_maskz_sll_epi16
1752 // CHECK: @llvm.x86.avx512.psll.w.512
1753 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1754 return _mm512_maskz_sll_epi16(__U, __A, __B);
1757 __m512i test_mm512_slli_epi16(__m512i __A) {
1758 // CHECK-LABEL: @test_mm512_slli_epi16
1759 // CHECK: @llvm.x86.avx512.pslli.w.512
1760 return _mm512_slli_epi16(__A, 5);
1763 __m512i test_mm512_slli_epi16_2(__m512i __A, int __B) {
1764 // CHECK-LABEL: @test_mm512_slli_epi16_2
1765 // CHECK: @llvm.x86.avx512.pslli.w.512
1766 return _mm512_slli_epi16(__A, __B);
1769 __m512i test_mm512_mask_slli_epi16(__m512i __W, __mmask32 __U, __m512i __A) {
1770 // CHECK-LABEL: @test_mm512_mask_slli_epi16
1771 // CHECK: @llvm.x86.avx512.pslli.w.512
1772 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1773 return _mm512_mask_slli_epi16(__W, __U, __A, 5);
1776 __m512i test_mm512_mask_slli_epi16_2(__m512i __W, __mmask32 __U, __m512i __A, int __B) {
1777 // CHECK-LABEL: @test_mm512_mask_slli_epi16_2
1778 // CHECK: @llvm.x86.avx512.pslli.w.512
1779 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1780 return _mm512_mask_slli_epi16(__W, __U, __A, __B);
1783 __m512i test_mm512_maskz_slli_epi16(__mmask32 __U, __m512i __A) {
1784 // CHECK-LABEL: @test_mm512_maskz_slli_epi16
1785 // CHECK: @llvm.x86.avx512.pslli.w.512
1786 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1787 return _mm512_maskz_slli_epi16(__U, __A, 5);
1790 __m512i test_mm512_maskz_slli_epi16_2(__mmask32 __U, __m512i __A, int __B) {
1791 // CHECK-LABEL: @test_mm512_maskz_slli_epi16_2
1792 // CHECK: @llvm.x86.avx512.pslli.w.512
1793 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1794 return _mm512_maskz_slli_epi16(__U, __A, __B);
1797 __m512i test_mm512_bslli_epi128(__m512i __A) {
1798 // CHECK-LABEL: @test_mm512_bslli_epi128
1799 // 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>
1800 return _mm512_bslli_epi128(__A, 5);
1803 __m512i test_mm512_srlv_epi16(__m512i __A, __m512i __B) {
1804 // CHECK-LABEL: @test_mm512_srlv_epi16
1805 // CHECK: @llvm.x86.avx512.psrlv.w.512(
1806 return _mm512_srlv_epi16(__A, __B);
1809 __m512i test_mm512_mask_srlv_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1810 // CHECK-LABEL: @test_mm512_mask_srlv_epi16
1811 // CHECK: @llvm.x86.avx512.psrlv.w.512(
1812 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1813 return _mm512_mask_srlv_epi16(__W, __U, __A, __B);
1816 __m512i test_mm512_maskz_srlv_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1817 // CHECK-LABEL: @test_mm512_maskz_srlv_epi16
1818 // CHECK: @llvm.x86.avx512.psrlv.w.512(
1819 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1820 return _mm512_maskz_srlv_epi16(__U, __A, __B);
1823 __m512i test_mm512_srav_epi16(__m512i __A, __m512i __B) {
1824 // CHECK-LABEL: @test_mm512_srav_epi16
1825 // CHECK: @llvm.x86.avx512.psrav.w.512(
1826 return _mm512_srav_epi16(__A, __B);
1829 __m512i test_mm512_mask_srav_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1830 // CHECK-LABEL: @test_mm512_mask_srav_epi16
1831 // CHECK: @llvm.x86.avx512.psrav.w.512(
1832 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1833 return _mm512_mask_srav_epi16(__W, __U, __A, __B);
1836 __m512i test_mm512_maskz_srav_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1837 // CHECK-LABEL: @test_mm512_maskz_srav_epi16
1838 // CHECK: @llvm.x86.avx512.psrav.w.512(
1839 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1840 return _mm512_maskz_srav_epi16(__U, __A, __B);
1843 __m512i test_mm512_sra_epi16(__m512i __A, __m128i __B) {
1844 // CHECK-LABEL: @test_mm512_sra_epi16
1845 // CHECK: @llvm.x86.avx512.psra.w.512
1846 return _mm512_sra_epi16(__A, __B);
1849 __m512i test_mm512_mask_sra_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B) {
1850 // CHECK-LABEL: @test_mm512_mask_sra_epi16
1851 // CHECK: @llvm.x86.avx512.psra.w.512
1852 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1853 return _mm512_mask_sra_epi16(__W, __U, __A, __B);
1856 __m512i test_mm512_maskz_sra_epi16(__mmask32 __U, __m512i __A, __m128i __B) {
1857 // CHECK-LABEL: @test_mm512_maskz_sra_epi16
1858 // CHECK: @llvm.x86.avx512.psra.w.512
1859 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1860 return _mm512_maskz_sra_epi16(__U, __A, __B);
1863 __m512i test_mm512_srai_epi16(__m512i __A) {
1864 // CHECK-LABEL: @test_mm512_srai_epi16
1865 // CHECK: @llvm.x86.avx512.psrai.w.512
1866 return _mm512_srai_epi16(__A, 5);
1869 __m512i test_mm512_srai_epi16_2(__m512i __A, int __B) {
1870 // CHECK-LABEL: @test_mm512_srai_epi16_2
1871 // CHECK: @llvm.x86.avx512.psrai.w.512
1872 return _mm512_srai_epi16(__A, __B);
1875 __m512i test_mm512_mask_srai_epi16(__m512i __W, __mmask32 __U, __m512i __A) {
1876 // CHECK-LABEL: @test_mm512_mask_srai_epi16
1877 // CHECK: @llvm.x86.avx512.psrai.w.512
1878 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1879 return _mm512_mask_srai_epi16(__W, __U, __A, 5);
1882 __m512i test_mm512_mask_srai_epi16_2(__m512i __W, __mmask32 __U, __m512i __A, int __B) {
1883 // CHECK-LABEL: @test_mm512_mask_srai_epi16_2
1884 // CHECK: @llvm.x86.avx512.psrai.w.512
1885 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1886 return _mm512_mask_srai_epi16(__W, __U, __A, __B);
1889 __m512i test_mm512_maskz_srai_epi16(__mmask32 __U, __m512i __A) {
1890 // CHECK-LABEL: @test_mm512_maskz_srai_epi16
1891 // CHECK: @llvm.x86.avx512.psrai.w.512
1892 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1893 return _mm512_maskz_srai_epi16(__U, __A, 5);
1896 __m512i test_mm512_maskz_srai_epi16_2(__mmask32 __U, __m512i __A, int __B) {
1897 // CHECK-LABEL: @test_mm512_maskz_srai_epi16_2
1898 // CHECK: @llvm.x86.avx512.psrai.w.512
1899 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1900 return _mm512_maskz_srai_epi16(__U, __A, __B);
1903 __m512i test_mm512_srl_epi16(__m512i __A, __m128i __B) {
1904 // CHECK-LABEL: @test_mm512_srl_epi16
1905 // CHECK: @llvm.x86.avx512.psrl.w.512
1906 return _mm512_srl_epi16(__A, __B);
1909 __m512i test_mm512_mask_srl_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B) {
1910 // CHECK-LABEL: @test_mm512_mask_srl_epi16
1911 // CHECK: @llvm.x86.avx512.psrl.w.512
1912 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1913 return _mm512_mask_srl_epi16(__W, __U, __A, __B);
1916 __m512i test_mm512_maskz_srl_epi16(__mmask32 __U, __m512i __A, __m128i __B) {
1917 // CHECK-LABEL: @test_mm512_maskz_srl_epi16
1918 // CHECK: @llvm.x86.avx512.psrl.w.512
1919 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1920 return _mm512_maskz_srl_epi16(__U, __A, __B);
1923 __m512i test_mm512_srli_epi16(__m512i __A) {
1924 // CHECK-LABEL: @test_mm512_srli_epi16
1925 // CHECK: @llvm.x86.avx512.psrli.w.512
1926 return _mm512_srli_epi16(__A, 5);
1929 __m512i test_mm512_srli_epi16_2(__m512i __A, int __B) {
1930 // CHECK-LABEL: @test_mm512_srli_epi16_2
1931 // CHECK: @llvm.x86.avx512.psrli.w.512
1932 return _mm512_srli_epi16(__A, __B);
1935 __m512i test_mm512_mask_srli_epi16(__m512i __W, __mmask32 __U, __m512i __A) {
1936 // CHECK-LABEL: @test_mm512_mask_srli_epi16
1937 // CHECK: @llvm.x86.avx512.psrli.w.512
1938 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1939 return _mm512_mask_srli_epi16(__W, __U, __A, 5);
1942 __m512i test_mm512_mask_srli_epi16_2(__m512i __W, __mmask32 __U, __m512i __A, int __B) {
1943 // CHECK-LABEL: @test_mm512_mask_srli_epi16_2
1944 // CHECK: @llvm.x86.avx512.psrli.w.512
1945 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1946 return _mm512_mask_srli_epi16(__W, __U, __A, __B);
1949 __m512i test_mm512_maskz_srli_epi16(__mmask32 __U, __m512i __A) {
1950 // CHECK-LABEL: @test_mm512_maskz_srli_epi16
1951 // CHECK: @llvm.x86.avx512.psrli.w.512
1952 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1953 return _mm512_maskz_srli_epi16(__U, __A, 5);
1956 __m512i test_mm512_maskz_srli_epi16_2(__mmask32 __U, __m512i __A, int __B) {
1957 // CHECK-LABEL: @test_mm512_maskz_srli_epi16_2
1958 // CHECK: @llvm.x86.avx512.psrli.w.512
1959 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1960 return _mm512_maskz_srli_epi16(__U, __A, __B);
1963 __m512i test_mm512_bsrli_epi128(__m512i __A) {
1964 // CHECK-LABEL: @test_mm512_bsrli_epi128
1965 // 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>
1966 return _mm512_bsrli_epi128(__A, 5);
1968 __m512i test_mm512_mask_mov_epi16(__m512i __W, __mmask32 __U, __m512i __A) {
1969 // CHECK-LABEL: @test_mm512_mask_mov_epi16
1970 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1971 return _mm512_mask_mov_epi16(__W, __U, __A);
1974 __m512i test_mm512_maskz_mov_epi16(__mmask32 __U, __m512i __A) {
1975 // CHECK-LABEL: @test_mm512_maskz_mov_epi16
1976 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1977 return _mm512_maskz_mov_epi16(__U, __A);
1980 __m512i test_mm512_mask_mov_epi8(__m512i __W, __mmask64 __U, __m512i __A) {
1981 // CHECK-LABEL: @test_mm512_mask_mov_epi8
1982 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1983 return _mm512_mask_mov_epi8(__W, __U, __A);
1986 __m512i test_mm512_maskz_mov_epi8(__mmask64 __U, __m512i __A) {
1987 // CHECK-LABEL: @test_mm512_maskz_mov_epi8
1988 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1989 return _mm512_maskz_mov_epi8(__U, __A);
1992 __m512i test_mm512_mask_set1_epi8(__m512i __O, __mmask64 __M, char __A) {
1993 // CHECK-LABEL: @test_mm512_mask_set1_epi8
1994 // CHECK: insertelement <64 x i8> undef, i8 %{{.*}}, i32 0
1995 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 1
1996 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 2
1997 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 3
1998 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 4
1999 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 5
2000 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 6
2001 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 7
2002 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 8
2003 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 9
2004 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 10
2005 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 11
2006 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 12
2007 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 13
2008 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 14
2009 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 15
2010 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 16
2011 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 17
2012 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 18
2013 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 19
2014 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 20
2015 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 21
2016 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 22
2017 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 23
2018 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 24
2019 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 25
2020 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 26
2021 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 27
2022 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 28
2023 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 29
2024 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 30
2025 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 31
2026 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 34
2027 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 35
2028 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 36
2029 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 37
2030 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 38
2031 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 39
2032 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 40
2033 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 41
2034 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 42
2035 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 43
2036 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 44
2037 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 45
2038 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 46
2039 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 47
2040 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 48
2041 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 49
2042 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 50
2043 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 51
2044 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 52
2045 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 53
2046 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 54
2047 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 55
2048 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 56
2049 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 57
2050 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 58
2051 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 59
2052 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 60
2053 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 61
2054 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 62
2055 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 63
2056 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
2057 return _mm512_mask_set1_epi8(__O, __M, __A);
2060 __m512i test_mm512_maskz_set1_epi8(__mmask64 __M, char __A) {
2061 // CHECK-LABEL: @test_mm512_maskz_set1_epi8
2062 // CHECK: insertelement <64 x i8> undef, i8 %{{.*}}, i32 0
2063 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 1
2064 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 2
2065 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 3
2066 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 4
2067 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 5
2068 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 6
2069 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 7
2070 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 8
2071 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 9
2072 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 10
2073 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 11
2074 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 12
2075 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 13
2076 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 14
2077 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 15
2078 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 16
2079 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 17
2080 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 18
2081 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 19
2082 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 20
2083 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 21
2084 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 22
2085 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 23
2086 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 24
2087 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 25
2088 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 26
2089 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 27
2090 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 28
2091 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 29
2092 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 30
2093 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 31
2094 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 32
2095 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 33
2096 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 34
2097 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 35
2098 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 36
2099 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 37
2100 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 38
2101 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 39
2102 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 40
2103 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 41
2104 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 42
2105 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 43
2106 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 44
2107 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 45
2108 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 46
2109 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 47
2110 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 48
2111 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 49
2112 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 50
2113 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 51
2114 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 52
2115 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 53
2116 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 54
2117 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 55
2118 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 56
2119 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 57
2120 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 58
2121 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 59
2122 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 60
2123 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 61
2124 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 62
2125 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 63
2126 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
2127 return _mm512_maskz_set1_epi8(__M, __A);
2130 __mmask64 test_mm512_kunpackd(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
2131 // CHECK-LABEL: @test_mm512_kunpackd
2132 // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
2133 // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
2134 // 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>
2135 // 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>
2136 // 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>
2137 // CHECK: bitcast <64 x i1> [[CONCAT]] to i64
2138 return _mm512_mask_cmpneq_epu8_mask(_mm512_kunpackd(_mm512_cmpneq_epu8_mask(__B, __A),_mm512_cmpneq_epu8_mask(__C, __D)), __E, __F);
2141 __mmask32 test_mm512_kunpackw(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
2142 // CHECK-LABEL: @test_mm512_kunpackw
2143 // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
2144 // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
2145 // 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>
2146 // 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>
2147 // 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>
2148 return _mm512_mask_cmpneq_epu16_mask(_mm512_kunpackw(_mm512_cmpneq_epu16_mask(__B, __A),_mm512_cmpneq_epu16_mask(__C, __D)), __E, __F);
2151 __m512i test_mm512_loadu_epi16 (void *__P)
2153 // CHECK-LABEL: @test_mm512_loadu_epi16
2154 // CHECK: load <8 x i64>, <8 x i64>* %{{.*}}, align 1{{$}}
2155 return _mm512_loadu_epi16 (__P);
2158 __m512i test_mm512_mask_loadu_epi16(__m512i __W, __mmask32 __U, void const *__P) {
2159 // CHECK-LABEL: @test_mm512_mask_loadu_epi16
2160 // CHECK: @llvm.masked.load.v32i16.p0v32i16(<32 x i16>* %{{.*}}, i32 1, <32 x i1> %{{.*}}, <32 x i16> %{{.*}})
2161 return _mm512_mask_loadu_epi16(__W, __U, __P);
2164 __m512i test_mm512_maskz_loadu_epi16(__mmask32 __U, void const *__P) {
2165 // CHECK-LABEL: @test_mm512_maskz_loadu_epi16
2166 // CHECK: @llvm.masked.load.v32i16.p0v32i16(<32 x i16>* %{{.*}}, i32 1, <32 x i1> %{{.*}}, <32 x i16> %{{.*}})
2167 return _mm512_maskz_loadu_epi16(__U, __P);
2170 __m512i test_mm512_loadu_epi8 (void *__P)
2172 // CHECK-LABEL: @test_mm512_loadu_epi8
2173 // CHECK: load <8 x i64>, <8 x i64>* %{{.*}}, align 1{{$}}
2174 return _mm512_loadu_epi8 (__P);
2177 __m512i test_mm512_mask_loadu_epi8(__m512i __W, __mmask64 __U, void const *__P) {
2178 // CHECK-LABEL: @test_mm512_mask_loadu_epi8
2179 // CHECK: @llvm.masked.load.v64i8.p0v64i8(<64 x i8>* %{{.*}}, i32 1, <64 x i1> %{{.*}}, <64 x i8> %{{.*}})
2180 return _mm512_mask_loadu_epi8(__W, __U, __P);
2183 __m512i test_mm512_maskz_loadu_epi8(__mmask64 __U, void const *__P) {
2184 // CHECK-LABEL: @test_mm512_maskz_loadu_epi8
2185 // CHECK: @llvm.masked.load.v64i8.p0v64i8(<64 x i8>* %{{.*}}, i32 1, <64 x i1> %{{.*}}, <64 x i8> %{{.*}})
2186 return _mm512_maskz_loadu_epi8(__U, __P);
2189 void test_mm512_storeu_epi16(void *__P, __m512i __A) {
2190 // CHECK-LABEL: @test_mm512_storeu_epi16
2191 // CHECK: store <8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, align 1{{$}}
2192 return _mm512_storeu_epi16(__P, __A);
2195 void test_mm512_mask_storeu_epi16(void *__P, __mmask32 __U, __m512i __A) {
2196 // CHECK-LABEL: @test_mm512_mask_storeu_epi16
2197 // CHECK: @llvm.masked.store.v32i16.p0v32i16(<32 x i16> %{{.*}}, <32 x i16>* %{{.*}}, i32 1, <32 x i1> %{{.*}})
2198 return _mm512_mask_storeu_epi16(__P, __U, __A);
2201 __mmask64 test_mm512_test_epi8_mask(__m512i __A, __m512i __B) {
2202 // CHECK-LABEL: @test_mm512_test_epi8_mask
2203 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2204 // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}}
2205 return _mm512_test_epi8_mask(__A, __B);
2208 void test_mm512_storeu_epi8(void *__P, __m512i __A) {
2209 // CHECK-LABEL: @test_mm512_storeu_epi8
2210 // CHECK: store <8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, align 1{{$}}
2211 return _mm512_storeu_epi8(__P, __A);
2214 void test_mm512_mask_storeu_epi8(void *__P, __mmask64 __U, __m512i __A) {
2215 // CHECK-LABEL: @test_mm512_mask_storeu_epi8
2216 // CHECK: @llvm.masked.store.v64i8.p0v64i8(<64 x i8> %{{.*}}, <64 x i8>* %{{.*}}, i32 1, <64 x i1> %{{.*}})
2217 return _mm512_mask_storeu_epi8(__P, __U, __A);
2219 __mmask64 test_mm512_mask_test_epi8_mask(__mmask64 __U, __m512i __A, __m512i __B) {
2220 // CHECK-LABEL: @test_mm512_mask_test_epi8_mask
2221 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2222 // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}}
2223 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
2224 return _mm512_mask_test_epi8_mask(__U, __A, __B);
2227 __mmask32 test_mm512_test_epi16_mask(__m512i __A, __m512i __B) {
2228 // CHECK-LABEL: @test_mm512_test_epi16_mask
2229 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2230 // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}}
2231 return _mm512_test_epi16_mask(__A, __B);
2234 __mmask32 test_mm512_mask_test_epi16_mask(__mmask32 __U, __m512i __A, __m512i __B) {
2235 // CHECK-LABEL: @test_mm512_mask_test_epi16_mask
2236 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2237 // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}}
2238 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
2239 return _mm512_mask_test_epi16_mask(__U, __A, __B);
2242 __mmask64 test_mm512_testn_epi8_mask(__m512i __A, __m512i __B) {
2243 // CHECK-LABEL: @test_mm512_testn_epi8_mask
2244 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2245 // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
2246 return _mm512_testn_epi8_mask(__A, __B);
2249 __mmask64 test_mm512_mask_testn_epi8_mask(__mmask64 __U, __m512i __A, __m512i __B) {
2250 // CHECK-LABEL: @test_mm512_mask_testn_epi8_mask
2251 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2252 // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
2253 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
2254 return _mm512_mask_testn_epi8_mask(__U, __A, __B);
2257 __mmask32 test_mm512_testn_epi16_mask(__m512i __A, __m512i __B) {
2258 // CHECK-LABEL: @test_mm512_testn_epi16_mask
2259 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2260 // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
2261 return _mm512_testn_epi16_mask(__A, __B);
2264 __mmask32 test_mm512_mask_testn_epi16_mask(__mmask32 __U, __m512i __A, __m512i __B) {
2265 // CHECK-LABEL: @test_mm512_mask_testn_epi16_mask
2266 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2267 // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
2268 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
2269 return _mm512_mask_testn_epi16_mask(__U, __A, __B);
2272 __mmask64 test_mm512_movepi8_mask(__m512i __A) {
2273 // CHECK-LABEL: @test_mm512_movepi8_mask
2274 // CHECK: [[CMP:%.*]] = icmp slt <64 x i8> %{{.*}}, zeroinitializer
2275 // CHECK: bitcast <64 x i1> [[CMP]] to i64
2276 return _mm512_movepi8_mask(__A);
2279 __m512i test_mm512_movm_epi8(__mmask64 __A) {
2280 // CHECK-LABEL: @test_mm512_movm_epi8
2281 // CHECK: %{{.*}} = bitcast i64 %{{.*}} to <64 x i1>
2282 // CHECK: %vpmovm2.i = sext <64 x i1> %{{.*}} to <64 x i8>
2283 return _mm512_movm_epi8(__A);
2286 __m512i test_mm512_movm_epi16(__mmask32 __A) {
2287 // CHECK-LABEL: @test_mm512_movm_epi16
2288 // CHECK: %{{.*}} = bitcast i32 %{{.*}} to <32 x i1>
2289 // CHECK: %vpmovm2.i = sext <32 x i1> %{{.*}} to <32 x i16>
2290 return _mm512_movm_epi16(__A);
2293 __m512i test_mm512_broadcastb_epi8(__m128i __A) {
2294 // CHECK-LABEL: @test_mm512_broadcastb_epi8
2295 // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <64 x i32> zeroinitializer
2296 return _mm512_broadcastb_epi8(__A);
2299 __m512i test_mm512_mask_broadcastb_epi8(__m512i __O, __mmask64 __M, __m128i __A) {
2300 // CHECK-LABEL: @test_mm512_mask_broadcastb_epi8
2301 // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <64 x i32> zeroinitializer
2302 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
2303 return _mm512_mask_broadcastb_epi8(__O, __M, __A);
2306 __m512i test_mm512_maskz_broadcastb_epi8(__mmask64 __M, __m128i __A) {
2307 // CHECK-LABEL: @test_mm512_maskz_broadcastb_epi8
2308 // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <64 x i32> zeroinitializer
2309 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
2310 return _mm512_maskz_broadcastb_epi8(__M, __A);
2313 __m512i test_mm512_broadcastw_epi16(__m128i __A) {
2314 // CHECK-LABEL: @test_mm512_broadcastw_epi16
2315 // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <32 x i32> zeroinitializer
2316 return _mm512_broadcastw_epi16(__A);
2319 __m512i test_mm512_mask_broadcastw_epi16(__m512i __O, __mmask32 __M, __m128i __A) {
2320 // CHECK-LABEL: @test_mm512_mask_broadcastw_epi16
2321 // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <32 x i32> zeroinitializer
2322 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
2323 return _mm512_mask_broadcastw_epi16(__O, __M, __A);
2326 __m512i test_mm512_maskz_broadcastw_epi16(__mmask32 __M, __m128i __A) {
2327 // CHECK-LABEL: @test_mm512_maskz_broadcastw_epi16
2328 // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <32 x i32> zeroinitializer
2329 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
2330 return _mm512_maskz_broadcastw_epi16(__M, __A);
2333 __m512i test_mm512_mask_set1_epi16(__m512i __O, __mmask32 __M, short __A) {
2334 // CHECK-LABEL: @test_mm512_mask_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_mask_set1_epi16(__O, __M, __A);
2371 __m512i test_mm512_maskz_set1_epi16(__mmask32 __M, short __A) {
2372 // CHECK-LABEL: @test_mm512_maskz_set1_epi16
2373 // CHECK: insertelement <32 x i16> undef, i16 %{{.*}}, i32 0
2374 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 1
2375 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 2
2376 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 3
2377 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 4
2378 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 5
2379 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 6
2380 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 7
2381 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 8
2382 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 9
2383 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 10
2384 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 11
2385 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 12
2386 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 13
2387 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 14
2388 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 15
2389 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 16
2390 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 17
2391 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 18
2392 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 19
2393 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 20
2394 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 21
2395 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 22
2396 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 23
2397 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 24
2398 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 25
2399 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 26
2400 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 27
2401 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 28
2402 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 29
2403 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 30
2404 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 31
2405 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
2406 return _mm512_maskz_set1_epi16(__M, __A);
2408 __m512i test_mm512_permutexvar_epi16(__m512i __A, __m512i __B) {
2409 // CHECK-LABEL: @test_mm512_permutexvar_epi16
2410 // CHECK: @llvm.x86.avx512.permvar.hi.512
2411 return _mm512_permutexvar_epi16(__A, __B);
2414 __m512i test_mm512_maskz_permutexvar_epi16(__mmask32 __M, __m512i __A, __m512i __B) {
2415 // CHECK-LABEL: @test_mm512_maskz_permutexvar_epi16
2416 // CHECK: @llvm.x86.avx512.permvar.hi.512
2417 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
2418 return _mm512_maskz_permutexvar_epi16(__M, __A, __B);
2421 __m512i test_mm512_mask_permutexvar_epi16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {
2422 // CHECK-LABEL: @test_mm512_mask_permutexvar_epi16
2423 // CHECK: @llvm.x86.avx512.permvar.hi.512
2424 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
2425 return _mm512_mask_permutexvar_epi16(__W, __M, __A, __B);
2427 __m512i test_mm512_alignr_epi8(__m512i __A,__m512i __B){
2428 // CHECK-LABEL: @test_mm512_alignr_epi8
2429 // 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>
2430 return _mm512_alignr_epi8(__A, __B, 2);
2433 __m512i test_mm512_mask_alignr_epi8(__m512i __W, __mmask64 __U, __m512i __A,__m512i __B){
2434 // CHECK-LABEL: @test_mm512_mask_alignr_epi8
2435 // 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>
2436 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
2437 return _mm512_mask_alignr_epi8(__W, __U, __A, __B, 2);
2440 __m512i test_mm512_maskz_alignr_epi8(__mmask64 __U, __m512i __A,__m512i __B){
2441 // CHECK-LABEL: @test_mm512_maskz_alignr_epi8
2442 // 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>
2443 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
2444 return _mm512_maskz_alignr_epi8(__U, __A, __B, 2);
2449 __m512i test_mm512_mm_dbsad_epu8(__m512i __A, __m512i __B) {
2450 // CHECK-LABEL: @test_mm512_mm_dbsad_epu8
2451 // CHECK: @llvm.x86.avx512.dbpsadbw.512
2452 return _mm512_dbsad_epu8(__A, __B, 170);
2455 __m512i test_mm512_mm_mask_dbsad_epu8(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
2456 // CHECK-LABEL: @test_mm512_mm_mask_dbsad_epu8
2457 // CHECK: @llvm.x86.avx512.dbpsadbw.512
2458 //CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
2459 return _mm512_mask_dbsad_epu8(__W, __U, __A, __B, 170);
2462 __m512i test_mm512_mm_maskz_dbsad_epu8(__mmask32 __U, __m512i __A, __m512i __B) {
2463 // CHECK-LABEL: @test_mm512_mm_maskz_dbsad_epu8
2464 // CHECK: @llvm.x86.avx512.dbpsadbw.512
2465 //CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
2466 return _mm512_maskz_dbsad_epu8(__U, __A, __B, 170);
2469 __m512i test_mm512_sad_epu8(__m512i __A, __m512i __B) {
2470 // CHECK-LABEL: @test_mm512_sad_epu8
2471 // CHECK: @llvm.x86.avx512.psad.bw.512
2472 return _mm512_sad_epu8(__A, __B);
2475 __mmask32 test_mm512_movepi16_mask(__m512i __A) {
2476 // CHECK-LABEL: @test_mm512_movepi16_mask
2477 // CHECK: [[CMP:%.*]] = icmp slt <32 x i16> %{{.*}}, zeroinitializer
2478 // CHECK: bitcast <32 x i1> [[CMP]] to i32
2479 return _mm512_movepi16_mask(__A);
2482 void test_mm512_mask_cvtepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
2484 // CHECK-LABEL: @test_mm512_mask_cvtepi16_storeu_epi8
2485 // CHECK: @llvm.x86.avx512.mask.pmov.wb.mem.512
2486 _mm512_mask_cvtepi16_storeu_epi8 ( __P, __M, __A);
2489 void test_mm512_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
2491 // CHECK-LABEL: @test_mm512_mask_cvtsepi16_storeu_epi8
2492 // CHECK: @llvm.x86.avx512.mask.pmovs.wb.mem.512
2493 _mm512_mask_cvtsepi16_storeu_epi8 ( __P, __M, __A);
2496 void test_mm512_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
2498 // CHECK-LABEL: @test_mm512_mask_cvtusepi16_storeu_epi8
2499 // CHECK: @llvm.x86.avx512.mask.pmovus.wb.mem.512
2500 _mm512_mask_cvtusepi16_storeu_epi8 ( __P, __M, __A);