Clang Project

clang_source_code/test/CodeGen/avx512vlbw-builtins.c
1// RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512bw -target-feature +avx512vl -emit-llvm -o - -Wall -Werror | FileCheck %s
2// RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512bw -target-feature +avx512vl -fno-signed-char -emit-llvm -o - -Wall -Werror | FileCheck %s
3
4
5#include <immintrin.h>
6
7__mmask32 test_mm256_cmpeq_epi8_mask(__m256i __a, __m256i __b) {
8  // CHECK-LABEL: @test_mm256_cmpeq_epi8_mask
9  // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}
10  return (__mmask32)_mm256_cmpeq_epi8_mask(__a, __b);
11}
12
13__mmask32 test_mm256_mask_cmpeq_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
14  // CHECK-LABEL: @test_mm256_mask_cmpeq_epi8_mask
15  // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}
16  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
17  return (__mmask32)_mm256_mask_cmpeq_epi8_mask(__u, __a, __b);
18}
19
20__mmask16 test_mm_cmpeq_epi8_mask(__m128i __a, __m128i __b) {
21  // CHECK-LABEL: @test_mm_cmpeq_epi8_mask
22  // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
23  return (__mmask16)_mm_cmpeq_epi8_mask(__a, __b);
24}
25
26__mmask16 test_mm_mask_cmpeq_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
27  // CHECK-LABEL: @test_mm_mask_cmpeq_epi8_mask
28  // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
29  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
30  return (__mmask16)_mm_mask_cmpeq_epi8_mask(__u, __a, __b);
31}
32
33__mmask16 test_mm256_cmpeq_epi16_mask(__m256i __a, __m256i __b) {
34  // CHECK-LABEL: @test_mm256_cmpeq_epi16_mask
35  // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}
36  return (__mmask16)_mm256_cmpeq_epi16_mask(__a, __b);
37}
38
39__mmask16 test_mm256_mask_cmpeq_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
40  // CHECK-LABEL: @test_mm256_mask_cmpeq_epi16_mask
41  // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}
42  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
43  return (__mmask16)_mm256_mask_cmpeq_epi16_mask(__u, __a, __b);
44}
45
46__mmask8 test_mm_cmpeq_epi16_mask(__m128i __a, __m128i __b) {
47  // CHECK-LABEL: @test_mm_cmpeq_epi16_mask
48  // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
49  return (__mmask8)_mm_cmpeq_epi16_mask(__a, __b);
50}
51
52__mmask8 test_mm_mask_cmpeq_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
53  // CHECK-LABEL: @test_mm_mask_cmpeq_epi16_mask
54  // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
55  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
56  return (__mmask8)_mm_mask_cmpeq_epi16_mask(__u, __a, __b);
57}
58
59__mmask32 test_mm256_cmpgt_epi8_mask(__m256i __a, __m256i __b) {
60  // CHECK-LABEL: @test_mm256_cmpgt_epi8_mask
61  // CHECK: icmp sgt <32 x i8> %{{.*}}, %{{.*}}
62  return (__mmask32)_mm256_cmpgt_epi8_mask(__a, __b);
63}
64
65__mmask32 test_mm256_mask_cmpgt_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
66  // CHECK-LABEL: @test_mm256_mask_cmpgt_epi8_mask
67  // CHECK: icmp sgt <32 x i8> %{{.*}}, %{{.*}}
68  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
69  return (__mmask32)_mm256_mask_cmpgt_epi8_mask(__u, __a, __b);
70}
71
72__mmask16 test_mm_cmpgt_epi8_mask(__m128i __a, __m128i __b) {
73  // CHECK-LABEL: @test_mm_cmpgt_epi8_mask
74  // CHECK: icmp sgt <16 x i8> %{{.*}}, %{{.*}}
75  return (__mmask16)_mm_cmpgt_epi8_mask(__a, __b);
76}
77
78__mmask16 test_mm_mask_cmpgt_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
79  // CHECK-LABEL: @test_mm_mask_cmpgt_epi8_mask
80  // CHECK: icmp sgt <16 x i8> %{{.*}}, %{{.*}}
81  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
82  return (__mmask16)_mm_mask_cmpgt_epi8_mask(__u, __a, __b);
83}
84
85__mmask16 test_mm256_cmpgt_epi16_mask(__m256i __a, __m256i __b) {
86  // CHECK-LABEL: @test_mm256_cmpgt_epi16_mask
87  // CHECK: icmp sgt <16 x i16> %{{.*}}, %{{.*}}
88  return (__mmask16)_mm256_cmpgt_epi16_mask(__a, __b);
89}
90
91__mmask16 test_mm256_mask_cmpgt_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
92  // CHECK-LABEL: @test_mm256_mask_cmpgt_epi16_mask
93  // CHECK: icmp sgt <16 x i16> %{{.*}}, %{{.*}}
94  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
95  return (__mmask16)_mm256_mask_cmpgt_epi16_mask(__u, __a, __b);
96}
97
98__mmask8 test_mm_cmpgt_epi16_mask(__m128i __a, __m128i __b) {
99  // CHECK-LABEL: @test_mm_cmpgt_epi16_mask
100  // CHECK: icmp sgt <8 x i16> %{{.*}}, %{{.*}}
101  return (__mmask8)_mm_cmpgt_epi16_mask(__a, __b);
102}
103
104__mmask8 test_mm_mask_cmpgt_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
105  // CHECK-LABEL: @test_mm_mask_cmpgt_epi16_mask
106  // CHECK: icmp sgt <8 x i16> %{{.*}}, %{{.*}}
107  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
108  return (__mmask8)_mm_mask_cmpgt_epi16_mask(__u, __a, __b);
109}
110
111__mmask16 test_mm_cmpeq_epu8_mask(__m128i __a, __m128i __b) {
112  // CHECK-LABEL: @test_mm_cmpeq_epu8_mask
113  // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
114  return (__mmask16)_mm_cmpeq_epu8_mask(__a, __b);
115}
116
117__mmask16 test_mm_mask_cmpeq_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
118  // CHECK-LABEL: @test_mm_mask_cmpeq_epu8_mask
119  // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
120  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
121  return (__mmask16)_mm_mask_cmpeq_epu8_mask(__u, __a, __b);
122}
123
124__mmask8 test_mm_cmpeq_epu16_mask(__m128i __a, __m128i __b) {
125  // CHECK-LABEL: @test_mm_cmpeq_epu16_mask
126  // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
127  return (__mmask8)_mm_cmpeq_epu16_mask(__a, __b);
128}
129
130__mmask8 test_mm_mask_cmpeq_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
131  // CHECK-LABEL: @test_mm_mask_cmpeq_epu16_mask
132  // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
133  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
134  return (__mmask8)_mm_mask_cmpeq_epu16_mask(__u, __a, __b);
135}
136
137__mmask32 test_mm256_cmpeq_epu8_mask(__m256i __a, __m256i __b) {
138  // CHECK-LABEL: @test_mm256_cmpeq_epu8_mask
139  // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}
140  return (__mmask32)_mm256_cmpeq_epu8_mask(__a, __b);
141}
142
143__mmask32 test_mm256_mask_cmpeq_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
144  // CHECK-LABEL: @test_mm256_mask_cmpeq_epu8_mask
145  // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}
146  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
147  return (__mmask32)_mm256_mask_cmpeq_epu8_mask(__u, __a, __b);
148}
149
150__mmask16 test_mm256_cmpeq_epu16_mask(__m256i __a, __m256i __b) {
151  // CHECK-LABEL: @test_mm256_cmpeq_epu16_mask
152  // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}
153  return (__mmask16)_mm256_cmpeq_epu16_mask(__a, __b);
154}
155
156__mmask16 test_mm256_mask_cmpeq_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
157  // CHECK-LABEL: @test_mm256_mask_cmpeq_epu16_mask
158  // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}
159  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
160  return (__mmask16)_mm256_mask_cmpeq_epu16_mask(__u, __a, __b);
161}
162
163__mmask16 test_mm_cmpgt_epu8_mask(__m128i __a, __m128i __b) {
164  // CHECK-LABEL: @test_mm_cmpgt_epu8_mask
165  // CHECK: icmp ugt <16 x i8> %{{.*}}, %{{.*}}
166  return (__mmask16)_mm_cmpgt_epu8_mask(__a, __b);
167}
168
169__mmask16 test_mm_mask_cmpgt_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
170  // CHECK-LABEL: @test_mm_mask_cmpgt_epu8_mask
171  // CHECK: icmp ugt <16 x i8> %{{.*}}, %{{.*}}
172  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
173  return (__mmask16)_mm_mask_cmpgt_epu8_mask(__u, __a, __b);
174}
175
176__mmask8 test_mm_cmpgt_epu16_mask(__m128i __a, __m128i __b) {
177  // CHECK-LABEL: @test_mm_cmpgt_epu16_mask
178  // CHECK: icmp ugt <8 x i16> %{{.*}}, %{{.*}}
179  return (__mmask8)_mm_cmpgt_epu16_mask(__a, __b);
180}
181
182__mmask8 test_mm_mask_cmpgt_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
183  // CHECK-LABEL: @test_mm_mask_cmpgt_epu16_mask
184  // CHECK: icmp ugt <8 x i16> %{{.*}}, %{{.*}}
185  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
186  return (__mmask8)_mm_mask_cmpgt_epu16_mask(__u, __a, __b);
187}
188
189__mmask32 test_mm256_cmpgt_epu8_mask(__m256i __a, __m256i __b) {
190  // CHECK-LABEL: @test_mm256_cmpgt_epu8_mask
191  // CHECK: icmp ugt <32 x i8> %{{.*}}, %{{.*}}
192  return (__mmask32)_mm256_cmpgt_epu8_mask(__a, __b);
193}
194
195__mmask32 test_mm256_mask_cmpgt_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
196  // CHECK-LABEL: @test_mm256_mask_cmpgt_epu8_mask
197  // CHECK: icmp ugt <32 x i8> %{{.*}}, %{{.*}}
198  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
199  return (__mmask32)_mm256_mask_cmpgt_epu8_mask(__u, __a, __b);
200}
201
202__mmask16 test_mm256_cmpgt_epu16_mask(__m256i __a, __m256i __b) {
203  // CHECK-LABEL: @test_mm256_cmpgt_epu16_mask
204  // CHECK: icmp ugt <16 x i16> %{{.*}}, %{{.*}}
205  return (__mmask16)_mm256_cmpgt_epu16_mask(__a, __b);
206}
207
208__mmask16 test_mm256_mask_cmpgt_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
209  // CHECK-LABEL: @test_mm256_mask_cmpgt_epu16_mask
210  // CHECK: icmp ugt <16 x i16> %{{.*}}, %{{.*}}
211  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
212  return (__mmask16)_mm256_mask_cmpgt_epu16_mask(__u, __a, __b);
213}
214
215__mmask16 test_mm_cmpge_epi8_mask(__m128i __a, __m128i __b) {
216  // CHECK-LABEL: @test_mm_cmpge_epi8_mask
217  // CHECK: icmp sge <16 x i8> %{{.*}}, %{{.*}}
218  return (__mmask16)_mm_cmpge_epi8_mask(__a, __b);
219}
220
221__mmask16 test_mm_mask_cmpge_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
222  // CHECK-LABEL: @test_mm_mask_cmpge_epi8_mask
223  // CHECK: icmp sge <16 x i8> %{{.*}}, %{{.*}}
224  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
225  return (__mmask16)_mm_mask_cmpge_epi8_mask(__u, __a, __b);
226}
227
228__mmask16 test_mm_cmpge_epu8_mask(__m128i __a, __m128i __b) {
229  // CHECK-LABEL: @test_mm_cmpge_epu8_mask
230  // CHECK: icmp uge <16 x i8> %{{.*}}, %{{.*}}
231  return (__mmask16)_mm_cmpge_epu8_mask(__a, __b);
232}
233
234__mmask16 test_mm_mask_cmpge_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
235  // CHECK-LABEL: @test_mm_mask_cmpge_epu8_mask
236  // CHECK: icmp uge <16 x i8> %{{.*}}, %{{.*}}
237  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
238  return (__mmask16)_mm_mask_cmpge_epu8_mask(__u, __a, __b);
239}
240
241__mmask8 test_mm_cmpge_epi16_mask(__m128i __a, __m128i __b) {
242  // CHECK-LABEL: @test_mm_cmpge_epi16_mask
243  // CHECK: icmp sge <8 x i16> %{{.*}}, %{{.*}}
244  return (__mmask8)_mm_cmpge_epi16_mask(__a, __b);
245}
246
247__mmask8 test_mm_mask_cmpge_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
248  // CHECK-LABEL: @test_mm_mask_cmpge_epi16_mask
249  // CHECK: icmp sge <8 x i16> %{{.*}}, %{{.*}}
250  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
251  return (__mmask8)_mm_mask_cmpge_epi16_mask(__u, __a, __b);
252}
253
254__mmask8 test_mm_cmpge_epu16_mask(__m128i __a, __m128i __b) {
255  // CHECK-LABEL: @test_mm_cmpge_epu16_mask
256  // CHECK: icmp uge <8 x i16> %{{.*}}, %{{.*}}
257  return (__mmask8)_mm_cmpge_epu16_mask(__a, __b);
258}
259
260__mmask8 test_mm_mask_cmpge_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
261  // CHECK-LABEL: @test_mm_mask_cmpge_epu16_mask
262  // CHECK: icmp uge <8 x i16> %{{.*}}, %{{.*}}
263  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
264  return (__mmask8)_mm_mask_cmpge_epu16_mask(__u, __a, __b);
265}
266
267__mmask32 test_mm256_cmpge_epi8_mask(__m256i __a, __m256i __b) {
268  // CHECK-LABEL: @test_mm256_cmpge_epi8_mask
269  // CHECK: icmp sge <32 x i8> %{{.*}}, %{{.*}}
270  return (__mmask32)_mm256_cmpge_epi8_mask(__a, __b);
271}
272
273__mmask32 test_mm256_mask_cmpge_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
274  // CHECK-LABEL: @test_mm256_mask_cmpge_epi8_mask
275  // CHECK: icmp sge <32 x i8> %{{.*}}, %{{.*}}
276  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
277  return (__mmask32)_mm256_mask_cmpge_epi8_mask(__u, __a, __b);
278}
279
280__mmask32 test_mm256_cmpge_epu8_mask(__m256i __a, __m256i __b) {
281  // CHECK-LABEL: @test_mm256_cmpge_epu8_mask
282  // CHECK: icmp uge <32 x i8> %{{.*}}, %{{.*}}
283  return (__mmask32)_mm256_cmpge_epu8_mask(__a, __b);
284}
285
286__mmask32 test_mm256_mask_cmpge_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
287  // CHECK-LABEL: @test_mm256_mask_cmpge_epu8_mask
288  // CHECK: icmp uge <32 x i8> %{{.*}}, %{{.*}}
289  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
290  return (__mmask32)_mm256_mask_cmpge_epu8_mask(__u, __a, __b);
291}
292
293__mmask16 test_mm256_cmpge_epi16_mask(__m256i __a, __m256i __b) {
294  // CHECK-LABEL: @test_mm256_cmpge_epi16_mask
295  // CHECK: icmp sge <16 x i16> %{{.*}}, %{{.*}}
296  return (__mmask16)_mm256_cmpge_epi16_mask(__a, __b);
297}
298
299__mmask16 test_mm256_mask_cmpge_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
300  // CHECK-LABEL: @test_mm256_mask_cmpge_epi16_mask
301  // CHECK: icmp sge <16 x i16> %{{.*}}, %{{.*}}
302  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
303  return (__mmask16)_mm256_mask_cmpge_epi16_mask(__u, __a, __b);
304}
305
306__mmask16 test_mm256_cmpge_epu16_mask(__m256i __a, __m256i __b) {
307  // CHECK-LABEL: @test_mm256_cmpge_epu16_mask
308  // CHECK: icmp uge <16 x i16> %{{.*}}, %{{.*}}
309  return (__mmask16)_mm256_cmpge_epu16_mask(__a, __b);
310}
311
312__mmask16 test_mm256_mask_cmpge_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
313  // CHECK-LABEL: @test_mm256_mask_cmpge_epu16_mask
314  // CHECK: icmp uge <16 x i16> %{{.*}}, %{{.*}}
315  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
316  return (__mmask16)_mm256_mask_cmpge_epu16_mask(__u, __a, __b);
317}
318
319__mmask16 test_mm_cmple_epi8_mask(__m128i __a, __m128i __b) {
320  // CHECK-LABEL: @test_mm_cmple_epi8_mask
321  // CHECK: icmp sle <16 x i8> %{{.*}}, %{{.*}}
322  return (__mmask16)_mm_cmple_epi8_mask(__a, __b);
323}
324
325__mmask16 test_mm_mask_cmple_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
326  // CHECK-LABEL: @test_mm_mask_cmple_epi8_mask
327  // CHECK: icmp sle <16 x i8> %{{.*}}, %{{.*}}
328  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
329  return (__mmask16)_mm_mask_cmple_epi8_mask(__u, __a, __b);
330}
331
332__mmask16 test_mm_cmple_epu8_mask(__m128i __a, __m128i __b) {
333  // CHECK-LABEL: @test_mm_cmple_epu8_mask
334  // CHECK: icmp ule <16 x i8> %{{.*}}, %{{.*}}
335  return (__mmask16)_mm_cmple_epu8_mask(__a, __b);
336}
337
338__mmask16 test_mm_mask_cmple_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
339  // CHECK-LABEL: @test_mm_mask_cmple_epu8_mask
340  // CHECK: icmp ule <16 x i8> %{{.*}}, %{{.*}}
341  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
342  return (__mmask16)_mm_mask_cmple_epu8_mask(__u, __a, __b);
343}
344
345__mmask8 test_mm_cmple_epi16_mask(__m128i __a, __m128i __b) {
346  // CHECK-LABEL: @test_mm_cmple_epi16_mask
347  // CHECK: icmp sle <8 x i16> %{{.*}}, %{{.*}}
348  return (__mmask8)_mm_cmple_epi16_mask(__a, __b);
349}
350
351__mmask8 test_mm_mask_cmple_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
352  // CHECK-LABEL: @test_mm_mask_cmple_epi16_mask
353  // CHECK: icmp sle <8 x i16> %{{.*}}, %{{.*}}
354  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
355  return (__mmask8)_mm_mask_cmple_epi16_mask(__u, __a, __b);
356}
357
358__mmask8 test_mm_cmple_epu16_mask(__m128i __a, __m128i __b) {
359  // CHECK-LABEL: @test_mm_cmple_epu16_mask
360  // CHECK: icmp ule <8 x i16> %{{.*}}, %{{.*}}
361  return (__mmask8)_mm_cmple_epu16_mask(__a, __b);
362}
363
364__mmask8 test_mm_mask_cmple_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
365  // CHECK-LABEL: @test_mm_mask_cmple_epu16_mask
366  // CHECK: icmp ule <8 x i16> %{{.*}}, %{{.*}}
367  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
368  return (__mmask8)_mm_mask_cmple_epu16_mask(__u, __a, __b);
369}
370
371__mmask32 test_mm256_cmple_epi8_mask(__m256i __a, __m256i __b) {
372  // CHECK-LABEL: @test_mm256_cmple_epi8_mask
373  // CHECK: icmp sle <32 x i8> %{{.*}}, %{{.*}}
374  return (__mmask32)_mm256_cmple_epi8_mask(__a, __b);
375}
376
377__mmask32 test_mm256_mask_cmple_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
378  // CHECK-LABEL: @test_mm256_mask_cmple_epi8_mask
379  // CHECK: icmp sle <32 x i8> %{{.*}}, %{{.*}}
380  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
381  return (__mmask32)_mm256_mask_cmple_epi8_mask(__u, __a, __b);
382}
383
384__mmask32 test_mm256_cmple_epu8_mask(__m256i __a, __m256i __b) {
385  // CHECK-LABEL: @test_mm256_cmple_epu8_mask
386  // CHECK: icmp ule <32 x i8> %{{.*}}, %{{.*}}
387  return (__mmask32)_mm256_cmple_epu8_mask(__a, __b);
388}
389
390__mmask32 test_mm256_mask_cmple_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
391  // CHECK-LABEL: @test_mm256_mask_cmple_epu8_mask
392  // CHECK: icmp ule <32 x i8> %{{.*}}, %{{.*}}
393  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
394  return (__mmask32)_mm256_mask_cmple_epu8_mask(__u, __a, __b);
395}
396
397__mmask16 test_mm256_cmple_epi16_mask(__m256i __a, __m256i __b) {
398  // CHECK-LABEL: @test_mm256_cmple_epi16_mask
399  // CHECK: icmp sle <16 x i16> %{{.*}}, %{{.*}}
400  return (__mmask16)_mm256_cmple_epi16_mask(__a, __b);
401}
402
403__mmask16 test_mm256_mask_cmple_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
404  // CHECK-LABEL: @test_mm256_mask_cmple_epi16_mask
405  // CHECK: icmp sle <16 x i16> %{{.*}}, %{{.*}}
406  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
407  return (__mmask16)_mm256_mask_cmple_epi16_mask(__u, __a, __b);
408}
409
410__mmask16 test_mm256_cmple_epu16_mask(__m256i __a, __m256i __b) {
411  // CHECK-LABEL: @test_mm256_cmple_epu16_mask
412  // CHECK: icmp ule <16 x i16> %{{.*}}, %{{.*}}
413  return (__mmask16)_mm256_cmple_epu16_mask(__a, __b);
414}
415
416__mmask16 test_mm256_mask_cmple_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
417  // CHECK-LABEL: @test_mm256_mask_cmple_epu16_mask
418  // CHECK: icmp ule <16 x i16> %{{.*}}, %{{.*}}
419  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
420  return (__mmask16)_mm256_mask_cmple_epu16_mask(__u, __a, __b);
421}
422
423__mmask16 test_mm_cmplt_epi8_mask(__m128i __a, __m128i __b) {
424  // CHECK-LABEL: @test_mm_cmplt_epi8_mask
425  // CHECK: icmp slt <16 x i8> %{{.*}}, %{{.*}}
426  return (__mmask16)_mm_cmplt_epi8_mask(__a, __b);
427}
428
429__mmask16 test_mm_mask_cmplt_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
430  // CHECK-LABEL: @test_mm_mask_cmplt_epi8_mask
431  // CHECK: icmp slt <16 x i8> %{{.*}}, %{{.*}}
432  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
433  return (__mmask16)_mm_mask_cmplt_epi8_mask(__u, __a, __b);
434}
435
436__mmask16 test_mm_cmplt_epu8_mask(__m128i __a, __m128i __b) {
437  // CHECK-LABEL: @test_mm_cmplt_epu8_mask
438  // CHECK: icmp ult <16 x i8> %{{.*}}, %{{.*}}
439  return (__mmask16)_mm_cmplt_epu8_mask(__a, __b);
440}
441
442__mmask16 test_mm_mask_cmplt_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
443  // CHECK-LABEL: @test_mm_mask_cmplt_epu8_mask
444  // CHECK: icmp ult <16 x i8> %{{.*}}, %{{.*}}
445  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
446  return (__mmask16)_mm_mask_cmplt_epu8_mask(__u, __a, __b);
447}
448
449__mmask8 test_mm_cmplt_epi16_mask(__m128i __a, __m128i __b) {
450  // CHECK-LABEL: @test_mm_cmplt_epi16_mask
451  // CHECK: icmp slt <8 x i16> %{{.*}}, %{{.*}}
452  return (__mmask8)_mm_cmplt_epi16_mask(__a, __b);
453}
454
455__mmask8 test_mm_mask_cmplt_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
456  // CHECK-LABEL: @test_mm_mask_cmplt_epi16_mask
457  // CHECK: icmp slt <8 x i16> %{{.*}}, %{{.*}}
458  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
459  return (__mmask8)_mm_mask_cmplt_epi16_mask(__u, __a, __b);
460}
461
462__mmask8 test_mm_cmplt_epu16_mask(__m128i __a, __m128i __b) {
463  // CHECK-LABEL: @test_mm_cmplt_epu16_mask
464  // CHECK: icmp ult <8 x i16> %{{.*}}, %{{.*}}
465  return (__mmask8)_mm_cmplt_epu16_mask(__a, __b);
466}
467
468__mmask8 test_mm_mask_cmplt_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
469  // CHECK-LABEL: @test_mm_mask_cmplt_epu16_mask
470  // CHECK: icmp ult <8 x i16> %{{.*}}, %{{.*}}
471  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
472  return (__mmask8)_mm_mask_cmplt_epu16_mask(__u, __a, __b);
473}
474
475__mmask32 test_mm256_cmplt_epi8_mask(__m256i __a, __m256i __b) {
476  // CHECK-LABEL: @test_mm256_cmplt_epi8_mask
477  // CHECK: icmp slt <32 x i8> %{{.*}}, %{{.*}}
478  return (__mmask32)_mm256_cmplt_epi8_mask(__a, __b);
479}
480
481__mmask32 test_mm256_mask_cmplt_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
482  // CHECK-LABEL: @test_mm256_mask_cmplt_epi8_mask
483  // CHECK: icmp slt <32 x i8> %{{.*}}, %{{.*}}
484  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
485  return (__mmask32)_mm256_mask_cmplt_epi8_mask(__u, __a, __b);
486}
487
488__mmask32 test_mm256_cmplt_epu8_mask(__m256i __a, __m256i __b) {
489  // CHECK-LABEL: @test_mm256_cmplt_epu8_mask
490  // CHECK: icmp ult <32 x i8> %{{.*}}, %{{.*}}
491  return (__mmask32)_mm256_cmplt_epu8_mask(__a, __b);
492}
493
494__mmask32 test_mm256_mask_cmplt_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
495  // CHECK-LABEL: @test_mm256_mask_cmplt_epu8_mask
496  // CHECK: icmp ult <32 x i8> %{{.*}}, %{{.*}}
497  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
498  return (__mmask32)_mm256_mask_cmplt_epu8_mask(__u, __a, __b);
499}
500
501__mmask16 test_mm256_cmplt_epi16_mask(__m256i __a, __m256i __b) {
502  // CHECK-LABEL: @test_mm256_cmplt_epi16_mask
503  // CHECK: icmp slt <16 x i16> %{{.*}}, %{{.*}}
504  return (__mmask16)_mm256_cmplt_epi16_mask(__a, __b);
505}
506
507__mmask16 test_mm256_mask_cmplt_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
508  // CHECK-LABEL: @test_mm256_mask_cmplt_epi16_mask
509  // CHECK: icmp slt <16 x i16> %{{.*}}, %{{.*}}
510  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
511  return (__mmask16)_mm256_mask_cmplt_epi16_mask(__u, __a, __b);
512}
513
514__mmask16 test_mm256_cmplt_epu16_mask(__m256i __a, __m256i __b) {
515  // CHECK-LABEL: @test_mm256_cmplt_epu16_mask
516  // CHECK: icmp ult <16 x i16> %{{.*}}, %{{.*}}
517  return (__mmask16)_mm256_cmplt_epu16_mask(__a, __b);
518}
519
520__mmask16 test_mm256_mask_cmplt_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
521  // CHECK-LABEL: @test_mm256_mask_cmplt_epu16_mask
522  // CHECK: icmp ult <16 x i16> %{{.*}}, %{{.*}}
523  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
524  return (__mmask16)_mm256_mask_cmplt_epu16_mask(__u, __a, __b);
525}
526
527__mmask16 test_mm_cmpneq_epi8_mask(__m128i __a, __m128i __b) {
528  // CHECK-LABEL: @test_mm_cmpneq_epi8_mask
529  // CHECK: icmp ne <16 x i8> %{{.*}}, %{{.*}}
530  return (__mmask16)_mm_cmpneq_epi8_mask(__a, __b);
531}
532
533__mmask16 test_mm_mask_cmpneq_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
534  // CHECK-LABEL: @test_mm_mask_cmpneq_epi8_mask
535  // CHECK: icmp ne <16 x i8> %{{.*}}, %{{.*}}
536  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
537  return (__mmask16)_mm_mask_cmpneq_epi8_mask(__u, __a, __b);
538}
539
540__mmask16 test_mm_cmpneq_epu8_mask(__m128i __a, __m128i __b) {
541  // CHECK-LABEL: @test_mm_cmpneq_epu8_mask
542  // CHECK: icmp ne <16 x i8> %{{.*}}, %{{.*}}
543  return (__mmask16)_mm_cmpneq_epu8_mask(__a, __b);
544}
545
546__mmask16 test_mm_mask_cmpneq_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
547  // CHECK-LABEL: @test_mm_mask_cmpneq_epu8_mask
548  // CHECK: icmp ne <16 x i8> %{{.*}}, %{{.*}}
549  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
550  return (__mmask16)_mm_mask_cmpneq_epu8_mask(__u, __a, __b);
551}
552
553__mmask8 test_mm_cmpneq_epi16_mask(__m128i __a, __m128i __b) {
554  // CHECK-LABEL: @test_mm_cmpneq_epi16_mask
555  // CHECK: icmp ne <8 x i16> %{{.*}}, %{{.*}}
556  return (__mmask8)_mm_cmpneq_epi16_mask(__a, __b);
557}
558
559__mmask8 test_mm_mask_cmpneq_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
560  // CHECK-LABEL: @test_mm_mask_cmpneq_epi16_mask
561  // CHECK: icmp ne <8 x i16> %{{.*}}, %{{.*}}
562  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
563  return (__mmask8)_mm_mask_cmpneq_epi16_mask(__u, __a, __b);
564}
565
566__mmask8 test_mm_cmpneq_epu16_mask(__m128i __a, __m128i __b) {
567  // CHECK-LABEL: @test_mm_cmpneq_epu16_mask
568  // CHECK: icmp ne <8 x i16> %{{.*}}, %{{.*}}
569  return (__mmask8)_mm_cmpneq_epu16_mask(__a, __b);
570}
571
572__mmask8 test_mm_mask_cmpneq_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
573  // CHECK-LABEL: @test_mm_mask_cmpneq_epu16_mask
574  // CHECK: icmp ne <8 x i16> %{{.*}}, %{{.*}}
575  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
576  return (__mmask8)_mm_mask_cmpneq_epu16_mask(__u, __a, __b);
577}
578
579__mmask32 test_mm256_cmpneq_epi8_mask(__m256i __a, __m256i __b) {
580  // CHECK-LABEL: @test_mm256_cmpneq_epi8_mask
581  // CHECK: icmp ne <32 x i8> %{{.*}}, %{{.*}}
582  return (__mmask32)_mm256_cmpneq_epi8_mask(__a, __b);
583}
584
585__mmask32 test_mm256_mask_cmpneq_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
586  // CHECK-LABEL: @test_mm256_mask_cmpneq_epi8_mask
587  // CHECK: icmp ne <32 x i8> %{{.*}}, %{{.*}}
588  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
589  return (__mmask32)_mm256_mask_cmpneq_epi8_mask(__u, __a, __b);
590}
591
592__mmask32 test_mm256_cmpneq_epu8_mask(__m256i __a, __m256i __b) {
593  // CHECK-LABEL: @test_mm256_cmpneq_epu8_mask
594  // CHECK: icmp ne <32 x i8> %{{.*}}, %{{.*}}
595  return (__mmask32)_mm256_cmpneq_epu8_mask(__a, __b);
596}
597
598__mmask32 test_mm256_mask_cmpneq_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
599  // CHECK-LABEL: @test_mm256_mask_cmpneq_epu8_mask
600  // CHECK: icmp ne <32 x i8> %{{.*}}, %{{.*}}
601  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
602  return (__mmask32)_mm256_mask_cmpneq_epu8_mask(__u, __a, __b);
603}
604
605__mmask16 test_mm256_cmpneq_epi16_mask(__m256i __a, __m256i __b) {
606  // CHECK-LABEL: @test_mm256_cmpneq_epi16_mask
607  // CHECK: icmp ne <16 x i16> %{{.*}}, %{{.*}}
608  return (__mmask16)_mm256_cmpneq_epi16_mask(__a, __b);
609}
610
611__mmask16 test_mm256_mask_cmpneq_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
612  // CHECK-LABEL: @test_mm256_mask_cmpneq_epi16_mask
613  // CHECK: icmp ne <16 x i16> %{{.*}}, %{{.*}}
614  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
615  return (__mmask16)_mm256_mask_cmpneq_epi16_mask(__u, __a, __b);
616}
617
618__mmask16 test_mm256_cmpneq_epu16_mask(__m256i __a, __m256i __b) {
619  // CHECK-LABEL: @test_mm256_cmpneq_epu16_mask
620  // CHECK: icmp ne <16 x i16> %{{.*}}, %{{.*}}
621  return (__mmask16)_mm256_cmpneq_epu16_mask(__a, __b);
622}
623
624__mmask16 test_mm256_mask_cmpneq_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
625  // CHECK-LABEL: @test_mm256_mask_cmpneq_epu16_mask
626  // CHECK: icmp ne <16 x i16> %{{.*}}, %{{.*}}
627  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
628  return (__mmask16)_mm256_mask_cmpneq_epu16_mask(__u, __a, __b);
629}
630
631__mmask16 test_mm_cmp_epi8_mask(__m128i __a, __m128i __b) {
632  // CHECK-LABEL: @test_mm_cmp_epi8_mask
633  // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
634  return (__mmask16)_mm_cmp_epi8_mask(__a, __b, 0);
635}
636
637__mmask16 test_mm_mask_cmp_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
638  // CHECK-LABEL: @test_mm_mask_cmp_epi8_mask
639  // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
640  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
641  return (__mmask16)_mm_mask_cmp_epi8_mask(__u, __a, __b, 0);
642}
643
644__mmask16 test_mm_cmp_epu8_mask(__m128i __a, __m128i __b) {
645  // CHECK-LABEL: @test_mm_cmp_epu8_mask
646  // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
647  return (__mmask16)_mm_cmp_epu8_mask(__a, __b, 0);
648}
649
650__mmask16 test_mm_mask_cmp_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
651  // CHECK-LABEL: @test_mm_mask_cmp_epu8_mask
652  // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
653  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
654  return (__mmask16)_mm_mask_cmp_epu8_mask(__u, __a, __b, 0);
655}
656
657__mmask8 test_mm_cmp_epi16_mask(__m128i __a, __m128i __b) {
658  // CHECK-LABEL: @test_mm_cmp_epi16_mask
659  // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
660  return (__mmask8)_mm_cmp_epi16_mask(__a, __b, 0);
661}
662
663__mmask8 test_mm_mask_cmp_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
664  // CHECK-LABEL: @test_mm_mask_cmp_epi16_mask
665  // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
666  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
667  return (__mmask8)_mm_mask_cmp_epi16_mask(__u, __a, __b, 0);
668}
669
670__mmask8 test_mm_cmp_epu16_mask(__m128i __a, __m128i __b) {
671  // CHECK-LABEL: @test_mm_cmp_epu16_mask
672  // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
673  return (__mmask8)_mm_cmp_epu16_mask(__a, __b, 0);
674}
675
676__mmask8 test_mm_mask_cmp_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
677  // CHECK-LABEL: @test_mm_mask_cmp_epu16_mask
678  // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
679  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
680  return (__mmask8)_mm_mask_cmp_epu16_mask(__u, __a, __b, 0);
681}
682
683__mmask32 test_mm256_cmp_epi8_mask(__m256i __a, __m256i __b) {
684  // CHECK-LABEL: @test_mm256_cmp_epi8_mask
685  // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}
686  return (__mmask32)_mm256_cmp_epi8_mask(__a, __b, 0);
687}
688
689__mmask32 test_mm256_mask_cmp_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
690  // CHECK-LABEL: @test_mm256_mask_cmp_epi8_mask
691  // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}
692  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
693  return (__mmask32)_mm256_mask_cmp_epi8_mask(__u, __a, __b, 0);
694}
695
696__mmask32 test_mm256_cmp_epu8_mask(__m256i __a, __m256i __b) {
697  // CHECK-LABEL: @test_mm256_cmp_epu8_mask
698  // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}
699  return (__mmask32)_mm256_cmp_epu8_mask(__a, __b, 0);
700}
701
702__mmask32 test_mm256_mask_cmp_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
703  // CHECK-LABEL: @test_mm256_mask_cmp_epu8_mask
704  // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}
705  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
706  return (__mmask32)_mm256_mask_cmp_epu8_mask(__u, __a, __b, 0);
707}
708
709__mmask16 test_mm256_cmp_epi16_mask(__m256i __a, __m256i __b) {
710  // CHECK-LABEL: @test_mm256_cmp_epi16_mask
711  // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}
712  return (__mmask16)_mm256_cmp_epi16_mask(__a, __b, 0);
713}
714
715__mmask16 test_mm256_mask_cmp_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
716  // CHECK-LABEL: @test_mm256_mask_cmp_epi16_mask
717  // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}
718  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
719  return (__mmask16)_mm256_mask_cmp_epi16_mask(__u, __a, __b, 0);
720}
721
722__mmask16 test_mm256_cmp_epu16_mask(__m256i __a, __m256i __b) {
723  // CHECK-LABEL: @test_mm256_cmp_epu16_mask
724  // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}
725  return (__mmask16)_mm256_cmp_epu16_mask(__a, __b, 0);
726}
727
728__mmask16 test_mm256_mask_cmp_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
729  // CHECK-LABEL: @test_mm256_mask_cmp_epu16_mask
730  // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}
731  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
732  return (__mmask16)_mm256_mask_cmp_epu16_mask(__u, __a, __b, 0);
733}
734
735
736__m256i test_mm256_mask_add_epi8 (__m256i __W, __mmask32 __U, __m256i __A, __m256i __B){
737  //CHECK-LABEL: @test_mm256_mask_add_epi8
738  //CHECK: add <32 x i8> %{{.*}}, %{{.*}}
739  //CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
740  return _mm256_mask_add_epi8(__W, __U , __A, __B);
741}
742
743__m256i test_mm256_maskz_add_epi8 (__mmask32 __U, __m256i __A, __m256i __B) {
744  //CHECK-LABEL: @test_mm256_maskz_add_epi8
745  //CHECK: add <32 x i8> %{{.*}}, %{{.*}}
746  //CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
747  return _mm256_maskz_add_epi8(__U , __A, __B);
748}
749__m256i test_mm256_mask_add_epi16 (__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
750  //CHECK-LABEL: @test_mm256_mask_add_epi16
751  //CHECK: add <16 x i16> %{{.*}}, %{{.*}}
752  //CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
753  return _mm256_mask_add_epi16(__W, __U , __A, __B);
754}
755
756__m256i test_mm256_maskz_add_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
757  //CHECK-LABEL: @test_mm256_maskz_add_epi16
758  //CHECK: add <16 x i16> %{{.*}}, %{{.*}}
759  //CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
760  return _mm256_maskz_add_epi16(__U , __A, __B);
761}
762
763__m256i test_mm256_mask_sub_epi8 (__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
764  //CHECK-LABEL: @test_mm256_mask_sub_epi8
765  //CHECK: sub <32 x i8> %{{.*}}, %{{.*}}
766  //CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
767  return _mm256_mask_sub_epi8(__W, __U , __A, __B);
768}
769
770__m256i test_mm256_maskz_sub_epi8 (__mmask32 __U, __m256i __A, __m256i __B) {
771  //CHECK-LABEL: @test_mm256_maskz_sub_epi8
772  //CHECK: sub <32 x i8> %{{.*}}, %{{.*}}
773  //CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
774  return _mm256_maskz_sub_epi8(__U , __A, __B);
775}
776
777__m256i test_mm256_mask_sub_epi16 (__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
778  //CHECK-LABEL: @test_mm256_mask_sub_epi16
779  //CHECK: sub <16 x i16> %{{.*}}, %{{.*}}
780  //CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
781  return _mm256_mask_sub_epi16(__W, __U , __A, __B);
782}
783
784__m256i test_mm256_maskz_sub_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
785  //CHECK-LABEL: @test_mm256_maskz_sub_epi16
786  //CHECK: sub <16 x i16> %{{.*}}, %{{.*}}
787  //CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
788  return _mm256_maskz_sub_epi16(__U , __A, __B);
789}
790
791__m128i test_mm_mask_add_epi8 (__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
792  //CHECK-LABEL: @test_mm_mask_add_epi8
793  //CHECK: add <16 x i8> %{{.*}}, %{{.*}}
794  //CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
795  return _mm_mask_add_epi8(__W, __U , __A, __B);
796}
797
798__m128i test_mm_maskz_add_epi8 (__mmask16 __U, __m128i __A, __m128i __B) {
799  //CHECK-LABEL: @test_mm_maskz_add_epi8
800  //CHECK: add <16 x i8> %{{.*}}, %{{.*}}
801  //CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
802  return _mm_maskz_add_epi8(__U , __A, __B);
803}
804
805__m128i test_mm_mask_add_epi16 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
806  //CHECK-LABEL: @test_mm_mask_add_epi16
807  //CHECK: add <8 x i16> %{{.*}}, %{{.*}}
808  //CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
809  return _mm_mask_add_epi16(__W, __U , __A, __B);
810}
811
812__m128i test_mm_maskz_add_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
813  //CHECK-LABEL: @test_mm_maskz_add_epi16
814  //CHECK: add <8 x i16> %{{.*}}, %{{.*}}
815  //CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
816  return _mm_maskz_add_epi16(__U , __A, __B);
817}
818
819__m128i test_mm_mask_sub_epi8 (__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
820  //CHECK-LABEL: @test_mm_mask_sub_epi8
821  //CHECK: sub <16 x i8> %{{.*}}, %{{.*}}
822  //CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
823  return _mm_mask_sub_epi8(__W, __U , __A, __B);
824}
825
826__m128i test_mm_maskz_sub_epi8 (__mmask16 __U, __m128i __A, __m128i __B) {
827  //CHECK-LABEL: @test_mm_maskz_sub_epi8
828  //CHECK: sub <16 x i8> %{{.*}}, %{{.*}}
829  //CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
830  return _mm_maskz_sub_epi8(__U , __A, __B);
831}
832
833__m128i test_mm_mask_sub_epi16 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
834  //CHECK-LABEL: @test_mm_mask_sub_epi16
835  //CHECK: sub <8 x i16> %{{.*}}, %{{.*}}
836  //CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
837  return _mm_mask_sub_epi16(__W, __U , __A, __B);
838}
839
840__m128i test_mm_maskz_sub_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
841  //CHECK-LABEL: @test_mm_maskz_sub_epi16
842  //CHECK: sub <8 x i16> %{{.*}}, %{{.*}}
843  //CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
844  return _mm_maskz_sub_epi16(__U , __A, __B);
845}
846
847__m256i test_mm256_mask_mullo_epi16 (__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
848  //CHECK-LABEL: @test_mm256_mask_mullo_epi16
849  //CHECK: mul <16 x i16> %{{.*}}, %{{.*}}
850  //CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
851  return _mm256_mask_mullo_epi16(__W, __U , __A, __B);
852}
853
854__m256i test_mm256_maskz_mullo_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
855  //CHECK-LABEL: @test_mm256_maskz_mullo_epi16
856  //CHECK: mul <16 x i16> %{{.*}}, %{{.*}}
857  //CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
858  return _mm256_maskz_mullo_epi16(__U , __A, __B);
859}
860
861__m128i test_mm_mask_mullo_epi16 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
862  //CHECK-LABEL: @test_mm_mask_mullo_epi16
863  //CHECK: mul <8 x i16> %{{.*}}, %{{.*}}
864  //CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
865  return _mm_mask_mullo_epi16(__W, __U , __A, __B);
866}
867
868__m128i test_mm_maskz_mullo_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
869  //CHECK-LABEL: @test_mm_maskz_mullo_epi16
870  //CHECK: mul <8 x i16> %{{.*}}, %{{.*}}
871  //CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
872  return _mm_maskz_mullo_epi16(__U , __A, __B);
873}
874
875
876__m128i test_mm_mask_blend_epi8(__mmask16 __U, __m128i __A, __m128i __W) {
877  // CHECK-LABEL: @test_mm_mask_blend_epi8
878  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
879  return _mm_mask_blend_epi8(__U,__A,__W); 
880}
881__m256i test_mm256_mask_blend_epi8(__mmask32 __U, __m256i __A, __m256i __W) {
882  // CHECK-LABEL: @test_mm256_mask_blend_epi8
883  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
884  return _mm256_mask_blend_epi8(__U,__A,__W); 
885}
886
887__m128i test_mm_mask_blend_epi16(__mmask8 __U, __m128i __A, __m128i __W) {
888  // CHECK-LABEL: @test_mm_mask_blend_epi16
889  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
890  return _mm_mask_blend_epi16(__U,__A,__W); 
891}
892
893__m256i test_mm256_mask_blend_epi16(__mmask16 __U, __m256i __A, __m256i __W) {
894  // CHECK-LABEL: @test_mm256_mask_blend_epi16
895  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
896  return _mm256_mask_blend_epi16(__U,__A,__W); 
897}
898
899__m128i test_mm_mask_abs_epi8(__m128i __W, __mmask16 __U, __m128i __A) {
900  // CHECK-LABEL: @test_mm_mask_abs_epi8
901  // CHECK: [[SUB:%.*]] = sub <16 x i8> zeroinitializer, [[A:%.*]]
902  // CHECK: [[CMP:%.*]] = icmp sgt <16 x i8> [[A]], zeroinitializer
903  // CHECK: [[SEL:%.*]] = select <16 x i1> [[CMP]], <16 x i8> [[A]], <16 x i8> [[SUB]]
904  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> [[SEL]], <16 x i8> %{{.*}}
905  return _mm_mask_abs_epi8(__W,__U,__A); 
906}
907
908__m128i test_mm_maskz_abs_epi8(__mmask16 __U, __m128i __A) {
909  // CHECK-LABEL: @test_mm_maskz_abs_epi8
910  // CHECK: [[SUB:%.*]] = sub <16 x i8> zeroinitializer, [[A:%.*]]
911  // CHECK: [[CMP:%.*]] = icmp sgt <16 x i8> [[A]], zeroinitializer
912  // CHECK: [[SEL:%.*]] = select <16 x i1> [[CMP]], <16 x i8> [[A]], <16 x i8> [[SUB]]
913  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> [[SEL]], <16 x i8> %{{.*}}
914  return _mm_maskz_abs_epi8(__U,__A); 
915}
916
917__m256i test_mm256_mask_abs_epi8(__m256i __W, __mmask32 __U, __m256i __A) {
918  // CHECK-LABEL: @test_mm256_mask_abs_epi8
919  // CHECK: [[SUB:%.*]] = sub <32 x i8> zeroinitializer, [[A:%.*]]
920  // CHECK: [[CMP:%.*]] = icmp sgt <32 x i8> [[A]], zeroinitializer
921  // CHECK: [[SEL:%.*]] = select <32 x i1> [[CMP]], <32 x i8> [[A]], <32 x i8> [[SUB]]
922  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> [[SEL]], <32 x i8> %{{.*}}
923  return _mm256_mask_abs_epi8(__W,__U,__A); 
924}
925
926__m256i test_mm256_maskz_abs_epi8(__mmask32 __U, __m256i __A) {
927  // CHECK-LABEL: @test_mm256_maskz_abs_epi8
928  // CHECK: [[SUB:%.*]] = sub <32 x i8> zeroinitializer, [[A:%.*]]
929  // CHECK: [[CMP:%.*]] = icmp sgt <32 x i8> [[A]], zeroinitializer
930  // CHECK: [[SEL:%.*]] = select <32 x i1> [[CMP]], <32 x i8> [[A]], <32 x i8> [[SUB]]
931  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> [[SEL]], <32 x i8> %{{.*}}
932  return _mm256_maskz_abs_epi8(__U,__A); 
933}
934
935__m128i test_mm_mask_abs_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
936  // CHECK-LABEL: @test_mm_mask_abs_epi16
937  // CHECK: [[SUB:%.*]] = sub <8 x i16> zeroinitializer, [[A:%.*]]
938  // CHECK: [[CMP:%.*]] = icmp sgt <8 x i16> [[A]], zeroinitializer
939  // CHECK: [[SEL:%.*]] = select <8 x i1> [[CMP]], <8 x i16> [[A]], <8 x i16> [[SUB]]
940  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> [[SEL]], <8 x i16> %{{.*}}
941  return _mm_mask_abs_epi16(__W,__U,__A); 
942}
943
944__m128i test_mm_maskz_abs_epi16(__mmask8 __U, __m128i __A) {
945  // CHECK-LABEL: @test_mm_maskz_abs_epi16
946  // CHECK: [[SUB:%.*]] = sub <8 x i16> zeroinitializer, [[A:%.*]]
947  // CHECK: [[CMP:%.*]] = icmp sgt <8 x i16> [[A]], zeroinitializer
948  // CHECK: [[SEL:%.*]] = select <8 x i1> [[CMP]], <8 x i16> [[A]], <8 x i16> [[SUB]]
949  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> [[SEL]], <8 x i16> %{{.*}}
950  return _mm_maskz_abs_epi16(__U,__A); 
951}
952
953__m256i test_mm256_mask_abs_epi16(__m256i __W, __mmask16 __U, __m256i __A) {
954  // CHECK-LABEL: @test_mm256_mask_abs_epi16
955  // CHECK: [[SUB:%.*]] = sub <16 x i16> zeroinitializer, [[A:%.*]]
956  // CHECK: [[CMP:%.*]] = icmp sgt <16 x i16> [[A]], zeroinitializer
957  // CHECK: [[SEL:%.*]] = select <16 x i1> [[CMP]], <16 x i16> [[A]], <16 x i16> [[SUB]]
958  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> [[SEL]], <16 x i16> %{{.*}}
959  return _mm256_mask_abs_epi16(__W,__U,__A); 
960}
961
962__m256i test_mm256_maskz_abs_epi16(__mmask16 __U, __m256i __A) {
963  // CHECK-LABEL: @test_mm256_maskz_abs_epi16
964  // CHECK: [[SUB:%.*]] = sub <16 x i16> zeroinitializer, [[A:%.*]]
965  // CHECK: [[CMP:%.*]] = icmp sgt <16 x i16> [[A]], zeroinitializer
966  // CHECK: [[SEL:%.*]] = select <16 x i1> [[CMP]], <16 x i16> [[A]], <16 x i16> [[SUB]]
967  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> [[SEL]], <16 x i16> %{{.*}}
968  return _mm256_maskz_abs_epi16(__U,__A); 
969}
970
971__m128i test_mm_maskz_packs_epi32(__mmask8 __M, __m128i __A, __m128i __B) {
972  // CHECK-LABEL: @test_mm_maskz_packs_epi32
973  // CHECK: @llvm.x86.sse2.packssdw
974  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
975  return _mm_maskz_packs_epi32(__M,__A,__B); 
976}
977__m128i test_mm_mask_packs_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
978  // CHECK-LABEL: @test_mm_mask_packs_epi32
979  // CHECK: @llvm.x86.sse2.packssdw
980  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
981  return _mm_mask_packs_epi32(__W,__M,__A,__B); 
982}
983__m256i test_mm256_maskz_packs_epi32(__mmask16 __M, __m256i __A, __m256i __B) {
984  // CHECK-LABEL: @test_mm256_maskz_packs_epi32
985  // CHECK: @llvm.x86.avx2.packssdw
986  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
987  return _mm256_maskz_packs_epi32(__M,__A,__B); 
988}
989__m256i test_mm256_mask_packs_epi32(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {
990  // CHECK-LABEL: @test_mm256_mask_packs_epi32
991  // CHECK: @llvm.x86.avx2.packssdw
992  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
993  return _mm256_mask_packs_epi32(__W,__M,__A,__B); 
994}
995__m128i test_mm_maskz_packs_epi16(__mmask16 __M, __m128i __A, __m128i __B) {
996  // CHECK-LABEL: @test_mm_maskz_packs_epi16
997  // CHECK: @llvm.x86.sse2.packsswb
998  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
999  return _mm_maskz_packs_epi16(__M,__A,__B); 
1000}
1001__m128i test_mm_mask_packs_epi16(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) {
1002  // CHECK-LABEL: @test_mm_mask_packs_epi16
1003  // CHECK: @llvm.x86.sse2.packsswb
1004  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1005  return _mm_mask_packs_epi16(__W,__M,__A,__B); 
1006}
1007__m256i test_mm256_maskz_packs_epi16(__mmask32 __M, __m256i __A, __m256i __B) {
1008  // CHECK-LABEL: @test_mm256_maskz_packs_epi16
1009  // CHECK: @llvm.x86.avx2.packsswb
1010  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1011  return _mm256_maskz_packs_epi16(__M,__A,__B); 
1012}
1013__m256i test_mm256_mask_packs_epi16(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) {
1014  // CHECK-LABEL: @test_mm256_mask_packs_epi16
1015  // CHECK: @llvm.x86.avx2.packsswb
1016  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1017  return _mm256_mask_packs_epi16(__W,__M,__A,__B); 
1018}
1019
1020__m128i test_mm_mask_packus_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
1021  // CHECK-LABEL: @test_mm_mask_packus_epi32
1022  // CHECK: @llvm.x86.sse41.packusdw
1023  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1024  return _mm_mask_packus_epi32(__W,__M,__A,__B); 
1025}
1026
1027__m128i test_mm_maskz_packus_epi32(__mmask8 __M, __m128i __A, __m128i __B) {
1028  // CHECK-LABEL: @test_mm_maskz_packus_epi32
1029  // CHECK: @llvm.x86.sse41.packusdw
1030  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1031  return _mm_maskz_packus_epi32(__M,__A,__B); 
1032}
1033
1034__m256i test_mm256_maskz_packus_epi32(__mmask16 __M, __m256i __A, __m256i __B) {
1035  // CHECK-LABEL: @test_mm256_maskz_packus_epi32
1036  // CHECK: @llvm.x86.avx2.packusdw
1037  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1038  return _mm256_maskz_packus_epi32(__M,__A,__B); 
1039}
1040
1041__m256i test_mm256_mask_packus_epi32(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {
1042  // CHECK-LABEL: @test_mm256_mask_packus_epi32
1043  // CHECK: @llvm.x86.avx2.packusdw
1044  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1045  return _mm256_mask_packus_epi32(__W,__M,__A,__B); 
1046}
1047
1048__m128i test_mm_maskz_packus_epi16(__mmask16 __M, __m128i __A, __m128i __B) {
1049  // CHECK-LABEL: @test_mm_maskz_packus_epi16
1050  // CHECK: @llvm.x86.sse2.packuswb
1051  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1052  return _mm_maskz_packus_epi16(__M,__A,__B); 
1053}
1054
1055__m128i test_mm_mask_packus_epi16(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) {
1056  // CHECK-LABEL: @test_mm_mask_packus_epi16
1057  // CHECK: @llvm.x86.sse2.packuswb
1058  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1059  return _mm_mask_packus_epi16(__W,__M,__A,__B); 
1060}
1061
1062__m256i test_mm256_maskz_packus_epi16(__mmask32 __M, __m256i __A, __m256i __B) {
1063  // CHECK-LABEL: @test_mm256_maskz_packus_epi16
1064  // CHECK: @llvm.x86.avx2.packuswb
1065  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1066  return _mm256_maskz_packus_epi16(__M,__A,__B); 
1067}
1068
1069__m256i test_mm256_mask_packus_epi16(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) {
1070  // CHECK-LABEL: @test_mm256_mask_packus_epi16
1071  // CHECK: @llvm.x86.avx2.packuswb
1072  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1073  return _mm256_mask_packus_epi16(__W,__M,__A,__B); 
1074}
1075
1076__m128i test_mm_mask_adds_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
1077  // CHECK-LABEL: @test_mm_mask_adds_epi8
1078  // CHECK: @llvm.sadd.sat.v16i8
1079  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1080  return _mm_mask_adds_epi8(__W,__U,__A,__B); 
1081}
1082__m128i test_mm_maskz_adds_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
1083  // CHECK-LABEL: @test_mm_maskz_adds_epi8
1084  // CHECK: @llvm.sadd.sat.v16i8
1085  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1086  return _mm_maskz_adds_epi8(__U,__A,__B); 
1087}
1088__m256i test_mm256_mask_adds_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
1089  // CHECK-LABEL: @test_mm256_mask_adds_epi8
1090  // CHECK: @llvm.sadd.sat.v32i8
1091  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1092  return _mm256_mask_adds_epi8(__W,__U,__A,__B); 
1093}
1094__m256i test_mm256_maskz_adds_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
1095  // CHECK-LABEL: @test_mm256_maskz_adds_epi8
1096  // CHECK: @llvm.sadd.sat.v32i8
1097  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1098  return _mm256_maskz_adds_epi8(__U,__A,__B); 
1099}
1100__m128i test_mm_mask_adds_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1101  // CHECK-LABEL: @test_mm_mask_adds_epi16
1102  // CHECK: @llvm.sadd.sat.v8i16
1103  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1104  return _mm_mask_adds_epi16(__W,__U,__A,__B); 
1105}
1106__m128i test_mm_maskz_adds_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
1107  // CHECK-LABEL: @test_mm_maskz_adds_epi16
1108  // CHECK: @llvm.sadd.sat.v8i16
1109  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1110  return _mm_maskz_adds_epi16(__U,__A,__B); 
1111}
1112__m256i test_mm256_mask_adds_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1113  // CHECK-LABEL: @test_mm256_mask_adds_epi16
1114  // CHECK: @llvm.sadd.sat.v16i16
1115  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1116  return _mm256_mask_adds_epi16(__W,__U,__A,__B); 
1117}
1118__m256i test_mm256_maskz_adds_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
1119  // CHECK-LABEL: @test_mm256_maskz_adds_epi16
1120  // CHECK: @llvm.sadd.sat.v16i16
1121  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1122  return _mm256_maskz_adds_epi16(__U,__A,__B); 
1123}
1124__m128i test_mm_mask_adds_epu8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
1125  // CHECK-LABEL: @test_mm_mask_adds_epu8
1126  // CHECK-NOT: @llvm.x86.sse2.paddus.b
1127  // CHECK: call <16 x i8> @llvm.uadd.sat.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1128  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1129  return _mm_mask_adds_epu8(__W,__U,__A,__B); 
1130}
1131__m128i test_mm_maskz_adds_epu8(__mmask16 __U, __m128i __A, __m128i __B) {
1132  // CHECK-LABEL: @test_mm_maskz_adds_epu8
1133  // CHECK-NOT: @llvm.x86.sse2.paddus.b
1134  // CHECK: call <16 x i8> @llvm.uadd.sat.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1135  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1136  return _mm_maskz_adds_epu8(__U,__A,__B); 
1137}
1138__m256i test_mm256_mask_adds_epu8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
1139  // CHECK-LABEL: @test_mm256_mask_adds_epu8
1140  // CHECK-NOT: @llvm.x86.avx2.paddus.b
1141  // CHECK: call <32 x i8> @llvm.uadd.sat.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})
1142  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1143  return _mm256_mask_adds_epu8(__W,__U,__A,__B); 
1144}
1145__m256i test_mm256_maskz_adds_epu8(__mmask32 __U, __m256i __A, __m256i __B) {
1146  // CHECK-LABEL: @test_mm256_maskz_adds_epu8
1147  // CHECK-NOT: @llvm.x86.avx2.paddus.b
1148  // CHECK: call <32 x i8> @llvm.uadd.sat.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})
1149  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1150  return _mm256_maskz_adds_epu8(__U,__A,__B); 
1151}
1152__m128i test_mm_mask_adds_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1153  // CHECK-LABEL: @test_mm_mask_adds_epu16
1154  // CHECK-NOT: @llvm.x86.sse2.paddus.w
1155  // CHECK: call <8 x i16> @llvm.uadd.sat.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1156  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1157  return _mm_mask_adds_epu16(__W,__U,__A,__B); 
1158}
1159__m128i test_mm_maskz_adds_epu16(__mmask8 __U, __m128i __A, __m128i __B) {
1160  // CHECK-LABEL: @test_mm_maskz_adds_epu16
1161  // CHECK-NOT: @llvm.x86.sse2.paddus.w
1162  // CHECK: call <8 x i16> @llvm.uadd.sat.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1163  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1164  return _mm_maskz_adds_epu16(__U,__A,__B); 
1165}
1166__m256i test_mm256_mask_adds_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1167  // CHECK-LABEL: @test_mm256_mask_adds_epu16
1168  // CHECK-NOT: @llvm.x86.avx2.paddus.w
1169  // CHECK: call <16 x i16> @llvm.uadd.sat.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})
1170  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1171  return _mm256_mask_adds_epu16(__W,__U,__A,__B); 
1172}
1173__m256i test_mm256_maskz_adds_epu16(__mmask16 __U, __m256i __A, __m256i __B) {
1174  // CHECK-LABEL: @test_mm256_maskz_adds_epu16
1175  // CHECK-NOT: @llvm.x86.avx2.paddus.w
1176  // CHECK: call <16 x i16> @llvm.uadd.sat.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})
1177  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1178  return _mm256_maskz_adds_epu16(__U,__A,__B); 
1179}
1180__m128i test_mm_mask_avg_epu8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
1181  // CHECK-LABEL: @test_mm_mask_avg_epu8
1182  // CHECK-NOT: @llvm.x86.sse2.pavg.b
1183  // CHECK: zext <16 x i8> %{{.*}} to <16 x i16>
1184  // CHECK: zext <16 x i8> %{{.*}} to <16 x i16>
1185  // CHECK: add <16 x i16> %{{.*}}, %{{.*}}
1186  // CHECK: add <16 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>
1187  // CHECK: lshr <16 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>
1188  // CHECK: trunc <16 x i16> %{{.*}} to <16 x i8>
1189  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1190  return _mm_mask_avg_epu8(__W,__U,__A,__B); 
1191}
1192__m128i test_mm_maskz_avg_epu8(__mmask16 __U, __m128i __A, __m128i __B) {
1193  // CHECK-LABEL: @test_mm_maskz_avg_epu8
1194  // CHECK-NOT: @llvm.x86.sse2.pavg.b
1195  // CHECK: zext <16 x i8> %{{.*}} to <16 x i16>
1196  // CHECK: zext <16 x i8> %{{.*}} to <16 x i16>
1197  // CHECK: add <16 x i16> %{{.*}}, %{{.*}}
1198  // CHECK: add <16 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>
1199  // CHECK: lshr <16 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>
1200  // CHECK: trunc <16 x i16> %{{.*}} to <16 x i8>
1201  // CHECK: store <2 x i64> zeroinitializer
1202  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1203  return _mm_maskz_avg_epu8(__U,__A,__B); 
1204}
1205__m256i test_mm256_mask_avg_epu8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
1206  // CHECK-LABEL: @test_mm256_mask_avg_epu8
1207  // CHECK-NOT: @llvm.x86.avx2.pavg.b
1208  // CHECK: zext <32 x i8> %{{.*}} to <32 x i16>
1209  // CHECK: zext <32 x i8> %{{.*}} to <32 x i16>
1210  // CHECK: add <32 x i16> %{{.*}}, %{{.*}}
1211  // CHECK: add <32 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>
1212  // CHECK: lshr <32 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>
1213  // CHECK: trunc <32 x i16> %{{.*}} to <32 x i8>
1214  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1215  return _mm256_mask_avg_epu8(__W,__U,__A,__B); 
1216}
1217__m256i test_mm256_maskz_avg_epu8(__mmask32 __U, __m256i __A, __m256i __B) {
1218  // CHECK-LABEL: @test_mm256_maskz_avg_epu8
1219  // CHECK-NOT: @llvm.x86.avx2.pavg.b
1220  // CHECK: zext <32 x i8> %{{.*}} to <32 x i16>
1221  // CHECK: zext <32 x i8> %{{.*}} to <32 x i16>
1222  // CHECK: add <32 x i16> %{{.*}}, %{{.*}}
1223  // CHECK: add <32 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>
1224  // CHECK: lshr <32 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>
1225  // CHECK: trunc <32 x i16> %{{.*}} to <32 x i8>
1226  // CHECK: store <4 x i64> zeroinitializer
1227  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1228  return _mm256_maskz_avg_epu8(__U,__A,__B); 
1229}
1230__m128i test_mm_mask_avg_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1231  // CHECK-LABEL: @test_mm_mask_avg_epu16
1232  // CHECK-NOT: @llvm.x86.sse2.pavg.w
1233  // CHECK: zext <8 x i16> %{{.*}} to <8 x i32>
1234  // CHECK: zext <8 x i16> %{{.*}} to <8 x i32>
1235  // CHECK: add <8 x i32> %{{.*}}, %{{.*}}
1236  // CHECK: add <8 x i32> %{{.*}}, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
1237  // CHECK: lshr <8 x i32> %{{.*}}, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
1238  // CHECK: trunc <8 x i32> %{{.*}} to <8 x i16>
1239  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1240  return _mm_mask_avg_epu16(__W,__U,__A,__B); 
1241}
1242__m128i test_mm_maskz_avg_epu16(__mmask8 __U, __m128i __A, __m128i __B) {
1243  // CHECK-LABEL: @test_mm_maskz_avg_epu16
1244  // CHECK-NOT: @llvm.x86.sse2.pavg.w
1245  // CHECK: zext <8 x i16> %{{.*}} to <8 x i32>
1246  // CHECK: zext <8 x i16> %{{.*}} to <8 x i32>
1247  // CHECK: add <8 x i32> %{{.*}}, %{{.*}}
1248  // CHECK: add <8 x i32> %{{.*}}, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
1249  // CHECK: lshr <8 x i32> %{{.*}}, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
1250  // CHECK: trunc <8 x i32> %{{.*}} to <8 x i16>
1251  // CHECK: store <2 x i64> zeroinitializer
1252  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1253  return _mm_maskz_avg_epu16(__U,__A,__B); 
1254}
1255__m256i test_mm256_mask_avg_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1256  // CHECK-LABEL: @test_mm256_mask_avg_epu16
1257  // CHECK-NOT: @llvm.x86.avx2.pavg.w
1258  // CHECK: zext <16 x i16> %{{.*}} to <16 x i32>
1259  // CHECK: zext <16 x i16> %{{.*}} to <16 x i32>
1260  // CHECK: add <16 x i32> %{{.*}}, %{{.*}}
1261  // CHECK: add <16 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>
1262  // CHECK: lshr <16 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>
1263  // CHECK: trunc <16 x i32> %{{.*}} to <16 x i16>
1264  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1265  return _mm256_mask_avg_epu16(__W,__U,__A,__B); 
1266}
1267__m256i test_mm256_maskz_avg_epu16(__mmask16 __U, __m256i __A, __m256i __B) {
1268  // CHECK-LABEL: @test_mm256_maskz_avg_epu16
1269  // CHECK-NOT: @llvm.x86.avx2.pavg.w
1270  // CHECK: zext <16 x i16> %{{.*}} to <16 x i32>
1271  // CHECK: zext <16 x i16> %{{.*}} to <16 x i32>
1272  // CHECK: add <16 x i32> %{{.*}}, %{{.*}}
1273  // CHECK: add <16 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>
1274  // CHECK: lshr <16 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>
1275  // CHECK: trunc <16 x i32> %{{.*}} to <16 x i16>
1276  // CHECK: store <4 x i64> zeroinitializer
1277  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1278  return _mm256_maskz_avg_epu16(__U,__A,__B); 
1279}
1280__m128i test_mm_maskz_max_epi8(__mmask16 __M, __m128i __A, __m128i __B) {
1281  // CHECK-LABEL: @test_mm_maskz_max_epi8
1282  // CHECK:       [[CMP:%.*]] = icmp sgt <16 x i8> [[X:%.*]], [[Y:%.*]]
1283  // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i8> [[X]], <16 x i8> [[Y]]
1284  // CHECK:       select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}
1285  return _mm_maskz_max_epi8(__M,__A,__B); 
1286}
1287__m128i test_mm_mask_max_epi8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) {
1288  // CHECK-LABEL: @test_mm_mask_max_epi8
1289  // CHECK:       [[CMP:%.*]] = icmp sgt <16 x i8> [[X:%.*]], [[Y:%.*]]
1290  // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i8> [[X]], <16 x i8> [[Y]]
1291  // CHECK:       select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}
1292  return _mm_mask_max_epi8(__W,__M,__A,__B); 
1293}
1294__m256i test_mm256_maskz_max_epi8(__mmask32 __M, __m256i __A, __m256i __B) {
1295  // CHECK-LABEL: @test_mm256_maskz_max_epi8
1296  // CHECK:       [[CMP:%.*]] = icmp sgt <32 x i8> [[X:%.*]], [[Y:%.*]]
1297  // CHECK-NEXT:  [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i8> [[X]], <32 x i8> [[Y]]
1298  // CHECK:       select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}
1299  return _mm256_maskz_max_epi8(__M,__A,__B); 
1300}
1301__m256i test_mm256_mask_max_epi8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) {
1302  // CHECK-LABEL: @test_mm256_mask_max_epi8
1303  // CHECK:       [[CMP:%.*]] = icmp sgt <32 x i8> [[X:%.*]], [[Y:%.*]]
1304  // CHECK-NEXT:  [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i8> [[X]], <32 x i8> [[Y]]
1305  // CHECK:       select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}
1306  return _mm256_mask_max_epi8(__W,__M,__A,__B); 
1307}
1308__m128i test_mm_maskz_max_epi16(__mmask8 __M, __m128i __A, __m128i __B) {
1309  // CHECK-LABEL: @test_mm_maskz_max_epi16
1310  // CHECK:       [[CMP:%.*]] = icmp sgt <8 x i16> [[X:%.*]], [[Y:%.*]]
1311  // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i16> [[X]], <8 x i16> [[Y]]
1312  // CHECK:       select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}
1313  return _mm_maskz_max_epi16(__M,__A,__B); 
1314}
1315__m128i test_mm_mask_max_epi16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
1316  // CHECK-LABEL: @test_mm_mask_max_epi16
1317  // CHECK:       [[CMP:%.*]] = icmp sgt <8 x i16> [[X:%.*]], [[Y:%.*]]
1318  // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i16> [[X]], <8 x i16> [[Y]]
1319  // CHECK:       select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}
1320  return _mm_mask_max_epi16(__W,__M,__A,__B); 
1321}
1322__m256i test_mm256_maskz_max_epi16(__mmask16 __M, __m256i __A, __m256i __B) {
1323  // CHECK-LABEL: @test_mm256_maskz_max_epi16
1324  // CHECK:       [[CMP:%.*]] = icmp sgt <16 x i16> [[X:%.*]], [[Y:%.*]]
1325  // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i16> [[X]], <16 x i16> [[Y]]
1326  // CHECK:       select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}
1327  return _mm256_maskz_max_epi16(__M,__A,__B); 
1328}
1329__m256i test_mm256_mask_max_epi16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {
1330  // CHECK-LABEL: @test_mm256_mask_max_epi16
1331  // CHECK:       [[CMP:%.*]] = icmp sgt <16 x i16> [[X:%.*]], [[Y:%.*]]
1332  // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i16> [[X]], <16 x i16> [[Y]]
1333  // CHECK:       select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}
1334  return _mm256_mask_max_epi16(__W,__M,__A,__B); 
1335}
1336__m128i test_mm_maskz_max_epu8(__mmask16 __M, __m128i __A, __m128i __B) {
1337  // CHECK-LABEL: @test_mm_maskz_max_epu8
1338  // CHECK:       [[CMP:%.*]] = icmp ugt <16 x i8> [[X:%.*]], [[Y:%.*]]
1339  // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i8> [[X]], <16 x i8> [[Y]]
1340  // CHECK:       select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}
1341  return _mm_maskz_max_epu8(__M,__A,__B); 
1342}
1343__m128i test_mm_mask_max_epu8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) {
1344  // CHECK-LABEL: @test_mm_mask_max_epu8
1345  // CHECK:       [[CMP:%.*]] = icmp ugt <16 x i8> [[X:%.*]], [[Y:%.*]]
1346  // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i8> [[X]], <16 x i8> [[Y]]
1347  // CHECK:       select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}
1348  return _mm_mask_max_epu8(__W,__M,__A,__B); 
1349}
1350__m256i test_mm256_maskz_max_epu8(__mmask32 __M, __m256i __A, __m256i __B) {
1351  // CHECK-LABEL: @test_mm256_maskz_max_epu8
1352  // CHECK:       [[CMP:%.*]] = icmp ugt <32 x i8> [[X:%.*]], [[Y:%.*]]
1353  // CHECK-NEXT:  [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i8> [[X]], <32 x i8> [[Y]]
1354  // CHECK:       select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}
1355  return _mm256_maskz_max_epu8(__M,__A,__B); 
1356}
1357__m256i test_mm256_mask_max_epu8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) {
1358  // CHECK-LABEL: @test_mm256_mask_max_epu8
1359  // CHECK:       [[CMP:%.*]] = icmp ugt <32 x i8> [[X:%.*]], [[Y:%.*]]
1360  // CHECK-NEXT:  [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i8> [[X]], <32 x i8> [[Y]]
1361  // CHECK:       select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}
1362  return _mm256_mask_max_epu8(__W,__M,__A,__B); 
1363}
1364__m128i test_mm_maskz_max_epu16(__mmask8 __M, __m128i __A, __m128i __B) {
1365  // CHECK-LABEL: @test_mm_maskz_max_epu16
1366  // CHECK:       [[CMP:%.*]] = icmp ugt <8 x i16> [[X:%.*]], [[Y:%.*]]
1367  // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i16> [[X]], <8 x i16> [[Y]]
1368  // CHECK:       select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}
1369  return _mm_maskz_max_epu16(__M,__A,__B); 
1370}
1371__m128i test_mm_mask_max_epu16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
1372  // CHECK-LABEL: @test_mm_mask_max_epu16
1373  // CHECK:       [[CMP:%.*]] = icmp ugt <8 x i16> [[X:%.*]], [[Y:%.*]]
1374  // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i16> [[X]], <8 x i16> [[Y]]
1375  // CHECK:       select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}
1376  return _mm_mask_max_epu16(__W,__M,__A,__B); 
1377}
1378__m256i test_mm256_maskz_max_epu16(__mmask16 __M, __m256i __A, __m256i __B) {
1379  // CHECK-LABEL: @test_mm256_maskz_max_epu16
1380  // CHECK:       [[CMP:%.*]] = icmp ugt <16 x i16> [[X:%.*]], [[Y:%.*]]
1381  // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i16> [[X]], <16 x i16> [[Y]]
1382  // CHECK:       select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}
1383  return _mm256_maskz_max_epu16(__M,__A,__B); 
1384}
1385__m256i test_mm256_mask_max_epu16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {
1386  // CHECK-LABEL: @test_mm256_mask_max_epu16
1387  // CHECK:       [[CMP:%.*]] = icmp ugt <16 x i16> [[X:%.*]], [[Y:%.*]]
1388  // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i16> [[X]], <16 x i16> [[Y]]
1389  // CHECK:       select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}
1390  return _mm256_mask_max_epu16(__W,__M,__A,__B); 
1391}
1392__m128i test_mm_maskz_min_epi8(__mmask16 __M, __m128i __A, __m128i __B) {
1393  // CHECK-LABEL: @test_mm_maskz_min_epi8
1394  // CHECK:       [[CMP:%.*]] = icmp slt <16 x i8> [[X:%.*]], [[Y:%.*]]
1395  // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i8> [[X]], <16 x i8> [[Y]]
1396  // CHECK:       select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}
1397  return _mm_maskz_min_epi8(__M,__A,__B); 
1398}
1399__m128i test_mm_mask_min_epi8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) {
1400  // CHECK-LABEL: @test_mm_mask_min_epi8
1401  // CHECK:       [[CMP:%.*]] = icmp slt <16 x i8> [[X:%.*]], [[Y:%.*]]
1402  // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i8> [[X]], <16 x i8> [[Y]]
1403  // CHECK:       select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}
1404  return _mm_mask_min_epi8(__W,__M,__A,__B); 
1405}
1406__m256i test_mm256_maskz_min_epi8(__mmask32 __M, __m256i __A, __m256i __B) {
1407  // CHECK-LABEL: @test_mm256_maskz_min_epi8
1408  // CHECK:       [[CMP:%.*]] = icmp slt <32 x i8> [[X:%.*]], [[Y:%.*]]
1409  // CHECK-NEXT:  [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i8> [[X]], <32 x i8> [[Y]]
1410  // CHECK:       select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}
1411  return _mm256_maskz_min_epi8(__M,__A,__B); 
1412}
1413__m256i test_mm256_mask_min_epi8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) {
1414  // CHECK-LABEL: @test_mm256_mask_min_epi8
1415  // CHECK:       [[CMP:%.*]] = icmp slt <32 x i8> [[X:%.*]], [[Y:%.*]]
1416  // CHECK-NEXT:  [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i8> [[X]], <32 x i8> [[Y]]
1417  // CHECK:       select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}
1418  return _mm256_mask_min_epi8(__W,__M,__A,__B); 
1419}
1420__m128i test_mm_maskz_min_epi16(__mmask8 __M, __m128i __A, __m128i __B) {
1421  // CHECK-LABEL: @test_mm_maskz_min_epi16
1422  // CHECK:       [[CMP:%.*]] = icmp slt <8 x i16> [[X:%.*]], [[Y:%.*]]
1423  // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i16> [[X]], <8 x i16> [[Y]]
1424  // CHECK:       select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}
1425  return _mm_maskz_min_epi16(__M,__A,__B); 
1426}
1427__m128i test_mm_mask_min_epi16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
1428  // CHECK-LABEL: @test_mm_mask_min_epi16
1429  // CHECK:       [[CMP:%.*]] = icmp slt <8 x i16> [[X:%.*]], [[Y:%.*]]
1430  // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i16> [[X]], <8 x i16> [[Y]]
1431  // CHECK:       select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}
1432  return _mm_mask_min_epi16(__W,__M,__A,__B); 
1433}
1434__m256i test_mm256_maskz_min_epi16(__mmask16 __M, __m256i __A, __m256i __B) {
1435  // CHECK-LABEL: @test_mm256_maskz_min_epi16
1436  // CHECK:       [[CMP:%.*]] = icmp slt <16 x i16> [[X:%.*]], [[Y:%.*]]
1437  // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i16> [[X]], <16 x i16> [[Y]]
1438  // CHECK:       select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}
1439  return _mm256_maskz_min_epi16(__M,__A,__B); 
1440}
1441__m256i test_mm256_mask_min_epi16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {
1442  // CHECK-LABEL: @test_mm256_mask_min_epi16
1443  // CHECK:       [[CMP:%.*]] = icmp slt <16 x i16> [[X:%.*]], [[Y:%.*]]
1444  // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i16> [[X]], <16 x i16> [[Y]]
1445  // CHECK:       select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}
1446  return _mm256_mask_min_epi16(__W,__M,__A,__B); 
1447}
1448__m128i test_mm_maskz_min_epu8(__mmask16 __M, __m128i __A, __m128i __B) {
1449  // CHECK-LABEL: @test_mm_maskz_min_epu8
1450  // CHECK:       [[CMP:%.*]] = icmp ult <16 x i8> [[X:%.*]], [[Y:%.*]]
1451  // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i8> [[X]], <16 x i8> [[Y]]
1452  // CHECK:       select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}
1453  return _mm_maskz_min_epu8(__M,__A,__B); 
1454}
1455__m128i test_mm_mask_min_epu8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) {
1456  // CHECK-LABEL: @test_mm_mask_min_epu8
1457  // CHECK:       [[CMP:%.*]] = icmp ult <16 x i8> [[X:%.*]], [[Y:%.*]]
1458  // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i8> [[X]], <16 x i8> [[Y]]
1459  // CHECK:       select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}
1460  return _mm_mask_min_epu8(__W,__M,__A,__B); 
1461}
1462__m256i test_mm256_maskz_min_epu8(__mmask32 __M, __m256i __A, __m256i __B) {
1463  // CHECK-LABEL: @test_mm256_maskz_min_epu8
1464  // CHECK:       [[CMP:%.*]] = icmp ult <32 x i8> [[X:%.*]], [[Y:%.*]]
1465  // CHECK-NEXT:  [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i8> [[X]], <32 x i8> [[Y]]
1466  // CHECK:       select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}
1467  return _mm256_maskz_min_epu8(__M,__A,__B); 
1468}
1469__m256i test_mm256_mask_min_epu8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) {
1470  // CHECK-LABEL: @test_mm256_mask_min_epu8
1471  // CHECK:       [[CMP:%.*]] = icmp ult <32 x i8> [[X:%.*]], [[Y:%.*]]
1472  // CHECK-NEXT:  [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i8> [[X]], <32 x i8> [[Y]]
1473  // CHECK:       select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}
1474  return _mm256_mask_min_epu8(__W,__M,__A,__B); 
1475}
1476__m128i test_mm_maskz_min_epu16(__mmask8 __M, __m128i __A, __m128i __B) {
1477  // CHECK-LABEL: @test_mm_maskz_min_epu16
1478  // CHECK:       [[CMP:%.*]] = icmp ult <8 x i16> [[X:%.*]], [[Y:%.*]]
1479  // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i16> [[X]], <8 x i16> [[Y]]
1480  // CHECK:       select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}
1481  return _mm_maskz_min_epu16(__M,__A,__B); 
1482}
1483__m128i test_mm_mask_min_epu16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
1484  // CHECK-LABEL: @test_mm_mask_min_epu16
1485  // CHECK:       [[CMP:%.*]] = icmp ult <8 x i16> [[X:%.*]], [[Y:%.*]]
1486  // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i16> [[X]], <8 x i16> [[Y]]
1487  // CHECK:       select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}
1488  return _mm_mask_min_epu16(__W,__M,__A,__B); 
1489}
1490__m256i test_mm256_maskz_min_epu16(__mmask16 __M, __m256i __A, __m256i __B) {
1491  // CHECK-LABEL: @test_mm256_maskz_min_epu16
1492  // CHECK:       [[CMP:%.*]] = icmp ult <16 x i16> [[X:%.*]], [[Y:%.*]]
1493  // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i16> [[X]], <16 x i16> [[Y]]
1494  // CHECK:       select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}
1495  return _mm256_maskz_min_epu16(__M,__A,__B); 
1496}
1497__m256i test_mm256_mask_min_epu16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {
1498  // CHECK-LABEL: @test_mm256_mask_min_epu16
1499  // CHECK:       [[CMP:%.*]] = icmp ult <16 x i16> [[X:%.*]], [[Y:%.*]]
1500  // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i16> [[X]], <16 x i16> [[Y]]
1501  // CHECK:       select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}
1502  return _mm256_mask_min_epu16(__W,__M,__A,__B); 
1503}
1504__m128i test_mm_mask_shuffle_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
1505  // CHECK-LABEL: @test_mm_mask_shuffle_epi8
1506  // CHECK: @llvm.x86.ssse3.pshuf.b
1507  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1508  return _mm_mask_shuffle_epi8(__W,__U,__A,__B); 
1509}
1510__m128i test_mm_maskz_shuffle_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
1511  // CHECK-LABEL: @test_mm_maskz_shuffle_epi8
1512  // CHECK: @llvm.x86.ssse3.pshuf.b
1513  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1514  return _mm_maskz_shuffle_epi8(__U,__A,__B); 
1515}
1516__m256i test_mm256_mask_shuffle_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
1517  // CHECK-LABEL: @test_mm256_mask_shuffle_epi8
1518  // CHECK: @llvm.x86.avx2.pshuf.b
1519  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1520  return _mm256_mask_shuffle_epi8(__W,__U,__A,__B); 
1521}
1522__m256i test_mm256_maskz_shuffle_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
1523  // CHECK-LABEL: @test_mm256_maskz_shuffle_epi8
1524  // CHECK: @llvm.x86.avx2.pshuf.b
1525  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1526  return _mm256_maskz_shuffle_epi8(__U,__A,__B); 
1527}
1528__m128i test_mm_mask_subs_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
1529  // CHECK-LABEL: @test_mm_mask_subs_epi8
1530  // CHECK: @llvm.ssub.sat.v16i8
1531  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1532  return _mm_mask_subs_epi8(__W,__U,__A,__B); 
1533}
1534__m128i test_mm_maskz_subs_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
1535  // CHECK-LABEL: @test_mm_maskz_subs_epi8
1536  // CHECK: @llvm.ssub.sat.v16i8
1537  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1538  return _mm_maskz_subs_epi8(__U,__A,__B); 
1539}
1540__m256i test_mm256_mask_subs_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
1541  // CHECK-LABEL: @test_mm256_mask_subs_epi8
1542  // CHECK: @llvm.ssub.sat.v32i8
1543  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1544  return _mm256_mask_subs_epi8(__W,__U,__A,__B); 
1545}
1546__m256i test_mm256_maskz_subs_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
1547  // CHECK-LABEL: @test_mm256_maskz_subs_epi8
1548  // CHECK: @llvm.ssub.sat.v32i8
1549  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1550  return _mm256_maskz_subs_epi8(__U,__A,__B); 
1551}
1552__m128i test_mm_mask_subs_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1553  // CHECK-LABEL: @test_mm_mask_subs_epi16
1554  // CHECK: @llvm.ssub.sat.v8i16
1555  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1556  return _mm_mask_subs_epi16(__W,__U,__A,__B); 
1557}
1558__m128i test_mm_maskz_subs_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
1559  // CHECK-LABEL: @test_mm_maskz_subs_epi16
1560  // CHECK: @llvm.ssub.sat.v8i16
1561  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1562  return _mm_maskz_subs_epi16(__U,__A,__B); 
1563}
1564__m256i test_mm256_mask_subs_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1565  // CHECK-LABEL: @test_mm256_mask_subs_epi16
1566  // CHECK: @llvm.ssub.sat.v16i16
1567  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1568  return _mm256_mask_subs_epi16(__W,__U,__A,__B); 
1569}
1570__m256i test_mm256_maskz_subs_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
1571  // CHECK-LABEL: @test_mm256_maskz_subs_epi16
1572  // CHECK: @llvm.ssub.sat.v16i16
1573  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1574  return _mm256_maskz_subs_epi16(__U,__A,__B); 
1575}
1576__m128i test_mm_mask_subs_epu8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
1577  // CHECK-LABEL: @test_mm_mask_subs_epu8
1578  // CHECK-NOT: @llvm.x86.sse2.psubus.b
1579  // CHECK: call <16 x i8> @llvm.usub.sat.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1580  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1581  return _mm_mask_subs_epu8(__W,__U,__A,__B); 
1582}
1583__m128i test_mm_maskz_subs_epu8(__mmask16 __U, __m128i __A, __m128i __B) {
1584  // CHECK-LABEL: @test_mm_maskz_subs_epu8
1585  // CHECK-NOT: @llvm.x86.sse2.psubus.b
1586  // CHECK: call <16 x i8> @llvm.usub.sat.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1587  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1588  return _mm_maskz_subs_epu8(__U,__A,__B); 
1589}
1590__m256i test_mm256_mask_subs_epu8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
1591  // CHECK-LABEL: @test_mm256_mask_subs_epu8
1592  // CHECK-NOT: @llvm.x86.avx2.psubus.b
1593  // CHECK: call <32 x i8> @llvm.usub.sat.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})
1594  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1595  return _mm256_mask_subs_epu8(__W,__U,__A,__B); 
1596}
1597__m256i test_mm256_maskz_subs_epu8(__mmask32 __U, __m256i __A, __m256i __B) {
1598  // CHECK-LABEL: @test_mm256_maskz_subs_epu8
1599  // CHECK-NOT: @llvm.x86.avx2.psubus.b
1600  // CHECK: call <32 x i8> @llvm.usub.sat.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})
1601  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1602  return _mm256_maskz_subs_epu8(__U,__A,__B); 
1603}
1604__m128i test_mm_mask_subs_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1605  // CHECK-LABEL: @test_mm_mask_subs_epu16
1606  // CHECK-NOT: @llvm.x86.sse2.psubus.w
1607  // CHECK: call <8 x i16> @llvm.usub.sat.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1608  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1609  return _mm_mask_subs_epu16(__W,__U,__A,__B); 
1610}
1611__m128i test_mm_maskz_subs_epu16(__mmask8 __U, __m128i __A, __m128i __B) {
1612  // CHECK-LABEL: @test_mm_maskz_subs_epu16
1613  // CHECK-NOT: @llvm.x86.sse2.psubus.w
1614  // CHECK: call <8 x i16> @llvm.usub.sat.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1615  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1616  return _mm_maskz_subs_epu16(__U,__A,__B); 
1617}
1618__m256i test_mm256_mask_subs_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1619  // CHECK-LABEL: @test_mm256_mask_subs_epu16
1620  // CHECK-NOT: @llvm.x86.avx2.psubus.w
1621  // CHECK: call <16 x i16> @llvm.usub.sat.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})
1622  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1623  return _mm256_mask_subs_epu16(__W,__U,__A,__B); 
1624}
1625__m256i test_mm256_maskz_subs_epu16(__mmask16 __U, __m256i __A, __m256i __B) {
1626  // CHECK-LABEL: @test_mm256_maskz_subs_epu16
1627  // CHECK-NOT: @llvm.x86.avx2.psubus.w
1628  // CHECK: call <16 x i16> @llvm.usub.sat.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})
1629  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1630  return _mm256_maskz_subs_epu16(__U,__A,__B); 
1631}
1632
1633
1634__m128i test_mm_mask2_permutex2var_epi16(__m128i __A, __m128i __I, __mmask8 __U, __m128i __B) {
1635  // CHECK-LABEL: @test_mm_mask2_permutex2var_epi16
1636  // CHECK: @llvm.x86.avx512.vpermi2var.hi.128
1637  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1638  return _mm_mask2_permutex2var_epi16(__A,__I,__U,__B); 
1639}
1640__m256i test_mm256_mask2_permutex2var_epi16(__m256i __A, __m256i __I, __mmask16 __U, __m256i __B) {
1641  // CHECK-LABEL: @test_mm256_mask2_permutex2var_epi16
1642  // CHECK: @llvm.x86.avx512.vpermi2var.hi.256
1643  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1644  return _mm256_mask2_permutex2var_epi16(__A,__I,__U,__B); 
1645}
1646__m128i test_mm_permutex2var_epi16(__m128i __A, __m128i __I, __m128i __B) {
1647  // CHECK-LABEL: @test_mm_permutex2var_epi16
1648  // CHECK: @llvm.x86.avx512.vpermi2var.hi.128
1649  return _mm_permutex2var_epi16(__A,__I,__B); 
1650}
1651__m128i test_mm_mask_permutex2var_epi16(__m128i __A, __mmask8 __U, __m128i __I, __m128i __B) {
1652  // CHECK-LABEL: @test_mm_mask_permutex2var_epi16
1653  // CHECK: @llvm.x86.avx512.vpermi2var.hi.128
1654  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1655  return _mm_mask_permutex2var_epi16(__A,__U,__I,__B); 
1656}
1657__m128i test_mm_maskz_permutex2var_epi16(__mmask8 __U, __m128i __A, __m128i __I, __m128i __B) {
1658  // CHECK-LABEL: @test_mm_maskz_permutex2var_epi16
1659  // CHECK: @llvm.x86.avx512.vpermi2var.hi.128
1660  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1661  return _mm_maskz_permutex2var_epi16(__U,__A,__I,__B); 
1662}
1663
1664__m256i test_mm256_permutex2var_epi16(__m256i __A, __m256i __I, __m256i __B) {
1665  // CHECK-LABEL: @test_mm256_permutex2var_epi16
1666  // CHECK: @llvm.x86.avx512.vpermi2var.hi.256
1667  return _mm256_permutex2var_epi16(__A,__I,__B); 
1668}
1669__m256i test_mm256_mask_permutex2var_epi16(__m256i __A, __mmask16 __U, __m256i __I, __m256i __B) {
1670  // CHECK-LABEL: @test_mm256_mask_permutex2var_epi16
1671  // CHECK: @llvm.x86.avx512.vpermi2var.hi.256
1672  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1673  return _mm256_mask_permutex2var_epi16(__A,__U,__I,__B); 
1674}
1675__m256i test_mm256_maskz_permutex2var_epi16(__mmask16 __U, __m256i __A, __m256i __I, __m256i __B) {
1676  // CHECK-LABEL: @test_mm256_maskz_permutex2var_epi16
1677  // CHECK: @llvm.x86.avx512.vpermi2var.hi.256
1678  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1679  return _mm256_maskz_permutex2var_epi16(__U,__A,__I,__B); 
1680}
1681__m128i test_mm_mask_maddubs_epi16(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
1682  // CHECK-LABEL: @test_mm_mask_maddubs_epi16
1683  // CHECK: @llvm.x86.ssse3.pmadd.ub.sw
1684  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1685  return _mm_mask_maddubs_epi16(__W, __U, __X, __Y); 
1686}
1687
1688__m128i test_mm_maskz_maddubs_epi16(__mmask8 __U, __m128i __X, __m128i __Y) {
1689  // CHECK-LABEL: @test_mm_maskz_maddubs_epi16
1690  // CHECK: @llvm.x86.ssse3.pmadd.ub.sw
1691  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1692  return _mm_maskz_maddubs_epi16(__U, __X, __Y); 
1693}
1694
1695__m256i test_mm256_mask_maddubs_epi16(__m256i __W, __mmask16 __U, __m256i __X, __m256i __Y) {
1696  // CHECK-LABEL: @test_mm256_mask_maddubs_epi16
1697  // CHECK: @llvm.x86.avx2.pmadd.ub.sw
1698  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1699  return _mm256_mask_maddubs_epi16(__W, __U, __X, __Y); 
1700}
1701
1702__m256i test_mm256_maskz_maddubs_epi16(__mmask16 __U, __m256i __X, __m256i __Y) {
1703  // CHECK-LABEL: @test_mm256_maskz_maddubs_epi16
1704  // CHECK: @llvm.x86.avx2.pmadd.ub.sw
1705  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1706  return _mm256_maskz_maddubs_epi16(__U, __X, __Y); 
1707}
1708
1709__m128i test_mm_mask_madd_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1710  // CHECK-LABEL: @test_mm_mask_madd_epi16
1711  // CHECK: @llvm.x86.sse2.pmadd.wd
1712  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
1713  return _mm_mask_madd_epi16(__W, __U, __A, __B); 
1714}
1715
1716__m128i test_mm_maskz_madd_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
1717  // CHECK-LABEL: @test_mm_maskz_madd_epi16
1718  // CHECK: @llvm.x86.sse2.pmadd.wd
1719  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
1720  return _mm_maskz_madd_epi16(__U, __A, __B); 
1721}
1722
1723__m256i test_mm256_mask_madd_epi16(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
1724  // CHECK-LABEL: @test_mm256_mask_madd_epi16
1725  // CHECK: @llvm.x86.avx2.pmadd.wd
1726  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
1727  return _mm256_mask_madd_epi16(__W, __U, __A, __B); 
1728}
1729
1730__m256i test_mm256_maskz_madd_epi16(__mmask8 __U, __m256i __A, __m256i __B) {
1731  // CHECK-LABEL: @test_mm256_maskz_madd_epi16
1732  // CHECK: @llvm.x86.avx2.pmadd.wd
1733  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
1734  return _mm256_maskz_madd_epi16(__U, __A, __B); 
1735}
1736
1737__m128i test_mm_cvtsepi16_epi8(__m128i __A) {
1738  // CHECK-LABEL: @test_mm_cvtsepi16_epi8
1739  // CHECK: @llvm.x86.avx512.mask.pmovs.wb.128
1740  return _mm_cvtsepi16_epi8(__A); 
1741}
1742
1743__m128i test_mm_mask_cvtsepi16_epi8(__m128i __O, __mmask8 __M, __m128i __A) {
1744  // CHECK-LABEL: @test_mm_mask_cvtsepi16_epi8
1745  // CHECK: @llvm.x86.avx512.mask.pmovs.wb.128
1746  return _mm_mask_cvtsepi16_epi8(__O, __M, __A); 
1747}
1748
1749__m128i test_mm_maskz_cvtsepi16_epi8(__mmask8 __M, __m128i __A) {
1750  // CHECK-LABEL: @test_mm_maskz_cvtsepi16_epi8
1751  // CHECK: @llvm.x86.avx512.mask.pmovs.wb.128
1752  return _mm_maskz_cvtsepi16_epi8(__M, __A); 
1753}
1754
1755__m128i test_mm256_cvtsepi16_epi8(__m256i __A) {
1756  // CHECK-LABEL: @test_mm256_cvtsepi16_epi8
1757  // CHECK: @llvm.x86.avx512.mask.pmovs.wb.256
1758  return _mm256_cvtsepi16_epi8(__A); 
1759}
1760
1761__m128i test_mm256_mask_cvtsepi16_epi8(__m128i __O, __mmask16 __M, __m256i __A) {
1762  // CHECK-LABEL: @test_mm256_mask_cvtsepi16_epi8
1763  // CHECK: @llvm.x86.avx512.mask.pmovs.wb.256
1764  return _mm256_mask_cvtsepi16_epi8(__O, __M, __A); 
1765}
1766
1767__m128i test_mm256_maskz_cvtsepi16_epi8(__mmask16 __M, __m256i __A) {
1768  // CHECK-LABEL: @test_mm256_maskz_cvtsepi16_epi8
1769  // CHECK: @llvm.x86.avx512.mask.pmovs.wb.256
1770  return _mm256_maskz_cvtsepi16_epi8(__M, __A); 
1771}
1772
1773__m128i test_mm_cvtusepi16_epi8(__m128i __A) {
1774  // CHECK-LABEL: @test_mm_cvtusepi16_epi8
1775  // CHECK: @llvm.x86.avx512.mask.pmovus.wb.128
1776  return _mm_cvtusepi16_epi8(__A); 
1777}
1778
1779__m128i test_mm_mask_cvtusepi16_epi8(__m128i __O, __mmask8 __M, __m128i __A) {
1780  // CHECK-LABEL: @test_mm_mask_cvtusepi16_epi8
1781  // CHECK: @llvm.x86.avx512.mask.pmovus.wb.128
1782  return _mm_mask_cvtusepi16_epi8(__O, __M, __A); 
1783}
1784
1785__m128i test_mm_maskz_cvtusepi16_epi8(__mmask8 __M, __m128i __A) {
1786  // CHECK-LABEL: @test_mm_maskz_cvtusepi16_epi8
1787  // CHECK: @llvm.x86.avx512.mask.pmovus.wb.128
1788  return _mm_maskz_cvtusepi16_epi8(__M, __A); 
1789}
1790
1791__m128i test_mm256_cvtusepi16_epi8(__m256i __A) {
1792  // CHECK-LABEL: @test_mm256_cvtusepi16_epi8
1793  // CHECK: @llvm.x86.avx512.mask.pmovus.wb.256
1794  return _mm256_cvtusepi16_epi8(__A); 
1795}
1796
1797__m128i test_mm256_mask_cvtusepi16_epi8(__m128i __O, __mmask16 __M, __m256i __A) {
1798  // CHECK-LABEL: @test_mm256_mask_cvtusepi16_epi8
1799  // CHECK: @llvm.x86.avx512.mask.pmovus.wb.256
1800  return _mm256_mask_cvtusepi16_epi8(__O, __M, __A); 
1801}
1802
1803__m128i test_mm256_maskz_cvtusepi16_epi8(__mmask16 __M, __m256i __A) {
1804  // CHECK-LABEL: @test_mm256_maskz_cvtusepi16_epi8
1805  // CHECK: @llvm.x86.avx512.mask.pmovus.wb.256
1806  return _mm256_maskz_cvtusepi16_epi8(__M, __A); 
1807}
1808
1809__m128i test_mm_cvtepi16_epi8(__m128i __A) {
1810  // CHECK-LABEL: @test_mm_cvtepi16_epi8
1811  // CHECK: trunc <8 x i16> %{{.*}} to <8 x i8>
1812  // CHECK: shufflevector <8 x i8> %{{.*}}, <8 x i8> %{{.*}}, <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>
1813  return _mm_cvtepi16_epi8(__A); 
1814}
1815
1816__m128i test_mm_mask_cvtepi16_epi8(__m128i __O, __mmask8 __M, __m128i __A) {
1817  // CHECK-LABEL: @test_mm_mask_cvtepi16_epi8
1818  // CHECK: @llvm.x86.avx512.mask.pmov.wb.128
1819  return _mm_mask_cvtepi16_epi8(__O, __M, __A); 
1820}
1821
1822__m128i test_mm_maskz_cvtepi16_epi8(__mmask8 __M, __m128i __A) {
1823  // CHECK-LABEL: @test_mm_maskz_cvtepi16_epi8
1824  // CHECK: @llvm.x86.avx512.mask.pmov.wb.128
1825  return _mm_maskz_cvtepi16_epi8(__M, __A); 
1826}
1827
1828__m128i test_mm256_cvtepi16_epi8(__m256i __A) {
1829  // CHECK-LABEL: @test_mm256_cvtepi16_epi8
1830  // CHECK: trunc <16 x i16> %{{.*}} to <16 x i8>
1831  return _mm256_cvtepi16_epi8(__A); 
1832}
1833
1834__m128i test_mm256_mask_cvtepi16_epi8(__m128i __O, __mmask16 __M, __m256i __A) {
1835  // CHECK-LABEL: @test_mm256_mask_cvtepi16_epi8
1836  // CHECK: trunc <16 x i16> %{{.*}} to <16 x i8>
1837  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1838  return _mm256_mask_cvtepi16_epi8(__O, __M, __A); 
1839}
1840
1841__m128i test_mm256_maskz_cvtepi16_epi8(__mmask16 __M, __m256i __A) {
1842  // CHECK-LABEL: @test_mm256_maskz_cvtepi16_epi8
1843  // CHECK: trunc <16 x i16> %{{.*}} to <16 x i8>
1844  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1845  return _mm256_maskz_cvtepi16_epi8(__M, __A); 
1846}
1847
1848__m128i test_mm_mask_mulhrs_epi16(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
1849  // CHECK-LABEL: @test_mm_mask_mulhrs_epi16
1850  // CHECK: @llvm.x86.ssse3.pmul.hr.sw
1851  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1852  return _mm_mask_mulhrs_epi16(__W, __U, __X, __Y); 
1853}
1854
1855__m128i test_mm_maskz_mulhrs_epi16(__mmask8 __U, __m128i __X, __m128i __Y) {
1856  // CHECK-LABEL: @test_mm_maskz_mulhrs_epi16
1857  // CHECK: @llvm.x86.ssse3.pmul.hr.sw
1858  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1859  return _mm_maskz_mulhrs_epi16(__U, __X, __Y); 
1860}
1861
1862__m256i test_mm256_mask_mulhrs_epi16(__m256i __W, __mmask16 __U, __m256i __X, __m256i __Y) {
1863  // CHECK-LABEL: @test_mm256_mask_mulhrs_epi16
1864  // CHECK: @llvm.x86.avx2.pmul.hr.sw
1865  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1866  return _mm256_mask_mulhrs_epi16(__W, __U, __X, __Y); 
1867}
1868
1869__m256i test_mm256_maskz_mulhrs_epi16(__mmask16 __U, __m256i __X, __m256i __Y) {
1870  // CHECK-LABEL: @test_mm256_maskz_mulhrs_epi16
1871  // CHECK: @llvm.x86.avx2.pmul.hr.sw
1872  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1873  return _mm256_maskz_mulhrs_epi16(__U, __X, __Y); 
1874}
1875
1876__m128i test_mm_mask_mulhi_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1877  // CHECK-LABEL: @test_mm_mask_mulhi_epu16
1878  // CHECK: @llvm.x86.sse2.pmulhu.w
1879  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1880  return _mm_mask_mulhi_epu16(__W, __U, __A, __B); 
1881}
1882
1883__m128i test_mm_maskz_mulhi_epu16(__mmask8 __U, __m128i __A, __m128i __B) {
1884  // CHECK-LABEL: @test_mm_maskz_mulhi_epu16
1885  // CHECK: @llvm.x86.sse2.pmulhu.w
1886  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1887  return _mm_maskz_mulhi_epu16(__U, __A, __B); 
1888}
1889
1890__m256i test_mm256_mask_mulhi_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1891  // CHECK-LABEL: @test_mm256_mask_mulhi_epu16
1892  // CHECK: @llvm.x86.avx2.pmulhu.w
1893  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1894  return _mm256_mask_mulhi_epu16(__W, __U, __A, __B); 
1895}
1896
1897__m256i test_mm256_maskz_mulhi_epu16(__mmask16 __U, __m256i __A, __m256i __B) {
1898  // CHECK-LABEL: @test_mm256_maskz_mulhi_epu16
1899  // CHECK: @llvm.x86.avx2.pmulhu.w
1900  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1901  return _mm256_maskz_mulhi_epu16(__U, __A, __B); 
1902}
1903
1904__m128i test_mm_mask_mulhi_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1905  // CHECK-LABEL: @test_mm_mask_mulhi_epi16
1906  // CHECK: @llvm.x86.sse2.pmulh.w
1907  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1908  return _mm_mask_mulhi_epi16(__W, __U, __A, __B); 
1909}
1910
1911__m128i test_mm_maskz_mulhi_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
1912  // CHECK-LABEL: @test_mm_maskz_mulhi_epi16
1913  // CHECK: @llvm.x86.sse2.pmulh.w
1914  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1915  return _mm_maskz_mulhi_epi16(__U, __A, __B); 
1916}
1917
1918__m256i test_mm256_mask_mulhi_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1919  // CHECK-LABEL: @test_mm256_mask_mulhi_epi16
1920  // CHECK: @llvm.x86.avx2.pmulh.w
1921  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1922  return _mm256_mask_mulhi_epi16(__W, __U, __A, __B); 
1923}
1924
1925__m256i test_mm256_maskz_mulhi_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
1926  // CHECK-LABEL: @test_mm256_maskz_mulhi_epi16
1927  // CHECK: @llvm.x86.avx2.pmulh.w
1928  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1929  return _mm256_maskz_mulhi_epi16(__U, __A, __B); 
1930}
1931
1932__m128i test_mm_mask_unpackhi_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
1933  // CHECK-LABEL: @test_mm_mask_unpackhi_epi8
1934  // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>
1935  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1936  return _mm_mask_unpackhi_epi8(__W, __U, __A, __B); 
1937}
1938
1939__m128i test_mm_maskz_unpackhi_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
1940  // CHECK-LABEL: @test_mm_maskz_unpackhi_epi8
1941  // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>
1942  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1943  return _mm_maskz_unpackhi_epi8(__U, __A, __B); 
1944}
1945
1946__m256i test_mm256_mask_unpackhi_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
1947  // CHECK-LABEL: @test_mm256_mask_unpackhi_epi8
1948  // CHECK: shufflevector <32 x i8> %{{.*}}, <32 x i8> %{{.*}}, <32 x i32> <i32 8, i32 40, i32 9, i32 41, i32 10, i32 42, i32 11, i32 43, i32 12, i32 44, i32 13, i32 45, i32 14, i32 46, i32 15, i32 47, i32 24, i32 56, i32 25, i32 57, i32 26, i32 58, i32 27, i32 59, i32 28, i32 60, i32 29, i32 61, i32 30, i32 62, i32 31, i32 63>
1949  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1950  return _mm256_mask_unpackhi_epi8(__W, __U, __A, __B); 
1951}
1952
1953__m256i test_mm256_maskz_unpackhi_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
1954  // CHECK-LABEL: @test_mm256_maskz_unpackhi_epi8
1955  // CHECK: shufflevector <32 x i8> %{{.*}}, <32 x i8> %{{.*}}, <32 x i32> <i32 8, i32 40, i32 9, i32 41, i32 10, i32 42, i32 11, i32 43, i32 12, i32 44, i32 13, i32 45, i32 14, i32 46, i32 15, i32 47, i32 24, i32 56, i32 25, i32 57, i32 26, i32 58, i32 27, i32 59, i32 28, i32 60, i32 29, i32 61, i32 30, i32 62, i32 31, i32 63>
1956  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1957  return _mm256_maskz_unpackhi_epi8(__U, __A, __B); 
1958}
1959
1960__m128i test_mm_mask_unpackhi_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1961  // CHECK-LABEL: @test_mm_mask_unpackhi_epi16
1962  // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
1963  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1964  return _mm_mask_unpackhi_epi16(__W, __U, __A, __B); 
1965}
1966
1967__m128i test_mm_maskz_unpackhi_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
1968  // CHECK-LABEL: @test_mm_maskz_unpackhi_epi16
1969  // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
1970  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1971  return _mm_maskz_unpackhi_epi16(__U, __A, __B); 
1972}
1973
1974__m256i test_mm256_mask_unpackhi_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1975  // CHECK-LABEL: @test_mm256_mask_unpackhi_epi16
1976  // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> %{{.*}}, <16 x i32> <i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>
1977  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1978  return _mm256_mask_unpackhi_epi16(__W, __U, __A, __B); 
1979}
1980
1981__m256i test_mm256_maskz_unpackhi_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
1982  // CHECK-LABEL: @test_mm256_maskz_unpackhi_epi16
1983  // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> %{{.*}}, <16 x i32> <i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>
1984  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1985  return _mm256_maskz_unpackhi_epi16(__U, __A, __B); 
1986}
1987
1988__m128i test_mm_mask_unpacklo_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
1989  // CHECK-LABEL: @test_mm_mask_unpacklo_epi8
1990  // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23>
1991  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1992  return _mm_mask_unpacklo_epi8(__W, __U, __A, __B); 
1993}
1994
1995__m128i test_mm_maskz_unpacklo_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
1996  // CHECK-LABEL: @test_mm_maskz_unpacklo_epi8
1997  // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23>
1998  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1999  return _mm_maskz_unpacklo_epi8(__U, __A, __B); 
2000}
2001
2002__m256i test_mm256_mask_unpacklo_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
2003  // CHECK-LABEL: @test_mm256_mask_unpacklo_epi8
2004  // CHECK: shufflevector <32 x i8> %{{.*}}, <32 x i8> %{{.*}}, <32 x i32> <i32 0, i32 32, i32 1, i32 33, i32 2, i32 34, i32 3, i32 35, i32 4, i32 36, i32 5, i32 37, i32 6, i32 38, i32 7, i32 39, i32 16, i32 48, i32 17, i32 49, i32 18, i32 50, i32 19, i32 51, i32 20, i32 52, i32 21, i32 53, i32 22, i32 54, i32 23, i32 55>
2005  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
2006  return _mm256_mask_unpacklo_epi8(__W, __U, __A, __B); 
2007}
2008
2009__m256i test_mm256_maskz_unpacklo_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
2010  // CHECK-LABEL: @test_mm256_maskz_unpacklo_epi8
2011  // CHECK: shufflevector <32 x i8> %{{.*}}, <32 x i8> %{{.*}}, <32 x i32> <i32 0, i32 32, i32 1, i32 33, i32 2, i32 34, i32 3, i32 35, i32 4, i32 36, i32 5, i32 37, i32 6, i32 38, i32 7, i32 39, i32 16, i32 48, i32 17, i32 49, i32 18, i32 50, i32 19, i32 51, i32 20, i32 52, i32 21, i32 53, i32 22, i32 54, i32 23, i32 55>
2012  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
2013  return _mm256_maskz_unpacklo_epi8(__U, __A, __B); 
2014}
2015
2016__m128i test_mm_mask_unpacklo_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
2017  // CHECK-LABEL: @test_mm_mask_unpacklo_epi16
2018  // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
2019  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2020  return _mm_mask_unpacklo_epi16(__W, __U, __A, __B); 
2021}
2022
2023__m128i test_mm_maskz_unpacklo_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
2024  // CHECK-LABEL: @test_mm_maskz_unpacklo_epi16
2025  // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
2026  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2027  return _mm_maskz_unpacklo_epi16(__U, __A, __B); 
2028}
2029
2030__m256i test_mm256_mask_unpacklo_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
2031  // CHECK-LABEL: @test_mm256_mask_unpacklo_epi16
2032  // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27>
2033  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2034  return _mm256_mask_unpacklo_epi16(__W, __U, __A, __B); 
2035}
2036
2037__m256i test_mm256_maskz_unpacklo_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
2038  // CHECK-LABEL: @test_mm256_maskz_unpacklo_epi16
2039  // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27>
2040  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2041  return _mm256_maskz_unpacklo_epi16(__U, __A, __B); 
2042}
2043
2044__m128i test_mm_mask_cvtepi8_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
2045  // CHECK-LABEL: @test_mm_mask_cvtepi8_epi16
2046  // CHECK: sext <8 x i8> %{{.*}} to <8 x i16>
2047  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2048  return _mm_mask_cvtepi8_epi16(__W, __U, __A); 
2049}
2050
2051__m128i test_mm_maskz_cvtepi8_epi16(__mmask8 __U, __m128i __A) {
2052  // CHECK-LABEL: @test_mm_maskz_cvtepi8_epi16
2053  // CHECK: sext <8 x i8> %{{.*}} to <8 x i16>
2054  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2055  return _mm_maskz_cvtepi8_epi16(__U, __A); 
2056}
2057
2058__m256i test_mm256_mask_cvtepi8_epi16(__m256i __W, __mmask16 __U, __m128i __A) {
2059  // CHECK-LABEL: @test_mm256_mask_cvtepi8_epi16
2060  // CHECK: sext <16 x i8> %{{.*}} to <16 x i16>
2061  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2062  return _mm256_mask_cvtepi8_epi16(__W, __U, __A); 
2063}
2064
2065__m256i test_mm256_maskz_cvtepi8_epi16(__mmask16 __U, __m128i __A) {
2066  // CHECK-LABEL: @test_mm256_maskz_cvtepi8_epi16
2067  // CHECK: sext <16 x i8> %{{.*}} to <16 x i16>
2068  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2069  return _mm256_maskz_cvtepi8_epi16(__U, __A); 
2070}
2071
2072__m128i test_mm_mask_cvtepu8_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
2073  // CHECK-LABEL: @test_mm_mask_cvtepu8_epi16
2074  // CHECK: zext <8 x i8> %{{.*}} to <8 x i16>
2075  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2076  return _mm_mask_cvtepu8_epi16(__W, __U, __A); 
2077}
2078
2079__m128i test_mm_maskz_cvtepu8_epi16(__mmask8 __U, __m128i __A) {
2080  // CHECK-LABEL: @test_mm_maskz_cvtepu8_epi16
2081  // CHECK: zext <8 x i8> %{{.*}} to <8 x i16>
2082  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2083  return _mm_maskz_cvtepu8_epi16(__U, __A); 
2084}
2085
2086__m256i test_mm256_mask_cvtepu8_epi16(__m256i __W, __mmask16 __U, __m128i __A) {
2087  // CHECK-LABEL: @test_mm256_mask_cvtepu8_epi16
2088  // CHECK: zext <16 x i8> %{{.*}} to <16 x i16>
2089  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2090  return _mm256_mask_cvtepu8_epi16(__W, __U, __A); 
2091}
2092
2093__m256i test_mm256_maskz_cvtepu8_epi16(__mmask16 __U, __m128i __A) {
2094  // CHECK-LABEL: @test_mm256_maskz_cvtepu8_epi16
2095  // CHECK: zext <16 x i8> %{{.*}} to <16 x i16>
2096  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2097  return _mm256_maskz_cvtepu8_epi16(__U, __A); 
2098}
2099
2100__m256i test_mm256_sllv_epi16(__m256i __A, __m256i __B) {
2101  // CHECK-LABEL: @test_mm256_sllv_epi16
2102  // CHECK: @llvm.x86.avx512.psllv.w.256(
2103  return _mm256_sllv_epi16(__A, __B); 
2104}
2105
2106__m256i test_mm256_mask_sllv_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
2107  // CHECK-LABEL: @test_mm256_mask_sllv_epi16
2108  // CHECK: @llvm.x86.avx512.psllv.w.256(
2109  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2110  return _mm256_mask_sllv_epi16(__W, __U, __A, __B); 
2111}
2112
2113__m256i test_mm256_maskz_sllv_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
2114  // CHECK-LABEL: @test_mm256_maskz_sllv_epi16
2115  // CHECK: @llvm.x86.avx512.psllv.w.256(
2116  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2117  return _mm256_maskz_sllv_epi16(__U, __A, __B); 
2118}
2119
2120__m128i test_mm_sllv_epi16(__m128i __A, __m128i __B) {
2121  // CHECK-LABEL: @test_mm_sllv_epi16
2122  // CHECK: @llvm.x86.avx512.psllv.w.128(
2123  return _mm_sllv_epi16(__A, __B); 
2124}
2125
2126__m128i test_mm_mask_sllv_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
2127  // CHECK-LABEL: @test_mm_mask_sllv_epi16
2128  // CHECK: @llvm.x86.avx512.psllv.w.128(
2129  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2130  return _mm_mask_sllv_epi16(__W, __U, __A, __B); 
2131}
2132
2133__m128i test_mm_maskz_sllv_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
2134  // CHECK-LABEL: @test_mm_maskz_sllv_epi16
2135  // CHECK: @llvm.x86.avx512.psllv.w.128(
2136  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2137  return _mm_maskz_sllv_epi16(__U, __A, __B); 
2138}
2139
2140__m128i test_mm_mask_sll_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
2141  // CHECK-LABEL: @test_mm_mask_sll_epi16
2142  // CHECK: @llvm.x86.sse2.psll.w
2143  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2144  return _mm_mask_sll_epi16(__W, __U, __A, __B); 
2145}
2146
2147__m128i test_mm_maskz_sll_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
2148  // CHECK-LABEL: @test_mm_maskz_sll_epi16
2149  // CHECK: @llvm.x86.sse2.psll.w
2150  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2151  return _mm_maskz_sll_epi16(__U, __A, __B); 
2152}
2153
2154__m256i test_mm256_mask_sll_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m128i __B) {
2155  // CHECK-LABEL: @test_mm256_mask_sll_epi16
2156  // CHECK: @llvm.x86.avx2.psll.w
2157  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2158  return _mm256_mask_sll_epi16(__W, __U, __A, __B); 
2159}
2160
2161__m256i test_mm256_maskz_sll_epi16(__mmask16 __U, __m256i __A, __m128i __B) {
2162  // CHECK-LABEL: @test_mm256_maskz_sll_epi16
2163  // CHECK: @llvm.x86.avx2.psll.w
2164  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2165  return _mm256_maskz_sll_epi16(__U, __A, __B); 
2166}
2167
2168__m128i test_mm_mask_slli_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
2169  // CHECK-LABEL: @test_mm_mask_slli_epi16
2170  // CHECK: @llvm.x86.sse2.pslli.w
2171  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2172  return _mm_mask_slli_epi16(__W, __U, __A, 5); 
2173}
2174
2175__m128i test_mm_mask_slli_epi16_2(__m128i __W, __mmask8 __U, __m128i __A, int __B) {
2176  // CHECK-LABEL: @test_mm_mask_slli_epi16_2
2177  // CHECK: @llvm.x86.sse2.pslli.w
2178  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2179  return _mm_mask_slli_epi16(__W, __U, __A, __B); 
2180}
2181
2182__m128i test_mm_maskz_slli_epi16(__mmask8 __U, __m128i __A) {
2183  // CHECK-LABEL: @test_mm_maskz_slli_epi16
2184  // CHECK: @llvm.x86.sse2.pslli.w
2185  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2186  return _mm_maskz_slli_epi16(__U, __A, 5); 
2187}
2188
2189__m128i test_mm_maskz_slli_epi16_2(__mmask8 __U, __m128i __A, int __B) {
2190  // CHECK-LABEL: @test_mm_maskz_slli_epi16_2
2191  // CHECK: @llvm.x86.sse2.pslli.w
2192  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2193  return _mm_maskz_slli_epi16(__U, __A, __B); 
2194}
2195
2196__m256i test_mm256_mask_slli_epi16(__m256i __W, __mmask16 __U, __m256i __A) {
2197  // CHECK-LABEL: @test_mm256_mask_slli_epi16
2198  // CHECK: @llvm.x86.avx2.pslli.w
2199  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2200  return _mm256_mask_slli_epi16(__W, __U, __A, 5); 
2201}
2202
2203__m256i test_mm256_mask_slli_epi16_2(__m256i __W, __mmask16 __U, __m256i __A, int __B) {
2204  // CHECK-LABEL: @test_mm256_mask_slli_epi16_2
2205  // CHECK: @llvm.x86.avx2.pslli.w
2206  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2207  return _mm256_mask_slli_epi16(__W, __U, __A, __B); 
2208}
2209
2210__m256i test_mm256_maskz_slli_epi16(__mmask16 __U, __m256i __A) {
2211  // CHECK-LABEL: @test_mm256_maskz_slli_epi16
2212  // CHECK: @llvm.x86.avx2.pslli.w
2213  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2214  return _mm256_maskz_slli_epi16(__U, __A, 5); 
2215}
2216
2217__m256i test_mm256_maskz_slli_epi16_2(__mmask16 __U, __m256i __A, int __B) {
2218  // CHECK-LABEL: @test_mm256_maskz_slli_epi16_2
2219  // CHECK: @llvm.x86.avx2.pslli.w
2220  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2221  return _mm256_maskz_slli_epi16(__U, __A, __B); 
2222}
2223
2224__m256i test_mm256_srlv_epi16(__m256i __A, __m256i __B) {
2225  // CHECK-LABEL: @test_mm256_srlv_epi16
2226  // CHECK: @llvm.x86.avx512.psrlv.w.256(
2227  return _mm256_srlv_epi16(__A, __B); 
2228}
2229
2230__m256i test_mm256_mask_srlv_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
2231  // CHECK-LABEL: @test_mm256_mask_srlv_epi16
2232  // CHECK: @llvm.x86.avx512.psrlv.w.256(
2233  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2234  return _mm256_mask_srlv_epi16(__W, __U, __A, __B); 
2235}
2236
2237__m256i test_mm256_maskz_srlv_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
2238  // CHECK-LABEL: @test_mm256_maskz_srlv_epi16
2239  // CHECK: @llvm.x86.avx512.psrlv.w.256(
2240  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2241  return _mm256_maskz_srlv_epi16(__U, __A, __B); 
2242}
2243
2244__m128i test_mm_srlv_epi16(__m128i __A, __m128i __B) {
2245  // CHECK-LABEL: @test_mm_srlv_epi16
2246  // CHECK: @llvm.x86.avx512.psrlv.w.128(
2247  return _mm_srlv_epi16(__A, __B); 
2248}
2249
2250__m128i test_mm_mask_srlv_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
2251  // CHECK-LABEL: @test_mm_mask_srlv_epi16
2252  // CHECK: @llvm.x86.avx512.psrlv.w.128(
2253  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2254  return _mm_mask_srlv_epi16(__W, __U, __A, __B); 
2255}
2256
2257__m128i test_mm_maskz_srlv_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
2258  // CHECK-LABEL: @test_mm_maskz_srlv_epi16
2259  // CHECK: @llvm.x86.avx512.psrlv.w.128(
2260  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2261  return _mm_maskz_srlv_epi16(__U, __A, __B); 
2262}
2263
2264__m128i test_mm_mask_srl_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
2265  // CHECK-LABEL: @test_mm_mask_srl_epi16
2266  // CHECK: @llvm.x86.sse2.psrl.w
2267  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2268  return _mm_mask_srl_epi16(__W, __U, __A, __B); 
2269}
2270
2271__m128i test_mm_maskz_srl_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
2272  // CHECK-LABEL: @test_mm_maskz_srl_epi16
2273  // CHECK: @llvm.x86.sse2.psrl.w
2274  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2275  return _mm_maskz_srl_epi16(__U, __A, __B); 
2276}
2277
2278__m256i test_mm256_mask_srl_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m128i __B) {
2279  // CHECK-LABEL: @test_mm256_mask_srl_epi16
2280  // CHECK: @llvm.x86.avx2.psrl.w
2281  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2282  return _mm256_mask_srl_epi16(__W, __U, __A, __B); 
2283}
2284
2285__m256i test_mm256_maskz_srl_epi16(__mmask16 __U, __m256i __A, __m128i __B) {
2286  // CHECK-LABEL: @test_mm256_maskz_srl_epi16
2287  // CHECK: @llvm.x86.avx2.psrl.w
2288  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2289  return _mm256_maskz_srl_epi16(__U, __A, __B); 
2290}
2291
2292__m128i test_mm_mask_srli_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
2293  // CHECK-LABEL: @test_mm_mask_srli_epi16
2294  // CHECK: @llvm.x86.sse2.psrli.w
2295  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2296  return _mm_mask_srli_epi16(__W, __U, __A, 5); 
2297}
2298
2299__m128i test_mm_mask_srli_epi16_2(__m128i __W, __mmask8 __U, __m128i __A, int __B) {
2300  // CHECK-LABEL: @test_mm_mask_srli_epi16_2
2301  // CHECK: @llvm.x86.sse2.psrli.w
2302  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2303  return _mm_mask_srli_epi16(__W, __U, __A, __B); 
2304}
2305
2306__m128i test_mm_maskz_srli_epi16(__mmask8 __U, __m128i __A) {
2307  // CHECK-LABEL: @test_mm_maskz_srli_epi16
2308  // CHECK: @llvm.x86.sse2.psrli.w
2309  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2310  return _mm_maskz_srli_epi16(__U, __A, 5); 
2311}
2312
2313__m128i test_mm_maskz_srli_epi16_2(__mmask8 __U, __m128i __A, int __B) {
2314  // CHECK-LABEL: @test_mm_maskz_srli_epi16_2
2315  // CHECK: @llvm.x86.sse2.psrli.w
2316  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2317  return _mm_maskz_srli_epi16(__U, __A, __B); 
2318}
2319
2320__m256i test_mm256_mask_srli_epi16(__m256i __W, __mmask16 __U, __m256i __A) {
2321  // CHECK-LABEL: @test_mm256_mask_srli_epi16
2322  // CHECK: @llvm.x86.avx2.psrli.w
2323  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2324  return _mm256_mask_srli_epi16(__W, __U, __A, 5); 
2325}
2326
2327__m256i test_mm256_mask_srli_epi16_2(__m256i __W, __mmask16 __U, __m256i __A, int __B) {
2328  // CHECK-LABEL: @test_mm256_mask_srli_epi16_2
2329  // CHECK: @llvm.x86.avx2.psrli.w
2330  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2331  return _mm256_mask_srli_epi16(__W, __U, __A, __B); 
2332}
2333
2334__m256i test_mm256_maskz_srli_epi16(__mmask16 __U, __m256i __A) {
2335  // CHECK-LABEL: @test_mm256_maskz_srli_epi16
2336  // CHECK: @llvm.x86.avx2.psrli.w
2337  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2338  return _mm256_maskz_srli_epi16(__U, __A, 5); 
2339}
2340
2341__m256i test_mm256_maskz_srli_epi16_2(__mmask16 __U, __m256i __A, int __B) {
2342  // CHECK-LABEL: @test_mm256_maskz_srli_epi16_2
2343  // CHECK: @llvm.x86.avx2.psrli.w
2344  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2345  return _mm256_maskz_srli_epi16(__U, __A, __B); 
2346}
2347
2348__m256i test_mm256_srav_epi16(__m256i __A, __m256i __B) {
2349  // CHECK-LABEL: @test_mm256_srav_epi16
2350  // CHECK: @llvm.x86.avx512.psrav.w.256(
2351  return _mm256_srav_epi16(__A, __B); 
2352}
2353
2354__m256i test_mm256_mask_srav_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
2355  // CHECK-LABEL: @test_mm256_mask_srav_epi16
2356  // CHECK: @llvm.x86.avx512.psrav.w.256(
2357  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2358  return _mm256_mask_srav_epi16(__W, __U, __A, __B); 
2359}
2360
2361__m256i test_mm256_maskz_srav_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
2362  // CHECK-LABEL: @test_mm256_maskz_srav_epi16
2363  // CHECK: @llvm.x86.avx512.psrav.w.256(
2364  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2365  return _mm256_maskz_srav_epi16(__U, __A, __B); 
2366}
2367
2368__m128i test_mm_srav_epi16(__m128i __A, __m128i __B) {
2369  // CHECK-LABEL: @test_mm_srav_epi16
2370  // CHECK: @llvm.x86.avx512.psrav.w.128(
2371  return _mm_srav_epi16(__A, __B); 
2372}
2373
2374__m128i test_mm_mask_srav_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
2375  // CHECK-LABEL: @test_mm_mask_srav_epi16
2376  // CHECK: @llvm.x86.avx512.psrav.w.128(
2377  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2378  return _mm_mask_srav_epi16(__W, __U, __A, __B); 
2379}
2380
2381__m128i test_mm_maskz_srav_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
2382  // CHECK-LABEL: @test_mm_maskz_srav_epi16
2383  // CHECK: @llvm.x86.avx512.psrav.w.128(
2384  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2385  return _mm_maskz_srav_epi16(__U, __A, __B); 
2386}
2387
2388__m128i test_mm_mask_sra_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
2389  // CHECK-LABEL: @test_mm_mask_sra_epi16
2390  // CHECK: @llvm.x86.sse2.psra.w
2391  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2392  return _mm_mask_sra_epi16(__W, __U, __A, __B); 
2393}
2394
2395__m128i test_mm_maskz_sra_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
2396  // CHECK-LABEL: @test_mm_maskz_sra_epi16
2397  // CHECK: @llvm.x86.sse2.psra.w
2398  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2399  return _mm_maskz_sra_epi16(__U, __A, __B); 
2400}
2401
2402__m256i test_mm256_mask_sra_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m128i __B) {
2403  // CHECK-LABEL: @test_mm256_mask_sra_epi16
2404  // CHECK: @llvm.x86.avx2.psra.w
2405  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2406  return _mm256_mask_sra_epi16(__W, __U, __A, __B); 
2407}
2408
2409__m256i test_mm256_maskz_sra_epi16(__mmask16 __U, __m256i __A, __m128i __B) {
2410  // CHECK-LABEL: @test_mm256_maskz_sra_epi16
2411  // CHECK: @llvm.x86.avx2.psra.w
2412  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2413  return _mm256_maskz_sra_epi16(__U, __A, __B); 
2414}
2415
2416__m128i test_mm_mask_srai_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
2417  // CHECK-LABEL: @test_mm_mask_srai_epi16
2418  // CHECK: @llvm.x86.sse2.psrai.w
2419  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2420  return _mm_mask_srai_epi16(__W, __U, __A, 5); 
2421}
2422
2423__m128i test_mm_mask_srai_epi16_2(__m128i __W, __mmask8 __U, __m128i __A, int __B) {
2424  // CHECK-LABEL: @test_mm_mask_srai_epi16_2
2425  // CHECK: @llvm.x86.sse2.psrai.w
2426  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2427  return _mm_mask_srai_epi16(__W, __U, __A, __B); 
2428}
2429
2430__m128i test_mm_maskz_srai_epi16(__mmask8 __U, __m128i __A) {
2431  // CHECK-LABEL: @test_mm_maskz_srai_epi16
2432  // CHECK: @llvm.x86.sse2.psrai.w
2433  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2434  return _mm_maskz_srai_epi16(__U, __A, 5); 
2435}
2436
2437__m128i test_mm_maskz_srai_epi16_2(__mmask8 __U, __m128i __A, int __B) {
2438  // CHECK-LABEL: @test_mm_maskz_srai_epi16_2
2439  // CHECK: @llvm.x86.sse2.psrai.w
2440  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2441  return _mm_maskz_srai_epi16(__U, __A, __B); 
2442}
2443
2444__m256i test_mm256_mask_srai_epi16(__m256i __W, __mmask16 __U, __m256i __A) {
2445  // CHECK-LABEL: @test_mm256_mask_srai_epi16
2446  // CHECK: @llvm.x86.avx2.psrai.w
2447  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2448  return _mm256_mask_srai_epi16(__W, __U, __A, 5); 
2449}
2450
2451__m256i test_mm256_mask_srai_epi16_2(__m256i __W, __mmask16 __U, __m256i __A, int __B) {
2452  // CHECK-LABEL: @test_mm256_mask_srai_epi16_2
2453  // CHECK: @llvm.x86.avx2.psrai.w
2454  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2455  return _mm256_mask_srai_epi16(__W, __U, __A, __B); 
2456}
2457
2458__m256i test_mm256_maskz_srai_epi16(__mmask16 __U, __m256i __A) {
2459  // CHECK-LABEL: @test_mm256_maskz_srai_epi16
2460  // CHECK: @llvm.x86.avx2.psrai.w
2461  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2462  return _mm256_maskz_srai_epi16(__U, __A, 5); 
2463}
2464
2465__m256i test_mm256_maskz_srai_epi16_2(__mmask16 __U, __m256i __A, int __B) {
2466  // CHECK-LABEL: @test_mm256_maskz_srai_epi16_2
2467  // CHECK: @llvm.x86.avx2.psrai.w
2468  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2469  return _mm256_maskz_srai_epi16(__U, __A, __B); 
2470}
2471
2472__m128i test_mm_mask_mov_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
2473  // CHECK-LABEL: @test_mm_mask_mov_epi16
2474  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2475  return _mm_mask_mov_epi16(__W, __U, __A); 
2476}
2477
2478__m128i test_mm_maskz_mov_epi16(__mmask8 __U, __m128i __A) {
2479  // CHECK-LABEL: @test_mm_maskz_mov_epi16
2480  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2481  return _mm_maskz_mov_epi16(__U, __A); 
2482}
2483
2484__m256i test_mm256_mask_mov_epi16(__m256i __W, __mmask16 __U, __m256i __A) {
2485  // CHECK-LABEL: @test_mm256_mask_mov_epi16
2486  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2487  return _mm256_mask_mov_epi16(__W, __U, __A); 
2488}
2489
2490__m256i test_mm256_maskz_mov_epi16(__mmask16 __U, __m256i __A) {
2491  // CHECK-LABEL: @test_mm256_maskz_mov_epi16
2492  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2493  return _mm256_maskz_mov_epi16(__U, __A); 
2494}
2495
2496__m128i test_mm_mask_mov_epi8(__m128i __W, __mmask16 __U, __m128i __A) {
2497  // CHECK-LABEL: @test_mm_mask_mov_epi8
2498  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
2499  return _mm_mask_mov_epi8(__W, __U, __A); 
2500}
2501
2502__m128i test_mm_maskz_mov_epi8(__mmask16 __U, __m128i __A) {
2503  // CHECK-LABEL: @test_mm_maskz_mov_epi8
2504  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
2505  return _mm_maskz_mov_epi8(__U, __A); 
2506}
2507
2508__m256i test_mm256_mask_mov_epi8(__m256i __W, __mmask32 __U, __m256i __A) {
2509  // CHECK-LABEL: @test_mm256_mask_mov_epi8
2510  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
2511  return _mm256_mask_mov_epi8(__W, __U, __A); 
2512}
2513
2514__m256i test_mm256_maskz_mov_epi8(__mmask32 __U, __m256i __A) {
2515  // CHECK-LABEL: @test_mm256_maskz_mov_epi8
2516  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
2517  return _mm256_maskz_mov_epi8(__U, __A); 
2518}
2519
2520__m128i test_mm_loadu_epi16(void const *__P) {
2521  // CHECK-LABEL: @test_mm_loadu_epi16
2522  // CHECK: load <2 x i64>, <2 x i64>* %{{.*}}, align 1{{$}}
2523  return _mm_loadu_epi16(__P);
2524}
2525
2526__m128i test_mm_mask_loadu_epi16(__m128i __W, __mmask8 __U, void const *__P) {
2527  // CHECK-LABEL: @test_mm_mask_loadu_epi16
2528  // CHECK: @llvm.masked.load.v8i16.p0v8i16(<8 x i16>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x i16> %{{.*}})
2529  return _mm_mask_loadu_epi16(__W, __U, __P); 
2530}
2531
2532__m128i test_mm_maskz_loadu_epi16(__mmask8 __U, void const *__P) {
2533  // CHECK-LABEL: @test_mm_maskz_loadu_epi16
2534  // CHECK: @llvm.masked.load.v8i16.p0v8i16(<8 x i16>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x i16> %{{.*}})
2535  return _mm_maskz_loadu_epi16(__U, __P); 
2536}
2537
2538__m256i test_mm256_loadu_epi16(void const *__P) {
2539  // CHECK-LABEL: @test_mm256_loadu_epi16
2540  // CHECK: load <4 x i64>, <4 x i64>* %{{.*}}, align 1{{$}}
2541  return _mm256_loadu_epi16(__P);
2542}
2543
2544__m256i test_mm256_mask_loadu_epi16(__m256i __W, __mmask16 __U, void const *__P) {
2545  // CHECK-LABEL: @test_mm256_mask_loadu_epi16
2546  // CHECK: @llvm.masked.load.v16i16.p0v16i16(<16 x i16>* %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i16> %{{.*}})
2547  return _mm256_mask_loadu_epi16(__W, __U, __P); 
2548}
2549
2550__m256i test_mm256_maskz_loadu_epi16(__mmask16 __U, void const *__P) {
2551  // CHECK-LABEL: @test_mm256_maskz_loadu_epi16
2552  // CHECK: @llvm.masked.load.v16i16.p0v16i16(<16 x i16>* %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i16> %{{.*}})
2553  return _mm256_maskz_loadu_epi16(__U, __P); 
2554}
2555
2556__m128i test_mm_loadu_epi8(void const *__P) {
2557  // CHECK-LABEL: @test_mm_loadu_epi8
2558  // CHECK: load <2 x i64>, <2 x i64>* %{{.*}}, align 1{{$}}
2559  return _mm_loadu_epi8(__P);
2560}
2561
2562__m128i test_mm_mask_loadu_epi8(__m128i __W, __mmask16 __U, void const *__P) {
2563  // CHECK-LABEL: @test_mm_mask_loadu_epi8
2564  // CHECK: @llvm.masked.load.v16i8.p0v16i8(<16 x i8>* %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i8> %{{.*}})
2565  return _mm_mask_loadu_epi8(__W, __U, __P); 
2566}
2567
2568__m128i test_mm_maskz_loadu_epi8(__mmask16 __U, void const *__P) {
2569  // CHECK-LABEL: @test_mm_maskz_loadu_epi8
2570  // CHECK: @llvm.masked.load.v16i8.p0v16i8(<16 x i8>* %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i8> %{{.*}})
2571  return _mm_maskz_loadu_epi8(__U, __P); 
2572}
2573
2574__m256i test_mm256_loadu_epi8(void const *__P) {
2575  // CHECK-LABEL: @test_mm256_loadu_epi8
2576  // CHECK: load <4 x i64>, <4 x i64>* %{{.*}}, align 1{{$}}
2577  return _mm256_loadu_epi8(__P);
2578}
2579
2580__m256i test_mm256_mask_loadu_epi8(__m256i __W, __mmask32 __U, void const *__P) {
2581  // CHECK-LABEL: @test_mm256_mask_loadu_epi8
2582  // CHECK: @llvm.masked.load.v32i8.p0v32i8(<32 x i8>* %{{.*}}, i32 1, <32 x i1> %{{.*}}, <32 x i8> %{{.*}})
2583  return _mm256_mask_loadu_epi8(__W, __U, __P); 
2584}
2585
2586__m256i test_mm256_maskz_loadu_epi8(__mmask32 __U, void const *__P) {
2587  // CHECK-LABEL: @test_mm256_maskz_loadu_epi8
2588  // CHECK: @llvm.masked.load.v32i8.p0v32i8(<32 x i8>* %{{.*}}, i32 1, <32 x i1> %{{.*}}, <32 x i8> %{{.*}})
2589  return _mm256_maskz_loadu_epi8(__U, __P); 
2590}
2591
2592void test_mm_storeu_epi16(void *__p, __m128i __a) {
2593  // check-label: @test_mm_storeu_epi16
2594  // check: store <2 x i64> %{{.*}}, <2 x i64>* %{{.*}}, align 1{{$}}
2595  return _mm_storeu_epi16(__p, __a);
2596}
2597
2598void test_mm_mask_storeu_epi16(void *__P, __mmask8 __U, __m128i __A) {
2599  // CHECK-LABEL: @test_mm_mask_storeu_epi16
2600  // CHECK: @llvm.masked.store.v8i16.p0v8i16(<8 x i16> %{{.*}}, <8 x i16>* %{{.*}}, i32 1, <8 x i1> %{{.*}})
2601  return _mm_mask_storeu_epi16(__P, __U, __A); 
2602}
2603
2604void test_mm256_storeu_epi16(void *__P, __m256i __A) {
2605  // CHECK-LABEL: @test_mm256_storeu_epi16
2606  // CHECK: store <4 x i64> %{{.*}}, <4 x i64>* %{{.*}}, align 1{{$}}
2607  return _mm256_storeu_epi16(__P, __A);
2608}
2609
2610void test_mm256_mask_storeu_epi16(void *__P, __mmask16 __U, __m256i __A) {
2611  // CHECK-LABEL: @test_mm256_mask_storeu_epi16
2612  // CHECK: @llvm.masked.store.v16i16.p0v16i16(<16 x i16> %{{.*}}, <16 x i16>* %{{.*}}, i32 1, <16 x i1> %{{.*}})
2613  return _mm256_mask_storeu_epi16(__P, __U, __A); 
2614}
2615
2616void test_mm_storeu_epi8(void *__p, __m128i __a) {
2617  // check-label: @test_mm_storeu_epi8
2618  // check: store <2 x i64> %{{.*}}, <2 x i64>* %{{.*}}, align 1{{$}}
2619  return _mm_storeu_epi8(__p, __a);
2620}
2621
2622void test_mm_mask_storeu_epi8(void *__P, __mmask16 __U, __m128i __A) {
2623  // CHECK-LABEL: @test_mm_mask_storeu_epi8
2624  // CHECK: @llvm.masked.store.v16i8.p0v16i8(<16 x i8> %{{.*}}, <16 x i8>* %{{.*}}, i32 1, <16 x i1> %{{.*}})
2625  return _mm_mask_storeu_epi8(__P, __U, __A); 
2626}
2627
2628void test_mm256_storeu_epi8(void *__P, __m256i __A) {
2629  // CHECK-LABEL: @test_mm256_storeu_epi8
2630  // CHECK: store <4 x i64> %{{.*}}, <4 x i64>* %{{.*}}, align 1{{$}}
2631  return _mm256_storeu_epi8(__P, __A);
2632}
2633
2634void test_mm256_mask_storeu_epi8(void *__P, __mmask32 __U, __m256i __A) {
2635  // CHECK-LABEL: @test_mm256_mask_storeu_epi8
2636  // CHECK: @llvm.masked.store.v32i8.p0v32i8(<32 x i8> %{{.*}}, <32 x i8>* %{{.*}}, i32 1, <32 x i1> %{{.*}})
2637  return _mm256_mask_storeu_epi8(__P, __U, __A); 
2638}
2639__mmask16 test_mm_test_epi8_mask(__m128i __A, __m128i __B) {
2640  // CHECK-LABEL: @test_mm_test_epi8_mask
2641  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
2642  // CHECK: icmp ne <16 x i8> %{{.*}}, %{{.*}}
2643  return _mm_test_epi8_mask(__A, __B); 
2644}
2645
2646__mmask16 test_mm_mask_test_epi8_mask(__mmask16 __U, __m128i __A, __m128i __B) {
2647  // CHECK-LABEL: @test_mm_mask_test_epi8_mask
2648  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
2649  // CHECK: icmp ne <16 x i8> %{{.*}}, %{{.*}}
2650  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2651  return _mm_mask_test_epi8_mask(__U, __A, __B); 
2652}
2653
2654__mmask32 test_mm256_test_epi8_mask(__m256i __A, __m256i __B) {
2655  // CHECK-LABEL: @test_mm256_test_epi8_mask
2656  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
2657  // CHECK: icmp ne <32 x i8> %{{.*}}, %{{.*}}
2658  return _mm256_test_epi8_mask(__A, __B); 
2659}
2660
2661__mmask32 test_mm256_mask_test_epi8_mask(__mmask32 __U, __m256i __A, __m256i __B) {
2662  // CHECK-LABEL: @test_mm256_mask_test_epi8_mask
2663  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
2664  // CHECK: icmp ne <32 x i8> %{{.*}}, %{{.*}}
2665  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
2666  return _mm256_mask_test_epi8_mask(__U, __A, __B); 
2667}
2668
2669__mmask8 test_mm_test_epi16_mask(__m128i __A, __m128i __B) {
2670  // CHECK-LABEL: @test_mm_test_epi16_mask
2671  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
2672  // CHECK: icmp ne <8 x i16> %{{.*}}, %{{.*}}
2673  return _mm_test_epi16_mask(__A, __B); 
2674}
2675
2676__mmask8 test_mm_mask_test_epi16_mask(__mmask8 __U, __m128i __A, __m128i __B) {
2677  // CHECK-LABEL: @test_mm_mask_test_epi16_mask
2678  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
2679  // CHECK: icmp ne <8 x i16> %{{.*}}, %{{.*}}
2680  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2681  return _mm_mask_test_epi16_mask(__U, __A, __B); 
2682}
2683
2684__mmask16 test_mm256_test_epi16_mask(__m256i __A, __m256i __B) {
2685  // CHECK-LABEL: @test_mm256_test_epi16_mask
2686  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
2687  // CHECK: icmp ne <16 x i16> %{{.*}}, %{{.*}}
2688  return _mm256_test_epi16_mask(__A, __B); 
2689}
2690
2691__mmask16 test_mm256_mask_test_epi16_mask(__mmask16 __U, __m256i __A, __m256i __B) {
2692  // CHECK-LABEL: @test_mm256_mask_test_epi16_mask
2693  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
2694  // CHECK: icmp ne <16 x i16> %{{.*}}, %{{.*}}
2695  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2696  return _mm256_mask_test_epi16_mask(__U, __A, __B); 
2697}
2698
2699__mmask16 test_mm_testn_epi8_mask(__m128i __A, __m128i __B) {
2700  // CHECK-LABEL: @test_mm_testn_epi8_mask
2701  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
2702  // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
2703  return _mm_testn_epi8_mask(__A, __B); 
2704}
2705
2706__mmask16 test_mm_mask_testn_epi8_mask(__mmask16 __U, __m128i __A, __m128i __B) {
2707  // CHECK-LABEL: @test_mm_mask_testn_epi8_mask
2708  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
2709  // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
2710  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2711  return _mm_mask_testn_epi8_mask(__U, __A, __B); 
2712}
2713
2714__mmask32 test_mm256_testn_epi8_mask(__m256i __A, __m256i __B) {
2715  // CHECK-LABEL: @test_mm256_testn_epi8_mask
2716  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
2717  // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}
2718  return _mm256_testn_epi8_mask(__A, __B); 
2719}
2720
2721__mmask32 test_mm256_mask_testn_epi8_mask(__mmask32 __U, __m256i __A, __m256i __B) {
2722  // CHECK-LABEL: @test_mm256_mask_testn_epi8_mask
2723  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
2724  // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}
2725  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
2726  return _mm256_mask_testn_epi8_mask(__U, __A, __B); 
2727}
2728
2729__mmask8 test_mm_testn_epi16_mask(__m128i __A, __m128i __B) {
2730  // CHECK-LABEL: @test_mm_testn_epi16_mask
2731  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
2732  // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
2733  return _mm_testn_epi16_mask(__A, __B); 
2734}
2735
2736__mmask8 test_mm_mask_testn_epi16_mask(__mmask8 __U, __m128i __A, __m128i __B) {
2737  // CHECK-LABEL: @test_mm_mask_testn_epi16_mask
2738  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
2739  // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
2740  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2741  return _mm_mask_testn_epi16_mask(__U, __A, __B); 
2742}
2743
2744__mmask16 test_mm256_testn_epi16_mask(__m256i __A, __m256i __B) {
2745  // CHECK-LABEL: @test_mm256_testn_epi16_mask
2746  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
2747  // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}
2748  return _mm256_testn_epi16_mask(__A, __B); 
2749}
2750
2751__mmask16 test_mm256_mask_testn_epi16_mask(__mmask16 __U, __m256i __A, __m256i __B) {
2752  // CHECK-LABEL: @test_mm256_mask_testn_epi16_mask
2753  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
2754  // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}
2755  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2756  return _mm256_mask_testn_epi16_mask(__U, __A, __B); 
2757}
2758
2759__mmask16 test_mm_movepi8_mask(__m128i __A) {
2760  // CHECK-LABEL: @test_mm_movepi8_mask
2761  // CHECK: [[CMP:%.*]] = icmp slt <16 x i8> %{{.*}}, zeroinitializer
2762  // CHECK: bitcast <16 x i1> [[CMP]] to i16
2763  return _mm_movepi8_mask(__A); 
2764}
2765
2766__mmask32 test_mm256_movepi8_mask(__m256i __A) {
2767  // CHECK-LABEL: @test_mm256_movepi8_mask
2768  // CHECK: [[CMP:%.*]] = icmp slt <32 x i8> %{{.*}}, zeroinitializer
2769  // CHECK: bitcast <32 x i1> [[CMP]] to i32
2770  return _mm256_movepi8_mask(__A); 
2771}
2772
2773__m128i test_mm_movm_epi8(__mmask16 __A) {
2774  // CHECK-LABEL: @test_mm_movm_epi8
2775  // CHECK: %{{.*}} = bitcast i16 %{{.*}} to <16 x i1>
2776  // CHECK: %vpmovm2.i = sext <16 x i1> %{{.*}} to <16 x i8>
2777  return _mm_movm_epi8(__A); 
2778}
2779
2780__m256i test_mm256_movm_epi8(__mmask32 __A) {
2781  // CHECK-LABEL: @test_mm256_movm_epi8
2782  // CHECK: %{{.*}} = bitcast i32 %{{.*}} to <32 x i1>
2783  // CHECK: %vpmovm2.i = sext <32 x i1> %{{.*}} to <32 x i8>
2784  return _mm256_movm_epi8(__A); 
2785}
2786
2787__m128i test_mm_movm_epi16(__mmask8 __A) {
2788  // CHECK-LABEL: @test_mm_movm_epi16
2789  // CHECK: %{{.*}} = bitcast i8 %{{.*}} to <8 x i1>
2790  // CHECK: %vpmovm2.i = sext <8 x i1> %{{.*}} to <8 x i16>
2791  return _mm_movm_epi16(__A); 
2792}
2793
2794__m256i test_mm256_movm_epi16(__mmask16 __A) {
2795  // CHECK-LABEL: @test_mm256_movm_epi16
2796  // CHECK: %{{.*}} = bitcast i16 %{{.*}} to <16 x i1>
2797  // CHECK: %vpmovm2.i = sext <16 x i1> %{{.*}} to <16 x i16>
2798  return _mm256_movm_epi16(__A); 
2799}
2800
2801__m128i test_mm_mask_broadcastb_epi8(__m128i __O, __mmask16 __M, __m128i __A) {
2802  // CHECK-LABEL: @test_mm_mask_broadcastb_epi8
2803  // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> zeroinitializer
2804  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
2805  return _mm_mask_broadcastb_epi8(__O, __M, __A);
2806}
2807
2808__m128i test_mm_maskz_broadcastb_epi8(__mmask16 __M, __m128i __A) {
2809  // CHECK-LABEL: @test_mm_maskz_broadcastb_epi8
2810  // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> zeroinitializer
2811  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
2812  return _mm_maskz_broadcastb_epi8(__M, __A);
2813}
2814
2815__m256i test_mm256_mask_broadcastb_epi8(__m256i __O, __mmask32 __M, __m128i __A) {
2816  // CHECK-LABEL: @test_mm256_mask_broadcastb_epi8
2817  // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <32 x i32> zeroinitializer
2818  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
2819  return _mm256_mask_broadcastb_epi8(__O, __M, __A);
2820}
2821
2822__m256i test_mm256_maskz_broadcastb_epi8(__mmask32 __M, __m128i __A) {
2823  // CHECK-LABEL: @test_mm256_maskz_broadcastb_epi8
2824  // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <32 x i32> zeroinitializer
2825  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
2826  return _mm256_maskz_broadcastb_epi8(__M, __A);
2827}
2828
2829__m128i test_mm_mask_broadcastw_epi16(__m128i __O, __mmask8 __M, __m128i __A) {
2830  // CHECK-LABEL: @test_mm_mask_broadcastw_epi16
2831  // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> zeroinitializer
2832  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2833  return _mm_mask_broadcastw_epi16(__O, __M, __A);
2834}
2835
2836__m128i test_mm_maskz_broadcastw_epi16(__mmask8 __M, __m128i __A) {
2837  // CHECK-LABEL: @test_mm_maskz_broadcastw_epi16
2838  // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> zeroinitializer
2839  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2840  return _mm_maskz_broadcastw_epi16(__M, __A);
2841}
2842
2843__m256i test_mm256_mask_broadcastw_epi16(__m256i __O, __mmask16 __M, __m128i __A) {
2844  // CHECK-LABEL: @test_mm256_mask_broadcastw_epi16
2845  // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <16 x i32> zeroinitializer
2846  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2847  return _mm256_mask_broadcastw_epi16(__O, __M, __A);
2848}
2849
2850__m256i test_mm256_maskz_broadcastw_epi16(__mmask16 __M, __m128i __A) {
2851  // CHECK-LABEL: @test_mm256_maskz_broadcastw_epi16
2852  // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <16 x i32> zeroinitializer
2853  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2854  return _mm256_maskz_broadcastw_epi16(__M, __A);
2855}
2856__m128i test_mm_mask_set1_epi8 (__m128i __O, __mmask16 __M, char __A){
2857  // CHECK-LABEL: @test_mm_mask_set1_epi8
2858  // CHECK: insertelement <16 x i8> undef, i8 %{{.*}}, i32 0
2859  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 1
2860  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 2
2861  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 3
2862  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 4
2863  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 5
2864  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 6
2865  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 7
2866  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 8
2867  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 9
2868  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 10
2869  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 11
2870  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 12
2871  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 13
2872  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 14
2873  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 15
2874  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
2875  return _mm_mask_set1_epi8(__O, __M, __A);
2876}
2877__m128i test_mm_maskz_set1_epi8 ( __mmask16 __M, char __A){
2878  // CHECK-LABEL: @test_mm_maskz_set1_epi8
2879  // CHECK: insertelement <16 x i8> undef, i8 %{{.*}}, i32 0
2880  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 1
2881  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 2
2882  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 3
2883  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 4
2884  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 5
2885  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 6
2886  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 7
2887  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 8
2888  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 9
2889  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 10
2890  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 11
2891  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 12
2892  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 13
2893  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 14
2894  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 15
2895  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
2896  return _mm_maskz_set1_epi8( __M, __A);
2897}
2898
2899__m256i test_mm256_mask_set1_epi8(__m256i __O, __mmask32 __M, char __A) {
2900  // CHECK-LABEL: @test_mm256_mask_set1_epi8
2901  // CHECK: insertelement <32 x i8> undef, i8 %{{.*}}, i32 0
2902  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 1
2903  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 2
2904  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 3
2905  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 4
2906  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 5
2907  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 6
2908  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 7
2909  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 8
2910  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 9
2911  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 10
2912  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 11
2913  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 12
2914  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 13
2915  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 14
2916  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 15
2917  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 16
2918  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 17
2919  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 18
2920  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 19
2921  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 20
2922  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 21
2923  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 22
2924  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 23
2925  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 24
2926  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 25
2927  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 26
2928  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 27
2929  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 28
2930  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 29
2931  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 30
2932  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 31
2933  // CHECK:  select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
2934  return _mm256_mask_set1_epi8(__O, __M, __A);
2935}
2936
2937__m256i test_mm256_maskz_set1_epi8( __mmask32 __M, char __A) {
2938  // CHECK-LABEL: @test_mm256_maskz_set1_epi8
2939  // CHECK: insertelement <32 x i8> undef, i8 %{{.*}}, i32 0
2940  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 1
2941  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 2
2942  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 3
2943  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 4
2944  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 5
2945  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 6
2946  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 7
2947  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 8
2948  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 9
2949  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 10
2950  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 11
2951  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 12
2952  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 13
2953  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 14
2954  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 15
2955  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 16
2956  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 17
2957  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 18
2958  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 19
2959  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 20
2960  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 21
2961  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 22
2962  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 23
2963  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 24
2964  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 25
2965  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 26
2966  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 27
2967  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 28
2968  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 29
2969  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 30
2970  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 31
2971  // CHECK:  select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
2972  return _mm256_maskz_set1_epi8( __M, __A);
2973}
2974
2975
2976__m256i test_mm256_mask_set1_epi16(__m256i __O, __mmask16 __M, short __A) {
2977  // CHECK-LABEL: @test_mm256_mask_set1_epi16
2978  // CHECK: insertelement <16 x i16> undef, i16 %{{.*}}, i32 0
2979  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 1
2980  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 2
2981  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 3
2982  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 4
2983  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 5
2984  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 6
2985  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 7
2986  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 8
2987  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 9
2988  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 10
2989  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 11
2990  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 12
2991  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 13
2992  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 14
2993  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 15
2994  // CHECK:  select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2995  return _mm256_mask_set1_epi16(__O, __M, __A); 
2996}
2997
2998__m256i test_mm256_maskz_set1_epi16(__mmask16 __M, short __A) {
2999  // CHECK-LABEL: @test_mm256_maskz_set1_epi16
3000  // CHECK: insertelement <16 x i16> undef, i16 %{{.*}}, i32 0
3001  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 1
3002  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 2
3003  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 3
3004  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 4
3005  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 5
3006  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 6
3007  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 7
3008  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 8
3009  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 9
3010  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 10
3011  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 11
3012  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 12
3013  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 13
3014  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 14
3015  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 15
3016  // CHECK:  select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3017  return _mm256_maskz_set1_epi16(__M, __A); 
3018}
3019
3020__m128i test_mm_mask_set1_epi16(__m128i __O, __mmask8 __M, short __A) {
3021  // CHECK-LABEL: @test_mm_mask_set1_epi16
3022  // CHECK: insertelement <8 x i16> undef, i16 %{{.*}}, i32 0
3023  // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 1
3024  // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 2
3025  // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 3
3026  // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 4
3027  // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 5
3028  // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 6
3029  // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 7
3030  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3031  return _mm_mask_set1_epi16(__O, __M, __A); 
3032}
3033
3034__m128i test_mm_maskz_set1_epi16(__mmask8 __M, short __A) {
3035  // CHECK-LABEL: @test_mm_maskz_set1_epi16
3036  // CHECK: insertelement <8 x i16> undef, i16 %{{.*}}, i32 0
3037  // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 1
3038  // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 2
3039  // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 3
3040  // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 4
3041  // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 5
3042  // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 6
3043  // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 7
3044  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3045  return _mm_maskz_set1_epi16(__M, __A); 
3046}
3047__m128i test_mm_permutexvar_epi16(__m128i __A, __m128i __B) {
3048  // CHECK-LABEL: @test_mm_permutexvar_epi16
3049  // CHECK: @llvm.x86.avx512.permvar.hi.128
3050  return _mm_permutexvar_epi16(__A, __B); 
3051}
3052
3053__m128i test_mm_maskz_permutexvar_epi16(__mmask8 __M, __m128i __A, __m128i __B) {
3054  // CHECK-LABEL: @test_mm_maskz_permutexvar_epi16
3055  // CHECK: @llvm.x86.avx512.permvar.hi.128
3056  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3057  return _mm_maskz_permutexvar_epi16(__M, __A, __B); 
3058}
3059
3060__m128i test_mm_mask_permutexvar_epi16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
3061  // CHECK-LABEL: @test_mm_mask_permutexvar_epi16
3062  // CHECK: @llvm.x86.avx512.permvar.hi.128
3063  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3064  return _mm_mask_permutexvar_epi16(__W, __M, __A, __B); 
3065}
3066
3067__m256i test_mm256_permutexvar_epi16(__m256i __A, __m256i __B) {
3068  // CHECK-LABEL: @test_mm256_permutexvar_epi16
3069  // CHECK: @llvm.x86.avx512.permvar.hi.256
3070  return _mm256_permutexvar_epi16(__A, __B); 
3071}
3072
3073__m256i test_mm256_maskz_permutexvar_epi16(__mmask16 __M, __m256i __A, __m256i __B) {
3074  // CHECK-LABEL: @test_mm256_maskz_permutexvar_epi16
3075  // CHECK: @llvm.x86.avx512.permvar.hi.256
3076  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3077  return _mm256_maskz_permutexvar_epi16(__M, __A, __B); 
3078}
3079
3080__m256i test_mm256_mask_permutexvar_epi16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {
3081  // CHECK-LABEL: @test_mm256_mask_permutexvar_epi16
3082  // CHECK: @llvm.x86.avx512.permvar.hi.256
3083  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3084  return _mm256_mask_permutexvar_epi16(__W, __M, __A, __B); 
3085}
3086__m128i test_mm_mask_alignr_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
3087  // CHECK-LABEL: @test_mm_mask_alignr_epi8
3088  // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 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 16, i32 17>
3089  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
3090  return _mm_mask_alignr_epi8(__W, __U, __A, __B, 2); 
3091}
3092
3093__m128i test_mm_maskz_alignr_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
3094  // CHECK-LABEL: @test_mm_maskz_alignr_epi8
3095  // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 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 16, i32 17>
3096  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
3097  return _mm_maskz_alignr_epi8(__U, __A, __B, 2); 
3098}
3099
3100__m256i test_mm256_mask_alignr_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
3101  // CHECK-LABEL: @test_mm256_mask_alignr_epi8
3102  // CHECK: shufflevector <32 x i8> %{{.*}}, <32 x i8> %{{.*}}, <32 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 32, i32 33, 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 48, i32 49>
3103  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
3104  return _mm256_mask_alignr_epi8(__W, __U, __A, __B, 2); 
3105}
3106
3107__m256i test_mm256_maskz_alignr_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
3108  // CHECK-LABEL: @test_mm256_maskz_alignr_epi8
3109  // CHECK: shufflevector <32 x i8> %{{.*}}, <32 x i8> %{{.*}}, <32 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 32, i32 33, 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 48, i32 49>
3110  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
3111  return _mm256_maskz_alignr_epi8(__U, __A, __B, 2); 
3112}
3113
3114__m128i test_mm_dbsad_epu8(__m128i __A, __m128i __B) {
3115  // CHECK-LABEL: @test_mm_dbsad_epu8
3116  // CHECK: @llvm.x86.avx512.dbpsadbw.128
3117  return _mm_dbsad_epu8(__A, __B, 170); 
3118}
3119
3120__m128i test_mm_mask_dbsad_epu8(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
3121  // CHECK-LABEL: @test_mm_mask_dbsad_epu8
3122  // CHECK: @llvm.x86.avx512.dbpsadbw.128
3123  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3124  return _mm_mask_dbsad_epu8(__W, __U, __A, __B, 170); 
3125}
3126
3127__m128i test_mm_maskz_dbsad_epu8(__mmask8 __U, __m128i __A, __m128i __B) {
3128  // CHECK-LABEL: @test_mm_maskz_dbsad_epu8
3129  // CHECK: @llvm.x86.avx512.dbpsadbw.128
3130  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3131  return _mm_maskz_dbsad_epu8(__U, __A, __B, 170); 
3132}
3133
3134__m256i test_mm256_dbsad_epu8(__m256i __A, __m256i __B) {
3135  // CHECK-LABEL: @test_mm256_dbsad_epu8
3136  // CHECK: @llvm.x86.avx512.dbpsadbw.256
3137  return _mm256_dbsad_epu8(__A, __B, 170); 
3138}
3139
3140__m256i test_mm256_mask_dbsad_epu8(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
3141  // CHECK-LABEL: @test_mm256_mask_dbsad_epu8
3142  // CHECK: @llvm.x86.avx512.dbpsadbw.256
3143  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3144  return _mm256_mask_dbsad_epu8(__W, __U, __A, __B, 170); 
3145}
3146
3147__m256i test_mm256_maskz_dbsad_epu8(__mmask16 __U, __m256i __A, __m256i __B) {
3148  // CHECK-LABEL: @test_mm256_maskz_dbsad_epu8
3149  // CHECK: @llvm.x86.avx512.dbpsadbw.256
3150  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3151  return _mm256_maskz_dbsad_epu8(__U, __A, __B, 170); 
3152}
3153__mmask8 test_mm_movepi16_mask(__m128i __A) {
3154  // CHECK-LABEL: @test_mm_movepi16_mask
3155  // CHECK: [[CMP:%.*]] = icmp slt <8 x i16> %{{.*}}, zeroinitializer
3156  // CHECK: bitcast <8 x i1> [[CMP]] to i8
3157  return _mm_movepi16_mask(__A); 
3158}
3159
3160__mmask16 test_mm256_movepi16_mask(__m256i __A) {
3161  // CHECK-LABEL: @test_mm256_movepi16_mask
3162  // CHECK: [[CMP:%.*]] = icmp slt <16 x i16> %{{.*}}, zeroinitializer
3163  // CHECK: bitcast <16 x i1> [[CMP]] to i16
3164  return _mm256_movepi16_mask(__A); 
3165}
3166
3167__m128i test_mm_mask_shufflehi_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
3168  // CHECK-LABEL: @test_mm_mask_shufflehi_epi16
3169  // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 5, i32 5, i32 4, i32 4>
3170  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3171  return _mm_mask_shufflehi_epi16(__W, __U, __A, 5); 
3172}
3173
3174__m128i test_mm_maskz_shufflehi_epi16(__mmask8 __U, __m128i __A) {
3175  // CHECK-LABEL: @test_mm_maskz_shufflehi_epi16
3176  // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 5, i32 5, i32 4, i32 4>
3177  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3178  return _mm_maskz_shufflehi_epi16(__U, __A, 5); 
3179}
3180
3181__m128i test_mm_mask_shufflelo_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
3182  // CHECK-LABEL: @test_mm_mask_shufflelo_epi16
3183  // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <8 x i32> <i32 1, i32 1, i32 0, i32 0, i32 4, i32 5, i32 6, i32 7>
3184  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3185  return _mm_mask_shufflelo_epi16(__W, __U, __A, 5); 
3186}
3187
3188__m128i test_mm_maskz_shufflelo_epi16(__mmask8 __U, __m128i __A) {
3189  // CHECK-LABEL: @test_mm_maskz_shufflelo_epi16
3190  // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <8 x i32> <i32 1, i32 1, i32 0, i32 0, i32 4, i32 5, i32 6, i32 7>
3191  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3192  return _mm_maskz_shufflelo_epi16(__U, __A, 5); 
3193}
3194
3195__m256i test_mm256_mask_shufflehi_epi16(__m256i __W, __mmask16 __U, __m256i __A) {
3196  // CHECK-LABEL: @test_mm256_mask_shufflehi_epi16
3197  // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> undef, <16 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>
3198  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3199  return _mm256_mask_shufflehi_epi16(__W, __U, __A, 5); 
3200}
3201
3202__m256i test_mm256_maskz_shufflehi_epi16(__mmask16 __U, __m256i __A) {
3203  // CHECK-LABEL: @test_mm256_maskz_shufflehi_epi16
3204  // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> undef, <16 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>
3205  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3206  return _mm256_maskz_shufflehi_epi16(__U, __A, 5); 
3207}
3208
3209__m256i test_mm256_mask_shufflelo_epi16(__m256i __W, __mmask16 __U, __m256i __A) {
3210  // CHECK-LABEL: @test_mm256_mask_shufflelo_epi16
3211  // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> undef, <16 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>
3212  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3213  return _mm256_mask_shufflelo_epi16(__W, __U, __A, 5); 
3214}
3215
3216__m256i test_mm256_maskz_shufflelo_epi16(__mmask16 __U, __m256i __A) {
3217  // CHECK-LABEL: @test_mm256_maskz_shufflelo_epi16
3218  // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> undef, <16 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>
3219  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3220  return _mm256_maskz_shufflelo_epi16(__U, __A, 5); 
3221}
3222
3223void test_mm_mask_cvtepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
3224{
3225 // CHECK-LABEL:@test_mm_mask_cvtepi16_storeu_epi8
3226 // CHECK: @llvm.x86.avx512.mask.pmov.wb.mem.128
3227 _mm_mask_cvtepi16_storeu_epi8 (__P, __M, __A);
3228}
3229
3230void test_mm_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
3231{
3232 // CHECK-LABEL:@test_mm_mask_cvtsepi16_storeu_epi8
3233 // CHECK: @llvm.x86.avx512.mask.pmovs.wb.mem.128
3234  _mm_mask_cvtsepi16_storeu_epi8 ( __P,  __M, __A);
3235}
3236
3237void test_mm_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
3238{
3239 // CHECK-LABEL:@test_mm_mask_cvtusepi16_storeu_epi8
3240 // CHECK: @llvm.x86.avx512.mask.pmovus.wb.mem.128
3241  _mm_mask_cvtusepi16_storeu_epi8 (__P, __M, __A);
3242}
3243
3244void test_mm256_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A)
3245{
3246 // CHECK-LABEL:@test_mm256_mask_cvtusepi16_storeu_epi8
3247 // CHECK: @llvm.x86.avx512.mask.pmovus.wb.mem.256
3248  _mm256_mask_cvtusepi16_storeu_epi8 ( __P, __M, __A);
3249}
3250
3251void test_mm256_mask_cvtepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A)
3252{
3253 // CHECK-LABEL:@test_mm256_mask_cvtepi16_storeu_epi8
3254 // CHECK: @llvm.x86.avx512.mask.pmov.wb.mem.256
3255  _mm256_mask_cvtepi16_storeu_epi8 ( __P,  __M, __A);
3256}
3257
3258void test_mm256_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A)
3259{
3260 // CHECK-LABEL:@test_mm256_mask_cvtsepi16_storeu_epi8
3261 // CHECK: @llvm.x86.avx512.mask.pmovs.wb.mem.256
3262 _mm256_mask_cvtsepi16_storeu_epi8 ( __P, __M, __A);
3263}
3264