[clang] Implement lifetime analysis for lifetime_capture_by(X) (#115921)
[llvm-project.git] / clang / test / CodeGen / X86 / avx512vlbw-builtins.c
blob4ec499caabf04e2207525c5acda45f06ca9efcc8
1 // RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512bw -target-feature +avx512vl -emit-llvm -o - -Wall -Werror -Wsign-conversion | FileCheck %s
2 // RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512bw -target-feature +avx512vl -fno-signed-char -emit-llvm -o - -Wall -Werror -Wsign-conversion | FileCheck %s
3 // RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx10.1-512 -emit-llvm -o - -Wall -Werror -Wsign-conversion | FileCheck %s
5 #include <immintrin.h>
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
899 __m128i test_mm_mask_abs_epi8(__m128i __W, __mmask16 __U, __m128i __A) {
900 // CHECK-LABEL: @test_mm_mask_abs_epi8
901 // CHECK: [[ABS:%.*]] = call <16 x i8> @llvm.abs.v16i8(<16 x i8> %{{.*}}, i1 false)
902 // CHECK: [[TMP:%.*]] = bitcast <16 x i8> [[ABS]] to <2 x i64>
903 // CHECK: [[ABS:%.*]] = bitcast <2 x i64> [[TMP]] to <16 x i8>
904 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> [[ABS]], <16 x i8> %{{.*}}
905 return _mm_mask_abs_epi8(__W,__U,__A);
908 __m128i test_mm_maskz_abs_epi8(__mmask16 __U, __m128i __A) {
909 // CHECK-LABEL: @test_mm_maskz_abs_epi8
910 // CHECK: [[ABS:%.*]] = call <16 x i8> @llvm.abs.v16i8(<16 x i8> %{{.*}}, i1 false)
911 // CHECK: [[TMP:%.*]] = bitcast <16 x i8> [[ABS]] to <2 x i64>
912 // CHECK: [[ABS:%.*]] = bitcast <2 x i64> [[TMP]] to <16 x i8>
913 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> [[ABS]], <16 x i8> %{{.*}}
914 return _mm_maskz_abs_epi8(__U,__A);
917 __m256i test_mm256_mask_abs_epi8(__m256i __W, __mmask32 __U, __m256i __A) {
918 // CHECK-LABEL: @test_mm256_mask_abs_epi8
919 // CHECK: [[ABS:%.*]] = call <32 x i8> @llvm.abs.v32i8(<32 x i8> %{{.*}}, i1 false)
920 // CHECK: [[TMP:%.*]] = bitcast <32 x i8> [[ABS]] to <4 x i64>
921 // CHECK: [[ABS:%.*]] = bitcast <4 x i64> [[TMP]] to <32 x i8>
922 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> [[ABS]], <32 x i8> %{{.*}}
923 return _mm256_mask_abs_epi8(__W,__U,__A);
926 __m256i test_mm256_maskz_abs_epi8(__mmask32 __U, __m256i __A) {
927 // CHECK-LABEL: @test_mm256_maskz_abs_epi8
928 // CHECK: [[ABS:%.*]] = call <32 x i8> @llvm.abs.v32i8(<32 x i8> %{{.*}}, i1 false)
929 // CHECK: [[TMP:%.*]] = bitcast <32 x i8> [[ABS]] to <4 x i64>
930 // CHECK: [[ABS:%.*]] = bitcast <4 x i64> [[TMP]] to <32 x i8>
931 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> [[ABS]], <32 x i8> %{{.*}}
932 return _mm256_maskz_abs_epi8(__U,__A);
935 __m128i test_mm_mask_abs_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
936 // CHECK-LABEL: @test_mm_mask_abs_epi16
937 // CHECK: [[ABS:%.*]] = call <8 x i16> @llvm.abs.v8i16(<8 x i16> %{{.*}}, i1 false)
938 // CHECK: [[TMP:%.*]] = bitcast <8 x i16> [[ABS]] to <2 x i64>
939 // CHECK: [[ABS:%.*]] = bitcast <2 x i64> [[TMP]] to <8 x i16>
940 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> [[ABS]], <8 x i16> %{{.*}}
941 return _mm_mask_abs_epi16(__W,__U,__A);
944 __m128i test_mm_maskz_abs_epi16(__mmask8 __U, __m128i __A) {
945 // CHECK-LABEL: @test_mm_maskz_abs_epi16
946 // CHECK: [[ABS:%.*]] = call <8 x i16> @llvm.abs.v8i16(<8 x i16> %{{.*}}, i1 false)
947 // CHECK: [[TMP:%.*]] = bitcast <8 x i16> [[ABS]] to <2 x i64>
948 // CHECK: [[ABS:%.*]] = bitcast <2 x i64> [[TMP]] to <8 x i16>
949 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> [[ABS]], <8 x i16> %{{.*}}
950 return _mm_maskz_abs_epi16(__U,__A);
953 __m256i test_mm256_mask_abs_epi16(__m256i __W, __mmask16 __U, __m256i __A) {
954 // CHECK-LABEL: @test_mm256_mask_abs_epi16
955 // CHECK: [[ABS:%.*]] = call <16 x i16> @llvm.abs.v16i16(<16 x i16> %{{.*}}, i1 false)
956 // CHECK: [[TMP:%.*]] = bitcast <16 x i16> [[ABS]] to <4 x i64>
957 // CHECK: [[ABS:%.*]] = bitcast <4 x i64> [[TMP]] to <16 x i16>
958 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> [[ABS]], <16 x i16> %{{.*}}
959 return _mm256_mask_abs_epi16(__W,__U,__A);
962 __m256i test_mm256_maskz_abs_epi16(__mmask16 __U, __m256i __A) {
963 // CHECK-LABEL: @test_mm256_maskz_abs_epi16
964 // CHECK: [[ABS:%.*]] = call <16 x i16> @llvm.abs.v16i16(<16 x i16> %{{.*}}, i1 false)
965 // CHECK: [[TMP:%.*]] = bitcast <16 x i16> [[ABS]] to <4 x i64>
966 // CHECK: [[ABS:%.*]] = bitcast <4 x i64> [[TMP]] to <16 x i16>
967 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> [[ABS]], <16 x i16> %{{.*}}
968 return _mm256_maskz_abs_epi16(__U,__A);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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: @llvm.x86.sse2.pavg.b
1183 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1184 return _mm_mask_avg_epu8(__W,__U,__A,__B);
1186 __m128i test_mm_maskz_avg_epu8(__mmask16 __U, __m128i __A, __m128i __B) {
1187 // CHECK-LABEL: @test_mm_maskz_avg_epu8
1188 // CHECK: @llvm.x86.sse2.pavg.b
1189 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1190 return _mm_maskz_avg_epu8(__U,__A,__B);
1192 __m256i test_mm256_mask_avg_epu8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
1193 // CHECK-LABEL: @test_mm256_mask_avg_epu8
1194 // CHECK: @llvm.x86.avx2.pavg.b
1195 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1196 return _mm256_mask_avg_epu8(__W,__U,__A,__B);
1198 __m256i test_mm256_maskz_avg_epu8(__mmask32 __U, __m256i __A, __m256i __B) {
1199 // CHECK-LABEL: @test_mm256_maskz_avg_epu8
1200 // CHECK: @llvm.x86.avx2.pavg.b
1201 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1202 return _mm256_maskz_avg_epu8(__U,__A,__B);
1204 __m128i test_mm_mask_avg_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1205 // CHECK-LABEL: @test_mm_mask_avg_epu16
1206 // CHECK: @llvm.x86.sse2.pavg.w
1207 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1208 return _mm_mask_avg_epu16(__W,__U,__A,__B);
1210 __m128i test_mm_maskz_avg_epu16(__mmask8 __U, __m128i __A, __m128i __B) {
1211 // CHECK-LABEL: @test_mm_maskz_avg_epu16
1212 // CHECK: @llvm.x86.sse2.pavg.w
1213 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1214 return _mm_maskz_avg_epu16(__U,__A,__B);
1216 __m256i test_mm256_mask_avg_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1217 // CHECK-LABEL: @test_mm256_mask_avg_epu16
1218 // CHECK: @llvm.x86.avx2.pavg.w
1219 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1220 return _mm256_mask_avg_epu16(__W,__U,__A,__B);
1222 __m256i test_mm256_maskz_avg_epu16(__mmask16 __U, __m256i __A, __m256i __B) {
1223 // CHECK-LABEL: @test_mm256_maskz_avg_epu16
1224 // CHECK: @llvm.x86.avx2.pavg.w
1225 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1226 return _mm256_maskz_avg_epu16(__U,__A,__B);
1228 __m128i test_mm_maskz_max_epi8(__mmask16 __M, __m128i __A, __m128i __B) {
1229 // CHECK-LABEL: @test_mm_maskz_max_epi8
1230 // CHECK: [[RES:%.*]] = call <16 x i8> @llvm.smax.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1231 // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[RES]] to [[DSTTY:<2 x i64>]]
1232 // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1233 // CHECK: select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}
1234 return _mm_maskz_max_epi8(__M,__A,__B);
1236 __m128i test_mm_mask_max_epi8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) {
1237 // CHECK-LABEL: @test_mm_mask_max_epi8
1238 // CHECK: [[RES:%.*]] = call <16 x i8> @llvm.smax.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1239 // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[RES]] to [[DSTTY:<2 x i64>]]
1240 // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1241 // CHECK: select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}
1242 return _mm_mask_max_epi8(__W,__M,__A,__B);
1244 __m256i test_mm256_maskz_max_epi8(__mmask32 __M, __m256i __A, __m256i __B) {
1245 // CHECK-LABEL: @test_mm256_maskz_max_epi8
1246 // CHECK: [[RES:%.*]] = call <32 x i8> @llvm.smax.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})
1247 // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[RES]] to [[DSTTY:<4 x i64>]]
1248 // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1249 // CHECK: select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}
1250 return _mm256_maskz_max_epi8(__M,__A,__B);
1252 __m256i test_mm256_mask_max_epi8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) {
1253 // CHECK-LABEL: @test_mm256_mask_max_epi8
1254 // CHECK: [[RES:%.*]] = call <32 x i8> @llvm.smax.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})
1255 // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[RES]] to [[DSTTY:<4 x i64>]]
1256 // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1257 // CHECK: select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}
1258 return _mm256_mask_max_epi8(__W,__M,__A,__B);
1260 __m128i test_mm_maskz_max_epi16(__mmask8 __M, __m128i __A, __m128i __B) {
1261 // CHECK-LABEL: @test_mm_maskz_max_epi16
1262 // CHECK: [[RES:%.*]] = call <8 x i16> @llvm.smax.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1263 // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[RES]] to [[DSTTY:<2 x i64>]]
1264 // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1265 // CHECK: select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}
1266 return _mm_maskz_max_epi16(__M,__A,__B);
1268 __m128i test_mm_mask_max_epi16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
1269 // CHECK-LABEL: @test_mm_mask_max_epi16
1270 // CHECK: [[RES:%.*]] = call <8 x i16> @llvm.smax.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1271 // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[RES]] to [[DSTTY:<2 x i64>]]
1272 // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1273 // CHECK: select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}
1274 return _mm_mask_max_epi16(__W,__M,__A,__B);
1276 __m256i test_mm256_maskz_max_epi16(__mmask16 __M, __m256i __A, __m256i __B) {
1277 // CHECK-LABEL: @test_mm256_maskz_max_epi16
1278 // CHECK: [[RES:%.*]] = call <16 x i16> @llvm.smax.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})
1279 // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[RES]] to [[DSTTY:<4 x i64>]]
1280 // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1281 // CHECK: select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}
1282 return _mm256_maskz_max_epi16(__M,__A,__B);
1284 __m256i test_mm256_mask_max_epi16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {
1285 // CHECK-LABEL: @test_mm256_mask_max_epi16
1286 // CHECK: [[RES:%.*]] = call <16 x i16> @llvm.smax.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})
1287 // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[RES]] to [[DSTTY:<4 x i64>]]
1288 // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1289 // CHECK: select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}
1290 return _mm256_mask_max_epi16(__W,__M,__A,__B);
1292 __m128i test_mm_maskz_max_epu8(__mmask16 __M, __m128i __A, __m128i __B) {
1293 // CHECK-LABEL: @test_mm_maskz_max_epu8
1294 // CHECK: [[RES:%.*]] = call <16 x i8> @llvm.umax.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1295 // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[RES]] to [[DSTTY:<2 x i64>]]
1296 // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1297 // CHECK: select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}
1298 return _mm_maskz_max_epu8(__M,__A,__B);
1300 __m128i test_mm_mask_max_epu8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) {
1301 // CHECK-LABEL: @test_mm_mask_max_epu8
1302 // CHECK: [[RES:%.*]] = call <16 x i8> @llvm.umax.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1303 // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[RES]] to [[DSTTY:<2 x i64>]]
1304 // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1305 // CHECK: select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}
1306 return _mm_mask_max_epu8(__W,__M,__A,__B);
1308 __m256i test_mm256_maskz_max_epu8(__mmask32 __M, __m256i __A, __m256i __B) {
1309 // CHECK-LABEL: @test_mm256_maskz_max_epu8
1310 // CHECK: [[RES:%.*]] = call <32 x i8> @llvm.umax.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})
1311 // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[RES]] to [[DSTTY:<4 x i64>]]
1312 // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1313 // CHECK: select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}
1314 return _mm256_maskz_max_epu8(__M,__A,__B);
1316 __m256i test_mm256_mask_max_epu8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) {
1317 // CHECK-LABEL: @test_mm256_mask_max_epu8
1318 // CHECK: [[RES:%.*]] = call <32 x i8> @llvm.umax.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})
1319 // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[RES]] to [[DSTTY:<4 x i64>]]
1320 // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1321 // CHECK: select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}
1322 return _mm256_mask_max_epu8(__W,__M,__A,__B);
1324 __m128i test_mm_maskz_max_epu16(__mmask8 __M, __m128i __A, __m128i __B) {
1325 // CHECK-LABEL: @test_mm_maskz_max_epu16
1326 // CHECK: [[RES:%.*]] = call <8 x i16> @llvm.umax.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1327 // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[RES]] to [[DSTTY:<2 x i64>]]
1328 // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1329 // CHECK: select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}
1330 return _mm_maskz_max_epu16(__M,__A,__B);
1332 __m128i test_mm_mask_max_epu16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
1333 // CHECK-LABEL: @test_mm_mask_max_epu16
1334 // CHECK: [[RES:%.*]] = call <8 x i16> @llvm.umax.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1335 // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[RES]] to [[DSTTY:<2 x i64>]]
1336 // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1337 // CHECK: select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}
1338 return _mm_mask_max_epu16(__W,__M,__A,__B);
1340 __m256i test_mm256_maskz_max_epu16(__mmask16 __M, __m256i __A, __m256i __B) {
1341 // CHECK-LABEL: @test_mm256_maskz_max_epu16
1342 // CHECK: [[RES:%.*]] = call <16 x i16> @llvm.umax.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})
1343 // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[RES]] to [[DSTTY:<4 x i64>]]
1344 // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1345 // CHECK: select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}
1346 return _mm256_maskz_max_epu16(__M,__A,__B);
1348 __m256i test_mm256_mask_max_epu16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {
1349 // CHECK-LABEL: @test_mm256_mask_max_epu16
1350 // CHECK: [[RES:%.*]] = call <16 x i16> @llvm.umax.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})
1351 // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[RES]] to [[DSTTY:<4 x i64>]]
1352 // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1353 // CHECK: select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}
1354 return _mm256_mask_max_epu16(__W,__M,__A,__B);
1356 __m128i test_mm_maskz_min_epi8(__mmask16 __M, __m128i __A, __m128i __B) {
1357 // CHECK-LABEL: @test_mm_maskz_min_epi8
1358 // CHECK: [[RES:%.*]] = call <16 x i8> @llvm.smin.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1359 // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[RES]] to [[DSTTY:<2 x i64>]]
1360 // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1361 // CHECK: select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}
1362 return _mm_maskz_min_epi8(__M,__A,__B);
1364 __m128i test_mm_mask_min_epi8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) {
1365 // CHECK-LABEL: @test_mm_mask_min_epi8
1366 // CHECK: [[RES:%.*]] = call <16 x i8> @llvm.smin.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1367 // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[RES]] to [[DSTTY:<2 x i64>]]
1368 // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1369 // CHECK: select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}
1370 return _mm_mask_min_epi8(__W,__M,__A,__B);
1372 __m256i test_mm256_maskz_min_epi8(__mmask32 __M, __m256i __A, __m256i __B) {
1373 // CHECK-LABEL: @test_mm256_maskz_min_epi8
1374 // CHECK: [[RES:%.*]] = call <32 x i8> @llvm.smin.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})
1375 // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[RES]] to [[DSTTY:<4 x i64>]]
1376 // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1377 // CHECK: select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}
1378 return _mm256_maskz_min_epi8(__M,__A,__B);
1380 __m256i test_mm256_mask_min_epi8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) {
1381 // CHECK-LABEL: @test_mm256_mask_min_epi8
1382 // CHECK: [[RES:%.*]] = call <32 x i8> @llvm.smin.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})
1383 // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[RES]] to [[DSTTY:<4 x i64>]]
1384 // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1385 // CHECK: select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}
1386 return _mm256_mask_min_epi8(__W,__M,__A,__B);
1388 __m128i test_mm_maskz_min_epi16(__mmask8 __M, __m128i __A, __m128i __B) {
1389 // CHECK-LABEL: @test_mm_maskz_min_epi16
1390 // CHECK: [[RES:%.*]] = call <8 x i16> @llvm.smin.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1391 // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[RES]] to [[DSTTY:<2 x i64>]]
1392 // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1393 // CHECK: select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}
1394 return _mm_maskz_min_epi16(__M,__A,__B);
1396 __m128i test_mm_mask_min_epi16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
1397 // CHECK-LABEL: @test_mm_mask_min_epi16
1398 // CHECK: [[RES:%.*]] = call <8 x i16> @llvm.smin.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1399 // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[RES]] to [[DSTTY:<2 x i64>]]
1400 // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1401 // CHECK: select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}
1402 return _mm_mask_min_epi16(__W,__M,__A,__B);
1404 __m256i test_mm256_maskz_min_epi16(__mmask16 __M, __m256i __A, __m256i __B) {
1405 // CHECK-LABEL: @test_mm256_maskz_min_epi16
1406 // CHECK: [[RES:%.*]] = call <16 x i16> @llvm.smin.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})
1407 // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[RES]] to [[DSTTY:<4 x i64>]]
1408 // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1409 // CHECK: select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}
1410 return _mm256_maskz_min_epi16(__M,__A,__B);
1412 __m256i test_mm256_mask_min_epi16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {
1413 // CHECK-LABEL: @test_mm256_mask_min_epi16
1414 // CHECK: [[RES:%.*]] = call <16 x i16> @llvm.smin.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})
1415 // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[RES]] to [[DSTTY:<4 x i64>]]
1416 // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1417 // CHECK: select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}
1418 return _mm256_mask_min_epi16(__W,__M,__A,__B);
1420 __m128i test_mm_maskz_min_epu8(__mmask16 __M, __m128i __A, __m128i __B) {
1421 // CHECK-LABEL: @test_mm_maskz_min_epu8
1422 // CHECK: [[RES:%.*]] = call <16 x i8> @llvm.umin.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1423 // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[RES]] to [[DSTTY:<2 x i64>]]
1424 // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1425 // CHECK: select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}
1426 return _mm_maskz_min_epu8(__M,__A,__B);
1428 __m128i test_mm_mask_min_epu8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) {
1429 // CHECK-LABEL: @test_mm_mask_min_epu8
1430 // CHECK: [[RES:%.*]] = call <16 x i8> @llvm.umin.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1431 // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[RES]] to [[DSTTY:<2 x i64>]]
1432 // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1433 // CHECK: select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}
1434 return _mm_mask_min_epu8(__W,__M,__A,__B);
1436 __m256i test_mm256_maskz_min_epu8(__mmask32 __M, __m256i __A, __m256i __B) {
1437 // CHECK-LABEL: @test_mm256_maskz_min_epu8
1438 // CHECK: [[RES:%.*]] = call <32 x i8> @llvm.umin.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})
1439 // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[RES]] to [[DSTTY:<4 x i64>]]
1440 // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1441 // CHECK: select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}
1442 return _mm256_maskz_min_epu8(__M,__A,__B);
1444 __m256i test_mm256_mask_min_epu8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) {
1445 // CHECK-LABEL: @test_mm256_mask_min_epu8
1446 // CHECK: [[RES:%.*]] = call <32 x i8> @llvm.umin.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})
1447 // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[RES]] to [[DSTTY:<4 x i64>]]
1448 // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1449 // CHECK: select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}
1450 return _mm256_mask_min_epu8(__W,__M,__A,__B);
1452 __m128i test_mm_maskz_min_epu16(__mmask8 __M, __m128i __A, __m128i __B) {
1453 // CHECK-LABEL: @test_mm_maskz_min_epu16
1454 // CHECK: [[RES:%.*]] = call <8 x i16> @llvm.umin.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1455 // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[RES]] to [[DSTTY:<2 x i64>]]
1456 // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1457 // CHECK: select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}
1458 return _mm_maskz_min_epu16(__M,__A,__B);
1460 __m128i test_mm_mask_min_epu16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
1461 // CHECK-LABEL: @test_mm_mask_min_epu16
1462 // CHECK: [[RES:%.*]] = call <8 x i16> @llvm.umin.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1463 // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[RES]] to [[DSTTY:<2 x i64>]]
1464 // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1465 // CHECK: select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}
1466 return _mm_mask_min_epu16(__W,__M,__A,__B);
1468 __m256i test_mm256_maskz_min_epu16(__mmask16 __M, __m256i __A, __m256i __B) {
1469 // CHECK-LABEL: @test_mm256_maskz_min_epu16
1470 // CHECK: [[RES:%.*]] = call <16 x i16> @llvm.umin.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})
1471 // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[RES]] to [[DSTTY:<4 x i64>]]
1472 // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1473 // CHECK: select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}
1474 return _mm256_maskz_min_epu16(__M,__A,__B);
1476 __m256i test_mm256_mask_min_epu16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {
1477 // CHECK-LABEL: @test_mm256_mask_min_epu16
1478 // CHECK: [[RES:%.*]] = call <16 x i16> @llvm.umin.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})
1479 // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[RES]] to [[DSTTY:<4 x i64>]]
1480 // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1481 // CHECK: select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}
1482 return _mm256_mask_min_epu16(__W,__M,__A,__B);
1484 __m128i test_mm_mask_shuffle_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
1485 // CHECK-LABEL: @test_mm_mask_shuffle_epi8
1486 // CHECK: @llvm.x86.ssse3.pshuf.b
1487 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1488 return _mm_mask_shuffle_epi8(__W,__U,__A,__B);
1490 __m128i test_mm_maskz_shuffle_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
1491 // CHECK-LABEL: @test_mm_maskz_shuffle_epi8
1492 // CHECK: @llvm.x86.ssse3.pshuf.b
1493 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1494 return _mm_maskz_shuffle_epi8(__U,__A,__B);
1496 __m256i test_mm256_mask_shuffle_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
1497 // CHECK-LABEL: @test_mm256_mask_shuffle_epi8
1498 // CHECK: @llvm.x86.avx2.pshuf.b
1499 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1500 return _mm256_mask_shuffle_epi8(__W,__U,__A,__B);
1502 __m256i test_mm256_maskz_shuffle_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
1503 // CHECK-LABEL: @test_mm256_maskz_shuffle_epi8
1504 // CHECK: @llvm.x86.avx2.pshuf.b
1505 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1506 return _mm256_maskz_shuffle_epi8(__U,__A,__B);
1508 __m128i test_mm_mask_subs_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
1509 // CHECK-LABEL: @test_mm_mask_subs_epi8
1510 // CHECK: @llvm.ssub.sat.v16i8
1511 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1512 return _mm_mask_subs_epi8(__W,__U,__A,__B);
1514 __m128i test_mm_maskz_subs_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
1515 // CHECK-LABEL: @test_mm_maskz_subs_epi8
1516 // CHECK: @llvm.ssub.sat.v16i8
1517 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1518 return _mm_maskz_subs_epi8(__U,__A,__B);
1520 __m256i test_mm256_mask_subs_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
1521 // CHECK-LABEL: @test_mm256_mask_subs_epi8
1522 // CHECK: @llvm.ssub.sat.v32i8
1523 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1524 return _mm256_mask_subs_epi8(__W,__U,__A,__B);
1526 __m256i test_mm256_maskz_subs_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
1527 // CHECK-LABEL: @test_mm256_maskz_subs_epi8
1528 // CHECK: @llvm.ssub.sat.v32i8
1529 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1530 return _mm256_maskz_subs_epi8(__U,__A,__B);
1532 __m128i test_mm_mask_subs_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1533 // CHECK-LABEL: @test_mm_mask_subs_epi16
1534 // CHECK: @llvm.ssub.sat.v8i16
1535 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1536 return _mm_mask_subs_epi16(__W,__U,__A,__B);
1538 __m128i test_mm_maskz_subs_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
1539 // CHECK-LABEL: @test_mm_maskz_subs_epi16
1540 // CHECK: @llvm.ssub.sat.v8i16
1541 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1542 return _mm_maskz_subs_epi16(__U,__A,__B);
1544 __m256i test_mm256_mask_subs_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1545 // CHECK-LABEL: @test_mm256_mask_subs_epi16
1546 // CHECK: @llvm.ssub.sat.v16i16
1547 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1548 return _mm256_mask_subs_epi16(__W,__U,__A,__B);
1550 __m256i test_mm256_maskz_subs_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
1551 // CHECK-LABEL: @test_mm256_maskz_subs_epi16
1552 // CHECK: @llvm.ssub.sat.v16i16
1553 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1554 return _mm256_maskz_subs_epi16(__U,__A,__B);
1556 __m128i test_mm_mask_subs_epu8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
1557 // CHECK-LABEL: @test_mm_mask_subs_epu8
1558 // CHECK-NOT: @llvm.x86.sse2.psubus.b
1559 // CHECK: call <16 x i8> @llvm.usub.sat.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1560 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1561 return _mm_mask_subs_epu8(__W,__U,__A,__B);
1563 __m128i test_mm_maskz_subs_epu8(__mmask16 __U, __m128i __A, __m128i __B) {
1564 // CHECK-LABEL: @test_mm_maskz_subs_epu8
1565 // CHECK-NOT: @llvm.x86.sse2.psubus.b
1566 // CHECK: call <16 x i8> @llvm.usub.sat.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1567 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1568 return _mm_maskz_subs_epu8(__U,__A,__B);
1570 __m256i test_mm256_mask_subs_epu8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
1571 // CHECK-LABEL: @test_mm256_mask_subs_epu8
1572 // CHECK-NOT: @llvm.x86.avx2.psubus.b
1573 // CHECK: call <32 x i8> @llvm.usub.sat.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})
1574 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1575 return _mm256_mask_subs_epu8(__W,__U,__A,__B);
1577 __m256i test_mm256_maskz_subs_epu8(__mmask32 __U, __m256i __A, __m256i __B) {
1578 // CHECK-LABEL: @test_mm256_maskz_subs_epu8
1579 // CHECK-NOT: @llvm.x86.avx2.psubus.b
1580 // CHECK: call <32 x i8> @llvm.usub.sat.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})
1581 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1582 return _mm256_maskz_subs_epu8(__U,__A,__B);
1584 __m128i test_mm_mask_subs_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1585 // CHECK-LABEL: @test_mm_mask_subs_epu16
1586 // CHECK-NOT: @llvm.x86.sse2.psubus.w
1587 // CHECK: call <8 x i16> @llvm.usub.sat.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1588 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1589 return _mm_mask_subs_epu16(__W,__U,__A,__B);
1591 __m128i test_mm_maskz_subs_epu16(__mmask8 __U, __m128i __A, __m128i __B) {
1592 // CHECK-LABEL: @test_mm_maskz_subs_epu16
1593 // CHECK-NOT: @llvm.x86.sse2.psubus.w
1594 // CHECK: call <8 x i16> @llvm.usub.sat.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1595 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1596 return _mm_maskz_subs_epu16(__U,__A,__B);
1598 __m256i test_mm256_mask_subs_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1599 // CHECK-LABEL: @test_mm256_mask_subs_epu16
1600 // CHECK-NOT: @llvm.x86.avx2.psubus.w
1601 // CHECK: call <16 x i16> @llvm.usub.sat.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})
1602 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1603 return _mm256_mask_subs_epu16(__W,__U,__A,__B);
1605 __m256i test_mm256_maskz_subs_epu16(__mmask16 __U, __m256i __A, __m256i __B) {
1606 // CHECK-LABEL: @test_mm256_maskz_subs_epu16
1607 // CHECK-NOT: @llvm.x86.avx2.psubus.w
1608 // CHECK: call <16 x i16> @llvm.usub.sat.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})
1609 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1610 return _mm256_maskz_subs_epu16(__U,__A,__B);
1614 __m128i test_mm_mask2_permutex2var_epi16(__m128i __A, __m128i __I, __mmask8 __U, __m128i __B) {
1615 // CHECK-LABEL: @test_mm_mask2_permutex2var_epi16
1616 // CHECK: @llvm.x86.avx512.vpermi2var.hi.128
1617 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1618 return _mm_mask2_permutex2var_epi16(__A,__I,__U,__B);
1620 __m256i test_mm256_mask2_permutex2var_epi16(__m256i __A, __m256i __I, __mmask16 __U, __m256i __B) {
1621 // CHECK-LABEL: @test_mm256_mask2_permutex2var_epi16
1622 // CHECK: @llvm.x86.avx512.vpermi2var.hi.256
1623 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1624 return _mm256_mask2_permutex2var_epi16(__A,__I,__U,__B);
1626 __m128i test_mm_permutex2var_epi16(__m128i __A, __m128i __I, __m128i __B) {
1627 // CHECK-LABEL: @test_mm_permutex2var_epi16
1628 // CHECK: @llvm.x86.avx512.vpermi2var.hi.128
1629 return _mm_permutex2var_epi16(__A,__I,__B);
1631 __m128i test_mm_mask_permutex2var_epi16(__m128i __A, __mmask8 __U, __m128i __I, __m128i __B) {
1632 // CHECK-LABEL: @test_mm_mask_permutex2var_epi16
1633 // CHECK: @llvm.x86.avx512.vpermi2var.hi.128
1634 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1635 return _mm_mask_permutex2var_epi16(__A,__U,__I,__B);
1637 __m128i test_mm_maskz_permutex2var_epi16(__mmask8 __U, __m128i __A, __m128i __I, __m128i __B) {
1638 // CHECK-LABEL: @test_mm_maskz_permutex2var_epi16
1639 // CHECK: @llvm.x86.avx512.vpermi2var.hi.128
1640 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1641 return _mm_maskz_permutex2var_epi16(__U,__A,__I,__B);
1644 __m256i test_mm256_permutex2var_epi16(__m256i __A, __m256i __I, __m256i __B) {
1645 // CHECK-LABEL: @test_mm256_permutex2var_epi16
1646 // CHECK: @llvm.x86.avx512.vpermi2var.hi.256
1647 return _mm256_permutex2var_epi16(__A,__I,__B);
1649 __m256i test_mm256_mask_permutex2var_epi16(__m256i __A, __mmask16 __U, __m256i __I, __m256i __B) {
1650 // CHECK-LABEL: @test_mm256_mask_permutex2var_epi16
1651 // CHECK: @llvm.x86.avx512.vpermi2var.hi.256
1652 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1653 return _mm256_mask_permutex2var_epi16(__A,__U,__I,__B);
1655 __m256i test_mm256_maskz_permutex2var_epi16(__mmask16 __U, __m256i __A, __m256i __I, __m256i __B) {
1656 // CHECK-LABEL: @test_mm256_maskz_permutex2var_epi16
1657 // CHECK: @llvm.x86.avx512.vpermi2var.hi.256
1658 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1659 return _mm256_maskz_permutex2var_epi16(__U,__A,__I,__B);
1661 __m128i test_mm_mask_maddubs_epi16(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
1662 // CHECK-LABEL: @test_mm_mask_maddubs_epi16
1663 // CHECK: @llvm.x86.ssse3.pmadd.ub.sw
1664 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1665 return _mm_mask_maddubs_epi16(__W, __U, __X, __Y);
1668 __m128i test_mm_maskz_maddubs_epi16(__mmask8 __U, __m128i __X, __m128i __Y) {
1669 // CHECK-LABEL: @test_mm_maskz_maddubs_epi16
1670 // CHECK: @llvm.x86.ssse3.pmadd.ub.sw
1671 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1672 return _mm_maskz_maddubs_epi16(__U, __X, __Y);
1675 __m256i test_mm256_mask_maddubs_epi16(__m256i __W, __mmask16 __U, __m256i __X, __m256i __Y) {
1676 // CHECK-LABEL: @test_mm256_mask_maddubs_epi16
1677 // CHECK: @llvm.x86.avx2.pmadd.ub.sw
1678 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1679 return _mm256_mask_maddubs_epi16(__W, __U, __X, __Y);
1682 __m256i test_mm256_maskz_maddubs_epi16(__mmask16 __U, __m256i __X, __m256i __Y) {
1683 // CHECK-LABEL: @test_mm256_maskz_maddubs_epi16
1684 // CHECK: @llvm.x86.avx2.pmadd.ub.sw
1685 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1686 return _mm256_maskz_maddubs_epi16(__U, __X, __Y);
1689 __m128i test_mm_mask_madd_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1690 // CHECK-LABEL: @test_mm_mask_madd_epi16
1691 // CHECK: @llvm.x86.sse2.pmadd.wd
1692 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
1693 return _mm_mask_madd_epi16(__W, __U, __A, __B);
1696 __m128i test_mm_maskz_madd_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
1697 // CHECK-LABEL: @test_mm_maskz_madd_epi16
1698 // CHECK: @llvm.x86.sse2.pmadd.wd
1699 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
1700 return _mm_maskz_madd_epi16(__U, __A, __B);
1703 __m256i test_mm256_mask_madd_epi16(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
1704 // CHECK-LABEL: @test_mm256_mask_madd_epi16
1705 // CHECK: @llvm.x86.avx2.pmadd.wd
1706 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
1707 return _mm256_mask_madd_epi16(__W, __U, __A, __B);
1710 __m256i test_mm256_maskz_madd_epi16(__mmask8 __U, __m256i __A, __m256i __B) {
1711 // CHECK-LABEL: @test_mm256_maskz_madd_epi16
1712 // CHECK: @llvm.x86.avx2.pmadd.wd
1713 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
1714 return _mm256_maskz_madd_epi16(__U, __A, __B);
1717 __m128i test_mm_cvtsepi16_epi8(__m128i __A) {
1718 // CHECK-LABEL: @test_mm_cvtsepi16_epi8
1719 // CHECK: @llvm.x86.avx512.mask.pmovs.wb.128
1720 return _mm_cvtsepi16_epi8(__A);
1723 __m128i test_mm_mask_cvtsepi16_epi8(__m128i __O, __mmask8 __M, __m128i __A) {
1724 // CHECK-LABEL: @test_mm_mask_cvtsepi16_epi8
1725 // CHECK: @llvm.x86.avx512.mask.pmovs.wb.128
1726 return _mm_mask_cvtsepi16_epi8(__O, __M, __A);
1729 __m128i test_mm_maskz_cvtsepi16_epi8(__mmask8 __M, __m128i __A) {
1730 // CHECK-LABEL: @test_mm_maskz_cvtsepi16_epi8
1731 // CHECK: @llvm.x86.avx512.mask.pmovs.wb.128
1732 return _mm_maskz_cvtsepi16_epi8(__M, __A);
1735 __m128i test_mm256_cvtsepi16_epi8(__m256i __A) {
1736 // CHECK-LABEL: @test_mm256_cvtsepi16_epi8
1737 // CHECK: @llvm.x86.avx512.mask.pmovs.wb.256
1738 return _mm256_cvtsepi16_epi8(__A);
1741 __m128i test_mm256_mask_cvtsepi16_epi8(__m128i __O, __mmask16 __M, __m256i __A) {
1742 // CHECK-LABEL: @test_mm256_mask_cvtsepi16_epi8
1743 // CHECK: @llvm.x86.avx512.mask.pmovs.wb.256
1744 return _mm256_mask_cvtsepi16_epi8(__O, __M, __A);
1747 __m128i test_mm256_maskz_cvtsepi16_epi8(__mmask16 __M, __m256i __A) {
1748 // CHECK-LABEL: @test_mm256_maskz_cvtsepi16_epi8
1749 // CHECK: @llvm.x86.avx512.mask.pmovs.wb.256
1750 return _mm256_maskz_cvtsepi16_epi8(__M, __A);
1753 __m128i test_mm_cvtusepi16_epi8(__m128i __A) {
1754 // CHECK-LABEL: @test_mm_cvtusepi16_epi8
1755 // CHECK: @llvm.x86.avx512.mask.pmovus.wb.128
1756 return _mm_cvtusepi16_epi8(__A);
1759 __m128i test_mm_mask_cvtusepi16_epi8(__m128i __O, __mmask8 __M, __m128i __A) {
1760 // CHECK-LABEL: @test_mm_mask_cvtusepi16_epi8
1761 // CHECK: @llvm.x86.avx512.mask.pmovus.wb.128
1762 return _mm_mask_cvtusepi16_epi8(__O, __M, __A);
1765 __m128i test_mm_maskz_cvtusepi16_epi8(__mmask8 __M, __m128i __A) {
1766 // CHECK-LABEL: @test_mm_maskz_cvtusepi16_epi8
1767 // CHECK: @llvm.x86.avx512.mask.pmovus.wb.128
1768 return _mm_maskz_cvtusepi16_epi8(__M, __A);
1771 __m128i test_mm256_cvtusepi16_epi8(__m256i __A) {
1772 // CHECK-LABEL: @test_mm256_cvtusepi16_epi8
1773 // CHECK: @llvm.x86.avx512.mask.pmovus.wb.256
1774 return _mm256_cvtusepi16_epi8(__A);
1777 __m128i test_mm256_mask_cvtusepi16_epi8(__m128i __O, __mmask16 __M, __m256i __A) {
1778 // CHECK-LABEL: @test_mm256_mask_cvtusepi16_epi8
1779 // CHECK: @llvm.x86.avx512.mask.pmovus.wb.256
1780 return _mm256_mask_cvtusepi16_epi8(__O, __M, __A);
1783 __m128i test_mm256_maskz_cvtusepi16_epi8(__mmask16 __M, __m256i __A) {
1784 // CHECK-LABEL: @test_mm256_maskz_cvtusepi16_epi8
1785 // CHECK: @llvm.x86.avx512.mask.pmovus.wb.256
1786 return _mm256_maskz_cvtusepi16_epi8(__M, __A);
1789 __m128i test_mm_cvtepi16_epi8(__m128i __A) {
1790 // CHECK-LABEL: @test_mm_cvtepi16_epi8
1791 // CHECK: trunc <8 x i16> %{{.*}} to <8 x i8>
1792 // 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>
1793 return _mm_cvtepi16_epi8(__A);
1796 __m128i test_mm_mask_cvtepi16_epi8(__m128i __O, __mmask8 __M, __m128i __A) {
1797 // CHECK-LABEL: @test_mm_mask_cvtepi16_epi8
1798 // CHECK: @llvm.x86.avx512.mask.pmov.wb.128
1799 return _mm_mask_cvtepi16_epi8(__O, __M, __A);
1802 __m128i test_mm_maskz_cvtepi16_epi8(__mmask8 __M, __m128i __A) {
1803 // CHECK-LABEL: @test_mm_maskz_cvtepi16_epi8
1804 // CHECK: @llvm.x86.avx512.mask.pmov.wb.128
1805 return _mm_maskz_cvtepi16_epi8(__M, __A);
1808 __m128i test_mm256_cvtepi16_epi8(__m256i __A) {
1809 // CHECK-LABEL: @test_mm256_cvtepi16_epi8
1810 // CHECK: trunc <16 x i16> %{{.*}} to <16 x i8>
1811 return _mm256_cvtepi16_epi8(__A);
1814 __m128i test_mm256_mask_cvtepi16_epi8(__m128i __O, __mmask16 __M, __m256i __A) {
1815 // CHECK-LABEL: @test_mm256_mask_cvtepi16_epi8
1816 // CHECK: trunc <16 x i16> %{{.*}} to <16 x i8>
1817 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1818 return _mm256_mask_cvtepi16_epi8(__O, __M, __A);
1821 __m128i test_mm256_maskz_cvtepi16_epi8(__mmask16 __M, __m256i __A) {
1822 // CHECK-LABEL: @test_mm256_maskz_cvtepi16_epi8
1823 // CHECK: trunc <16 x i16> %{{.*}} to <16 x i8>
1824 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1825 return _mm256_maskz_cvtepi16_epi8(__M, __A);
1828 __m128i test_mm_mask_mulhrs_epi16(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
1829 // CHECK-LABEL: @test_mm_mask_mulhrs_epi16
1830 // CHECK: @llvm.x86.ssse3.pmul.hr.sw
1831 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1832 return _mm_mask_mulhrs_epi16(__W, __U, __X, __Y);
1835 __m128i test_mm_maskz_mulhrs_epi16(__mmask8 __U, __m128i __X, __m128i __Y) {
1836 // CHECK-LABEL: @test_mm_maskz_mulhrs_epi16
1837 // CHECK: @llvm.x86.ssse3.pmul.hr.sw
1838 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1839 return _mm_maskz_mulhrs_epi16(__U, __X, __Y);
1842 __m256i test_mm256_mask_mulhrs_epi16(__m256i __W, __mmask16 __U, __m256i __X, __m256i __Y) {
1843 // CHECK-LABEL: @test_mm256_mask_mulhrs_epi16
1844 // CHECK: @llvm.x86.avx2.pmul.hr.sw
1845 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1846 return _mm256_mask_mulhrs_epi16(__W, __U, __X, __Y);
1849 __m256i test_mm256_maskz_mulhrs_epi16(__mmask16 __U, __m256i __X, __m256i __Y) {
1850 // CHECK-LABEL: @test_mm256_maskz_mulhrs_epi16
1851 // CHECK: @llvm.x86.avx2.pmul.hr.sw
1852 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1853 return _mm256_maskz_mulhrs_epi16(__U, __X, __Y);
1856 __m128i test_mm_mask_mulhi_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1857 // CHECK-LABEL: @test_mm_mask_mulhi_epu16
1858 // CHECK: @llvm.x86.sse2.pmulhu.w
1859 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1860 return _mm_mask_mulhi_epu16(__W, __U, __A, __B);
1863 __m128i test_mm_maskz_mulhi_epu16(__mmask8 __U, __m128i __A, __m128i __B) {
1864 // CHECK-LABEL: @test_mm_maskz_mulhi_epu16
1865 // CHECK: @llvm.x86.sse2.pmulhu.w
1866 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1867 return _mm_maskz_mulhi_epu16(__U, __A, __B);
1870 __m256i test_mm256_mask_mulhi_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1871 // CHECK-LABEL: @test_mm256_mask_mulhi_epu16
1872 // CHECK: @llvm.x86.avx2.pmulhu.w
1873 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1874 return _mm256_mask_mulhi_epu16(__W, __U, __A, __B);
1877 __m256i test_mm256_maskz_mulhi_epu16(__mmask16 __U, __m256i __A, __m256i __B) {
1878 // CHECK-LABEL: @test_mm256_maskz_mulhi_epu16
1879 // CHECK: @llvm.x86.avx2.pmulhu.w
1880 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1881 return _mm256_maskz_mulhi_epu16(__U, __A, __B);
1884 __m128i test_mm_mask_mulhi_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1885 // CHECK-LABEL: @test_mm_mask_mulhi_epi16
1886 // CHECK: @llvm.x86.sse2.pmulh.w
1887 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1888 return _mm_mask_mulhi_epi16(__W, __U, __A, __B);
1891 __m128i test_mm_maskz_mulhi_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
1892 // CHECK-LABEL: @test_mm_maskz_mulhi_epi16
1893 // CHECK: @llvm.x86.sse2.pmulh.w
1894 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1895 return _mm_maskz_mulhi_epi16(__U, __A, __B);
1898 __m256i test_mm256_mask_mulhi_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1899 // CHECK-LABEL: @test_mm256_mask_mulhi_epi16
1900 // CHECK: @llvm.x86.avx2.pmulh.w
1901 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1902 return _mm256_mask_mulhi_epi16(__W, __U, __A, __B);
1905 __m256i test_mm256_maskz_mulhi_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
1906 // CHECK-LABEL: @test_mm256_maskz_mulhi_epi16
1907 // CHECK: @llvm.x86.avx2.pmulh.w
1908 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1909 return _mm256_maskz_mulhi_epi16(__U, __A, __B);
1912 __m128i test_mm_mask_unpackhi_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
1913 // CHECK-LABEL: @test_mm_mask_unpackhi_epi8
1914 // 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>
1915 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1916 return _mm_mask_unpackhi_epi8(__W, __U, __A, __B);
1919 __m128i test_mm_maskz_unpackhi_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
1920 // CHECK-LABEL: @test_mm_maskz_unpackhi_epi8
1921 // 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>
1922 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1923 return _mm_maskz_unpackhi_epi8(__U, __A, __B);
1926 __m256i test_mm256_mask_unpackhi_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
1927 // CHECK-LABEL: @test_mm256_mask_unpackhi_epi8
1928 // 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>
1929 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1930 return _mm256_mask_unpackhi_epi8(__W, __U, __A, __B);
1933 __m256i test_mm256_maskz_unpackhi_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
1934 // CHECK-LABEL: @test_mm256_maskz_unpackhi_epi8
1935 // 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>
1936 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1937 return _mm256_maskz_unpackhi_epi8(__U, __A, __B);
1940 __m128i test_mm_mask_unpackhi_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1941 // CHECK-LABEL: @test_mm_mask_unpackhi_epi16
1942 // 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>
1943 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1944 return _mm_mask_unpackhi_epi16(__W, __U, __A, __B);
1947 __m128i test_mm_maskz_unpackhi_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
1948 // CHECK-LABEL: @test_mm_maskz_unpackhi_epi16
1949 // 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>
1950 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1951 return _mm_maskz_unpackhi_epi16(__U, __A, __B);
1954 __m256i test_mm256_mask_unpackhi_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1955 // CHECK-LABEL: @test_mm256_mask_unpackhi_epi16
1956 // 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>
1957 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1958 return _mm256_mask_unpackhi_epi16(__W, __U, __A, __B);
1961 __m256i test_mm256_maskz_unpackhi_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
1962 // CHECK-LABEL: @test_mm256_maskz_unpackhi_epi16
1963 // 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>
1964 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1965 return _mm256_maskz_unpackhi_epi16(__U, __A, __B);
1968 __m128i test_mm_mask_unpacklo_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
1969 // CHECK-LABEL: @test_mm_mask_unpacklo_epi8
1970 // 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>
1971 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1972 return _mm_mask_unpacklo_epi8(__W, __U, __A, __B);
1975 __m128i test_mm_maskz_unpacklo_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
1976 // CHECK-LABEL: @test_mm_maskz_unpacklo_epi8
1977 // 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>
1978 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1979 return _mm_maskz_unpacklo_epi8(__U, __A, __B);
1982 __m256i test_mm256_mask_unpacklo_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
1983 // CHECK-LABEL: @test_mm256_mask_unpacklo_epi8
1984 // 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>
1985 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1986 return _mm256_mask_unpacklo_epi8(__W, __U, __A, __B);
1989 __m256i test_mm256_maskz_unpacklo_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
1990 // CHECK-LABEL: @test_mm256_maskz_unpacklo_epi8
1991 // 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>
1992 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1993 return _mm256_maskz_unpacklo_epi8(__U, __A, __B);
1996 __m128i test_mm_mask_unpacklo_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1997 // CHECK-LABEL: @test_mm_mask_unpacklo_epi16
1998 // 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>
1999 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2000 return _mm_mask_unpacklo_epi16(__W, __U, __A, __B);
2003 __m128i test_mm_maskz_unpacklo_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
2004 // CHECK-LABEL: @test_mm_maskz_unpacklo_epi16
2005 // 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>
2006 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2007 return _mm_maskz_unpacklo_epi16(__U, __A, __B);
2010 __m256i test_mm256_mask_unpacklo_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
2011 // CHECK-LABEL: @test_mm256_mask_unpacklo_epi16
2012 // 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>
2013 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2014 return _mm256_mask_unpacklo_epi16(__W, __U, __A, __B);
2017 __m256i test_mm256_maskz_unpacklo_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
2018 // CHECK-LABEL: @test_mm256_maskz_unpacklo_epi16
2019 // 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>
2020 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2021 return _mm256_maskz_unpacklo_epi16(__U, __A, __B);
2024 __m128i test_mm_mask_cvtepi8_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
2025 // CHECK-LABEL: @test_mm_mask_cvtepi8_epi16
2026 // CHECK: sext <8 x i8> %{{.*}} to <8 x i16>
2027 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2028 return _mm_mask_cvtepi8_epi16(__W, __U, __A);
2031 __m128i test_mm_maskz_cvtepi8_epi16(__mmask8 __U, __m128i __A) {
2032 // CHECK-LABEL: @test_mm_maskz_cvtepi8_epi16
2033 // CHECK: sext <8 x i8> %{{.*}} to <8 x i16>
2034 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2035 return _mm_maskz_cvtepi8_epi16(__U, __A);
2038 __m256i test_mm256_mask_cvtepi8_epi16(__m256i __W, __mmask16 __U, __m128i __A) {
2039 // CHECK-LABEL: @test_mm256_mask_cvtepi8_epi16
2040 // CHECK: sext <16 x i8> %{{.*}} to <16 x i16>
2041 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2042 return _mm256_mask_cvtepi8_epi16(__W, __U, __A);
2045 __m256i test_mm256_maskz_cvtepi8_epi16(__mmask16 __U, __m128i __A) {
2046 // CHECK-LABEL: @test_mm256_maskz_cvtepi8_epi16
2047 // CHECK: sext <16 x i8> %{{.*}} to <16 x i16>
2048 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2049 return _mm256_maskz_cvtepi8_epi16(__U, __A);
2052 __m128i test_mm_mask_cvtepu8_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
2053 // CHECK-LABEL: @test_mm_mask_cvtepu8_epi16
2054 // CHECK: zext <8 x i8> %{{.*}} to <8 x i16>
2055 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2056 return _mm_mask_cvtepu8_epi16(__W, __U, __A);
2059 __m128i test_mm_maskz_cvtepu8_epi16(__mmask8 __U, __m128i __A) {
2060 // CHECK-LABEL: @test_mm_maskz_cvtepu8_epi16
2061 // CHECK: zext <8 x i8> %{{.*}} to <8 x i16>
2062 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2063 return _mm_maskz_cvtepu8_epi16(__U, __A);
2066 __m256i test_mm256_mask_cvtepu8_epi16(__m256i __W, __mmask16 __U, __m128i __A) {
2067 // CHECK-LABEL: @test_mm256_mask_cvtepu8_epi16
2068 // CHECK: zext <16 x i8> %{{.*}} to <16 x i16>
2069 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2070 return _mm256_mask_cvtepu8_epi16(__W, __U, __A);
2073 __m256i test_mm256_maskz_cvtepu8_epi16(__mmask16 __U, __m128i __A) {
2074 // CHECK-LABEL: @test_mm256_maskz_cvtepu8_epi16
2075 // CHECK: zext <16 x i8> %{{.*}} to <16 x i16>
2076 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2077 return _mm256_maskz_cvtepu8_epi16(__U, __A);
2080 __m256i test_mm256_sllv_epi16(__m256i __A, __m256i __B) {
2081 // CHECK-LABEL: @test_mm256_sllv_epi16
2082 // CHECK: @llvm.x86.avx512.psllv.w.256(
2083 return _mm256_sllv_epi16(__A, __B);
2086 __m256i test_mm256_mask_sllv_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
2087 // CHECK-LABEL: @test_mm256_mask_sllv_epi16
2088 // CHECK: @llvm.x86.avx512.psllv.w.256(
2089 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2090 return _mm256_mask_sllv_epi16(__W, __U, __A, __B);
2093 __m256i test_mm256_maskz_sllv_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
2094 // CHECK-LABEL: @test_mm256_maskz_sllv_epi16
2095 // CHECK: @llvm.x86.avx512.psllv.w.256(
2096 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2097 return _mm256_maskz_sllv_epi16(__U, __A, __B);
2100 __m128i test_mm_sllv_epi16(__m128i __A, __m128i __B) {
2101 // CHECK-LABEL: @test_mm_sllv_epi16
2102 // CHECK: @llvm.x86.avx512.psllv.w.128(
2103 return _mm_sllv_epi16(__A, __B);
2106 __m128i test_mm_mask_sllv_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
2107 // CHECK-LABEL: @test_mm_mask_sllv_epi16
2108 // CHECK: @llvm.x86.avx512.psllv.w.128(
2109 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2110 return _mm_mask_sllv_epi16(__W, __U, __A, __B);
2113 __m128i test_mm_maskz_sllv_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
2114 // CHECK-LABEL: @test_mm_maskz_sllv_epi16
2115 // CHECK: @llvm.x86.avx512.psllv.w.128(
2116 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2117 return _mm_maskz_sllv_epi16(__U, __A, __B);
2120 __m128i test_mm_mask_sll_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
2121 // CHECK-LABEL: @test_mm_mask_sll_epi16
2122 // CHECK: @llvm.x86.sse2.psll.w
2123 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2124 return _mm_mask_sll_epi16(__W, __U, __A, __B);
2127 __m128i test_mm_maskz_sll_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
2128 // CHECK-LABEL: @test_mm_maskz_sll_epi16
2129 // CHECK: @llvm.x86.sse2.psll.w
2130 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2131 return _mm_maskz_sll_epi16(__U, __A, __B);
2134 __m256i test_mm256_mask_sll_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m128i __B) {
2135 // CHECK-LABEL: @test_mm256_mask_sll_epi16
2136 // CHECK: @llvm.x86.avx2.psll.w
2137 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2138 return _mm256_mask_sll_epi16(__W, __U, __A, __B);
2141 __m256i test_mm256_maskz_sll_epi16(__mmask16 __U, __m256i __A, __m128i __B) {
2142 // CHECK-LABEL: @test_mm256_maskz_sll_epi16
2143 // CHECK: @llvm.x86.avx2.psll.w
2144 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2145 return _mm256_maskz_sll_epi16(__U, __A, __B);
2148 __m128i test_mm_mask_slli_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
2149 // CHECK-LABEL: @test_mm_mask_slli_epi16
2150 // CHECK: @llvm.x86.sse2.pslli.w
2151 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2152 return _mm_mask_slli_epi16(__W, __U, __A, 5);
2155 __m128i test_mm_mask_slli_epi16_2(__m128i __W, __mmask8 __U, __m128i __A, unsigned int __B) {
2156 // CHECK-LABEL: @test_mm_mask_slli_epi16_2
2157 // CHECK: @llvm.x86.sse2.pslli.w
2158 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2159 return _mm_mask_slli_epi16(__W, __U, __A, __B);
2162 __m128i test_mm_maskz_slli_epi16(__mmask8 __U, __m128i __A) {
2163 // CHECK-LABEL: @test_mm_maskz_slli_epi16
2164 // CHECK: @llvm.x86.sse2.pslli.w
2165 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2166 return _mm_maskz_slli_epi16(__U, __A, 5);
2169 __m128i test_mm_maskz_slli_epi16_2(__mmask8 __U, __m128i __A, unsigned int __B) {
2170 // CHECK-LABEL: @test_mm_maskz_slli_epi16_2
2171 // CHECK: @llvm.x86.sse2.pslli.w
2172 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2173 return _mm_maskz_slli_epi16(__U, __A, __B);
2176 __m256i test_mm256_mask_slli_epi16(__m256i __W, __mmask16 __U, __m256i __A) {
2177 // CHECK-LABEL: @test_mm256_mask_slli_epi16
2178 // CHECK: @llvm.x86.avx2.pslli.w
2179 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2180 return _mm256_mask_slli_epi16(__W, __U, __A, 5);
2183 __m256i test_mm256_mask_slli_epi16_2(__m256i __W, __mmask16 __U, __m256i __A, unsigned int __B) {
2184 // CHECK-LABEL: @test_mm256_mask_slli_epi16_2
2185 // CHECK: @llvm.x86.avx2.pslli.w
2186 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2187 return _mm256_mask_slli_epi16(__W, __U, __A, __B);
2190 __m256i test_mm256_maskz_slli_epi16(__mmask16 __U, __m256i __A) {
2191 // CHECK-LABEL: @test_mm256_maskz_slli_epi16
2192 // CHECK: @llvm.x86.avx2.pslli.w
2193 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2194 return _mm256_maskz_slli_epi16(__U, __A, 5);
2197 __m256i test_mm256_maskz_slli_epi16_2(__mmask16 __U, __m256i __A, unsigned int __B) {
2198 // CHECK-LABEL: @test_mm256_maskz_slli_epi16_2
2199 // CHECK: @llvm.x86.avx2.pslli.w
2200 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2201 return _mm256_maskz_slli_epi16(__U, __A, __B);
2204 __m256i test_mm256_srlv_epi16(__m256i __A, __m256i __B) {
2205 // CHECK-LABEL: @test_mm256_srlv_epi16
2206 // CHECK: @llvm.x86.avx512.psrlv.w.256(
2207 return _mm256_srlv_epi16(__A, __B);
2210 __m256i test_mm256_mask_srlv_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
2211 // CHECK-LABEL: @test_mm256_mask_srlv_epi16
2212 // CHECK: @llvm.x86.avx512.psrlv.w.256(
2213 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2214 return _mm256_mask_srlv_epi16(__W, __U, __A, __B);
2217 __m256i test_mm256_maskz_srlv_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
2218 // CHECK-LABEL: @test_mm256_maskz_srlv_epi16
2219 // CHECK: @llvm.x86.avx512.psrlv.w.256(
2220 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2221 return _mm256_maskz_srlv_epi16(__U, __A, __B);
2224 __m128i test_mm_srlv_epi16(__m128i __A, __m128i __B) {
2225 // CHECK-LABEL: @test_mm_srlv_epi16
2226 // CHECK: @llvm.x86.avx512.psrlv.w.128(
2227 return _mm_srlv_epi16(__A, __B);
2230 __m128i test_mm_mask_srlv_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
2231 // CHECK-LABEL: @test_mm_mask_srlv_epi16
2232 // CHECK: @llvm.x86.avx512.psrlv.w.128(
2233 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2234 return _mm_mask_srlv_epi16(__W, __U, __A, __B);
2237 __m128i test_mm_maskz_srlv_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
2238 // CHECK-LABEL: @test_mm_maskz_srlv_epi16
2239 // CHECK: @llvm.x86.avx512.psrlv.w.128(
2240 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2241 return _mm_maskz_srlv_epi16(__U, __A, __B);
2244 __m128i test_mm_mask_srl_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
2245 // CHECK-LABEL: @test_mm_mask_srl_epi16
2246 // CHECK: @llvm.x86.sse2.psrl.w
2247 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2248 return _mm_mask_srl_epi16(__W, __U, __A, __B);
2251 __m128i test_mm_maskz_srl_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
2252 // CHECK-LABEL: @test_mm_maskz_srl_epi16
2253 // CHECK: @llvm.x86.sse2.psrl.w
2254 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2255 return _mm_maskz_srl_epi16(__U, __A, __B);
2258 __m256i test_mm256_mask_srl_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m128i __B) {
2259 // CHECK-LABEL: @test_mm256_mask_srl_epi16
2260 // CHECK: @llvm.x86.avx2.psrl.w
2261 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2262 return _mm256_mask_srl_epi16(__W, __U, __A, __B);
2265 __m256i test_mm256_maskz_srl_epi16(__mmask16 __U, __m256i __A, __m128i __B) {
2266 // CHECK-LABEL: @test_mm256_maskz_srl_epi16
2267 // CHECK: @llvm.x86.avx2.psrl.w
2268 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2269 return _mm256_maskz_srl_epi16(__U, __A, __B);
2272 __m128i test_mm_mask_srli_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
2273 // CHECK-LABEL: @test_mm_mask_srli_epi16
2274 // CHECK: @llvm.x86.sse2.psrli.w
2275 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2276 return _mm_mask_srli_epi16(__W, __U, __A, 5);
2279 __m128i test_mm_mask_srli_epi16_2(__m128i __W, __mmask8 __U, __m128i __A, int __B) {
2280 // CHECK-LABEL: @test_mm_mask_srli_epi16_2
2281 // CHECK: @llvm.x86.sse2.psrli.w
2282 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2283 return _mm_mask_srli_epi16(__W, __U, __A, __B);
2286 __m128i test_mm_maskz_srli_epi16(__mmask8 __U, __m128i __A) {
2287 // CHECK-LABEL: @test_mm_maskz_srli_epi16
2288 // CHECK: @llvm.x86.sse2.psrli.w
2289 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2290 return _mm_maskz_srli_epi16(__U, __A, 5);
2293 __m128i test_mm_maskz_srli_epi16_2(__mmask8 __U, __m128i __A, int __B) {
2294 // CHECK-LABEL: @test_mm_maskz_srli_epi16_2
2295 // CHECK: @llvm.x86.sse2.psrli.w
2296 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2297 return _mm_maskz_srli_epi16(__U, __A, __B);
2300 __m256i test_mm256_mask_srli_epi16(__m256i __W, __mmask16 __U, __m256i __A) {
2301 // CHECK-LABEL: @test_mm256_mask_srli_epi16
2302 // CHECK: @llvm.x86.avx2.psrli.w
2303 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2304 return _mm256_mask_srli_epi16(__W, __U, __A, 5);
2307 __m256i test_mm256_mask_srli_epi16_2(__m256i __W, __mmask16 __U, __m256i __A, int __B) {
2308 // CHECK-LABEL: @test_mm256_mask_srli_epi16_2
2309 // CHECK: @llvm.x86.avx2.psrli.w
2310 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2311 return _mm256_mask_srli_epi16(__W, __U, __A, __B);
2314 __m256i test_mm256_maskz_srli_epi16(__mmask16 __U, __m256i __A) {
2315 // CHECK-LABEL: @test_mm256_maskz_srli_epi16
2316 // CHECK: @llvm.x86.avx2.psrli.w
2317 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2318 return _mm256_maskz_srli_epi16(__U, __A, 5);
2321 __m256i test_mm256_maskz_srli_epi16_2(__mmask16 __U, __m256i __A, int __B) {
2322 // CHECK-LABEL: @test_mm256_maskz_srli_epi16_2
2323 // CHECK: @llvm.x86.avx2.psrli.w
2324 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2325 return _mm256_maskz_srli_epi16(__U, __A, __B);
2328 __m256i test_mm256_srav_epi16(__m256i __A, __m256i __B) {
2329 // CHECK-LABEL: @test_mm256_srav_epi16
2330 // CHECK: @llvm.x86.avx512.psrav.w.256(
2331 return _mm256_srav_epi16(__A, __B);
2334 __m256i test_mm256_mask_srav_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
2335 // CHECK-LABEL: @test_mm256_mask_srav_epi16
2336 // CHECK: @llvm.x86.avx512.psrav.w.256(
2337 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2338 return _mm256_mask_srav_epi16(__W, __U, __A, __B);
2341 __m256i test_mm256_maskz_srav_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
2342 // CHECK-LABEL: @test_mm256_maskz_srav_epi16
2343 // CHECK: @llvm.x86.avx512.psrav.w.256(
2344 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2345 return _mm256_maskz_srav_epi16(__U, __A, __B);
2348 __m128i test_mm_srav_epi16(__m128i __A, __m128i __B) {
2349 // CHECK-LABEL: @test_mm_srav_epi16
2350 // CHECK: @llvm.x86.avx512.psrav.w.128(
2351 return _mm_srav_epi16(__A, __B);
2354 __m128i test_mm_mask_srav_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
2355 // CHECK-LABEL: @test_mm_mask_srav_epi16
2356 // CHECK: @llvm.x86.avx512.psrav.w.128(
2357 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2358 return _mm_mask_srav_epi16(__W, __U, __A, __B);
2361 __m128i test_mm_maskz_srav_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
2362 // CHECK-LABEL: @test_mm_maskz_srav_epi16
2363 // CHECK: @llvm.x86.avx512.psrav.w.128(
2364 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2365 return _mm_maskz_srav_epi16(__U, __A, __B);
2368 __m128i test_mm_mask_sra_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
2369 // CHECK-LABEL: @test_mm_mask_sra_epi16
2370 // CHECK: @llvm.x86.sse2.psra.w
2371 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2372 return _mm_mask_sra_epi16(__W, __U, __A, __B);
2375 __m128i test_mm_maskz_sra_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
2376 // CHECK-LABEL: @test_mm_maskz_sra_epi16
2377 // CHECK: @llvm.x86.sse2.psra.w
2378 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2379 return _mm_maskz_sra_epi16(__U, __A, __B);
2382 __m256i test_mm256_mask_sra_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m128i __B) {
2383 // CHECK-LABEL: @test_mm256_mask_sra_epi16
2384 // CHECK: @llvm.x86.avx2.psra.w
2385 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2386 return _mm256_mask_sra_epi16(__W, __U, __A, __B);
2389 __m256i test_mm256_maskz_sra_epi16(__mmask16 __U, __m256i __A, __m128i __B) {
2390 // CHECK-LABEL: @test_mm256_maskz_sra_epi16
2391 // CHECK: @llvm.x86.avx2.psra.w
2392 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2393 return _mm256_maskz_sra_epi16(__U, __A, __B);
2396 __m128i test_mm_mask_srai_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
2397 // CHECK-LABEL: @test_mm_mask_srai_epi16
2398 // CHECK: @llvm.x86.sse2.psrai.w
2399 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2400 return _mm_mask_srai_epi16(__W, __U, __A, 5);
2403 __m128i test_mm_mask_srai_epi16_2(__m128i __W, __mmask8 __U, __m128i __A, unsigned int __B) {
2404 // CHECK-LABEL: @test_mm_mask_srai_epi16_2
2405 // CHECK: @llvm.x86.sse2.psrai.w
2406 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2407 return _mm_mask_srai_epi16(__W, __U, __A, __B);
2410 __m128i test_mm_maskz_srai_epi16(__mmask8 __U, __m128i __A) {
2411 // CHECK-LABEL: @test_mm_maskz_srai_epi16
2412 // CHECK: @llvm.x86.sse2.psrai.w
2413 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2414 return _mm_maskz_srai_epi16(__U, __A, 5);
2417 __m128i test_mm_maskz_srai_epi16_2(__mmask8 __U, __m128i __A, unsigned int __B) {
2418 // CHECK-LABEL: @test_mm_maskz_srai_epi16_2
2419 // CHECK: @llvm.x86.sse2.psrai.w
2420 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2421 return _mm_maskz_srai_epi16(__U, __A, __B);
2424 __m256i test_mm256_mask_srai_epi16(__m256i __W, __mmask16 __U, __m256i __A) {
2425 // CHECK-LABEL: @test_mm256_mask_srai_epi16
2426 // CHECK: @llvm.x86.avx2.psrai.w
2427 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2428 return _mm256_mask_srai_epi16(__W, __U, __A, 5);
2431 __m256i test_mm256_mask_srai_epi16_2(__m256i __W, __mmask16 __U, __m256i __A, unsigned int __B) {
2432 // CHECK-LABEL: @test_mm256_mask_srai_epi16_2
2433 // CHECK: @llvm.x86.avx2.psrai.w
2434 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2435 return _mm256_mask_srai_epi16(__W, __U, __A, __B);
2438 __m256i test_mm256_maskz_srai_epi16(__mmask16 __U, __m256i __A) {
2439 // CHECK-LABEL: @test_mm256_maskz_srai_epi16
2440 // CHECK: @llvm.x86.avx2.psrai.w
2441 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2442 return _mm256_maskz_srai_epi16(__U, __A, 5);
2445 __m256i test_mm256_maskz_srai_epi16_2(__mmask16 __U, __m256i __A, unsigned int __B) {
2446 // CHECK-LABEL: @test_mm256_maskz_srai_epi16_2
2447 // CHECK: @llvm.x86.avx2.psrai.w
2448 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2449 return _mm256_maskz_srai_epi16(__U, __A, __B);
2452 __m128i test_mm_mask_mov_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
2453 // CHECK-LABEL: @test_mm_mask_mov_epi16
2454 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2455 return _mm_mask_mov_epi16(__W, __U, __A);
2458 __m128i test_mm_maskz_mov_epi16(__mmask8 __U, __m128i __A) {
2459 // CHECK-LABEL: @test_mm_maskz_mov_epi16
2460 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2461 return _mm_maskz_mov_epi16(__U, __A);
2464 __m256i test_mm256_mask_mov_epi16(__m256i __W, __mmask16 __U, __m256i __A) {
2465 // CHECK-LABEL: @test_mm256_mask_mov_epi16
2466 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2467 return _mm256_mask_mov_epi16(__W, __U, __A);
2470 __m256i test_mm256_maskz_mov_epi16(__mmask16 __U, __m256i __A) {
2471 // CHECK-LABEL: @test_mm256_maskz_mov_epi16
2472 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2473 return _mm256_maskz_mov_epi16(__U, __A);
2476 __m128i test_mm_mask_mov_epi8(__m128i __W, __mmask16 __U, __m128i __A) {
2477 // CHECK-LABEL: @test_mm_mask_mov_epi8
2478 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
2479 return _mm_mask_mov_epi8(__W, __U, __A);
2482 __m128i test_mm_maskz_mov_epi8(__mmask16 __U, __m128i __A) {
2483 // CHECK-LABEL: @test_mm_maskz_mov_epi8
2484 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
2485 return _mm_maskz_mov_epi8(__U, __A);
2488 __m256i test_mm256_mask_mov_epi8(__m256i __W, __mmask32 __U, __m256i __A) {
2489 // CHECK-LABEL: @test_mm256_mask_mov_epi8
2490 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
2491 return _mm256_mask_mov_epi8(__W, __U, __A);
2494 __m256i test_mm256_maskz_mov_epi8(__mmask32 __U, __m256i __A) {
2495 // CHECK-LABEL: @test_mm256_maskz_mov_epi8
2496 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
2497 return _mm256_maskz_mov_epi8(__U, __A);
2500 __m128i test_mm_loadu_epi16(void const *__P) {
2501 // CHECK-LABEL: @test_mm_loadu_epi16
2502 // CHECK: load <2 x i64>, ptr %{{.*}}, align 1{{$}}
2503 return _mm_loadu_epi16(__P);
2506 __m128i test_mm_mask_loadu_epi16(__m128i __W, __mmask8 __U, void const *__P) {
2507 // CHECK-LABEL: @test_mm_mask_loadu_epi16
2508 // CHECK: @llvm.masked.load.v8i16.p0(ptr %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x i16> %{{.*}})
2509 return _mm_mask_loadu_epi16(__W, __U, __P);
2512 __m128i test_mm_maskz_loadu_epi16(__mmask8 __U, void const *__P) {
2513 // CHECK-LABEL: @test_mm_maskz_loadu_epi16
2514 // CHECK: @llvm.masked.load.v8i16.p0(ptr %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x i16> %{{.*}})
2515 return _mm_maskz_loadu_epi16(__U, __P);
2518 __m256i test_mm256_loadu_epi16(void const *__P) {
2519 // CHECK-LABEL: @test_mm256_loadu_epi16
2520 // CHECK: load <4 x i64>, ptr %{{.*}}, align 1{{$}}
2521 return _mm256_loadu_epi16(__P);
2524 __m256i test_mm256_mask_loadu_epi16(__m256i __W, __mmask16 __U, void const *__P) {
2525 // CHECK-LABEL: @test_mm256_mask_loadu_epi16
2526 // CHECK: @llvm.masked.load.v16i16.p0(ptr %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i16> %{{.*}})
2527 return _mm256_mask_loadu_epi16(__W, __U, __P);
2530 __m256i test_mm256_maskz_loadu_epi16(__mmask16 __U, void const *__P) {
2531 // CHECK-LABEL: @test_mm256_maskz_loadu_epi16
2532 // CHECK: @llvm.masked.load.v16i16.p0(ptr %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i16> %{{.*}})
2533 return _mm256_maskz_loadu_epi16(__U, __P);
2536 __m128i test_mm_loadu_epi8(void const *__P) {
2537 // CHECK-LABEL: @test_mm_loadu_epi8
2538 // CHECK: load <2 x i64>, ptr %{{.*}}, align 1{{$}}
2539 return _mm_loadu_epi8(__P);
2542 __m128i test_mm_mask_loadu_epi8(__m128i __W, __mmask16 __U, void const *__P) {
2543 // CHECK-LABEL: @test_mm_mask_loadu_epi8
2544 // CHECK: @llvm.masked.load.v16i8.p0(ptr %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i8> %{{.*}})
2545 return _mm_mask_loadu_epi8(__W, __U, __P);
2548 __m128i test_mm_maskz_loadu_epi8(__mmask16 __U, void const *__P) {
2549 // CHECK-LABEL: @test_mm_maskz_loadu_epi8
2550 // CHECK: @llvm.masked.load.v16i8.p0(ptr %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i8> %{{.*}})
2551 return _mm_maskz_loadu_epi8(__U, __P);
2554 __m256i test_mm256_loadu_epi8(void const *__P) {
2555 // CHECK-LABEL: @test_mm256_loadu_epi8
2556 // CHECK: load <4 x i64>, ptr %{{.*}}, align 1{{$}}
2557 return _mm256_loadu_epi8(__P);
2560 __m256i test_mm256_mask_loadu_epi8(__m256i __W, __mmask32 __U, void const *__P) {
2561 // CHECK-LABEL: @test_mm256_mask_loadu_epi8
2562 // CHECK: @llvm.masked.load.v32i8.p0(ptr %{{.*}}, i32 1, <32 x i1> %{{.*}}, <32 x i8> %{{.*}})
2563 return _mm256_mask_loadu_epi8(__W, __U, __P);
2566 __m256i test_mm256_maskz_loadu_epi8(__mmask32 __U, void const *__P) {
2567 // CHECK-LABEL: @test_mm256_maskz_loadu_epi8
2568 // CHECK: @llvm.masked.load.v32i8.p0(ptr %{{.*}}, i32 1, <32 x i1> %{{.*}}, <32 x i8> %{{.*}})
2569 return _mm256_maskz_loadu_epi8(__U, __P);
2572 void test_mm_storeu_epi16(void *__p, __m128i __a) {
2573 // check-label: @test_mm_storeu_epi16
2574 // check: store <2 x i64> %{{.*}}, ptr %{{.*}}, align 1{{$}}
2575 return _mm_storeu_epi16(__p, __a);
2578 void test_mm_mask_storeu_epi16(void *__P, __mmask8 __U, __m128i __A) {
2579 // CHECK-LABEL: @test_mm_mask_storeu_epi16
2580 // CHECK: @llvm.masked.store.v8i16.p0(<8 x i16> %{{.*}}, ptr %{{.*}}, i32 1, <8 x i1> %{{.*}})
2581 return _mm_mask_storeu_epi16(__P, __U, __A);
2584 void test_mm256_storeu_epi16(void *__P, __m256i __A) {
2585 // CHECK-LABEL: @test_mm256_storeu_epi16
2586 // CHECK: store <4 x i64> %{{.*}}, ptr %{{.*}}, align 1{{$}}
2587 return _mm256_storeu_epi16(__P, __A);
2590 void test_mm256_mask_storeu_epi16(void *__P, __mmask16 __U, __m256i __A) {
2591 // CHECK-LABEL: @test_mm256_mask_storeu_epi16
2592 // CHECK: @llvm.masked.store.v16i16.p0(<16 x i16> %{{.*}}, ptr %{{.*}}, i32 1, <16 x i1> %{{.*}})
2593 return _mm256_mask_storeu_epi16(__P, __U, __A);
2596 void test_mm_storeu_epi8(void *__p, __m128i __a) {
2597 // check-label: @test_mm_storeu_epi8
2598 // check: store <2 x i64> %{{.*}}, ptr %{{.*}}, align 1{{$}}
2599 return _mm_storeu_epi8(__p, __a);
2602 void test_mm_mask_storeu_epi8(void *__P, __mmask16 __U, __m128i __A) {
2603 // CHECK-LABEL: @test_mm_mask_storeu_epi8
2604 // CHECK: @llvm.masked.store.v16i8.p0(<16 x i8> %{{.*}}, ptr %{{.*}}, i32 1, <16 x i1> %{{.*}})
2605 return _mm_mask_storeu_epi8(__P, __U, __A);
2608 void test_mm256_storeu_epi8(void *__P, __m256i __A) {
2609 // CHECK-LABEL: @test_mm256_storeu_epi8
2610 // CHECK: store <4 x i64> %{{.*}}, ptr %{{.*}}, align 1{{$}}
2611 return _mm256_storeu_epi8(__P, __A);
2614 void test_mm256_mask_storeu_epi8(void *__P, __mmask32 __U, __m256i __A) {
2615 // CHECK-LABEL: @test_mm256_mask_storeu_epi8
2616 // CHECK: @llvm.masked.store.v32i8.p0(<32 x i8> %{{.*}}, ptr %{{.*}}, i32 1, <32 x i1> %{{.*}})
2617 return _mm256_mask_storeu_epi8(__P, __U, __A);
2619 __mmask16 test_mm_test_epi8_mask(__m128i __A, __m128i __B) {
2620 // CHECK-LABEL: @test_mm_test_epi8_mask
2621 // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
2622 // CHECK: icmp ne <16 x i8> %{{.*}}, %{{.*}}
2623 return _mm_test_epi8_mask(__A, __B);
2626 __mmask16 test_mm_mask_test_epi8_mask(__mmask16 __U, __m128i __A, __m128i __B) {
2627 // CHECK-LABEL: @test_mm_mask_test_epi8_mask
2628 // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
2629 // CHECK: icmp ne <16 x i8> %{{.*}}, %{{.*}}
2630 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2631 return _mm_mask_test_epi8_mask(__U, __A, __B);
2634 __mmask32 test_mm256_test_epi8_mask(__m256i __A, __m256i __B) {
2635 // CHECK-LABEL: @test_mm256_test_epi8_mask
2636 // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
2637 // CHECK: icmp ne <32 x i8> %{{.*}}, %{{.*}}
2638 return _mm256_test_epi8_mask(__A, __B);
2641 __mmask32 test_mm256_mask_test_epi8_mask(__mmask32 __U, __m256i __A, __m256i __B) {
2642 // CHECK-LABEL: @test_mm256_mask_test_epi8_mask
2643 // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
2644 // CHECK: icmp ne <32 x i8> %{{.*}}, %{{.*}}
2645 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
2646 return _mm256_mask_test_epi8_mask(__U, __A, __B);
2649 __mmask8 test_mm_test_epi16_mask(__m128i __A, __m128i __B) {
2650 // CHECK-LABEL: @test_mm_test_epi16_mask
2651 // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
2652 // CHECK: icmp ne <8 x i16> %{{.*}}, %{{.*}}
2653 return _mm_test_epi16_mask(__A, __B);
2656 __mmask8 test_mm_mask_test_epi16_mask(__mmask8 __U, __m128i __A, __m128i __B) {
2657 // CHECK-LABEL: @test_mm_mask_test_epi16_mask
2658 // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
2659 // CHECK: icmp ne <8 x i16> %{{.*}}, %{{.*}}
2660 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2661 return _mm_mask_test_epi16_mask(__U, __A, __B);
2664 __mmask16 test_mm256_test_epi16_mask(__m256i __A, __m256i __B) {
2665 // CHECK-LABEL: @test_mm256_test_epi16_mask
2666 // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
2667 // CHECK: icmp ne <16 x i16> %{{.*}}, %{{.*}}
2668 return _mm256_test_epi16_mask(__A, __B);
2671 __mmask16 test_mm256_mask_test_epi16_mask(__mmask16 __U, __m256i __A, __m256i __B) {
2672 // CHECK-LABEL: @test_mm256_mask_test_epi16_mask
2673 // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
2674 // CHECK: icmp ne <16 x i16> %{{.*}}, %{{.*}}
2675 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2676 return _mm256_mask_test_epi16_mask(__U, __A, __B);
2679 __mmask16 test_mm_testn_epi8_mask(__m128i __A, __m128i __B) {
2680 // CHECK-LABEL: @test_mm_testn_epi8_mask
2681 // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
2682 // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
2683 return _mm_testn_epi8_mask(__A, __B);
2686 __mmask16 test_mm_mask_testn_epi8_mask(__mmask16 __U, __m128i __A, __m128i __B) {
2687 // CHECK-LABEL: @test_mm_mask_testn_epi8_mask
2688 // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
2689 // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
2690 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2691 return _mm_mask_testn_epi8_mask(__U, __A, __B);
2694 __mmask32 test_mm256_testn_epi8_mask(__m256i __A, __m256i __B) {
2695 // CHECK-LABEL: @test_mm256_testn_epi8_mask
2696 // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
2697 // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}
2698 return _mm256_testn_epi8_mask(__A, __B);
2701 __mmask32 test_mm256_mask_testn_epi8_mask(__mmask32 __U, __m256i __A, __m256i __B) {
2702 // CHECK-LABEL: @test_mm256_mask_testn_epi8_mask
2703 // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
2704 // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}
2705 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
2706 return _mm256_mask_testn_epi8_mask(__U, __A, __B);
2709 __mmask8 test_mm_testn_epi16_mask(__m128i __A, __m128i __B) {
2710 // CHECK-LABEL: @test_mm_testn_epi16_mask
2711 // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
2712 // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
2713 return _mm_testn_epi16_mask(__A, __B);
2716 __mmask8 test_mm_mask_testn_epi16_mask(__mmask8 __U, __m128i __A, __m128i __B) {
2717 // CHECK-LABEL: @test_mm_mask_testn_epi16_mask
2718 // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
2719 // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
2720 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2721 return _mm_mask_testn_epi16_mask(__U, __A, __B);
2724 __mmask16 test_mm256_testn_epi16_mask(__m256i __A, __m256i __B) {
2725 // CHECK-LABEL: @test_mm256_testn_epi16_mask
2726 // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
2727 // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}
2728 return _mm256_testn_epi16_mask(__A, __B);
2731 __mmask16 test_mm256_mask_testn_epi16_mask(__mmask16 __U, __m256i __A, __m256i __B) {
2732 // CHECK-LABEL: @test_mm256_mask_testn_epi16_mask
2733 // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
2734 // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}
2735 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2736 return _mm256_mask_testn_epi16_mask(__U, __A, __B);
2739 __mmask16 test_mm_movepi8_mask(__m128i __A) {
2740 // CHECK-LABEL: @test_mm_movepi8_mask
2741 // CHECK: [[CMP:%.*]] = icmp slt <16 x i8> %{{.*}}, zeroinitializer
2742 return _mm_movepi8_mask(__A);
2745 __mmask32 test_mm256_movepi8_mask(__m256i __A) {
2746 // CHECK-LABEL: @test_mm256_movepi8_mask
2747 // CHECK: [[CMP:%.*]] = icmp slt <32 x i8> %{{.*}}, zeroinitializer
2748 return _mm256_movepi8_mask(__A);
2751 __m128i test_mm_movm_epi8(__mmask16 __A) {
2752 // CHECK-LABEL: @test_mm_movm_epi8
2753 // CHECK: %{{.*}} = bitcast i16 %{{.*}} to <16 x i1>
2754 // CHECK: %vpmovm2.i = sext <16 x i1> %{{.*}} to <16 x i8>
2755 return _mm_movm_epi8(__A);
2758 __m256i test_mm256_movm_epi8(__mmask32 __A) {
2759 // CHECK-LABEL: @test_mm256_movm_epi8
2760 // CHECK: %{{.*}} = bitcast i32 %{{.*}} to <32 x i1>
2761 // CHECK: %vpmovm2.i = sext <32 x i1> %{{.*}} to <32 x i8>
2762 return _mm256_movm_epi8(__A);
2765 __m128i test_mm_movm_epi16(__mmask8 __A) {
2766 // CHECK-LABEL: @test_mm_movm_epi16
2767 // CHECK: %{{.*}} = bitcast i8 %{{.*}} to <8 x i1>
2768 // CHECK: %vpmovm2.i = sext <8 x i1> %{{.*}} to <8 x i16>
2769 return _mm_movm_epi16(__A);
2772 __m256i test_mm256_movm_epi16(__mmask16 __A) {
2773 // CHECK-LABEL: @test_mm256_movm_epi16
2774 // CHECK: %{{.*}} = bitcast i16 %{{.*}} to <16 x i1>
2775 // CHECK: %vpmovm2.i = sext <16 x i1> %{{.*}} to <16 x i16>
2776 return _mm256_movm_epi16(__A);
2779 __m128i test_mm_mask_broadcastb_epi8(__m128i __O, __mmask16 __M, __m128i __A) {
2780 // CHECK-LABEL: @test_mm_mask_broadcastb_epi8
2781 // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> zeroinitializer
2782 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
2783 return _mm_mask_broadcastb_epi8(__O, __M, __A);
2786 __m128i test_mm_maskz_broadcastb_epi8(__mmask16 __M, __m128i __A) {
2787 // CHECK-LABEL: @test_mm_maskz_broadcastb_epi8
2788 // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> zeroinitializer
2789 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
2790 return _mm_maskz_broadcastb_epi8(__M, __A);
2793 __m256i test_mm256_mask_broadcastb_epi8(__m256i __O, __mmask32 __M, __m128i __A) {
2794 // CHECK-LABEL: @test_mm256_mask_broadcastb_epi8
2795 // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <32 x i32> zeroinitializer
2796 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
2797 return _mm256_mask_broadcastb_epi8(__O, __M, __A);
2800 __m256i test_mm256_maskz_broadcastb_epi8(__mmask32 __M, __m128i __A) {
2801 // CHECK-LABEL: @test_mm256_maskz_broadcastb_epi8
2802 // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <32 x i32> zeroinitializer
2803 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
2804 return _mm256_maskz_broadcastb_epi8(__M, __A);
2807 __m128i test_mm_mask_broadcastw_epi16(__m128i __O, __mmask8 __M, __m128i __A) {
2808 // CHECK-LABEL: @test_mm_mask_broadcastw_epi16
2809 // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> zeroinitializer
2810 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2811 return _mm_mask_broadcastw_epi16(__O, __M, __A);
2814 __m128i test_mm_maskz_broadcastw_epi16(__mmask8 __M, __m128i __A) {
2815 // CHECK-LABEL: @test_mm_maskz_broadcastw_epi16
2816 // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> zeroinitializer
2817 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2818 return _mm_maskz_broadcastw_epi16(__M, __A);
2821 __m256i test_mm256_mask_broadcastw_epi16(__m256i __O, __mmask16 __M, __m128i __A) {
2822 // CHECK-LABEL: @test_mm256_mask_broadcastw_epi16
2823 // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <16 x i32> zeroinitializer
2824 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2825 return _mm256_mask_broadcastw_epi16(__O, __M, __A);
2828 __m256i test_mm256_maskz_broadcastw_epi16(__mmask16 __M, __m128i __A) {
2829 // CHECK-LABEL: @test_mm256_maskz_broadcastw_epi16
2830 // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <16 x i32> zeroinitializer
2831 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2832 return _mm256_maskz_broadcastw_epi16(__M, __A);
2834 __m128i test_mm_mask_set1_epi8 (__m128i __O, __mmask16 __M, char __A){
2835 // CHECK-LABEL: @test_mm_mask_set1_epi8
2836 // CHECK: insertelement <16 x i8> poison, i8 %{{.*}}, i32 0
2837 // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 1
2838 // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 2
2839 // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 3
2840 // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 4
2841 // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 5
2842 // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 6
2843 // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 7
2844 // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 8
2845 // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 9
2846 // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 10
2847 // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 11
2848 // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 12
2849 // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 13
2850 // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 14
2851 // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 15
2852 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
2853 return _mm_mask_set1_epi8(__O, __M, __A);
2855 __m128i test_mm_maskz_set1_epi8 ( __mmask16 __M, char __A){
2856 // CHECK-LABEL: @test_mm_maskz_set1_epi8
2857 // CHECK: insertelement <16 x i8> poison, i8 %{{.*}}, i32 0
2858 // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 1
2859 // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 2
2860 // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 3
2861 // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 4
2862 // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 5
2863 // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 6
2864 // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 7
2865 // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 8
2866 // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 9
2867 // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 10
2868 // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 11
2869 // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 12
2870 // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 13
2871 // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 14
2872 // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 15
2873 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
2874 return _mm_maskz_set1_epi8( __M, __A);
2877 __m256i test_mm256_mask_set1_epi8(__m256i __O, __mmask32 __M, char __A) {
2878 // CHECK-LABEL: @test_mm256_mask_set1_epi8
2879 // CHECK: insertelement <32 x i8> poison, i8 %{{.*}}, i32 0
2880 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 1
2881 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 2
2882 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 3
2883 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 4
2884 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 5
2885 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 6
2886 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 7
2887 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 8
2888 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 9
2889 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 10
2890 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 11
2891 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 12
2892 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 13
2893 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 14
2894 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 15
2895 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 16
2896 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 17
2897 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 18
2898 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 19
2899 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 20
2900 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 21
2901 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 22
2902 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 23
2903 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 24
2904 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 25
2905 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 26
2906 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 27
2907 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 28
2908 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 29
2909 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 30
2910 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 31
2911 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
2912 return _mm256_mask_set1_epi8(__O, __M, __A);
2915 __m256i test_mm256_maskz_set1_epi8( __mmask32 __M, char __A) {
2916 // CHECK-LABEL: @test_mm256_maskz_set1_epi8
2917 // CHECK: insertelement <32 x i8> poison, i8 %{{.*}}, i32 0
2918 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 1
2919 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 2
2920 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 3
2921 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 4
2922 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 5
2923 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 6
2924 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 7
2925 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 8
2926 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 9
2927 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 10
2928 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 11
2929 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 12
2930 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 13
2931 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 14
2932 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 15
2933 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 16
2934 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 17
2935 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 18
2936 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 19
2937 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 20
2938 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 21
2939 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 22
2940 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 23
2941 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 24
2942 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 25
2943 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 26
2944 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 27
2945 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 28
2946 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 29
2947 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 30
2948 // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 31
2949 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
2950 return _mm256_maskz_set1_epi8( __M, __A);
2954 __m256i test_mm256_mask_set1_epi16(__m256i __O, __mmask16 __M, short __A) {
2955 // CHECK-LABEL: @test_mm256_mask_set1_epi16
2956 // CHECK: insertelement <16 x i16> poison, i16 %{{.*}}, i32 0
2957 // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 1
2958 // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 2
2959 // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 3
2960 // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 4
2961 // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 5
2962 // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 6
2963 // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 7
2964 // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 8
2965 // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 9
2966 // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 10
2967 // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 11
2968 // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 12
2969 // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 13
2970 // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 14
2971 // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 15
2972 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2973 return _mm256_mask_set1_epi16(__O, __M, __A);
2976 __m256i test_mm256_maskz_set1_epi16(__mmask16 __M, short __A) {
2977 // CHECK-LABEL: @test_mm256_maskz_set1_epi16
2978 // CHECK: insertelement <16 x i16> poison, 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_maskz_set1_epi16(__M, __A);
2998 __m128i test_mm_mask_set1_epi16(__m128i __O, __mmask8 __M, short __A) {
2999 // CHECK-LABEL: @test_mm_mask_set1_epi16
3000 // CHECK: insertelement <8 x i16> poison, i16 %{{.*}}, i32 0
3001 // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 1
3002 // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 2
3003 // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 3
3004 // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 4
3005 // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 5
3006 // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 6
3007 // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 7
3008 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3009 return _mm_mask_set1_epi16(__O, __M, __A);
3012 __m128i test_mm_maskz_set1_epi16(__mmask8 __M, short __A) {
3013 // CHECK-LABEL: @test_mm_maskz_set1_epi16
3014 // CHECK: insertelement <8 x i16> poison, i16 %{{.*}}, i32 0
3015 // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 1
3016 // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 2
3017 // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 3
3018 // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 4
3019 // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 5
3020 // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 6
3021 // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 7
3022 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3023 return _mm_maskz_set1_epi16(__M, __A);
3025 __m128i test_mm_permutexvar_epi16(__m128i __A, __m128i __B) {
3026 // CHECK-LABEL: @test_mm_permutexvar_epi16
3027 // CHECK: @llvm.x86.avx512.permvar.hi.128
3028 return _mm_permutexvar_epi16(__A, __B);
3031 __m128i test_mm_maskz_permutexvar_epi16(__mmask8 __M, __m128i __A, __m128i __B) {
3032 // CHECK-LABEL: @test_mm_maskz_permutexvar_epi16
3033 // CHECK: @llvm.x86.avx512.permvar.hi.128
3034 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3035 return _mm_maskz_permutexvar_epi16(__M, __A, __B);
3038 __m128i test_mm_mask_permutexvar_epi16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
3039 // CHECK-LABEL: @test_mm_mask_permutexvar_epi16
3040 // CHECK: @llvm.x86.avx512.permvar.hi.128
3041 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3042 return _mm_mask_permutexvar_epi16(__W, __M, __A, __B);
3045 __m256i test_mm256_permutexvar_epi16(__m256i __A, __m256i __B) {
3046 // CHECK-LABEL: @test_mm256_permutexvar_epi16
3047 // CHECK: @llvm.x86.avx512.permvar.hi.256
3048 return _mm256_permutexvar_epi16(__A, __B);
3051 __m256i test_mm256_maskz_permutexvar_epi16(__mmask16 __M, __m256i __A, __m256i __B) {
3052 // CHECK-LABEL: @test_mm256_maskz_permutexvar_epi16
3053 // CHECK: @llvm.x86.avx512.permvar.hi.256
3054 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3055 return _mm256_maskz_permutexvar_epi16(__M, __A, __B);
3058 __m256i test_mm256_mask_permutexvar_epi16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {
3059 // CHECK-LABEL: @test_mm256_mask_permutexvar_epi16
3060 // CHECK: @llvm.x86.avx512.permvar.hi.256
3061 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3062 return _mm256_mask_permutexvar_epi16(__W, __M, __A, __B);
3064 __m128i test_mm_mask_alignr_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
3065 // CHECK-LABEL: @test_mm_mask_alignr_epi8
3066 // 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>
3067 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
3068 return _mm_mask_alignr_epi8(__W, __U, __A, __B, 2);
3071 __m128i test_mm_maskz_alignr_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
3072 // CHECK-LABEL: @test_mm_maskz_alignr_epi8
3073 // 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>
3074 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
3075 return _mm_maskz_alignr_epi8(__U, __A, __B, 2);
3078 __m256i test_mm256_mask_alignr_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
3079 // CHECK-LABEL: @test_mm256_mask_alignr_epi8
3080 // 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>
3081 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
3082 return _mm256_mask_alignr_epi8(__W, __U, __A, __B, 2);
3085 __m256i test_mm256_maskz_alignr_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
3086 // CHECK-LABEL: @test_mm256_maskz_alignr_epi8
3087 // 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>
3088 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
3089 return _mm256_maskz_alignr_epi8(__U, __A, __B, 2);
3092 __m128i test_mm_dbsad_epu8(__m128i __A, __m128i __B) {
3093 // CHECK-LABEL: @test_mm_dbsad_epu8
3094 // CHECK: @llvm.x86.avx512.dbpsadbw.128
3095 return _mm_dbsad_epu8(__A, __B, 170);
3098 __m128i test_mm_mask_dbsad_epu8(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
3099 // CHECK-LABEL: @test_mm_mask_dbsad_epu8
3100 // CHECK: @llvm.x86.avx512.dbpsadbw.128
3101 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3102 return _mm_mask_dbsad_epu8(__W, __U, __A, __B, 170);
3105 __m128i test_mm_maskz_dbsad_epu8(__mmask8 __U, __m128i __A, __m128i __B) {
3106 // CHECK-LABEL: @test_mm_maskz_dbsad_epu8
3107 // CHECK: @llvm.x86.avx512.dbpsadbw.128
3108 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3109 return _mm_maskz_dbsad_epu8(__U, __A, __B, 170);
3112 __m256i test_mm256_dbsad_epu8(__m256i __A, __m256i __B) {
3113 // CHECK-LABEL: @test_mm256_dbsad_epu8
3114 // CHECK: @llvm.x86.avx512.dbpsadbw.256
3115 return _mm256_dbsad_epu8(__A, __B, 170);
3118 __m256i test_mm256_mask_dbsad_epu8(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
3119 // CHECK-LABEL: @test_mm256_mask_dbsad_epu8
3120 // CHECK: @llvm.x86.avx512.dbpsadbw.256
3121 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3122 return _mm256_mask_dbsad_epu8(__W, __U, __A, __B, 170);
3125 __m256i test_mm256_maskz_dbsad_epu8(__mmask16 __U, __m256i __A, __m256i __B) {
3126 // CHECK-LABEL: @test_mm256_maskz_dbsad_epu8
3127 // CHECK: @llvm.x86.avx512.dbpsadbw.256
3128 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3129 return _mm256_maskz_dbsad_epu8(__U, __A, __B, 170);
3131 __mmask8 test_mm_movepi16_mask(__m128i __A) {
3132 // CHECK-LABEL: @test_mm_movepi16_mask
3133 // CHECK: [[CMP:%.*]] = icmp slt <8 x i16> %{{.*}}, zeroinitializer
3134 return _mm_movepi16_mask(__A);
3137 __mmask16 test_mm256_movepi16_mask(__m256i __A) {
3138 // CHECK-LABEL: @test_mm256_movepi16_mask
3139 // CHECK: [[CMP:%.*]] = icmp slt <16 x i16> %{{.*}}, zeroinitializer
3140 return _mm256_movepi16_mask(__A);
3143 __m128i test_mm_mask_shufflehi_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
3144 // CHECK-LABEL: @test_mm_mask_shufflehi_epi16
3145 // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> poison, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 5, i32 5, i32 4, i32 4>
3146 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3147 return _mm_mask_shufflehi_epi16(__W, __U, __A, 5);
3150 __m128i test_mm_maskz_shufflehi_epi16(__mmask8 __U, __m128i __A) {
3151 // CHECK-LABEL: @test_mm_maskz_shufflehi_epi16
3152 // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> poison, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 5, i32 5, i32 4, i32 4>
3153 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3154 return _mm_maskz_shufflehi_epi16(__U, __A, 5);
3157 __m128i test_mm_mask_shufflelo_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
3158 // CHECK-LABEL: @test_mm_mask_shufflelo_epi16
3159 // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> poison, <8 x i32> <i32 1, i32 1, i32 0, i32 0, i32 4, i32 5, i32 6, i32 7>
3160 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3161 return _mm_mask_shufflelo_epi16(__W, __U, __A, 5);
3164 __m128i test_mm_maskz_shufflelo_epi16(__mmask8 __U, __m128i __A) {
3165 // CHECK-LABEL: @test_mm_maskz_shufflelo_epi16
3166 // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> poison, <8 x i32> <i32 1, i32 1, i32 0, i32 0, i32 4, i32 5, i32 6, i32 7>
3167 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3168 return _mm_maskz_shufflelo_epi16(__U, __A, 5);
3171 __m256i test_mm256_mask_shufflehi_epi16(__m256i __W, __mmask16 __U, __m256i __A) {
3172 // CHECK-LABEL: @test_mm256_mask_shufflehi_epi16
3173 // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> poison, <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>
3174 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3175 return _mm256_mask_shufflehi_epi16(__W, __U, __A, 5);
3178 __m256i test_mm256_maskz_shufflehi_epi16(__mmask16 __U, __m256i __A) {
3179 // CHECK-LABEL: @test_mm256_maskz_shufflehi_epi16
3180 // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> poison, <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>
3181 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3182 return _mm256_maskz_shufflehi_epi16(__U, __A, 5);
3185 __m256i test_mm256_mask_shufflelo_epi16(__m256i __W, __mmask16 __U, __m256i __A) {
3186 // CHECK-LABEL: @test_mm256_mask_shufflelo_epi16
3187 // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> poison, <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>
3188 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3189 return _mm256_mask_shufflelo_epi16(__W, __U, __A, 5);
3192 __m256i test_mm256_maskz_shufflelo_epi16(__mmask16 __U, __m256i __A) {
3193 // CHECK-LABEL: @test_mm256_maskz_shufflelo_epi16
3194 // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> poison, <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>
3195 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3196 return _mm256_maskz_shufflelo_epi16(__U, __A, 5);
3199 void test_mm_mask_cvtepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
3201 // CHECK-LABEL:@test_mm_mask_cvtepi16_storeu_epi8
3202 // CHECK: @llvm.x86.avx512.mask.pmov.wb.mem.128
3203 _mm_mask_cvtepi16_storeu_epi8 (__P, __M, __A);
3206 void test_mm_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
3208 // CHECK-LABEL:@test_mm_mask_cvtsepi16_storeu_epi8
3209 // CHECK: @llvm.x86.avx512.mask.pmovs.wb.mem.128
3210 _mm_mask_cvtsepi16_storeu_epi8 ( __P, __M, __A);
3213 void test_mm_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
3215 // CHECK-LABEL:@test_mm_mask_cvtusepi16_storeu_epi8
3216 // CHECK: @llvm.x86.avx512.mask.pmovus.wb.mem.128
3217 _mm_mask_cvtusepi16_storeu_epi8 (__P, __M, __A);
3220 void test_mm256_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A)
3222 // CHECK-LABEL:@test_mm256_mask_cvtusepi16_storeu_epi8
3223 // CHECK: @llvm.x86.avx512.mask.pmovus.wb.mem.256
3224 _mm256_mask_cvtusepi16_storeu_epi8 ( __P, __M, __A);
3227 void test_mm256_mask_cvtepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A)
3229 // CHECK-LABEL:@test_mm256_mask_cvtepi16_storeu_epi8
3230 // CHECK: @llvm.x86.avx512.mask.pmov.wb.mem.256
3231 _mm256_mask_cvtepi16_storeu_epi8 ( __P, __M, __A);
3234 void test_mm256_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A)
3236 // CHECK-LABEL:@test_mm256_mask_cvtsepi16_storeu_epi8
3237 // CHECK: @llvm.x86.avx512.mask.pmovs.wb.mem.256
3238 _mm256_mask_cvtsepi16_storeu_epi8 ( __P, __M, __A);