Clang Project

clang_source_code/test/CodeGen/avx512vl-builtins.c
1// RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512f -target-feature +avx512vl -emit-llvm -o - -Wall -Werror | FileCheck %s
2
3
4#include <immintrin.h>
5
6__mmask8 test_mm_cmpeq_epu32_mask(__m128i __a, __m128i __b) {
7  // CHECK-LABEL: @test_mm_cmpeq_epu32_mask
8  // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}
9  // CHECK: shufflevector <4 x i1> %{{.*}}, <4 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
10  return (__mmask8)_mm_cmpeq_epu32_mask(__a, __b);
11}
12
13__mmask8 test_mm_mask_cmpeq_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
14  // CHECK-LABEL: @test_mm_mask_cmpeq_epu32_mask
15  // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}
16  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
17  return (__mmask8)_mm_mask_cmpeq_epu32_mask(__u, __a, __b);
18}
19
20__mmask8 test_mm_cmpeq_epu64_mask(__m128i __a, __m128i __b) {
21  // CHECK-LABEL: @test_mm_cmpeq_epu64_mask
22  // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}
23  // CHECK: shufflevector <2 x i1> %{{.*}}, <2 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>
24  return (__mmask8)_mm_cmpeq_epu64_mask(__a, __b);
25}
26
27__mmask8 test_mm_mask_cmpeq_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
28  // CHECK-LABEL: @test_mm_mask_cmpeq_epu64_mask
29  // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}
30  // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
31  return (__mmask8)_mm_mask_cmpeq_epu64_mask(__u, __a, __b);
32}
33
34__mmask8 test_mm_cmpge_epi32_mask(__m128i __a, __m128i __b) {
35  // CHECK-LABEL: @test_mm_cmpge_epi32_mask
36  // CHECK: icmp sge <4 x i32> %{{.*}}, %{{.*}}
37  return (__mmask8)_mm_cmpge_epi32_mask(__a, __b);
38}
39
40__mmask8 test_mm_mask_cmpge_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
41  // CHECK-LABEL: @test_mm_mask_cmpge_epi32_mask
42  // CHECK: icmp sge <4 x i32> %{{.*}}, %{{.*}}
43  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
44  return (__mmask8)_mm_mask_cmpge_epi32_mask(__u, __a, __b);
45}
46
47__mmask8 test_mm_cmpge_epi64_mask(__m128i __a, __m128i __b) {
48  // CHECK-LABEL: @test_mm_cmpge_epi64_mask
49  // CHECK: icmp sge <2 x i64> %{{.*}}, %{{.*}}
50  return (__mmask8)_mm_cmpge_epi64_mask(__a, __b);
51}
52
53__mmask8 test_mm_mask_cmpge_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
54  // CHECK-LABEL: @test_mm_mask_cmpge_epi64_mask
55  // CHECK: icmp sge <2 x i64> %{{.*}}, %{{.*}}
56  // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
57  return (__mmask8)_mm_mask_cmpge_epi64_mask(__u, __a, __b);
58}
59
60__mmask8 test_mm256_cmpge_epi32_mask(__m256i __a, __m256i __b) {
61  // CHECK-LABEL: @test_mm256_cmpge_epi32_mask
62  // CHECK: icmp sge <8 x i32> %{{.*}}, %{{.*}}
63  return (__mmask8)_mm256_cmpge_epi32_mask(__a, __b);
64}
65
66__mmask8 test_mm256_mask_cmpge_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
67  // CHECK-LABEL: @test_mm256_mask_cmpge_epi32_mask
68  // CHECK: icmp sge <8 x i32> %{{.*}}, %{{.*}}
69  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
70  return (__mmask8)_mm256_mask_cmpge_epi32_mask(__u, __a, __b);
71}
72
73__mmask8 test_mm256_cmpge_epi64_mask(__m256i __a, __m256i __b) {
74  // CHECK-LABEL: @test_mm256_cmpge_epi64_mask
75  // CHECK: icmp sge <4 x i64> %{{.*}}, %{{.*}}
76  return (__mmask8)_mm256_cmpge_epi64_mask(__a, __b);
77}
78
79__mmask8 test_mm256_mask_cmpge_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
80  // CHECK-LABEL: @test_mm256_mask_cmpge_epi64_mask
81  // CHECK: icmp sge <4 x i64> %{{.*}}, %{{.*}}
82  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
83  return (__mmask8)_mm256_mask_cmpge_epi64_mask(__u, __a, __b);
84}
85
86__mmask8 test_mm_cmpge_epu32_mask(__m128i __a, __m128i __b) {
87  // CHECK-LABEL: @test_mm_cmpge_epu32_mask
88  // CHECK: icmp uge <4 x i32> %{{.*}}, %{{.*}}
89  return (__mmask8)_mm_cmpge_epu32_mask(__a, __b);
90}
91
92__mmask8 test_mm_mask_cmpge_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
93  // CHECK-LABEL: @test_mm_mask_cmpge_epu32_mask
94  // CHECK: icmp uge <4 x i32> %{{.*}}, %{{.*}}
95  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
96  return (__mmask8)_mm_mask_cmpge_epu32_mask(__u, __a, __b);
97}
98
99__mmask8 test_mm_cmpge_epu64_mask(__m128i __a, __m128i __b) {
100  // CHECK-LABEL: @test_mm_cmpge_epu64_mask
101  // CHECK: icmp uge <2 x i64> %{{.*}}, %{{.*}}
102  return (__mmask8)_mm_cmpge_epu64_mask(__a, __b);
103}
104
105__mmask8 test_mm_mask_cmpge_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
106  // CHECK-LABEL: @test_mm_mask_cmpge_epu64_mask
107  // CHECK: icmp uge <2 x i64> %{{.*}}, %{{.*}}
108  // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
109  return (__mmask8)_mm_mask_cmpge_epu64_mask(__u, __a, __b);
110}
111
112__mmask8 test_mm256_cmpge_epu32_mask(__m256i __a, __m256i __b) {
113  // CHECK-LABEL: @test_mm256_cmpge_epu32_mask
114  // CHECK: icmp uge <8 x i32> %{{.*}}, %{{.*}}
115  return (__mmask8)_mm256_cmpge_epu32_mask(__a, __b);
116}
117
118__mmask8 test_mm256_mask_cmpge_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
119  // CHECK-LABEL: @test_mm256_mask_cmpge_epu32_mask
120  // CHECK: icmp uge <8 x i32> %{{.*}}, %{{.*}}
121  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
122  return (__mmask8)_mm256_mask_cmpge_epu32_mask(__u, __a, __b);
123}
124
125__mmask8 test_mm256_cmpge_epu64_mask(__m256i __a, __m256i __b) {
126  // CHECK-LABEL: @test_mm256_cmpge_epu64_mask
127  // CHECK: icmp uge <4 x i64> %{{.*}}, %{{.*}}
128  return (__mmask8)_mm256_cmpge_epu64_mask(__a, __b);
129}
130
131__mmask8 test_mm256_mask_cmpge_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
132  // CHECK-LABEL: @test_mm256_mask_cmpge_epu64_mask
133  // CHECK: icmp uge <4 x i64> %{{.*}}, %{{.*}}
134  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
135  return (__mmask8)_mm256_mask_cmpge_epu64_mask(__u, __a, __b);
136}
137
138__mmask8 test_mm_cmpgt_epu32_mask(__m128i __a, __m128i __b) {
139  // CHECK-LABEL: @test_mm_cmpgt_epu32_mask
140  // CHECK: icmp ugt <4 x i32> %{{.*}}, %{{.*}}
141  return (__mmask8)_mm_cmpgt_epu32_mask(__a, __b);
142}
143
144__mmask8 test_mm_mask_cmpgt_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
145  // CHECK-LABEL: @test_mm_mask_cmpgt_epu32_mask
146  // CHECK: icmp ugt <4 x i32> %{{.*}}, %{{.*}}
147  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
148  return (__mmask8)_mm_mask_cmpgt_epu32_mask(__u, __a, __b);
149}
150
151__mmask8 test_mm_cmpgt_epu64_mask(__m128i __a, __m128i __b) {
152  // CHECK-LABEL: @test_mm_cmpgt_epu64_mask
153  // CHECK: icmp ugt <2 x i64> %{{.*}}, %{{.*}}
154  return (__mmask8)_mm_cmpgt_epu64_mask(__a, __b);
155}
156
157__mmask8 test_mm_mask_cmpgt_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
158  // CHECK-LABEL: @test_mm_mask_cmpgt_epu64_mask
159  // CHECK: icmp ugt <2 x i64> %{{.*}}, %{{.*}}
160  // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
161  return (__mmask8)_mm_mask_cmpgt_epu64_mask(__u, __a, __b);
162}
163
164__mmask8 test_mm256_cmpgt_epu32_mask(__m256i __a, __m256i __b) {
165  // CHECK-LABEL: @test_mm256_cmpgt_epu32_mask
166  // CHECK: icmp ugt <8 x i32> %{{.*}}, %{{.*}}
167  return (__mmask8)_mm256_cmpgt_epu32_mask(__a, __b);
168}
169
170__mmask8 test_mm256_mask_cmpgt_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
171  // CHECK-LABEL: @test_mm256_mask_cmpgt_epu32_mask
172  // CHECK: icmp ugt <8 x i32> %{{.*}}, %{{.*}}
173  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
174  return (__mmask8)_mm256_mask_cmpgt_epu32_mask(__u, __a, __b);
175}
176
177__mmask8 test_mm256_cmpgt_epu64_mask(__m256i __a, __m256i __b) {
178  // CHECK-LABEL: @test_mm256_cmpgt_epu64_mask
179  // CHECK: icmp ugt <4 x i64> %{{.*}}, %{{.*}}
180  return (__mmask8)_mm256_cmpgt_epu64_mask(__a, __b);
181}
182
183__mmask8 test_mm256_mask_cmpgt_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
184  // CHECK-LABEL: @test_mm256_mask_cmpgt_epu64_mask
185  // CHECK: icmp ugt <4 x i64> %{{.*}}, %{{.*}}
186  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
187  return (__mmask8)_mm256_mask_cmpgt_epu64_mask(__u, __a, __b);
188}
189
190__mmask8 test_mm_cmple_epi32_mask(__m128i __a, __m128i __b) {
191  // CHECK-LABEL: @test_mm_cmple_epi32_mask
192  // CHECK: icmp sle <4 x i32> %{{.*}}, %{{.*}}
193  return (__mmask8)_mm_cmple_epi32_mask(__a, __b);
194}
195
196__mmask8 test_mm_mask_cmple_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
197  // CHECK-LABEL: @test_mm_mask_cmple_epi32_mask
198  // CHECK: icmp sle <4 x i32> %{{.*}}, %{{.*}}
199  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
200  return (__mmask8)_mm_mask_cmple_epi32_mask(__u, __a, __b);
201}
202
203__mmask8 test_mm_cmple_epi64_mask(__m128i __a, __m128i __b) {
204  // CHECK-LABEL: @test_mm_cmple_epi64_mask
205  // CHECK: icmp sle <2 x i64> %{{.*}}, %{{.*}}
206  return (__mmask8)_mm_cmple_epi64_mask(__a, __b);
207}
208
209__mmask8 test_mm_mask_cmple_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
210  // CHECK-LABEL: @test_mm_mask_cmple_epi64_mask
211  // CHECK: icmp sle <2 x i64> %{{.*}}, %{{.*}}
212  // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
213  return (__mmask8)_mm_mask_cmple_epi64_mask(__u, __a, __b);
214}
215
216__mmask8 test_mm256_cmple_epi32_mask(__m256i __a, __m256i __b) {
217  // CHECK-LABEL: @test_mm256_cmple_epi32_mask
218  // CHECK: icmp sle <8 x i32> %{{.*}}, %{{.*}}
219  return (__mmask8)_mm256_cmple_epi32_mask(__a, __b);
220}
221
222__mmask8 test_mm256_mask_cmple_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
223  // CHECK-LABEL: @test_mm256_mask_cmple_epi32_mask
224  // CHECK: icmp sle <8 x i32> %{{.*}}, %{{.*}}
225  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
226  return (__mmask8)_mm256_mask_cmple_epi32_mask(__u, __a, __b);
227}
228
229__mmask8 test_mm256_cmple_epi64_mask(__m256i __a, __m256i __b) {
230  // CHECK-LABEL: @test_mm256_cmple_epi64_mask
231  // CHECK: icmp sle <4 x i64> %{{.*}}, %{{.*}}
232  return (__mmask8)_mm256_cmple_epi64_mask(__a, __b);
233}
234
235__mmask8 test_mm256_mask_cmple_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
236  // CHECK-LABEL: @test_mm256_mask_cmple_epi64_mask
237  // CHECK: icmp sle <4 x i64> %{{.*}}, %{{.*}}
238  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
239  return (__mmask8)_mm256_mask_cmple_epi64_mask(__u, __a, __b);
240}
241
242__mmask8 test_mm_cmple_epu32_mask(__m128i __a, __m128i __b) {
243  // CHECK-LABEL: @test_mm_cmple_epu32_mask
244  // CHECK: icmp ule <4 x i32> %{{.*}}, %{{.*}}
245  return (__mmask8)_mm_cmple_epu32_mask(__a, __b);
246}
247
248__mmask8 test_mm_mask_cmple_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
249  // CHECK-LABEL: @test_mm_mask_cmple_epu32_mask
250  // CHECK: icmp ule <4 x i32> %{{.*}}, %{{.*}}
251  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
252  return (__mmask8)_mm_mask_cmple_epu32_mask(__u, __a, __b);
253}
254
255__mmask8 test_mm_cmple_epu64_mask(__m128i __a, __m128i __b) {
256  // CHECK-LABEL: @test_mm_cmple_epu64_mask
257  // CHECK: icmp ule <2 x i64> %{{.*}}, %{{.*}}
258  return (__mmask8)_mm_cmple_epu64_mask(__a, __b);
259}
260
261__mmask8 test_mm_mask_cmple_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
262  // CHECK-LABEL: @test_mm_mask_cmple_epu64_mask
263  // CHECK: icmp ule <2 x i64> %{{.*}}, %{{.*}}
264  // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
265  return (__mmask8)_mm_mask_cmple_epu64_mask(__u, __a, __b);
266}
267
268__mmask8 test_mm256_cmple_epu32_mask(__m256i __a, __m256i __b) {
269  // CHECK-LABEL: @test_mm256_cmple_epu32_mask
270  // CHECK: icmp ule <8 x i32> %{{.*}}, %{{.*}}
271  return (__mmask8)_mm256_cmple_epu32_mask(__a, __b);
272}
273
274__mmask8 test_mm256_mask_cmple_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
275  // CHECK-LABEL: @test_mm256_mask_cmple_epu32_mask
276  // CHECK: icmp ule <8 x i32> %{{.*}}, %{{.*}}
277  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
278  return (__mmask8)_mm256_mask_cmple_epu32_mask(__u, __a, __b);
279}
280
281__mmask8 test_mm256_cmple_epu64_mask(__m256i __a, __m256i __b) {
282  // CHECK-LABEL: @test_mm256_cmple_epu64_mask
283  // CHECK: icmp ule <4 x i64> %{{.*}}, %{{.*}}
284  return (__mmask8)_mm256_cmple_epu64_mask(__a, __b);
285}
286
287__mmask8 test_mm256_mask_cmple_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
288  // CHECK-LABEL: @test_mm256_mask_cmple_epu64_mask
289  // CHECK: icmp ule <4 x i64> %{{.*}}, %{{.*}}
290  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
291  return (__mmask8)_mm256_mask_cmple_epu64_mask(__u, __a, __b);
292}
293
294__mmask8 test_mm_cmplt_epi32_mask(__m128i __a, __m128i __b) {
295  // CHECK-LABEL: @test_mm_cmplt_epi32_mask
296  // CHECK: icmp slt <4 x i32> %{{.*}}, %{{.*}}
297  return (__mmask8)_mm_cmplt_epi32_mask(__a, __b);
298}
299
300__mmask8 test_mm_mask_cmplt_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
301  // CHECK-LABEL: @test_mm_mask_cmplt_epi32_mask
302  // CHECK: icmp slt <4 x i32> %{{.*}}, %{{.*}}
303  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
304  return (__mmask8)_mm_mask_cmplt_epi32_mask(__u, __a, __b);
305}
306
307__mmask8 test_mm_cmplt_epi64_mask(__m128i __a, __m128i __b) {
308  // CHECK-LABEL: @test_mm_cmplt_epi64_mask
309  // CHECK: icmp slt <2 x i64> %{{.*}}, %{{.*}}
310  return (__mmask8)_mm_cmplt_epi64_mask(__a, __b);
311}
312
313__mmask8 test_mm_mask_cmplt_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
314  // CHECK-LABEL: @test_mm_mask_cmplt_epi64_mask
315  // CHECK: icmp slt <2 x i64> %{{.*}}, %{{.*}}
316  // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
317  return (__mmask8)_mm_mask_cmplt_epi64_mask(__u, __a, __b);
318}
319
320__mmask8 test_mm256_cmplt_epi32_mask(__m256i __a, __m256i __b) {
321  // CHECK-LABEL: @test_mm256_cmplt_epi32_mask
322  // CHECK: icmp slt <8 x i32> %{{.*}}, %{{.*}}
323  return (__mmask8)_mm256_cmplt_epi32_mask(__a, __b);
324}
325
326__mmask8 test_mm256_mask_cmplt_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
327  // CHECK-LABEL: @test_mm256_mask_cmplt_epi32_mask
328  // CHECK: icmp slt <8 x i32> %{{.*}}, %{{.*}}
329  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
330  return (__mmask8)_mm256_mask_cmplt_epi32_mask(__u, __a, __b);
331}
332
333__mmask8 test_mm256_cmplt_epi64_mask(__m256i __a, __m256i __b) {
334  // CHECK-LABEL: @test_mm256_cmplt_epi64_mask
335  // CHECK: icmp slt <4 x i64> %{{.*}}, %{{.*}}
336  return (__mmask8)_mm256_cmplt_epi64_mask(__a, __b);
337}
338
339__mmask8 test_mm256_mask_cmplt_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
340  // CHECK-LABEL: @test_mm256_mask_cmplt_epi64_mask
341  // CHECK: icmp slt <4 x i64> %{{.*}}, %{{.*}}
342  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
343  return (__mmask8)_mm256_mask_cmplt_epi64_mask(__u, __a, __b);
344}
345
346__mmask8 test_mm_cmplt_epu32_mask(__m128i __a, __m128i __b) {
347  // CHECK-LABEL: @test_mm_cmplt_epu32_mask
348  // CHECK: icmp ult <4 x i32> %{{.*}}, %{{.*}}
349  return (__mmask8)_mm_cmplt_epu32_mask(__a, __b);
350}
351
352__mmask8 test_mm_mask_cmplt_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
353  // CHECK-LABEL: @test_mm_mask_cmplt_epu32_mask
354  // CHECK: icmp ult <4 x i32> %{{.*}}, %{{.*}}
355  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
356  return (__mmask8)_mm_mask_cmplt_epu32_mask(__u, __a, __b);
357}
358
359__mmask8 test_mm_cmplt_epu64_mask(__m128i __a, __m128i __b) {
360  // CHECK-LABEL: @test_mm_cmplt_epu64_mask
361  // CHECK: icmp ult <2 x i64> %{{.*}}, %{{.*}}
362  return (__mmask8)_mm_cmplt_epu64_mask(__a, __b);
363}
364
365__mmask8 test_mm_mask_cmplt_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
366  // CHECK-LABEL: @test_mm_mask_cmplt_epu64_mask
367  // CHECK: icmp ult <2 x i64> %{{.*}}, %{{.*}}
368  // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
369  return (__mmask8)_mm_mask_cmplt_epu64_mask(__u, __a, __b);
370}
371
372__mmask8 test_mm256_cmplt_epu32_mask(__m256i __a, __m256i __b) {
373  // CHECK-LABEL: @test_mm256_cmplt_epu32_mask
374  // CHECK: icmp ult <8 x i32> %{{.*}}, %{{.*}}
375  return (__mmask8)_mm256_cmplt_epu32_mask(__a, __b);
376}
377
378__mmask8 test_mm256_mask_cmplt_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
379  // CHECK-LABEL: @test_mm256_mask_cmplt_epu32_mask
380  // CHECK: icmp ult <8 x i32> %{{.*}}, %{{.*}}
381  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
382  return (__mmask8)_mm256_mask_cmplt_epu32_mask(__u, __a, __b);
383}
384
385__mmask8 test_mm256_cmplt_epu64_mask(__m256i __a, __m256i __b) {
386  // CHECK-LABEL: @test_mm256_cmplt_epu64_mask
387  // CHECK: icmp ult <4 x i64> %{{.*}}, %{{.*}}
388  return (__mmask8)_mm256_cmplt_epu64_mask(__a, __b);
389}
390
391__mmask8 test_mm256_mask_cmplt_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
392  // CHECK-LABEL: @test_mm256_mask_cmplt_epu64_mask
393  // CHECK: icmp ult <4 x i64> %{{.*}}, %{{.*}}
394  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
395  return (__mmask8)_mm256_mask_cmplt_epu64_mask(__u, __a, __b);
396}
397
398__mmask8 test_mm_cmpneq_epi32_mask(__m128i __a, __m128i __b) {
399  // CHECK-LABEL: @test_mm_cmpneq_epi32_mask
400  // CHECK: icmp ne <4 x i32> %{{.*}}, %{{.*}}
401  return (__mmask8)_mm_cmpneq_epi32_mask(__a, __b);
402}
403
404__mmask8 test_mm_mask_cmpneq_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
405  // CHECK-LABEL: @test_mm_mask_cmpneq_epi32_mask
406  // CHECK: icmp ne <4 x i32> %{{.*}}, %{{.*}}
407  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
408  return (__mmask8)_mm_mask_cmpneq_epi32_mask(__u, __a, __b);
409}
410
411__mmask8 test_mm_cmpneq_epi64_mask(__m128i __a, __m128i __b) {
412  // CHECK-LABEL: @test_mm_cmpneq_epi64_mask
413  // CHECK: icmp ne <2 x i64> %{{.*}}, %{{.*}}
414  return (__mmask8)_mm_cmpneq_epi64_mask(__a, __b);
415}
416
417__mmask8 test_mm_mask_cmpneq_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
418  // CHECK-LABEL: @test_mm_mask_cmpneq_epi64_mask
419  // CHECK: icmp ne <2 x i64> %{{.*}}, %{{.*}}
420  // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
421  return (__mmask8)_mm_mask_cmpneq_epi64_mask(__u, __a, __b);
422}
423
424__mmask8 test_mm256_cmpneq_epi32_mask(__m256i __a, __m256i __b) {
425  // CHECK-LABEL: @test_mm256_cmpneq_epi32_mask
426  // CHECK: icmp ne <8 x i32> %{{.*}}, %{{.*}}
427  return (__mmask8)_mm256_cmpneq_epi32_mask(__a, __b);
428}
429
430__mmask8 test_mm256_mask_cmpneq_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
431  // CHECK-LABEL: @test_mm256_mask_cmpneq_epi32_mask
432  // CHECK: icmp ne <8 x i32> %{{.*}}, %{{.*}}
433  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
434  return (__mmask8)_mm256_mask_cmpneq_epi32_mask(__u, __a, __b);
435}
436
437__mmask8 test_mm256_cmpneq_epi64_mask(__m256i __a, __m256i __b) {
438  // CHECK-LABEL: @test_mm256_cmpneq_epi64_mask
439  // CHECK: icmp ne <4 x i64> %{{.*}}, %{{.*}}
440  return (__mmask8)_mm256_cmpneq_epi64_mask(__a, __b);
441}
442
443__mmask8 test_mm256_mask_cmpneq_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
444  // CHECK-LABEL: @test_mm256_mask_cmpneq_epi64_mask
445  // CHECK: icmp ne <4 x i64> %{{.*}}, %{{.*}}
446  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
447  return (__mmask8)_mm256_mask_cmpneq_epi64_mask(__u, __a, __b);
448}
449
450__mmask8 test_mm_cmpneq_epu32_mask(__m128i __a, __m128i __b) {
451  // CHECK-LABEL: @test_mm_cmpneq_epu32_mask
452  // CHECK: icmp ne <4 x i32> %{{.*}}, %{{.*}}
453  return (__mmask8)_mm_cmpneq_epu32_mask(__a, __b);
454}
455
456__mmask8 test_mm_mask_cmpneq_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
457  // CHECK-LABEL: @test_mm_mask_cmpneq_epu32_mask
458  // CHECK: icmp ne <4 x i32> %{{.*}}, %{{.*}}
459  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
460  return (__mmask8)_mm_mask_cmpneq_epu32_mask(__u, __a, __b);
461}
462
463__mmask8 test_mm_cmpneq_epu64_mask(__m128i __a, __m128i __b) {
464  // CHECK-LABEL: @test_mm_cmpneq_epu64_mask
465  // CHECK: icmp ne <2 x i64> %{{.*}}, %{{.*}}
466  return (__mmask8)_mm_cmpneq_epu64_mask(__a, __b);
467}
468
469__mmask8 test_mm_mask_cmpneq_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
470  // CHECK-LABEL: @test_mm_mask_cmpneq_epu64_mask
471  // CHECK: icmp ne <2 x i64> %{{.*}}, %{{.*}}
472  // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
473  return (__mmask8)_mm_mask_cmpneq_epu64_mask(__u, __a, __b);
474}
475
476__mmask8 test_mm256_cmpneq_epu32_mask(__m256i __a, __m256i __b) {
477  // CHECK-LABEL: @test_mm256_cmpneq_epu32_mask
478  // CHECK: icmp ne <8 x i32> %{{.*}}, %{{.*}}
479  return (__mmask8)_mm256_cmpneq_epu32_mask(__a, __b);
480}
481
482__mmask8 test_mm256_mask_cmpneq_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
483  // CHECK-LABEL: @test_mm256_mask_cmpneq_epu32_mask
484  // CHECK: icmp ne <8 x i32> %{{.*}}, %{{.*}}
485  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
486  return (__mmask8)_mm256_mask_cmpneq_epu32_mask(__u, __a, __b);
487}
488
489__mmask8 test_mm256_cmpneq_epu64_mask(__m256i __a, __m256i __b) {
490  // CHECK-LABEL: @test_mm256_cmpneq_epu64_mask
491  // CHECK: icmp ne <4 x i64> %{{.*}}, %{{.*}}
492  return (__mmask8)_mm256_cmpneq_epu64_mask(__a, __b);
493}
494
495__mmask8 test_mm256_mask_cmpneq_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
496  // CHECK-LABEL: @test_mm256_mask_cmpneq_epu64_mask
497  // CHECK: icmp ne <4 x i64> %{{.*}}, %{{.*}}
498  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
499  return (__mmask8)_mm256_mask_cmpneq_epu64_mask(__u, __a, __b);
500}
501
502__mmask8 test_mm_cmp_eq_epi32_mask(__m128i __a, __m128i __b) {
503  // CHECK-LABEL: @test_mm_cmp_eq_epi32_mask
504  // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}
505  return (__mmask8)_mm_cmp_epi32_mask(__a, __b, _MM_CMPINT_EQ);
506}
507
508__mmask8 test_mm_mask_cmp_lt_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
509  // CHECK-LABEL: @test_mm_mask_cmp_lt_epi32_mask
510  // CHECK: icmp slt <4 x i32> %{{.*}}, %{{.*}}
511  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
512  return (__mmask8)_mm_mask_cmp_epi32_mask(__u, __a, __b, _MM_CMPINT_LT);
513}
514
515__mmask8 test_mm_cmp_lt_epi64_mask(__m128i __a, __m128i __b) {
516  // CHECK-LABEL: @test_mm_cmp_lt_epi64_mask
517  // CHECK: icmp slt <2 x i64> %{{.*}}, %{{.*}}
518  return (__mmask8)_mm_cmp_epi64_mask(__a, __b, _MM_CMPINT_LT);
519}
520
521__mmask8 test_mm_mask_cmp_eq_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
522  // CHECK-LABEL: @test_mm_mask_cmp_eq_epi64_mask
523  // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}
524  // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
525  return (__mmask8)_mm_mask_cmp_epi64_mask(__u, __a, __b, _MM_CMPINT_EQ);
526}
527
528__mmask8 test_mm256_cmp_eq_epi32_mask(__m256i __a, __m256i __b) {
529  // CHECK-LABEL: @test_mm256_cmp_eq_epi32_mask
530  // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}}
531  return (__mmask8)_mm256_cmp_epi32_mask(__a, __b, _MM_CMPINT_EQ);
532}
533
534__mmask8 test_mm256_mask_cmp_le_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
535  // CHECK-LABEL: @test_mm256_mask_cmp_le_epi32_mask
536  // CHECK: icmp sle <8 x i32> %{{.*}}, %{{.*}}
537  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
538  return (__mmask8)_mm256_mask_cmp_epi32_mask(__u, __a, __b, _MM_CMPINT_LE);
539}
540
541__mmask8 test_mm256_cmp_eq_epi64_mask(__m256i __a, __m256i __b) {
542  // CHECK-LABEL: @test_mm256_cmp_eq_epi64_mask
543  // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}}
544  return (__mmask8)_mm256_cmp_epi64_mask(__a, __b, _MM_CMPINT_EQ);
545}
546
547__mmask8 test_mm256_mask_cmp_eq_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
548  // CHECK-LABEL: @test_mm256_mask_cmp_eq_epi64_mask
549  // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}}
550  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
551  return (__mmask8)_mm256_mask_cmp_epi64_mask(__u, __a, __b, _MM_CMPINT_EQ);
552}
553
554__mmask8 test_mm_cmp_epu32_mask(__m128i __a, __m128i __b) {
555  // CHECK-LABEL: @test_mm_cmp_epu32_mask
556  // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}
557  return (__mmask8)_mm_cmp_epu32_mask(__a, __b, 0);
558}
559
560__mmask8 test_mm_mask_cmp_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
561  // CHECK-LABEL: @test_mm_mask_cmp_epu32_mask
562  // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}
563  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
564  return (__mmask8)_mm_mask_cmp_epu32_mask(__u, __a, __b, 0);
565}
566
567__mmask8 test_mm_cmp_epu64_mask(__m128i __a, __m128i __b) {
568  // CHECK-LABEL: @test_mm_cmp_epu64_mask
569  // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}
570  return (__mmask8)_mm_cmp_epu64_mask(__a, __b, 0);
571}
572
573__mmask8 test_mm_mask_cmp_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
574  // CHECK-LABEL: @test_mm_mask_cmp_epu64_mask
575  // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}
576  // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
577  return (__mmask8)_mm_mask_cmp_epu64_mask(__u, __a, __b, 0);
578}
579
580__mmask8 test_mm256_cmp_epu32_mask(__m256i __a, __m256i __b) {
581  // CHECK-LABEL: @test_mm256_cmp_epu32_mask
582  // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}}
583  return (__mmask8)_mm256_cmp_epu32_mask(__a, __b, 0);
584}
585
586__mmask8 test_mm256_mask_cmp_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
587  // CHECK-LABEL: @test_mm256_mask_cmp_epu32_mask
588  // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}}
589  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
590  return (__mmask8)_mm256_mask_cmp_epu32_mask(__u, __a, __b, 0);
591}
592
593__mmask8 test_mm256_cmp_epu64_mask(__m256i __a, __m256i __b) {
594  // CHECK-LABEL: @test_mm256_cmp_epu64_mask
595  // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}}
596  return (__mmask8)_mm256_cmp_epu64_mask(__a, __b, 0);
597}
598
599__mmask8 test_mm256_mask_cmp_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
600  // CHECK-LABEL: @test_mm256_mask_cmp_epu64_mask
601  // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}}
602  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
603  return (__mmask8)_mm256_mask_cmp_epu64_mask(__u, __a, __b, 0);
604}
605
606__m256i test_mm256_mask_add_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
607           __m256i __B) {
608  //CHECK-LABEL: @test_mm256_mask_add_epi32
609  //CHECK: add <8 x i32> %{{.*}}, %{{.*}}
610  //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
611  return _mm256_mask_add_epi32(__W, __U, __A, __B);
612}
613
614__m256i test_mm256_maskz_add_epi32 (__mmask8 __U, __m256i __A, __m256i __B) {
615  //CHECK-LABEL: @test_mm256_maskz_add_epi32
616  //CHECK: add <8 x i32> %{{.*}}, %{{.*}}
617  //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
618  return _mm256_maskz_add_epi32(__U, __A, __B);
619}
620
621__m256i test_mm256_mask_add_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
622           __m256i __B) {
623  //CHECK-LABEL: @test_mm256_mask_add_epi64
624  //CHECK: add <4 x i64> %{{.*}}, %{{.*}}
625  //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
626  return _mm256_mask_add_epi64(__W,__U,__A,__B);
627}
628
629__m256i test_mm256_maskz_add_epi64 (__mmask8 __U, __m256i __A, __m256i __B) {
630  //CHECK-LABEL: @test_mm256_maskz_add_epi64
631  //CHECK: add <4 x i64> %{{.*}}, %{{.*}}
632  //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
633  return _mm256_maskz_add_epi64 (__U,__A,__B);
634}
635
636__m256i test_mm256_mask_sub_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
637           __m256i __B) {
638  //CHECK-LABEL: @test_mm256_mask_sub_epi32
639  //CHECK: sub <8 x i32> %{{.*}}, %{{.*}}
640  //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
641  return _mm256_mask_sub_epi32 (__W,__U,__A,__B);
642}
643
644__m256i test_mm256_maskz_sub_epi32 (__mmask8 __U, __m256i __A, __m256i __B) {
645  //CHECK-LABEL: @test_mm256_maskz_sub_epi32
646  //CHECK: sub <8 x i32> %{{.*}}, %{{.*}}
647  //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
648  return _mm256_maskz_sub_epi32 (__U,__A,__B);
649}
650
651__m256i test_mm256_mask_sub_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
652           __m256i __B) {
653  //CHECK-LABEL: @test_mm256_mask_sub_epi64
654  //CHECK: sub <4 x i64> %{{.*}}, %{{.*}}
655  //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
656  return _mm256_mask_sub_epi64 (__W,__U,__A,__B);
657}
658
659__m256i test_mm256_maskz_sub_epi64 (__mmask8 __U, __m256i __A, __m256i __B) {
660  //CHECK-LABEL: @test_mm256_maskz_sub_epi64
661  //CHECK: sub <4 x i64> %{{.*}}, %{{.*}}
662  //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
663  return _mm256_maskz_sub_epi64 (__U,__A,__B);
664}
665
666__m128i test_mm_mask_add_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
667        __m128i __B) {
668  //CHECK-LABEL: @test_mm_mask_add_epi32
669  //CHECK: add <4 x i32> %{{.*}}, %{{.*}}
670  //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
671  return _mm_mask_add_epi32(__W,__U,__A,__B);
672}
673
674
675__m128i test_mm_maskz_add_epi32 (__mmask8 __U, __m128i __A, __m128i __B) {
676  //CHECK-LABEL: @test_mm_maskz_add_epi32
677  //CHECK: add <4 x i32> %{{.*}}, %{{.*}}
678  //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
679  return _mm_maskz_add_epi32 (__U,__A,__B);
680}
681
682__m128i test_mm_mask_add_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
683        __m128i __B) {
684  //CHECK-LABEL: @test_mm_mask_add_epi64
685  //CHECK: add <2 x i64> %{{.*}}, %{{.*}}
686  //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
687  return _mm_mask_add_epi64 (__W,__U,__A,__B);
688}
689
690__m128i test_mm_maskz_add_epi64 (__mmask8 __U, __m128i __A, __m128i __B) {
691  //CHECK-LABEL: @test_mm_maskz_add_epi64
692  //CHECK: add <2 x i64> %{{.*}}, %{{.*}}
693  //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
694  return _mm_maskz_add_epi64 (__U,__A,__B);
695}
696
697__m128i test_mm_mask_sub_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
698        __m128i __B) {
699  //CHECK-LABEL: @test_mm_mask_sub_epi32
700  //CHECK: sub <4 x i32> %{{.*}}, %{{.*}}
701  //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
702  return _mm_mask_sub_epi32(__W, __U, __A, __B);
703}
704
705__m128i test_mm_maskz_sub_epi32 (__mmask8 __U, __m128i __A, __m128i __B) {
706  //CHECK-LABEL: @test_mm_maskz_sub_epi32
707  //CHECK: sub <4 x i32> %{{.*}}, %{{.*}}
708  //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
709  return _mm_maskz_sub_epi32(__U, __A, __B);
710}
711
712__m128i test_mm_mask_sub_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
713        __m128i __B) {
714  //CHECK-LABEL: @test_mm_mask_sub_epi64
715  //CHECK: sub <2 x i64> %{{.*}}, %{{.*}}
716  //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
717  return _mm_mask_sub_epi64 (__W, __U, __A, __B);
718}
719
720__m128i test_mm_maskz_sub_epi64 (__mmask8 __U, __m128i __A, __m128i __B) {
721  //CHECK-LABEL: @test_mm_maskz_sub_epi64
722  //CHECK: sub <2 x i64> %{{.*}}, %{{.*}}
723  //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
724  return _mm_maskz_sub_epi64 (__U, __A, __B);
725}
726
727__m256i test_mm256_mask_mul_epi32 (__m256i __W, __mmask8 __M, __m256i __X,
728           __m256i __Y) {
729  //CHECK-LABEL: @test_mm256_mask_mul_epi32
730  //CHECK: shl <4 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32>
731  //CHECK: ashr <4 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32>
732  //CHECK: shl <4 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32>
733  //CHECK: ashr <4 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32>
734  //CHECK: mul <4 x i64> %{{.*}}, %{{.*}}
735  //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
736  return _mm256_mask_mul_epi32(__W, __M, __X, __Y);
737}
738
739__m256i test_mm256_maskz_mul_epi32 (__mmask8 __M, __m256i __X, __m256i __Y) {
740  //CHECK-LABEL: @test_mm256_maskz_mul_epi32
741  //CHECK: shl <4 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32>
742  //CHECK: ashr <4 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32>
743  //CHECK: shl <4 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32>
744  //CHECK: ashr <4 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32>
745  //CHECK: mul <4 x i64> %{{.*}}, %{{.*}}
746  //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
747  return _mm256_maskz_mul_epi32(__M, __X, __Y);
748}
749
750
751__m128i test_mm_mask_mul_epi32 (__m128i __W, __mmask8 __M, __m128i __X,
752        __m128i __Y) {
753  //CHECK-LABEL: @test_mm_mask_mul_epi32
754  //CHECK: shl <2 x i64> %{{.*}}, <i64 32, i64 32>
755  //CHECK: ashr <2 x i64> %{{.*}}, <i64 32, i64 32>
756  //CHECK: shl <2 x i64> %{{.*}}, <i64 32, i64 32>
757  //CHECK: ashr <2 x i64> %{{.*}}, <i64 32, i64 32>
758  //CHECK: mul <2 x i64> %{{.*}}, %{{.*}}
759  //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
760  return _mm_mask_mul_epi32(__W, __M, __X, __Y);
761}
762
763__m128i test_mm_maskz_mul_epi32 (__mmask8 __M, __m128i __X, __m128i __Y) {
764  //CHECK-LABEL: @test_mm_maskz_mul_epi32
765  //CHECK: shl <2 x i64> %{{.*}}, <i64 32, i64 32>
766  //CHECK: ashr <2 x i64> %{{.*}}, <i64 32, i64 32>
767  //CHECK: shl <2 x i64> %{{.*}}, <i64 32, i64 32>
768  //CHECK: ashr <2 x i64> %{{.*}}, <i64 32, i64 32>
769  //CHECK: mul <2 x i64> %{{.*}}, %{{.*}}
770  //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
771  return _mm_maskz_mul_epi32(__M, __X, __Y);
772}
773
774__m256i test_mm256_mask_mul_epu32 (__m256i __W, __mmask8 __M, __m256i __X,
775           __m256i __Y) {
776  //CHECK-LABEL: @test_mm256_mask_mul_epu32
777  //CHECK: and <4 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
778  //CHECK: and <4 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
779  //CHECK: mul <4 x i64> %{{.*}}, %{{.*}}
780  //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
781  return _mm256_mask_mul_epu32(__W, __M, __X, __Y);
782}
783
784__m256i test_mm256_maskz_mul_epu32 (__mmask8 __M, __m256i __X, __m256i __Y) {
785  //CHECK-LABEL: @test_mm256_maskz_mul_epu32
786  //CHECK: and <4 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
787  //CHECK: and <4 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
788  //CHECK: mul <4 x i64> %{{.*}}, %{{.*}}
789  //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
790  return _mm256_maskz_mul_epu32(__M, __X, __Y);
791}
792
793__m128i test_mm_mask_mul_epu32 (__m128i __W, __mmask8 __M, __m128i __X,
794        __m128i __Y) {
795  //CHECK-LABEL: @test_mm_mask_mul_epu32
796  //CHECK: and <2 x i64> %{{.*}}, <i64 4294967295, i64 4294967295>
797  //CHECK: and <2 x i64> %{{.*}}, <i64 4294967295, i64 4294967295>
798  //CHECK: mul <2 x i64> %{{.*}}, %{{.*}}
799  //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
800  return _mm_mask_mul_epu32(__W, __M, __X, __Y);
801}
802
803__m128i test_mm_maskz_mul_epu32 (__mmask8 __M, __m128i __X, __m128i __Y) {
804  //CHECK-LABEL: @test_mm_maskz_mul_epu32
805  //CHECK: and <2 x i64> %{{.*}}, <i64 4294967295, i64 4294967295>
806  //CHECK: and <2 x i64> %{{.*}}, <i64 4294967295, i64 4294967295>
807  //CHECK: mul <2 x i64> %{{.*}}, %{{.*}}
808  //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
809  return _mm_maskz_mul_epu32(__M, __X, __Y);
810}
811
812__m128i test_mm_maskz_mullo_epi32 (__mmask8 __M, __m128i __A, __m128i __B) {
813  //CHECK-LABEL: @test_mm_maskz_mullo_epi32
814  //CHECK: mul <4 x i32> %{{.*}}, %{{.*}}
815  //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
816  return _mm_maskz_mullo_epi32(__M, __A, __B);
817}
818
819__m128i test_mm_mask_mullo_epi32 (__m128i __W, __mmask8 __M, __m128i __A,
820          __m128i __B) {
821  //CHECK-LABEL: @test_mm_mask_mullo_epi32
822  //CHECK: mul <4 x i32> %{{.*}}, %{{.*}}
823  //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
824  return _mm_mask_mullo_epi32(__W, __M, __A, __B);
825}
826
827__m256i test_mm256_maskz_mullo_epi32 (__mmask8 __M, __m256i __A, __m256i __B) {
828  //CHECK-LABEL: @test_mm256_maskz_mullo_epi32
829  //CHECK: mul <8 x i32> %{{.*}}, %{{.*}}
830  //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
831  return _mm256_maskz_mullo_epi32(__M, __A, __B);
832}
833
834__m256i test_mm256_mask_mullo_epi32 (__m256i __W, __mmask8 __M, __m256i __A,
835       __m256i __B) {
836  //CHECK-LABEL: @test_mm256_mask_mullo_epi32
837  //CHECK: mul <8 x i32> %{{.*}}, %{{.*}}
838  //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
839  return _mm256_mask_mullo_epi32(__W, __M, __A, __B);
840}
841
842__m256i test_mm256_and_epi32 (__m256i __A, __m256i __B) {
843  //CHECK-LABEL: @test_mm256_and_epi32
844  //CHECK: and <8 x i32> %{{.*}}, %{{.*}}
845  return _mm256_and_epi32(__A, __B);
846}
847
848__m256i test_mm256_mask_and_epi32 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
849  //CHECK-LABEL: @test_mm256_mask_and_epi32
850  //CHECK: and <8 x i32> %{{.*}}, %{{.*}}
851  //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
852  return _mm256_mask_and_epi32(__W, __U, __A, __B);
853}
854
855__m256i test_mm256_maskz_and_epi32 (__mmask8 __U, __m256i __A, __m256i __B) {
856  //CHECK-LABEL: @test_mm256_maskz_and_epi32
857  //CHECK: and <8 x i32> %{{.*}}, %{{.*}}
858  //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
859  return _mm256_maskz_and_epi32(__U, __A, __B);
860}
861
862__m128i test_mm_and_epi32 (__m128i __A, __m128i __B) {
863  //CHECK-LABEL: @test_mm_and_epi32
864  //CHECK: and <4 x i32> %{{.*}}, %{{.*}}
865  return _mm_and_epi32(__A, __B);
866}
867
868__m128i test_mm_mask_and_epi32 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
869  //CHECK-LABEL: @test_mm_mask_and_epi32
870  //CHECK: and <4 x i32> %{{.*}}, %{{.*}}
871  //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
872  return _mm_mask_and_epi32(__W, __U, __A, __B);
873}
874
875__m128i test_mm_maskz_and_epi32 (__mmask8 __U, __m128i __A, __m128i __B) {
876  //CHECK-LABEL: @test_mm_maskz_and_epi32
877  //CHECK: and <4 x i32> %{{.*}}, %{{.*}}
878  //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
879  return _mm_maskz_and_epi32(__U, __A, __B);
880}
881
882__m256i test_mm256_andnot_epi32 (__m256i __A, __m256i __B) {
883  //CHECK-LABEL: @test_mm256_andnot_epi32
884  //CHECK: xor <8 x i32> %{{.*}}, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>
885  //CHECK: and <8 x i32> %{{.*}}, %{{.*}}
886  return _mm256_andnot_epi32(__A, __B);
887}
888
889__m256i test_mm256_mask_andnot_epi32 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
890  //CHECK-LABEL: @test_mm256_mask_andnot_epi32
891  //CHECK: xor <8 x i32> %{{.*}}, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>
892  //CHECK: and <8 x i32> %{{.*}}, %{{.*}}
893  //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
894  return _mm256_mask_andnot_epi32(__W, __U, __A, __B);
895}
896
897__m256i test_mm256_maskz_andnot_epi32 (__mmask8 __U, __m256i __A, __m256i __B) {
898  //CHECK-LABEL: @test_mm256_maskz_andnot_epi32
899  //CHECK: xor <8 x i32> %{{.*}}, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>
900  //CHECK: and <8 x i32> %{{.*}}, %{{.*}}
901  //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
902  return _mm256_maskz_andnot_epi32(__U, __A, __B);
903}
904
905__m128i test_mm_andnot_epi32 (__m128i __A, __m128i __B) {
906  //CHECK-LABEL: @test_mm_andnot_epi32
907  //CHECK: xor <4 x i32> %{{.*}}, <i32 -1, i32 -1, i32 -1, i32 -1>
908  //CHECK: and <4 x i32> %{{.*}}, %{{.*}}
909  return _mm_andnot_epi32(__A, __B);
910}
911
912__m128i test_mm_mask_andnot_epi32 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
913  //CHECK-LABEL: @test_mm_mask_andnot_epi32
914  //CHECK: xor <4 x i32> %{{.*}}, <i32 -1, i32 -1, i32 -1, i32 -1>
915  //CHECK: and <4 x i32> %{{.*}}, %{{.*}}
916  //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
917  return _mm_mask_andnot_epi32(__W, __U, __A, __B);
918}
919
920__m128i test_mm_maskz_andnot_epi32 (__mmask8 __U, __m128i __A, __m128i __B) {
921  //CHECK-LABEL: @test_mm_maskz_andnot_epi32
922  //CHECK: xor <4 x i32> %{{.*}}, <i32 -1, i32 -1, i32 -1, i32 -1>
923  //CHECK: and <4 x i32> %{{.*}}, %{{.*}}
924  //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
925  return _mm_maskz_andnot_epi32(__U, __A, __B);
926}
927
928__m256i test_mm256_or_epi32 (__m256i __A, __m256i __B) {
929  //CHECK-LABEL: @test_mm256_or_epi32
930  //CHECK: or <8 x i32> %{{.*}}, %{{.*}}
931  return _mm256_or_epi32(__A, __B);
932}
933
934__m256i test_mm256_mask_or_epi32 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
935  //CHECK-LABEL: @test_mm256_mask_or_epi32
936  //CHECK: or <8 x i32> %{{.*}}, %{{.*}}
937  //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
938  return _mm256_mask_or_epi32(__W, __U, __A, __B);
939}
940
941 __m256i test_mm256_maskz_or_epi32 (__mmask8 __U, __m256i __A, __m256i __B) {
942  //CHECK-LABEL: @test_mm256_maskz_or_epi32
943  //CHECK: or <8 x i32> %{{.*}}, %{{.*}}
944  //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
945  return _mm256_maskz_or_epi32(__U, __A, __B);
946}
947
948__m128i test_mm_or_epi32 (__m128i __A, __m128i __B) {
949  //CHECK-LABEL: @test_mm_or_epi32
950  //CHECK: or <4 x i32> %{{.*}}, %{{.*}}
951  return _mm_or_epi32(__A, __B);
952}
953
954__m128i test_mm_mask_or_epi32 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
955  //CHECK-LABEL: @test_mm_mask_or_epi32
956  //CHECK: or <4 x i32> %{{.*}}, %{{.*}}
957  //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
958  return _mm_mask_or_epi32(__W, __U, __A, __B);
959}
960
961__m128i test_mm_maskz_or_epi32 (__mmask8 __U, __m128i __A, __m128i __B) {
962  //CHECK-LABEL: @test_mm_maskz_or_epi32
963  //CHECK: or <4 x i32> %{{.*}}, %{{.*}}
964  //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
965  return _mm_maskz_or_epi32(__U, __A, __B);
966}
967
968__m256i test_mm256_xor_epi32 (__m256i __A, __m256i __B) {
969  //CHECK-LABEL: @test_mm256_xor_epi32
970  //CHECK: or <8 x i32> %{{.*}}, %{{.*}}
971  return _mm256_xor_epi32(__A, __B);
972}
973
974__m256i test_mm256_mask_xor_epi32 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
975  //CHECK-LABEL: @test_mm256_mask_xor_epi32
976  //CHECK: xor <8 x i32> %{{.*}}, %{{.*}}
977  //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
978  return _mm256_mask_xor_epi32(__W, __U, __A, __B);
979}
980
981__m256i test_mm256_maskz_xor_epi32 (__mmask8 __U, __m256i __A, __m256i __B) {
982  //CHECK-LABEL: @test_mm256_maskz_xor_epi32
983  //CHECK: xor <8 x i32> %{{.*}}, %{{.*}}
984  //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
985  return _mm256_maskz_xor_epi32(__U, __A, __B);
986}
987
988__m128i test_mm_xor_epi32 (__m128i __A, __m128i __B) {
989  //CHECK-LABEL: @test_mm_xor_epi32
990  //CHECK: xor <4 x i32> %{{.*}}, %{{.*}}
991  return _mm_xor_epi32(__A, __B);
992}
993
994__m128i test_mm_mask_xor_epi32 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
995  //CHECK-LABEL: @test_mm_mask_xor_epi32
996  //CHECK: xor <4 x i32> %{{.*}}, %{{.*}}
997  //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
998  return _mm_mask_xor_epi32(__W, __U, __A, __B);
999}
1000
1001__m128i test_mm_maskz_xor_epi32 (__mmask8 __U, __m128i __A, __m128i __B) {
1002  //CHECK-LABEL: @test_mm_maskz_xor_epi32
1003  //CHECK: xor <4 x i32> %{{.*}}, %{{.*}}
1004  //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
1005  return _mm_maskz_xor_epi32(__U, __A, __B);
1006}
1007
1008__m256i test_mm256_and_epi64 (__m256i __A, __m256i __B) {
1009  //CHECK-LABEL: @test_mm256_and_epi64
1010  //CHECK: and <4 x i64> %{{.*}}, %{{.*}}
1011  return _mm256_and_epi64(__A, __B);
1012}
1013
1014__m256i test_mm256_mask_and_epi64 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
1015  //CHECK-LABEL: @test_mm256_mask_and_epi64
1016  //CHECK: and <4 x i64> %{{.*}}, %{{.*}}
1017  //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
1018  return _mm256_mask_and_epi64(__W, __U, __A, __B);
1019}
1020
1021__m256i test_mm256_maskz_and_epi64 (__mmask8 __U, __m256i __A, __m256i __B) {
1022  //CHECK-LABEL: @test_mm256_maskz_and_epi64
1023  //CHECK: and <4 x i64> %{{.*}}, %{{.*}}
1024  //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
1025  return _mm256_maskz_and_epi64(__U, __A, __B);
1026}
1027
1028__m128i test_mm_and_epi64 (__m128i __A, __m128i __B) {
1029  //CHECK-LABEL: @test_mm_and_epi64
1030  //CHECK: and <2 x i64> %{{.*}}, %{{.*}}
1031  return _mm_and_epi64(__A, __B);
1032}
1033
1034__m128i test_mm_mask_and_epi64 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1035  //CHECK-LABEL: @test_mm_mask_and_epi64
1036  //CHECK: and <2 x i64> %{{.*}}, %{{.*}}
1037  //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
1038  return _mm_mask_and_epi64(__W,__U, __A, __B);
1039}
1040
1041__m128i test_mm_maskz_and_epi64 (__mmask8 __U, __m128i __A, __m128i __B) {
1042  //CHECK-LABEL: @test_mm_maskz_and_epi64
1043  //CHECK: and <2 x i64> %{{.*}}, %{{.*}}
1044  //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
1045  return _mm_maskz_and_epi64(__U, __A, __B);
1046}
1047
1048__m256i test_mm256_andnot_epi64 (__m256i __A, __m256i __B) {
1049  //CHECK-LABEL: @test_mm256_andnot_epi64
1050  //CHECK: xor <4 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1>
1051  //CHECK: and <4 x i64> %{{.*}}, %{{.*}}
1052  return _mm256_andnot_epi64(__A, __B);
1053}
1054
1055__m256i test_mm256_mask_andnot_epi64 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
1056  //CHECK-LABEL: @test_mm256_mask_andnot_epi64
1057  //CHECK: xor <4 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1>
1058  //CHECK: and <4 x i64> %{{.*}}, %{{.*}}
1059  //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
1060  return _mm256_mask_andnot_epi64(__W, __U, __A, __B);
1061}
1062
1063__m256i test_mm256_maskz_andnot_epi64 (__mmask8 __U, __m256i __A, __m256i __B) {
1064  //CHECK-LABEL: @test_mm256_maskz_andnot_epi64
1065  //CHECK: xor <4 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1>
1066  //CHECK: and <4 x i64> %{{.*}}, %{{.*}}
1067  //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
1068  return _mm256_maskz_andnot_epi64(__U, __A, __B);
1069}
1070
1071__m128i test_mm_andnot_epi64 (__m128i __A, __m128i __B) {
1072  //CHECK-LABEL: @test_mm_andnot_epi64
1073  //CHECK: xor <2 x i64> %{{.*}}, <i64 -1, i64 -1>
1074  //CHECK: and <2 x i64> %{{.*}}, %{{.*}}
1075  return _mm_andnot_epi64(__A, __B);
1076}
1077
1078__m128i test_mm_mask_andnot_epi64 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1079  //CHECK-LABEL: @test_mm_mask_andnot_epi64
1080  //CHECK: xor <2 x i64> %{{.*}}, <i64 -1, i64 -1>
1081  //CHECK: and <2 x i64> %{{.*}}, %{{.*}}
1082  //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
1083  return _mm_mask_andnot_epi64(__W,__U, __A, __B);
1084}
1085
1086__m128i test_mm_maskz_andnot_epi64 (__mmask8 __U, __m128i __A, __m128i __B) {
1087  //CHECK-LABEL: @test_mm_maskz_andnot_epi64
1088  //CHECK: xor <2 x i64> %{{.*}}, <i64 -1, i64 -1>
1089  //CHECK: and <2 x i64> %{{.*}}, %{{.*}}
1090  //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
1091  return _mm_maskz_andnot_epi64(__U, __A, __B);
1092}
1093
1094__m256i test_mm256_or_epi64 (__m256i __A, __m256i __B) {
1095  //CHECK-LABEL: @test_mm256_or_epi64
1096  //CHECK: or <4 x i64> %{{.*}}, %{{.*}}
1097  return _mm256_or_epi64(__A, __B);
1098}
1099
1100__m256i test_mm256_mask_or_epi64 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
1101  //CHECK-LABEL: @test_mm256_mask_or_epi64
1102  //CHECK: or <4 x i64> %{{.*}}, %{{.*}}
1103  //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
1104  return _mm256_mask_or_epi64(__W,__U, __A, __B);
1105}
1106
1107__m256i test_mm256_maskz_or_epi64 (__mmask8 __U, __m256i __A, __m256i __B) {
1108  //CHECK-LABEL: @test_mm256_maskz_or_epi64
1109  //CHECK: or <4 x i64> %{{.*}}, %{{.*}}
1110  //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
1111  return _mm256_maskz_or_epi64(__U, __A, __B);
1112}
1113
1114__m128i test_mm_or_epi64 (__m128i __A, __m128i __B) {
1115  //CHECK-LABEL: @test_mm_or_epi64
1116  //CHECK: or <2 x i64> %{{.*}}, %{{.*}}
1117  return _mm_or_epi64(__A, __B);
1118}
1119
1120__m128i test_mm_mask_or_epi64 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1121  //CHECK-LABEL: @test_mm_mask_or_epi64
1122  //CHECK: or <2 x i64> %{{.*}}, %{{.*}}
1123  //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
1124  return _mm_mask_or_epi64(__W, __U, __A, __B);
1125}
1126
1127__m128i test_mm_maskz_or_epi64 (__mmask8 __U, __m128i __A, __m128i __B) {
1128  //CHECK-LABEL: @test_mm_maskz_or_epi64
1129  //CHECK: or <2 x i64> %{{.*}}, %{{.*}}
1130  //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
1131  return _mm_maskz_or_epi64( __U, __A, __B);
1132}
1133
1134__m256i test_mm256_xor_epi64 (__m256i __A, __m256i __B) {
1135  //CHECK-LABEL: @test_mm256_xor_epi64
1136  //CHECK: xor <4 x i64> %{{.*}}, %{{.*}}
1137  return _mm256_xor_epi64(__A, __B);
1138}
1139
1140__m256i test_mm256_mask_xor_epi64 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
1141  //CHECK-LABEL: @test_mm256_mask_xor_epi64
1142  //CHECK: xor <4 x i64> %{{.*}}, %{{.*}}
1143  //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
1144  return _mm256_mask_xor_epi64(__W,__U, __A, __B);
1145}
1146
1147__m256i test_mm256_maskz_xor_epi64 (__mmask8 __U, __m256i __A, __m256i __B) {
1148  //CHECK-LABEL: @test_mm256_maskz_xor_epi64
1149  //CHECK: xor <4 x i64> %{{.*}}, %{{.*}}
1150  //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
1151  return _mm256_maskz_xor_epi64(__U, __A, __B);
1152}
1153
1154__m128i test_mm_xor_epi64 (__m128i __A, __m128i __B) {
1155  //CHECK-LABEL: @test_mm_xor_epi64
1156  //CHECK: xor <2 x i64> %{{.*}}, %{{.*}}
1157  return _mm_xor_epi64(__A, __B);
1158}
1159
1160__m128i test_mm_mask_xor_epi64 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1161  //CHECK-LABEL: @test_mm_mask_xor_epi64
1162  //CHECK: xor <2 x i64> %{{.*}}, %{{.*}}
1163  //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
1164  return _mm_mask_xor_epi64(__W, __U, __A, __B);
1165}
1166
1167__m128i test_mm_maskz_xor_epi64 (__mmask8 __U, __m128i __A, __m128i __B) {
1168  //CHECK-LABEL: @test_mm_maskz_xor_epi64
1169  //CHECK: xor <2 x i64> %{{.*}}, %{{.*}}
1170  //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
1171  return _mm_maskz_xor_epi64( __U, __A, __B);
1172}
1173
1174__mmask8 test_mm256_cmp_ps_mask_eq_oq(__m256 a, __m256 b) {
1175  // CHECK-LABEL: @test_mm256_cmp_ps_mask_eq_oq
1176  // CHECK: fcmp oeq <8 x float> %{{.*}}, %{{.*}}
1177  return _mm256_cmp_ps_mask(a, b, _CMP_EQ_OQ);
1178}
1179
1180__mmask8 test_mm256_cmp_ps_mask_lt_os(__m256 a, __m256 b) {
1181  // CHECK-LABEL: test_mm256_cmp_ps_mask_lt_os
1182  // CHECK: fcmp olt <8 x float> %{{.*}}, %{{.*}}
1183  return _mm256_cmp_ps_mask(a, b, _CMP_LT_OS);
1184}
1185
1186__mmask8 test_mm256_cmp_ps_mask_le_os(__m256 a, __m256 b) {
1187  // CHECK-LABEL: test_mm256_cmp_ps_mask_le_os
1188  // CHECK: fcmp ole <8 x float> %{{.*}}, %{{.*}}
1189  return _mm256_cmp_ps_mask(a, b, _CMP_LE_OS);
1190}
1191
1192__mmask8 test_mm256_cmp_ps_mask_unord_q(__m256 a, __m256 b) {
1193  // CHECK-LABEL: test_mm256_cmp_ps_mask_unord_q
1194  // CHECK: fcmp uno <8 x float> %{{.*}}, %{{.*}}
1195  return _mm256_cmp_ps_mask(a, b, _CMP_UNORD_Q);
1196}
1197
1198__mmask8 test_mm256_cmp_ps_mask_neq_uq(__m256 a, __m256 b) {
1199  // CHECK-LABEL: test_mm256_cmp_ps_mask_neq_uq
1200  // CHECK: fcmp une <8 x float> %{{.*}}, %{{.*}}
1201  return _mm256_cmp_ps_mask(a, b, _CMP_NEQ_UQ);
1202}
1203
1204__mmask8 test_mm256_cmp_ps_mask_nlt_us(__m256 a, __m256 b) {
1205  // CHECK-LABEL: test_mm256_cmp_ps_mask_nlt_us
1206  // CHECK: fcmp uge <8 x float> %{{.*}}, %{{.*}}
1207  return _mm256_cmp_ps_mask(a, b, _CMP_NLT_US);
1208}
1209
1210__mmask8 test_mm256_cmp_ps_mask_nle_us(__m256 a, __m256 b) {
1211  // CHECK-LABEL: test_mm256_cmp_ps_mask_nle_us
1212  // CHECK: fcmp ugt <8 x float> %{{.*}}, %{{.*}}
1213  return _mm256_cmp_ps_mask(a, b, _CMP_NLE_US);
1214}
1215
1216__mmask8 test_mm256_cmp_ps_mask_ord_q(__m256 a, __m256 b) {
1217  // CHECK-LABEL: test_mm256_cmp_ps_mask_ord_q
1218  // CHECK: fcmp ord <8 x float> %{{.*}}, %{{.*}}
1219  return _mm256_cmp_ps_mask(a, b, _CMP_ORD_Q);
1220}
1221
1222__mmask8 test_mm256_cmp_ps_mask_eq_uq(__m256 a, __m256 b) {
1223  // CHECK-LABEL: test_mm256_cmp_ps_mask_eq_uq
1224  // CHECK: fcmp ueq <8 x float> %{{.*}}, %{{.*}}
1225  return _mm256_cmp_ps_mask(a, b, _CMP_EQ_UQ);
1226}
1227
1228__mmask8 test_mm256_cmp_ps_mask_nge_us(__m256 a, __m256 b) {
1229  // CHECK-LABEL: test_mm256_cmp_ps_mask_nge_us
1230  // CHECK: fcmp ult <8 x float> %{{.*}}, %{{.*}}
1231  return _mm256_cmp_ps_mask(a, b, _CMP_NGE_US);
1232}
1233
1234__mmask8 test_mm256_cmp_ps_mask_ngt_us(__m256 a, __m256 b) {
1235  // CHECK-LABEL: test_mm256_cmp_ps_mask_ngt_us
1236  // CHECK: fcmp ule <8 x float> %{{.*}}, %{{.*}}
1237  return _mm256_cmp_ps_mask(a, b, _CMP_NGT_US);
1238}
1239
1240__mmask8 test_mm256_cmp_ps_mask_false_oq(__m256 a, __m256 b) {
1241  // CHECK-LABEL: test_mm256_cmp_ps_mask_false_oq
1242  // CHECK: fcmp false <8 x float> %{{.*}}, %{{.*}}
1243  return _mm256_cmp_ps_mask(a, b, _CMP_FALSE_OQ);
1244}
1245
1246__mmask8 test_mm256_cmp_ps_mask_neq_oq(__m256 a, __m256 b) {
1247  // CHECK-LABEL: test_mm256_cmp_ps_mask_neq_oq
1248  // CHECK: fcmp one <8 x float> %{{.*}}, %{{.*}}
1249  return _mm256_cmp_ps_mask(a, b, _CMP_NEQ_OQ);
1250}
1251
1252__mmask8 test_mm256_cmp_ps_mask_ge_os(__m256 a, __m256 b) {
1253  // CHECK-LABEL: test_mm256_cmp_ps_mask_ge_os
1254  // CHECK: fcmp oge <8 x float> %{{.*}}, %{{.*}}
1255  return _mm256_cmp_ps_mask(a, b, _CMP_GE_OS);
1256}
1257
1258__mmask8 test_mm256_cmp_ps_mask_gt_os(__m256 a, __m256 b) {
1259  // CHECK-LABEL: test_mm256_cmp_ps_mask_gt_os
1260  // CHECK: fcmp ogt <8 x float> %{{.*}}, %{{.*}}
1261  return _mm256_cmp_ps_mask(a, b, _CMP_GT_OS);
1262}
1263
1264__mmask8 test_mm256_cmp_ps_mask_true_uq(__m256 a, __m256 b) {
1265  // CHECK-LABEL: test_mm256_cmp_ps_mask_true_uq
1266  // CHECK: fcmp true <8 x float> %{{.*}}, %{{.*}}
1267  return _mm256_cmp_ps_mask(a, b, _CMP_TRUE_UQ);
1268}
1269
1270__mmask8 test_mm256_cmp_ps_mask_eq_os(__m256 a, __m256 b) {
1271  // CHECK-LABEL: test_mm256_cmp_ps_mask_eq_os
1272  // CHECK: fcmp oeq <8 x float> %{{.*}}, %{{.*}}
1273  return _mm256_cmp_ps_mask(a, b, _CMP_EQ_OS);
1274}
1275
1276__mmask8 test_mm256_cmp_ps_mask_lt_oq(__m256 a, __m256 b) {
1277  // CHECK-LABEL: test_mm256_cmp_ps_mask_lt_oq
1278  // CHECK: fcmp olt <8 x float> %{{.*}}, %{{.*}}
1279  return _mm256_cmp_ps_mask(a, b, _CMP_LT_OQ);
1280}
1281
1282__mmask8 test_mm256_cmp_ps_mask_le_oq(__m256 a, __m256 b) {
1283  // CHECK-LABEL: test_mm256_cmp_ps_mask_le_oq
1284  // CHECK: fcmp ole <8 x float> %{{.*}}, %{{.*}}
1285  return _mm256_cmp_ps_mask(a, b, _CMP_LE_OQ);
1286}
1287
1288__mmask8 test_mm256_cmp_ps_mask_unord_s(__m256 a, __m256 b) {
1289  // CHECK-LABEL: test_mm256_cmp_ps_mask_unord_s
1290  // CHECK: fcmp uno <8 x float> %{{.*}}, %{{.*}}
1291  return _mm256_cmp_ps_mask(a, b, _CMP_UNORD_S);
1292}
1293
1294__mmask8 test_mm256_cmp_ps_mask_neq_us(__m256 a, __m256 b) {
1295  // CHECK-LABEL: test_mm256_cmp_ps_mask_neq_us
1296  // CHECK: fcmp une <8 x float> %{{.*}}, %{{.*}}
1297  return _mm256_cmp_ps_mask(a, b, _CMP_NEQ_US);
1298}
1299
1300__mmask8 test_mm256_cmp_ps_mask_nlt_uq(__m256 a, __m256 b) {
1301  // CHECK-LABEL: test_mm256_cmp_ps_mask_nlt_uq
1302  // CHECK: fcmp uge <8 x float> %{{.*}}, %{{.*}}
1303  return _mm256_cmp_ps_mask(a, b, _CMP_NLT_UQ);
1304}
1305
1306__mmask8 test_mm256_cmp_ps_mask_nle_uq(__m256 a, __m256 b) {
1307  // CHECK-LABEL: test_mm256_cmp_ps_mask_nle_uq
1308  // CHECK: fcmp ugt <8 x float> %{{.*}}, %{{.*}}
1309  return _mm256_cmp_ps_mask(a, b, _CMP_NLE_UQ);
1310}
1311
1312__mmask8 test_mm256_cmp_ps_mask_ord_s(__m256 a, __m256 b) {
1313  // CHECK-LABEL: test_mm256_cmp_ps_mask_ord_s
1314  // CHECK: fcmp ord <8 x float> %{{.*}}, %{{.*}}
1315  return _mm256_cmp_ps_mask(a, b, _CMP_ORD_S);
1316}
1317
1318__mmask8 test_mm256_cmp_ps_mask_eq_us(__m256 a, __m256 b) {
1319  // CHECK-LABEL: test_mm256_cmp_ps_mask_eq_us
1320  // CHECK: fcmp ueq <8 x float> %{{.*}}, %{{.*}}
1321  return _mm256_cmp_ps_mask(a, b, _CMP_EQ_US);
1322}
1323
1324__mmask8 test_mm256_cmp_ps_mask_nge_uq(__m256 a, __m256 b) {
1325  // CHECK-LABEL: test_mm256_cmp_ps_mask_nge_uq
1326  // CHECK: fcmp ult <8 x float> %{{.*}}, %{{.*}}
1327  return _mm256_cmp_ps_mask(a, b, _CMP_NGE_UQ);
1328}
1329
1330__mmask8 test_mm256_cmp_ps_mask_ngt_uq(__m256 a, __m256 b) {
1331  // CHECK-LABEL: test_mm256_cmp_ps_mask_ngt_uq
1332  // CHECK: fcmp ule <8 x float> %{{.*}}, %{{.*}}
1333  return _mm256_cmp_ps_mask(a, b, _CMP_NGT_UQ);
1334}
1335
1336__mmask8 test_mm256_cmp_ps_mask_false_os(__m256 a, __m256 b) {
1337  // CHECK-LABEL: test_mm256_cmp_ps_mask_false_os
1338  // CHECK: fcmp false <8 x float> %{{.*}}, %{{.*}}
1339  return _mm256_cmp_ps_mask(a, b, _CMP_FALSE_OS);
1340}
1341
1342__mmask8 test_mm256_cmp_ps_mask_neq_os(__m256 a, __m256 b) {
1343  // CHECK-LABEL: test_mm256_cmp_ps_mask_neq_os
1344  // CHECK: fcmp one <8 x float> %{{.*}}, %{{.*}}
1345  return _mm256_cmp_ps_mask(a, b, _CMP_NEQ_OS);
1346}
1347
1348__mmask8 test_mm256_cmp_ps_mask_ge_oq(__m256 a, __m256 b) {
1349  // CHECK-LABEL: test_mm256_cmp_ps_mask_ge_oq
1350  // CHECK: fcmp oge <8 x float> %{{.*}}, %{{.*}}
1351  return _mm256_cmp_ps_mask(a, b, _CMP_GE_OQ);
1352}
1353
1354__mmask8 test_mm256_cmp_ps_mask_gt_oq(__m256 a, __m256 b) {
1355  // CHECK-LABEL: test_mm256_cmp_ps_mask_gt_oq
1356  // CHECK: fcmp ogt <8 x float> %{{.*}}, %{{.*}}
1357  return _mm256_cmp_ps_mask(a, b, _CMP_GT_OQ);
1358}
1359
1360__mmask8 test_mm256_cmp_ps_mask_true_us(__m256 a, __m256 b) {
1361  // CHECK-LABEL: test_mm256_cmp_ps_mask_true_us
1362  // CHECK: fcmp true <8 x float> %{{.*}}, %{{.*}}
1363  return _mm256_cmp_ps_mask(a, b, _CMP_TRUE_US);
1364}
1365
1366__mmask8 test_mm256_mask_cmp_ps_mask_eq_oq(__mmask8 m, __m256 a, __m256 b) {
1367  // CHECK-LABEL: @test_mm256_mask_cmp_ps_mask_eq_oq
1368  // CHECK: [[CMP:%.*]] = fcmp oeq <8 x float> %{{.*}}, %{{.*}}
1369  // CHECK: and <8 x i1> [[CMP]], {{.*}}
1370  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_EQ_OQ);
1371}
1372
1373__mmask8 test_mm256_mask_cmp_ps_mask_lt_os(__mmask8 m, __m256 a, __m256 b) {
1374  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_lt_os
1375  // CHECK: [[CMP:%.*]] = fcmp olt <8 x float> %{{.*}}, %{{.*}}
1376  // CHECK: and <8 x i1> [[CMP]], {{.*}}
1377  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_LT_OS);
1378}
1379
1380__mmask8 test_mm256_mask_cmp_ps_mask_le_os(__mmask8 m, __m256 a, __m256 b) {
1381  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_le_os
1382  // CHECK: [[CMP:%.*]] = fcmp ole <8 x float> %{{.*}}, %{{.*}}
1383  // CHECK: and <8 x i1> [[CMP]], {{.*}}
1384  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_LE_OS);
1385}
1386
1387__mmask8 test_mm256_mask_cmp_ps_mask_unord_q(__mmask8 m, __m256 a, __m256 b) {
1388  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_unord_q
1389  // CHECK: [[CMP:%.*]] = fcmp uno <8 x float> %{{.*}}, %{{.*}}
1390  // CHECK: and <8 x i1> [[CMP]], {{.*}}
1391  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_UNORD_Q);
1392}
1393
1394__mmask8 test_mm256_mask_cmp_ps_mask_neq_uq(__mmask8 m, __m256 a, __m256 b) {
1395  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_neq_uq
1396  // CHECK: [[CMP:%.*]] = fcmp une <8 x float> %{{.*}}, %{{.*}}
1397  // CHECK: and <8 x i1> [[CMP]], {{.*}}
1398  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_UQ);
1399}
1400
1401__mmask8 test_mm256_mask_cmp_ps_mask_nlt_us(__mmask8 m, __m256 a, __m256 b) {
1402  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_nlt_us
1403  // CHECK: [[CMP:%.*]] = fcmp uge <8 x float> %{{.*}}, %{{.*}}
1404  // CHECK: and <8 x i1> [[CMP]], {{.*}}
1405  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NLT_US);
1406}
1407
1408__mmask8 test_mm256_mask_cmp_ps_mask_nle_us(__mmask8 m, __m256 a, __m256 b) {
1409  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_nle_us
1410  // CHECK: [[CMP:%.*]] = fcmp ugt <8 x float> %{{.*}}, %{{.*}}
1411  // CHECK: and <8 x i1> [[CMP]], {{.*}}
1412  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NLE_US);
1413}
1414
1415__mmask8 test_mm256_mask_cmp_ps_mask_ord_q(__mmask8 m, __m256 a, __m256 b) {
1416  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_ord_q
1417  // CHECK: [[CMP:%.*]] = fcmp ord <8 x float> %{{.*}}, %{{.*}}
1418  // CHECK: and <8 x i1> [[CMP]], {{.*}}
1419  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_ORD_Q);
1420}
1421
1422__mmask8 test_mm256_mask_cmp_ps_mask_eq_uq(__mmask8 m, __m256 a, __m256 b) {
1423  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_eq_uq
1424  // CHECK: [[CMP:%.*]] = fcmp ueq <8 x float> %{{.*}}, %{{.*}}
1425  // CHECK: and <8 x i1> [[CMP]], {{.*}}
1426  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_EQ_UQ);
1427}
1428
1429__mmask8 test_mm256_mask_cmp_ps_mask_nge_us(__mmask8 m, __m256 a, __m256 b) {
1430  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_nge_us
1431  // CHECK: [[CMP:%.*]] = fcmp ult <8 x float> %{{.*}}, %{{.*}}
1432  // CHECK: and <8 x i1> [[CMP]], {{.*}}
1433  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NGE_US);
1434}
1435
1436__mmask8 test_mm256_mask_cmp_ps_mask_ngt_us(__mmask8 m, __m256 a, __m256 b) {
1437  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_ngt_us
1438  // CHECK: [[CMP:%.*]] = fcmp ule <8 x float> %{{.*}}, %{{.*}}
1439  // CHECK: and <8 x i1> [[CMP]], {{.*}}
1440  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NGT_US);
1441}
1442
1443__mmask8 test_mm256_mask_cmp_ps_mask_false_oq(__mmask8 m, __m256 a, __m256 b) {
1444  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_false_oq
1445  // CHECK: [[CMP:%.*]] = fcmp false <8 x float> %{{.*}}, %{{.*}}
1446  // CHECK: and <8 x i1> [[CMP]], {{.*}}
1447  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OQ);
1448}
1449
1450__mmask8 test_mm256_mask_cmp_ps_mask_neq_oq(__mmask8 m, __m256 a, __m256 b) {
1451  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_neq_oq
1452  // CHECK: [[CMP:%.*]] = fcmp one <8 x float> %{{.*}}, %{{.*}}
1453  // CHECK: and <8 x i1> [[CMP]], {{.*}}
1454  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_OQ);
1455}
1456
1457__mmask8 test_mm256_mask_cmp_ps_mask_ge_os(__mmask8 m, __m256 a, __m256 b) {
1458  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_ge_os
1459  // CHECK: [[CMP:%.*]] = fcmp oge <8 x float> %{{.*}}, %{{.*}}
1460  // CHECK: and <8 x i1> [[CMP]], {{.*}}
1461  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_GE_OS);
1462}
1463
1464__mmask8 test_mm256_mask_cmp_ps_mask_gt_os(__mmask8 m, __m256 a, __m256 b) {
1465  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_gt_os
1466  // CHECK: [[CMP:%.*]] = fcmp ogt <8 x float> %{{.*}}, %{{.*}}
1467  // CHECK: and <8 x i1> [[CMP]], {{.*}}
1468  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_GT_OS);
1469}
1470
1471__mmask8 test_mm256_mask_cmp_ps_mask_true_uq(__mmask8 m, __m256 a, __m256 b) {
1472  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_true_uq
1473  // CHECK: [[CMP:%.*]] = fcmp true <8 x float> %{{.*}}, %{{.*}}
1474  // CHECK: and <8 x i1> [[CMP]], {{.*}}
1475  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_UQ);
1476}
1477
1478__mmask8 test_mm256_mask_cmp_ps_mask_eq_os(__mmask8 m, __m256 a, __m256 b) {
1479  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_eq_os
1480  // CHECK: [[CMP:%.*]] = fcmp oeq <8 x float> %{{.*}}, %{{.*}}
1481  // CHECK: and <8 x i1> [[CMP]], {{.*}}
1482  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_EQ_OS);
1483}
1484
1485__mmask8 test_mm256_mask_cmp_ps_mask_lt_oq(__mmask8 m, __m256 a, __m256 b) {
1486  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_lt_oq
1487  // CHECK: [[CMP:%.*]] = fcmp olt <8 x float> %{{.*}}, %{{.*}}
1488  // CHECK: and <8 x i1> [[CMP]], {{.*}}
1489  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_LT_OQ);
1490}
1491
1492__mmask8 test_mm256_mask_cmp_ps_mask_le_oq(__mmask8 m, __m256 a, __m256 b) {
1493  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_le_oq
1494  // CHECK: [[CMP:%.*]] = fcmp ole <8 x float> %{{.*}}, %{{.*}}
1495  // CHECK: and <8 x i1> [[CMP]], {{.*}}
1496  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_LE_OQ);
1497}
1498
1499__mmask8 test_mm256_mask_cmp_ps_mask_unord_s(__mmask8 m, __m256 a, __m256 b) {
1500  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_unord_s
1501  // CHECK: [[CMP:%.*]] = fcmp uno <8 x float> %{{.*}}, %{{.*}}
1502  // CHECK: and <8 x i1> [[CMP]], {{.*}}
1503  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_UNORD_S);
1504}
1505
1506__mmask8 test_mm256_mask_cmp_ps_mask_neq_us(__mmask8 m, __m256 a, __m256 b) {
1507  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_neq_us
1508  // CHECK: [[CMP:%.*]] = fcmp une <8 x float> %{{.*}}, %{{.*}}
1509  // CHECK: and <8 x i1> [[CMP]], {{.*}}
1510  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_US);
1511}
1512
1513__mmask8 test_mm256_mask_cmp_ps_mask_nlt_uq(__mmask8 m, __m256 a, __m256 b) {
1514  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_nlt_uq
1515  // CHECK: [[CMP:%.*]] = fcmp uge <8 x float> %{{.*}}, %{{.*}}
1516  // CHECK: and <8 x i1> [[CMP]], {{.*}}
1517  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NLT_UQ);
1518}
1519
1520__mmask8 test_mm256_mask_cmp_ps_mask_nle_uq(__mmask8 m, __m256 a, __m256 b) {
1521  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_nle_uq
1522  // CHECK: [[CMP:%.*]] = fcmp ugt <8 x float> %{{.*}}, %{{.*}}
1523  // CHECK: and <8 x i1> [[CMP]], {{.*}}
1524  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NLE_UQ);
1525}
1526
1527__mmask8 test_mm256_mask_cmp_ps_mask_ord_s(__mmask8 m, __m256 a, __m256 b) {
1528  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_ord_s
1529  // CHECK: [[CMP:%.*]] = fcmp ord <8 x float> %{{.*}}, %{{.*}}
1530  // CHECK: and <8 x i1> [[CMP]], {{.*}}
1531  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_ORD_S);
1532}
1533
1534__mmask8 test_mm256_mask_cmp_ps_mask_eq_us(__mmask8 m, __m256 a, __m256 b) {
1535  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_eq_us
1536  // CHECK: [[CMP:%.*]] = fcmp ueq <8 x float> %{{.*}}, %{{.*}}
1537  // CHECK: and <8 x i1> [[CMP]], {{.*}}
1538  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_EQ_US);
1539}
1540
1541__mmask8 test_mm256_mask_cmp_ps_mask_nge_uq(__mmask8 m, __m256 a, __m256 b) {
1542  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_nge_uq
1543  // CHECK: [[CMP:%.*]] = fcmp ult <8 x float> %{{.*}}, %{{.*}}
1544  // CHECK: and <8 x i1> [[CMP]], {{.*}}
1545  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NGE_UQ);
1546}
1547
1548__mmask8 test_mm256_mask_cmp_ps_mask_ngt_uq(__mmask8 m, __m256 a, __m256 b) {
1549  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_ngt_uq
1550  // CHECK: [[CMP:%.*]] = fcmp ule <8 x float> %{{.*}}, %{{.*}}
1551  // CHECK: and <8 x i1> [[CMP]], {{.*}}
1552  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NGT_UQ);
1553}
1554
1555__mmask8 test_mm256_mask_cmp_ps_mask_false_os(__mmask8 m, __m256 a, __m256 b) {
1556  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_false_os
1557  // CHECK: [[CMP:%.*]] = fcmp false <8 x float> %{{.*}}, %{{.*}}
1558  // CHECK: and <8 x i1> [[CMP]], {{.*}}
1559  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OS);
1560}
1561
1562__mmask8 test_mm256_mask_cmp_ps_mask_neq_os(__mmask8 m, __m256 a, __m256 b) {
1563  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_neq_os
1564  // CHECK: [[CMP:%.*]] = fcmp one <8 x float> %{{.*}}, %{{.*}}
1565  // CHECK: and <8 x i1> [[CMP]], {{.*}}
1566  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_OS);
1567}
1568
1569__mmask8 test_mm256_mask_cmp_ps_mask_ge_oq(__mmask8 m, __m256 a, __m256 b) {
1570  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_ge_oq
1571  // CHECK: [[CMP:%.*]] = fcmp oge <8 x float> %{{.*}}, %{{.*}}
1572  // CHECK: and <8 x i1> [[CMP]], {{.*}}
1573  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_GE_OQ);
1574}
1575
1576__mmask8 test_mm256_mask_cmp_ps_mask_gt_oq(__mmask8 m, __m256 a, __m256 b) {
1577  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_gt_oq
1578  // CHECK: [[CMP:%.*]] = fcmp ogt <8 x float> %{{.*}}, %{{.*}}
1579  // CHECK: and <8 x i1> [[CMP]], {{.*}}
1580  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_GT_OQ);
1581}
1582
1583__mmask8 test_mm256_mask_cmp_ps_mask_true_us(__mmask8 m, __m256 a, __m256 b) {
1584  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_true_us
1585  // CHECK: [[CMP:%.*]] = fcmp true <8 x float> %{{.*}}, %{{.*}}
1586  // CHECK: and <8 x i1> [[CMP]], {{.*}}
1587  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_US);
1588}
1589
1590__mmask8 test_mm256_cmp_pd_mask_eq_oq(__m256d a, __m256d b) {
1591  // CHECK-LABEL: @test_mm256_cmp_pd_mask_eq_oq
1592  // CHECK: fcmp oeq <4 x double> %{{.*}}, %{{.*}}
1593  return _mm256_cmp_pd_mask(a, b, _CMP_EQ_OQ);
1594}
1595
1596__mmask8 test_mm256_cmp_pd_mask_lt_os(__m256d a, __m256d b) {
1597  // CHECK-LABEL: test_mm256_cmp_pd_mask_lt_os
1598  // CHECK: fcmp olt <4 x double> %{{.*}}, %{{.*}}
1599  return _mm256_cmp_pd_mask(a, b, _CMP_LT_OS);
1600}
1601
1602__mmask8 test_mm256_cmp_pd_mask_le_os(__m256d a, __m256d b) {
1603  // CHECK-LABEL: test_mm256_cmp_pd_mask_le_os
1604  // CHECK: fcmp ole <4 x double> %{{.*}}, %{{.*}}
1605  return _mm256_cmp_pd_mask(a, b, _CMP_LE_OS);
1606}
1607
1608__mmask8 test_mm256_cmp_pd_mask_unord_q(__m256d a, __m256d b) {
1609  // CHECK-LABEL: test_mm256_cmp_pd_mask_unord_q
1610  // CHECK: fcmp uno <4 x double> %{{.*}}, %{{.*}}
1611  return _mm256_cmp_pd_mask(a, b, _CMP_UNORD_Q);
1612}
1613
1614__mmask8 test_mm256_cmp_pd_mask_neq_uq(__m256d a, __m256d b) {
1615  // CHECK-LABEL: test_mm256_cmp_pd_mask_neq_uq
1616  // CHECK: fcmp une <4 x double> %{{.*}}, %{{.*}}
1617  return _mm256_cmp_pd_mask(a, b, _CMP_NEQ_UQ);
1618}
1619
1620__mmask8 test_mm256_cmp_pd_mask_nlt_us(__m256d a, __m256d b) {
1621  // CHECK-LABEL: test_mm256_cmp_pd_mask_nlt_us
1622  // CHECK: fcmp uge <4 x double> %{{.*}}, %{{.*}}
1623  return _mm256_cmp_pd_mask(a, b, _CMP_NLT_US);
1624}
1625
1626__mmask8 test_mm256_cmp_pd_mask_nle_us(__m256d a, __m256d b) {
1627  // CHECK-LABEL: test_mm256_cmp_pd_mask_nle_us
1628  // CHECK: fcmp ugt <4 x double> %{{.*}}, %{{.*}}
1629  return _mm256_cmp_pd_mask(a, b, _CMP_NLE_US);
1630}
1631
1632__mmask8 test_mm256_cmp_pd_mask_ord_q(__m256d a, __m256d b) {
1633  // CHECK-LABEL: test_mm256_cmp_pd_mask_ord_q
1634  // CHECK: fcmp ord <4 x double> %{{.*}}, %{{.*}}
1635  return _mm256_cmp_pd_mask(a, b, _CMP_ORD_Q);
1636}
1637
1638__mmask8 test_mm256_cmp_pd_mask_eq_uq(__m256d a, __m256d b) {
1639  // CHECK-LABEL: test_mm256_cmp_pd_mask_eq_uq
1640  // CHECK: fcmp ueq <4 x double> %{{.*}}, %{{.*}}
1641  return _mm256_cmp_pd_mask(a, b, _CMP_EQ_UQ);
1642}
1643
1644__mmask8 test_mm256_cmp_pd_mask_nge_us(__m256d a, __m256d b) {
1645  // CHECK-LABEL: test_mm256_cmp_pd_mask_nge_us
1646  // CHECK: fcmp ult <4 x double> %{{.*}}, %{{.*}}
1647  return _mm256_cmp_pd_mask(a, b, _CMP_NGE_US);
1648}
1649
1650__mmask8 test_mm256_cmp_pd_mask_ngt_us(__m256d a, __m256d b) {
1651  // CHECK-LABEL: test_mm256_cmp_pd_mask_ngt_us
1652  // CHECK: fcmp ule <4 x double> %{{.*}}, %{{.*}}
1653  return _mm256_cmp_pd_mask(a, b, _CMP_NGT_US);
1654}
1655
1656__mmask8 test_mm256_cmp_pd_mask_false_oq(__m256d a, __m256d b) {
1657  // CHECK-LABEL: test_mm256_cmp_pd_mask_false_oq
1658  // CHECK: fcmp false <4 x double> %{{.*}}, %{{.*}}
1659  return _mm256_cmp_pd_mask(a, b, _CMP_FALSE_OQ);
1660}
1661
1662__mmask8 test_mm256_cmp_pd_mask_neq_oq(__m256d a, __m256d b) {
1663  // CHECK-LABEL: test_mm256_cmp_pd_mask_neq_oq
1664  // CHECK: fcmp one <4 x double> %{{.*}}, %{{.*}}
1665  return _mm256_cmp_pd_mask(a, b, _CMP_NEQ_OQ);
1666}
1667
1668__mmask8 test_mm256_cmp_pd_mask_ge_os(__m256d a, __m256d b) {
1669  // CHECK-LABEL: test_mm256_cmp_pd_mask_ge_os
1670  // CHECK: fcmp oge <4 x double> %{{.*}}, %{{.*}}
1671  return _mm256_cmp_pd_mask(a, b, _CMP_GE_OS);
1672}
1673
1674__mmask8 test_mm256_cmp_pd_mask_gt_os(__m256d a, __m256d b) {
1675  // CHECK-LABEL: test_mm256_cmp_pd_mask_gt_os
1676  // CHECK: fcmp ogt <4 x double> %{{.*}}, %{{.*}}
1677  return _mm256_cmp_pd_mask(a, b, _CMP_GT_OS);
1678}
1679
1680__mmask8 test_mm256_cmp_pd_mask_true_uq(__m256d a, __m256d b) {
1681  // CHECK-LABEL: test_mm256_cmp_pd_mask_true_uq
1682  // CHECK: fcmp true <4 x double> %{{.*}}, %{{.*}}
1683  return _mm256_cmp_pd_mask(a, b, _CMP_TRUE_UQ);
1684}
1685
1686__mmask8 test_mm256_cmp_pd_mask_eq_os(__m256d a, __m256d b) {
1687  // CHECK-LABEL: test_mm256_cmp_pd_mask_eq_os
1688  // CHECK: fcmp oeq <4 x double> %{{.*}}, %{{.*}}
1689  return _mm256_cmp_pd_mask(a, b, _CMP_EQ_OS);
1690}
1691
1692__mmask8 test_mm256_cmp_pd_mask_lt_oq(__m256d a, __m256d b) {
1693  // CHECK-LABEL: test_mm256_cmp_pd_mask_lt_oq
1694  // CHECK: fcmp olt <4 x double> %{{.*}}, %{{.*}}
1695  return _mm256_cmp_pd_mask(a, b, _CMP_LT_OQ);
1696}
1697
1698__mmask8 test_mm256_cmp_pd_mask_le_oq(__m256d a, __m256d b) {
1699  // CHECK-LABEL: test_mm256_cmp_pd_mask_le_oq
1700  // CHECK: fcmp ole <4 x double> %{{.*}}, %{{.*}}
1701  return _mm256_cmp_pd_mask(a, b, _CMP_LE_OQ);
1702}
1703
1704__mmask8 test_mm256_cmp_pd_mask_unord_s(__m256d a, __m256d b) {
1705  // CHECK-LABEL: test_mm256_cmp_pd_mask_unord_s
1706  // CHECK: fcmp uno <4 x double> %{{.*}}, %{{.*}}
1707  return _mm256_cmp_pd_mask(a, b, _CMP_UNORD_S);
1708}
1709
1710__mmask8 test_mm256_cmp_pd_mask_neq_us(__m256d a, __m256d b) {
1711  // CHECK-LABEL: test_mm256_cmp_pd_mask_neq_us
1712  // CHECK: fcmp une <4 x double> %{{.*}}, %{{.*}}
1713  return _mm256_cmp_pd_mask(a, b, _CMP_NEQ_US);
1714}
1715
1716__mmask8 test_mm256_cmp_pd_mask_nlt_uq(__m256d a, __m256d b) {
1717  // CHECK-LABEL: test_mm256_cmp_pd_mask_nlt_uq
1718  // CHECK: fcmp uge <4 x double> %{{.*}}, %{{.*}}
1719  return _mm256_cmp_pd_mask(a, b, _CMP_NLT_UQ);
1720}
1721
1722__mmask8 test_mm256_cmp_pd_mask_nle_uq(__m256d a, __m256d b) {
1723  // CHECK-LABEL: test_mm256_cmp_pd_mask_nle_uq
1724  // CHECK: fcmp ugt <4 x double> %{{.*}}, %{{.*}}
1725  return _mm256_cmp_pd_mask(a, b, _CMP_NLE_UQ);
1726}
1727
1728__mmask8 test_mm256_cmp_pd_mask_ord_s(__m256d a, __m256d b) {
1729  // CHECK-LABEL: test_mm256_cmp_pd_mask_ord_s
1730  // CHECK: fcmp ord <4 x double> %{{.*}}, %{{.*}}
1731  return _mm256_cmp_pd_mask(a, b, _CMP_ORD_S);
1732}
1733
1734__mmask8 test_mm256_cmp_pd_mask_eq_us(__m256d a, __m256d b) {
1735  // CHECK-LABEL: test_mm256_cmp_pd_mask_eq_us
1736  // CHECK: fcmp ueq <4 x double> %{{.*}}, %{{.*}}
1737  return _mm256_cmp_pd_mask(a, b, _CMP_EQ_US);
1738}
1739
1740__mmask8 test_mm256_cmp_pd_mask_nge_uq(__m256d a, __m256d b) {
1741  // CHECK-LABEL: test_mm256_cmp_pd_mask_nge_uq
1742  // CHECK: fcmp ult <4 x double> %{{.*}}, %{{.*}}
1743  return _mm256_cmp_pd_mask(a, b, _CMP_NGE_UQ);
1744}
1745
1746__mmask8 test_mm256_cmp_pd_mask_ngt_uq(__m256d a, __m256d b) {
1747  // CHECK-LABEL: test_mm256_cmp_pd_mask_ngt_uq
1748  // CHECK: fcmp ule <4 x double> %{{.*}}, %{{.*}}
1749  return _mm256_cmp_pd_mask(a, b, _CMP_NGT_UQ);
1750}
1751
1752__mmask8 test_mm256_cmp_pd_mask_false_os(__m256d a, __m256d b) {
1753  // CHECK-LABEL: test_mm256_cmp_pd_mask_false_os
1754  // CHECK: fcmp false <4 x double> %{{.*}}, %{{.*}}
1755  return _mm256_cmp_pd_mask(a, b, _CMP_FALSE_OS);
1756}
1757
1758__mmask8 test_mm256_cmp_pd_mask_neq_os(__m256d a, __m256d b) {
1759  // CHECK-LABEL: test_mm256_cmp_pd_mask_neq_os
1760  // CHECK: fcmp one <4 x double> %{{.*}}, %{{.*}}
1761  return _mm256_cmp_pd_mask(a, b, _CMP_NEQ_OS);
1762}
1763
1764__mmask8 test_mm256_cmp_pd_mask_ge_oq(__m256d a, __m256d b) {
1765  // CHECK-LABEL: test_mm256_cmp_pd_mask_ge_oq
1766  // CHECK: fcmp oge <4 x double> %{{.*}}, %{{.*}}
1767  return _mm256_cmp_pd_mask(a, b, _CMP_GE_OQ);
1768}
1769
1770__mmask8 test_mm256_cmp_pd_mask_gt_oq(__m256d a, __m256d b) {
1771  // CHECK-LABEL: test_mm256_cmp_pd_mask_gt_oq
1772  // CHECK: fcmp ogt <4 x double> %{{.*}}, %{{.*}}
1773  return _mm256_cmp_pd_mask(a, b, _CMP_GT_OQ);
1774}
1775
1776__mmask8 test_mm256_cmp_pd_mask_true_us(__m256d a, __m256d b) {
1777  // CHECK-LABEL: test_mm256_cmp_pd_mask_true_us
1778  // CHECK: fcmp true <4 x double> %{{.*}}, %{{.*}}
1779  return _mm256_cmp_pd_mask(a, b, _CMP_TRUE_US);
1780}
1781
1782__mmask8 test_mm256_mask_cmp_pd_mask_eq_oq(__mmask8 m, __m256d a, __m256d b) {
1783  // CHECK-LABEL: @test_mm256_mask_cmp_pd_mask_eq_oq
1784  // CHECK: [[CMP:%.*]] = fcmp oeq <4 x double> %{{.*}}, %{{.*}}
1785  // CHECK: and <4 x i1> [[CMP]], {{.*}}
1786  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_EQ_OQ);
1787}
1788
1789__mmask8 test_mm256_mask_cmp_pd_mask_lt_os(__mmask8 m, __m256d a, __m256d b) {
1790  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_lt_os
1791  // CHECK: [[CMP:%.*]] = fcmp olt <4 x double> %{{.*}}, %{{.*}}
1792  // CHECK: and <4 x i1> [[CMP]], {{.*}}
1793  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_LT_OS);
1794}
1795
1796__mmask8 test_mm256_mask_cmp_pd_mask_le_os(__mmask8 m, __m256d a, __m256d b) {
1797  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_le_os
1798  // CHECK: [[CMP:%.*]] = fcmp ole <4 x double> %{{.*}}, %{{.*}}
1799  // CHECK: and <4 x i1> [[CMP]], {{.*}}
1800  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_LE_OS);
1801}
1802
1803__mmask8 test_mm256_mask_cmp_pd_mask_unord_q(__mmask8 m, __m256d a, __m256d b) {
1804  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_unord_q
1805  // CHECK: [[CMP:%.*]] = fcmp uno <4 x double> %{{.*}}, %{{.*}}
1806  // CHECK: and <4 x i1> [[CMP]], {{.*}}
1807  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_UNORD_Q);
1808}
1809
1810__mmask8 test_mm256_mask_cmp_pd_mask_neq_uq(__mmask8 m, __m256d a, __m256d b) {
1811  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_neq_uq
1812  // CHECK: [[CMP:%.*]] = fcmp une <4 x double> %{{.*}}, %{{.*}}
1813  // CHECK: and <4 x i1> [[CMP]], {{.*}}
1814  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_UQ);
1815}
1816
1817__mmask8 test_mm256_mask_cmp_pd_mask_nlt_us(__mmask8 m, __m256d a, __m256d b) {
1818  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_nlt_us
1819  // CHECK: [[CMP:%.*]] = fcmp uge <4 x double> %{{.*}}, %{{.*}}
1820  // CHECK: and <4 x i1> [[CMP]], {{.*}}
1821  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NLT_US);
1822}
1823
1824__mmask8 test_mm256_mask_cmp_pd_mask_nle_us(__mmask8 m, __m256d a, __m256d b) {
1825  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_nle_us
1826  // CHECK: [[CMP:%.*]] = fcmp ugt <4 x double> %{{.*}}, %{{.*}}
1827  // CHECK: and <4 x i1> [[CMP]], {{.*}}
1828  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NLE_US);
1829}
1830
1831__mmask8 test_mm256_mask_cmp_pd_mask_ord_q(__mmask8 m, __m256d a, __m256d b) {
1832  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_ord_q
1833  // CHECK: [[CMP:%.*]] = fcmp ord <4 x double> %{{.*}}, %{{.*}}
1834  // CHECK: and <4 x i1> [[CMP]], {{.*}}
1835  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_ORD_Q);
1836}
1837
1838__mmask8 test_mm256_mask_cmp_pd_mask_eq_uq(__mmask8 m, __m256d a, __m256d b) {
1839  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_eq_uq
1840  // CHECK: [[CMP:%.*]] = fcmp ueq <4 x double> %{{.*}}, %{{.*}}
1841  // CHECK: and <4 x i1> [[CMP]], {{.*}}
1842  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_EQ_UQ);
1843}
1844
1845__mmask8 test_mm256_mask_cmp_pd_mask_nge_us(__mmask8 m, __m256d a, __m256d b) {
1846  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_nge_us
1847  // CHECK: [[CMP:%.*]] = fcmp ult <4 x double> %{{.*}}, %{{.*}}
1848  // CHECK: and <4 x i1> [[CMP]], {{.*}}
1849  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NGE_US);
1850}
1851
1852__mmask8 test_mm256_mask_cmp_pd_mask_ngt_us(__mmask8 m, __m256d a, __m256d b) {
1853  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_ngt_us
1854  // CHECK: [[CMP:%.*]] = fcmp ule <4 x double> %{{.*}}, %{{.*}}
1855  // CHECK: and <4 x i1> [[CMP]], {{.*}}
1856  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NGT_US);
1857}
1858
1859__mmask8 test_mm256_mask_cmp_pd_mask_false_oq(__mmask8 m, __m256d a, __m256d b) {
1860  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_false_oq
1861  // CHECK: [[CMP:%.*]] = fcmp false <4 x double> %{{.*}}, %{{.*}}
1862  // CHECK: and <4 x i1> [[CMP]], {{.*}}
1863  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OQ);
1864}
1865
1866__mmask8 test_mm256_mask_cmp_pd_mask_neq_oq(__mmask8 m, __m256d a, __m256d b) {
1867  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_neq_oq
1868  // CHECK: [[CMP:%.*]] = fcmp one <4 x double> %{{.*}}, %{{.*}}
1869  // CHECK: and <4 x i1> [[CMP]], {{.*}}
1870  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_OQ);
1871}
1872
1873__mmask8 test_mm256_mask_cmp_pd_mask_ge_os(__mmask8 m, __m256d a, __m256d b) {
1874  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_ge_os
1875  // CHECK: [[CMP:%.*]] = fcmp oge <4 x double> %{{.*}}, %{{.*}}
1876  // CHECK: and <4 x i1> [[CMP]], {{.*}}
1877  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_GE_OS);
1878}
1879
1880__mmask8 test_mm256_mask_cmp_pd_mask_gt_os(__mmask8 m, __m256d a, __m256d b) {
1881  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_gt_os
1882  // CHECK: [[CMP:%.*]] = fcmp ogt <4 x double> %{{.*}}, %{{.*}}
1883  // CHECK: and <4 x i1> [[CMP]], {{.*}}
1884  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_GT_OS);
1885}
1886
1887__mmask8 test_mm256_mask_cmp_pd_mask_true_uq(__mmask8 m, __m256d a, __m256d b) {
1888  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_true_uq
1889  // CHECK: [[CMP:%.*]] = fcmp true <4 x double> %{{.*}}, %{{.*}}
1890  // CHECK: and <4 x i1> [[CMP]], {{.*}}
1891  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_UQ);
1892}
1893
1894__mmask8 test_mm256_mask_cmp_pd_mask_eq_os(__mmask8 m, __m256d a, __m256d b) {
1895  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_eq_os
1896  // CHECK: [[CMP:%.*]] = fcmp oeq <4 x double> %{{.*}}, %{{.*}}
1897  // CHECK: and <4 x i1> [[CMP]], {{.*}}
1898  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_EQ_OS);
1899}
1900
1901__mmask8 test_mm256_mask_cmp_pd_mask_lt_oq(__mmask8 m, __m256d a, __m256d b) {
1902  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_lt_oq
1903  // CHECK: [[CMP:%.*]] = fcmp olt <4 x double> %{{.*}}, %{{.*}}
1904  // CHECK: and <4 x i1> [[CMP]], {{.*}}
1905  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_LT_OQ);
1906}
1907
1908__mmask8 test_mm256_mask_cmp_pd_mask_le_oq(__mmask8 m, __m256d a, __m256d b) {
1909  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_le_oq
1910  // CHECK: [[CMP:%.*]] = fcmp ole <4 x double> %{{.*}}, %{{.*}}
1911  // CHECK: and <4 x i1> [[CMP]], {{.*}}
1912  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_LE_OQ);
1913}
1914
1915__mmask8 test_mm256_mask_cmp_pd_mask_unord_s(__mmask8 m, __m256d a, __m256d b) {
1916  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_unord_s
1917  // CHECK: [[CMP:%.*]] = fcmp uno <4 x double> %{{.*}}, %{{.*}}
1918  // CHECK: and <4 x i1> [[CMP]], {{.*}}
1919  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_UNORD_S);
1920}
1921
1922__mmask8 test_mm256_mask_cmp_pd_mask_neq_us(__mmask8 m, __m256d a, __m256d b) {
1923  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_neq_us
1924  // CHECK: [[CMP:%.*]] = fcmp une <4 x double> %{{.*}}, %{{.*}}
1925  // CHECK: and <4 x i1> [[CMP]], {{.*}}
1926  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_US);
1927}
1928
1929__mmask8 test_mm256_mask_cmp_pd_mask_nlt_uq(__mmask8 m, __m256d a, __m256d b) {
1930  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_nlt_uq
1931  // CHECK: [[CMP:%.*]] = fcmp uge <4 x double> %{{.*}}, %{{.*}}
1932  // CHECK: and <4 x i1> [[CMP]], {{.*}}
1933  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NLT_UQ);
1934}
1935
1936__mmask8 test_mm256_mask_cmp_pd_mask_nle_uq(__mmask8 m, __m256d a, __m256d b) {
1937  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_nle_uq
1938  // CHECK: [[CMP:%.*]] = fcmp ugt <4 x double> %{{.*}}, %{{.*}}
1939  // CHECK: and <4 x i1> [[CMP]], {{.*}}
1940  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NLE_UQ);
1941}
1942
1943__mmask8 test_mm256_mask_cmp_pd_mask_ord_s(__mmask8 m, __m256d a, __m256d b) {
1944  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_ord_s
1945  // CHECK: [[CMP:%.*]] = fcmp ord <4 x double> %{{.*}}, %{{.*}}
1946  // CHECK: and <4 x i1> [[CMP]], {{.*}}
1947  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_ORD_S);
1948}
1949
1950__mmask8 test_mm256_mask_cmp_pd_mask_eq_us(__mmask8 m, __m256d a, __m256d b) {
1951  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_eq_us
1952  // CHECK: [[CMP:%.*]] = fcmp ueq <4 x double> %{{.*}}, %{{.*}}
1953  // CHECK: and <4 x i1> [[CMP]], {{.*}}
1954  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_EQ_US);
1955}
1956
1957__mmask8 test_mm256_mask_cmp_pd_mask_nge_uq(__mmask8 m, __m256d a, __m256d b) {
1958  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_nge_uq
1959  // CHECK: [[CMP:%.*]] = fcmp ult <4 x double> %{{.*}}, %{{.*}}
1960  // CHECK: and <4 x i1> [[CMP]], {{.*}}
1961  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NGE_UQ);
1962}
1963
1964__mmask8 test_mm256_mask_cmp_pd_mask_ngt_uq(__mmask8 m, __m256d a, __m256d b) {
1965  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_ngt_uq
1966  // CHECK: [[CMP:%.*]] = fcmp ule <4 x double> %{{.*}}, %{{.*}}
1967  // CHECK: and <4 x i1> [[CMP]], {{.*}}
1968  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NGT_UQ);
1969}
1970
1971__mmask8 test_mm256_mask_cmp_pd_mask_false_os(__mmask8 m, __m256d a, __m256d b) {
1972  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_false_os
1973  // CHECK: [[CMP:%.*]] = fcmp false <4 x double> %{{.*}}, %{{.*}}
1974  // CHECK: and <4 x i1> [[CMP]], {{.*}}
1975  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OS);
1976}
1977
1978__mmask8 test_mm256_mask_cmp_pd_mask_neq_os(__mmask8 m, __m256d a, __m256d b) {
1979  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_neq_os
1980  // CHECK: [[CMP:%.*]] = fcmp one <4 x double> %{{.*}}, %{{.*}}
1981  // CHECK: and <4 x i1> [[CMP]], {{.*}}
1982  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_OS);
1983}
1984
1985__mmask8 test_mm256_mask_cmp_pd_mask_ge_oq(__mmask8 m, __m256d a, __m256d b) {
1986  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_ge_oq
1987  // CHECK: [[CMP:%.*]] = fcmp oge <4 x double> %{{.*}}, %{{.*}}
1988  // CHECK: and <4 x i1> [[CMP]], {{.*}}
1989  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_GE_OQ);
1990}
1991
1992__mmask8 test_mm256_mask_cmp_pd_mask_gt_oq(__mmask8 m, __m256d a, __m256d b) {
1993  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_gt_oq
1994  // CHECK: [[CMP:%.*]] = fcmp ogt <4 x double> %{{.*}}, %{{.*}}
1995  // CHECK: and <4 x i1> [[CMP]], {{.*}}
1996  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_GT_OQ);
1997}
1998
1999__mmask8 test_mm256_mask_cmp_pd_mask_true_us(__mmask8 m, __m256d a, __m256d b) {
2000  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_true_us
2001  // CHECK: [[CMP:%.*]] = fcmp true <4 x double> %{{.*}}, %{{.*}}
2002  // CHECK: and <4 x i1> [[CMP]], {{.*}}
2003  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_US);
2004}
2005
2006__mmask8 test_mm_cmp_ps_mask_eq_oq(__m128 a, __m128 b) {
2007  // CHECK-LABEL: @test_mm_cmp_ps_mask_eq_oq
2008  // CHECK: fcmp oeq <4 x float> %{{.*}}, %{{.*}}
2009  return _mm_cmp_ps_mask(a, b, _CMP_EQ_OQ);
2010}
2011
2012__mmask8 test_mm_cmp_ps_mask_lt_os(__m128 a, __m128 b) {
2013  // CHECK-LABEL: test_mm_cmp_ps_mask_lt_os
2014  // CHECK: fcmp olt <4 x float> %{{.*}}, %{{.*}}
2015  return _mm_cmp_ps_mask(a, b, _CMP_LT_OS);
2016}
2017
2018__mmask8 test_mm_cmp_ps_mask_le_os(__m128 a, __m128 b) {
2019  // CHECK-LABEL: test_mm_cmp_ps_mask_le_os
2020  // CHECK: fcmp ole <4 x float> %{{.*}}, %{{.*}}
2021  return _mm_cmp_ps_mask(a, b, _CMP_LE_OS);
2022}
2023
2024__mmask8 test_mm_cmp_ps_mask_unord_q(__m128 a, __m128 b) {
2025  // CHECK-LABEL: test_mm_cmp_ps_mask_unord_q
2026  // CHECK: fcmp uno <4 x float> %{{.*}}, %{{.*}}
2027  return _mm_cmp_ps_mask(a, b, _CMP_UNORD_Q);
2028}
2029
2030__mmask8 test_mm_cmp_ps_mask_neq_uq(__m128 a, __m128 b) {
2031  // CHECK-LABEL: test_mm_cmp_ps_mask_neq_uq
2032  // CHECK: fcmp une <4 x float> %{{.*}}, %{{.*}}
2033  return _mm_cmp_ps_mask(a, b, _CMP_NEQ_UQ);
2034}
2035
2036__mmask8 test_mm_cmp_ps_mask_nlt_us(__m128 a, __m128 b) {
2037  // CHECK-LABEL: test_mm_cmp_ps_mask_nlt_us
2038  // CHECK: fcmp uge <4 x float> %{{.*}}, %{{.*}}
2039  return _mm_cmp_ps_mask(a, b, _CMP_NLT_US);
2040}
2041
2042__mmask8 test_mm_cmp_ps_mask_nle_us(__m128 a, __m128 b) {
2043  // CHECK-LABEL: test_mm_cmp_ps_mask_nle_us
2044  // CHECK: fcmp ugt <4 x float> %{{.*}}, %{{.*}}
2045  return _mm_cmp_ps_mask(a, b, _CMP_NLE_US);
2046}
2047
2048__mmask8 test_mm_cmp_ps_mask_ord_q(__m128 a, __m128 b) {
2049  // CHECK-LABEL: test_mm_cmp_ps_mask_ord_q
2050  // CHECK: fcmp ord <4 x float> %{{.*}}, %{{.*}}
2051  return _mm_cmp_ps_mask(a, b, _CMP_ORD_Q);
2052}
2053
2054__mmask8 test_mm_cmp_ps_mask_eq_uq(__m128 a, __m128 b) {
2055  // CHECK-LABEL: test_mm_cmp_ps_mask_eq_uq
2056  // CHECK: fcmp ueq <4 x float> %{{.*}}, %{{.*}}
2057  return _mm_cmp_ps_mask(a, b, _CMP_EQ_UQ);
2058}
2059
2060__mmask8 test_mm_cmp_ps_mask_nge_us(__m128 a, __m128 b) {
2061  // CHECK-LABEL: test_mm_cmp_ps_mask_nge_us
2062  // CHECK: fcmp ult <4 x float> %{{.*}}, %{{.*}}
2063  return _mm_cmp_ps_mask(a, b, _CMP_NGE_US);
2064}
2065
2066__mmask8 test_mm_cmp_ps_mask_ngt_us(__m128 a, __m128 b) {
2067  // CHECK-LABEL: test_mm_cmp_ps_mask_ngt_us
2068  // CHECK: fcmp ule <4 x float> %{{.*}}, %{{.*}}
2069  return _mm_cmp_ps_mask(a, b, _CMP_NGT_US);
2070}
2071
2072__mmask8 test_mm_cmp_ps_mask_false_oq(__m128 a, __m128 b) {
2073  // CHECK-LABEL: test_mm_cmp_ps_mask_false_oq
2074  // CHECK: fcmp false <4 x float> %{{.*}}, %{{.*}}
2075  return _mm_cmp_ps_mask(a, b, _CMP_FALSE_OQ);
2076}
2077
2078__mmask8 test_mm_cmp_ps_mask_neq_oq(__m128 a, __m128 b) {
2079  // CHECK-LABEL: test_mm_cmp_ps_mask_neq_oq
2080  // CHECK: fcmp one <4 x float> %{{.*}}, %{{.*}}
2081  return _mm_cmp_ps_mask(a, b, _CMP_NEQ_OQ);
2082}
2083
2084__mmask8 test_mm_cmp_ps_mask_ge_os(__m128 a, __m128 b) {
2085  // CHECK-LABEL: test_mm_cmp_ps_mask_ge_os
2086  // CHECK: fcmp oge <4 x float> %{{.*}}, %{{.*}}
2087  return _mm_cmp_ps_mask(a, b, _CMP_GE_OS);
2088}
2089
2090__mmask8 test_mm_cmp_ps_mask_gt_os(__m128 a, __m128 b) {
2091  // CHECK-LABEL: test_mm_cmp_ps_mask_gt_os
2092  // CHECK: fcmp ogt <4 x float> %{{.*}}, %{{.*}}
2093  return _mm_cmp_ps_mask(a, b, _CMP_GT_OS);
2094}
2095
2096__mmask8 test_mm_cmp_ps_mask_true_uq(__m128 a, __m128 b) {
2097  // CHECK-LABEL: test_mm_cmp_ps_mask_true_uq
2098  // CHECK: fcmp true <4 x float> %{{.*}}, %{{.*}}
2099  return _mm_cmp_ps_mask(a, b, _CMP_TRUE_UQ);
2100}
2101
2102__mmask8 test_mm_cmp_ps_mask_eq_os(__m128 a, __m128 b) {
2103  // CHECK-LABEL: test_mm_cmp_ps_mask_eq_os
2104  // CHECK: fcmp oeq <4 x float> %{{.*}}, %{{.*}}
2105  return _mm_cmp_ps_mask(a, b, _CMP_EQ_OS);
2106}
2107
2108__mmask8 test_mm_cmp_ps_mask_lt_oq(__m128 a, __m128 b) {
2109  // CHECK-LABEL: test_mm_cmp_ps_mask_lt_oq
2110  // CHECK: fcmp olt <4 x float> %{{.*}}, %{{.*}}
2111  return _mm_cmp_ps_mask(a, b, _CMP_LT_OQ);
2112}
2113
2114__mmask8 test_mm_cmp_ps_mask_le_oq(__m128 a, __m128 b) {
2115  // CHECK-LABEL: test_mm_cmp_ps_mask_le_oq
2116  // CHECK: fcmp ole <4 x float> %{{.*}}, %{{.*}}
2117  return _mm_cmp_ps_mask(a, b, _CMP_LE_OQ);
2118}
2119
2120__mmask8 test_mm_cmp_ps_mask_unord_s(__m128 a, __m128 b) {
2121  // CHECK-LABEL: test_mm_cmp_ps_mask_unord_s
2122  // CHECK: fcmp uno <4 x float> %{{.*}}, %{{.*}}
2123  return _mm_cmp_ps_mask(a, b, _CMP_UNORD_S);
2124}
2125
2126__mmask8 test_mm_cmp_ps_mask_neq_us(__m128 a, __m128 b) {
2127  // CHECK-LABEL: test_mm_cmp_ps_mask_neq_us
2128  // CHECK: fcmp une <4 x float> %{{.*}}, %{{.*}}
2129  return _mm_cmp_ps_mask(a, b, _CMP_NEQ_US);
2130}
2131
2132__mmask8 test_mm_cmp_ps_mask_nlt_uq(__m128 a, __m128 b) {
2133  // CHECK-LABEL: test_mm_cmp_ps_mask_nlt_uq
2134  // CHECK: fcmp uge <4 x float> %{{.*}}, %{{.*}}
2135  return _mm_cmp_ps_mask(a, b, _CMP_NLT_UQ);
2136}
2137
2138__mmask8 test_mm_cmp_ps_mask_nle_uq(__m128 a, __m128 b) {
2139  // CHECK-LABEL: test_mm_cmp_ps_mask_nle_uq
2140  // CHECK: fcmp ugt <4 x float> %{{.*}}, %{{.*}}
2141  return _mm_cmp_ps_mask(a, b, _CMP_NLE_UQ);
2142}
2143
2144__mmask8 test_mm_cmp_ps_mask_ord_s(__m128 a, __m128 b) {
2145  // CHECK-LABEL: test_mm_cmp_ps_mask_ord_s
2146  // CHECK: fcmp ord <4 x float> %{{.*}}, %{{.*}}
2147  return _mm_cmp_ps_mask(a, b, _CMP_ORD_S);
2148}
2149
2150__mmask8 test_mm_cmp_ps_mask_eq_us(__m128 a, __m128 b) {
2151  // CHECK-LABEL: test_mm_cmp_ps_mask_eq_us
2152  // CHECK: fcmp ueq <4 x float> %{{.*}}, %{{.*}}
2153  return _mm_cmp_ps_mask(a, b, _CMP_EQ_US);
2154}
2155
2156__mmask8 test_mm_cmp_ps_mask_nge_uq(__m128 a, __m128 b) {
2157  // CHECK-LABEL: test_mm_cmp_ps_mask_nge_uq
2158  // CHECK: fcmp ult <4 x float> %{{.*}}, %{{.*}}
2159  return _mm_cmp_ps_mask(a, b, _CMP_NGE_UQ);
2160}
2161
2162__mmask8 test_mm_cmp_ps_mask_ngt_uq(__m128 a, __m128 b) {
2163  // CHECK-LABEL: test_mm_cmp_ps_mask_ngt_uq
2164  // CHECK: fcmp ule <4 x float> %{{.*}}, %{{.*}}
2165  return _mm_cmp_ps_mask(a, b, _CMP_NGT_UQ);
2166}
2167
2168__mmask8 test_mm_cmp_ps_mask_false_os(__m128 a, __m128 b) {
2169  // CHECK-LABEL: test_mm_cmp_ps_mask_false_os
2170  // CHECK: fcmp false <4 x float> %{{.*}}, %{{.*}}
2171  return _mm_cmp_ps_mask(a, b, _CMP_FALSE_OS);
2172}
2173
2174__mmask8 test_mm_cmp_ps_mask_neq_os(__m128 a, __m128 b) {
2175  // CHECK-LABEL: test_mm_cmp_ps_mask_neq_os
2176  // CHECK: fcmp one <4 x float> %{{.*}}, %{{.*}}
2177  return _mm_cmp_ps_mask(a, b, _CMP_NEQ_OS);
2178}
2179
2180__mmask8 test_mm_cmp_ps_mask_ge_oq(__m128 a, __m128 b) {
2181  // CHECK-LABEL: test_mm_cmp_ps_mask_ge_oq
2182  // CHECK: fcmp oge <4 x float> %{{.*}}, %{{.*}}
2183  return _mm_cmp_ps_mask(a, b, _CMP_GE_OQ);
2184}
2185
2186__mmask8 test_mm_cmp_ps_mask_gt_oq(__m128 a, __m128 b) {
2187  // CHECK-LABEL: test_mm_cmp_ps_mask_gt_oq
2188  // CHECK: fcmp ogt <4 x float> %{{.*}}, %{{.*}}
2189  return _mm_cmp_ps_mask(a, b, _CMP_GT_OQ);
2190}
2191
2192__mmask8 test_mm_cmp_ps_mask_true_us(__m128 a, __m128 b) {
2193  // CHECK-LABEL: test_mm_cmp_ps_mask_true_us
2194  // CHECK: fcmp true <4 x float> %{{.*}}, %{{.*}}
2195  return _mm_cmp_ps_mask(a, b, _CMP_TRUE_US);
2196}
2197
2198__mmask8 test_mm_mask_cmp_ps_mask_eq_oq(__mmask8 m, __m128 a, __m128 b) {
2199  // CHECK-LABEL: @test_mm_mask_cmp_ps_mask_eq_oq
2200  // CHECK: [[CMP:%.*]] = fcmp oeq <4 x float> %{{.*}}, %{{.*}}
2201  // CHECK: and <4 x i1> [[CMP]], {{.*}}
2202  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_EQ_OQ);
2203}
2204
2205__mmask8 test_mm_mask_cmp_ps_mask_lt_os(__mmask8 m, __m128 a, __m128 b) {
2206  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_lt_os
2207  // CHECK: [[CMP:%.*]] = fcmp olt <4 x float> %{{.*}}, %{{.*}}
2208  // CHECK: and <4 x i1> [[CMP]], {{.*}}
2209  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_LT_OS);
2210}
2211
2212__mmask8 test_mm_mask_cmp_ps_mask_le_os(__mmask8 m, __m128 a, __m128 b) {
2213  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_le_os
2214  // CHECK: [[CMP:%.*]] = fcmp ole <4 x float> %{{.*}}, %{{.*}}
2215  // CHECK: and <4 x i1> [[CMP]], {{.*}}
2216  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_LE_OS);
2217}
2218
2219__mmask8 test_mm_mask_cmp_ps_mask_unord_q(__mmask8 m, __m128 a, __m128 b) {
2220  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_unord_q
2221  // CHECK: [[CMP:%.*]] = fcmp uno <4 x float> %{{.*}}, %{{.*}}
2222  // CHECK: and <4 x i1> [[CMP]], {{.*}}
2223  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_UNORD_Q);
2224}
2225
2226__mmask8 test_mm_mask_cmp_ps_mask_neq_uq(__mmask8 m, __m128 a, __m128 b) {
2227  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_neq_uq
2228  // CHECK: [[CMP:%.*]] = fcmp une <4 x float> %{{.*}}, %{{.*}}
2229  // CHECK: and <4 x i1> [[CMP]], {{.*}}
2230  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_UQ);
2231}
2232
2233__mmask8 test_mm_mask_cmp_ps_mask_nlt_us(__mmask8 m, __m128 a, __m128 b) {
2234  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_nlt_us
2235  // CHECK: [[CMP:%.*]] = fcmp uge <4 x float> %{{.*}}, %{{.*}}
2236  // CHECK: and <4 x i1> [[CMP]], {{.*}}
2237  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NLT_US);
2238}
2239
2240__mmask8 test_mm_mask_cmp_ps_mask_nle_us(__mmask8 m, __m128 a, __m128 b) {
2241  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_nle_us
2242  // CHECK: [[CMP:%.*]] = fcmp ugt <4 x float> %{{.*}}, %{{.*}}
2243  // CHECK: and <4 x i1> [[CMP]], {{.*}}
2244  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NLE_US);
2245}
2246
2247__mmask8 test_mm_mask_cmp_ps_mask_ord_q(__mmask8 m, __m128 a, __m128 b) {
2248  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_ord_q
2249  // CHECK: [[CMP:%.*]] = fcmp ord <4 x float> %{{.*}}, %{{.*}}
2250  // CHECK: and <4 x i1> [[CMP]], {{.*}}
2251  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_ORD_Q);
2252}
2253
2254__mmask8 test_mm_mask_cmp_ps_mask_eq_uq(__mmask8 m, __m128 a, __m128 b) {
2255  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_eq_uq
2256  // CHECK: [[CMP:%.*]] = fcmp ueq <4 x float> %{{.*}}, %{{.*}}
2257  // CHECK: and <4 x i1> [[CMP]], {{.*}}
2258  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_EQ_UQ);
2259}
2260
2261__mmask8 test_mm_mask_cmp_ps_mask_nge_us(__mmask8 m, __m128 a, __m128 b) {
2262  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_nge_us
2263  // CHECK: [[CMP:%.*]] = fcmp ult <4 x float> %{{.*}}, %{{.*}}
2264  // CHECK: and <4 x i1> [[CMP]], {{.*}}
2265  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NGE_US);
2266}
2267
2268__mmask8 test_mm_mask_cmp_ps_mask_ngt_us(__mmask8 m, __m128 a, __m128 b) {
2269  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_ngt_us
2270  // CHECK: [[CMP:%.*]] = fcmp ule <4 x float> %{{.*}}, %{{.*}}
2271  // CHECK: and <4 x i1> [[CMP]], {{.*}}
2272  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NGT_US);
2273}
2274
2275__mmask8 test_mm_mask_cmp_ps_mask_false_oq(__mmask8 m, __m128 a, __m128 b) {
2276  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_false_oq
2277  // CHECK: [[CMP:%.*]] = fcmp false <4 x float> %{{.*}}, %{{.*}}
2278  // CHECK: and <4 x i1> [[CMP]], {{.*}}
2279  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OQ);
2280}
2281
2282__mmask8 test_mm_mask_cmp_ps_mask_neq_oq(__mmask8 m, __m128 a, __m128 b) {
2283  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_neq_oq
2284  // CHECK: [[CMP:%.*]] = fcmp one <4 x float> %{{.*}}, %{{.*}}
2285  // CHECK: and <4 x i1> [[CMP]], {{.*}}
2286  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_OQ);
2287}
2288
2289__mmask8 test_mm_mask_cmp_ps_mask_ge_os(__mmask8 m, __m128 a, __m128 b) {
2290  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_ge_os
2291  // CHECK: [[CMP:%.*]] = fcmp oge <4 x float> %{{.*}}, %{{.*}}
2292  // CHECK: and <4 x i1> [[CMP]], {{.*}}
2293  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_GE_OS);
2294}
2295
2296__mmask8 test_mm_mask_cmp_ps_mask_gt_os(__mmask8 m, __m128 a, __m128 b) {
2297  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_gt_os
2298  // CHECK: [[CMP:%.*]] = fcmp ogt <4 x float> %{{.*}}, %{{.*}}
2299  // CHECK: and <4 x i1> [[CMP]], {{.*}}
2300  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_GT_OS);
2301}
2302
2303__mmask8 test_mm_mask_cmp_ps_mask_true_uq(__mmask8 m, __m128 a, __m128 b) {
2304  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_true_uq
2305  // CHECK: [[CMP:%.*]] = fcmp true <4 x float> %{{.*}}, %{{.*}}
2306  // CHECK: and <4 x i1> [[CMP]], {{.*}}
2307  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_UQ);
2308}
2309
2310__mmask8 test_mm_mask_cmp_ps_mask_eq_os(__mmask8 m, __m128 a, __m128 b) {
2311  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_eq_os
2312  // CHECK: [[CMP:%.*]] = fcmp oeq <4 x float> %{{.*}}, %{{.*}}
2313  // CHECK: and <4 x i1> [[CMP]], {{.*}}
2314  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_EQ_OS);
2315}
2316
2317__mmask8 test_mm_mask_cmp_ps_mask_lt_oq(__mmask8 m, __m128 a, __m128 b) {
2318  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_lt_oq
2319  // CHECK: [[CMP:%.*]] = fcmp olt <4 x float> %{{.*}}, %{{.*}}
2320  // CHECK: and <4 x i1> [[CMP]], {{.*}}
2321  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_LT_OQ);
2322}
2323
2324__mmask8 test_mm_mask_cmp_ps_mask_le_oq(__mmask8 m, __m128 a, __m128 b) {
2325  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_le_oq
2326  // CHECK: [[CMP:%.*]] = fcmp ole <4 x float> %{{.*}}, %{{.*}}
2327  // CHECK: and <4 x i1> [[CMP]], {{.*}}
2328  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_LE_OQ);
2329}
2330
2331__mmask8 test_mm_mask_cmp_ps_mask_unord_s(__mmask8 m, __m128 a, __m128 b) {
2332  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_unord_s
2333  // CHECK: [[CMP:%.*]] = fcmp uno <4 x float> %{{.*}}, %{{.*}}
2334  // CHECK: and <4 x i1> [[CMP]], {{.*}}
2335  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_UNORD_S);
2336}
2337
2338__mmask8 test_mm_mask_cmp_ps_mask_neq_us(__mmask8 m, __m128 a, __m128 b) {
2339  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_neq_us
2340  // CHECK: [[CMP:%.*]] = fcmp une <4 x float> %{{.*}}, %{{.*}}
2341  // CHECK: and <4 x i1> [[CMP]], {{.*}}
2342  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_US);
2343}
2344
2345__mmask8 test_mm_mask_cmp_ps_mask_nlt_uq(__mmask8 m, __m128 a, __m128 b) {
2346  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_nlt_uq
2347  // CHECK: [[CMP:%.*]] = fcmp uge <4 x float> %{{.*}}, %{{.*}}
2348  // CHECK: and <4 x i1> [[CMP]], {{.*}}
2349  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NLT_UQ);
2350}
2351
2352__mmask8 test_mm_mask_cmp_ps_mask_nle_uq(__mmask8 m, __m128 a, __m128 b) {
2353  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_nle_uq
2354  // CHECK: [[CMP:%.*]] = fcmp ugt <4 x float> %{{.*}}, %{{.*}}
2355  // CHECK: and <4 x i1> [[CMP]], {{.*}}
2356  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NLE_UQ);
2357}
2358
2359__mmask8 test_mm_mask_cmp_ps_mask_ord_s(__mmask8 m, __m128 a, __m128 b) {
2360  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_ord_s
2361  // CHECK: [[CMP:%.*]] = fcmp ord <4 x float> %{{.*}}, %{{.*}}
2362  // CHECK: and <4 x i1> [[CMP]], {{.*}}
2363  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_ORD_S);
2364}
2365
2366__mmask8 test_mm_mask_cmp_ps_mask_eq_us(__mmask8 m, __m128 a, __m128 b) {
2367  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_eq_us
2368  // CHECK: [[CMP:%.*]] = fcmp ueq <4 x float> %{{.*}}, %{{.*}}
2369  // CHECK: and <4 x i1> [[CMP]], {{.*}}
2370  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_EQ_US);
2371}
2372
2373__mmask8 test_mm_mask_cmp_ps_mask_nge_uq(__mmask8 m, __m128 a, __m128 b) {
2374  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_nge_uq
2375  // CHECK: [[CMP:%.*]] = fcmp ult <4 x float> %{{.*}}, %{{.*}}
2376  // CHECK: and <4 x i1> [[CMP]], {{.*}}
2377  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NGE_UQ);
2378}
2379
2380__mmask8 test_mm_mask_cmp_ps_mask_ngt_uq(__mmask8 m, __m128 a, __m128 b) {
2381  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_ngt_uq
2382  // CHECK: [[CMP:%.*]] = fcmp ule <4 x float> %{{.*}}, %{{.*}}
2383  // CHECK: and <4 x i1> [[CMP]], {{.*}}
2384  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NGT_UQ);
2385}
2386
2387__mmask8 test_mm_mask_cmp_ps_mask_false_os(__mmask8 m, __m128 a, __m128 b) {
2388  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_false_os
2389  // CHECK: [[CMP:%.*]] = fcmp false <4 x float> %{{.*}}, %{{.*}}
2390  // CHECK: and <4 x i1> [[CMP]], {{.*}}
2391  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OS);
2392}
2393
2394__mmask8 test_mm_mask_cmp_ps_mask_neq_os(__mmask8 m, __m128 a, __m128 b) {
2395  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_neq_os
2396  // CHECK: [[CMP:%.*]] = fcmp one <4 x float> %{{.*}}, %{{.*}}
2397  // CHECK: and <4 x i1> [[CMP]], {{.*}}
2398  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_OS);
2399}
2400
2401__mmask8 test_mm_mask_cmp_ps_mask_ge_oq(__mmask8 m, __m128 a, __m128 b) {
2402  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_ge_oq
2403  // CHECK: [[CMP:%.*]] = fcmp oge <4 x float> %{{.*}}, %{{.*}}
2404  // CHECK: and <4 x i1> [[CMP]], {{.*}}
2405  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_GE_OQ);
2406}
2407
2408__mmask8 test_mm_mask_cmp_ps_mask_gt_oq(__mmask8 m, __m128 a, __m128 b) {
2409  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_gt_oq
2410  // CHECK: [[CMP:%.*]] = fcmp ogt <4 x float> %{{.*}}, %{{.*}}
2411  // CHECK: and <4 x i1> [[CMP]], {{.*}}
2412  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_GT_OQ);
2413}
2414
2415__mmask8 test_mm_mask_cmp_ps_mask_true_us(__mmask8 m, __m128 a, __m128 b) {
2416  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_true_us
2417  // CHECK: [[CMP:%.*]] = fcmp true <4 x float> %{{.*}}, %{{.*}}
2418  // CHECK: and <4 x i1> [[CMP]], {{.*}}
2419  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_US);
2420}
2421
2422__mmask8 test_mm_cmp_pd_mask_eq_oq(__m128d a, __m128d b) {
2423  // CHECK-LABEL: @test_mm_cmp_pd_mask_eq_oq
2424  // CHECK: fcmp oeq <2 x double> %{{.*}}, %{{.*}}
2425  return _mm_cmp_pd_mask(a, b, _CMP_EQ_OQ);
2426}
2427
2428__mmask8 test_mm_cmp_pd_mask_lt_os(__m128d a, __m128d b) {
2429  // CHECK-LABEL: test_mm_cmp_pd_mask_lt_os
2430  // CHECK: fcmp olt <2 x double> %{{.*}}, %{{.*}}
2431  return _mm_cmp_pd_mask(a, b, _CMP_LT_OS);
2432}
2433
2434__mmask8 test_mm_cmp_pd_mask_le_os(__m128d a, __m128d b) {
2435  // CHECK-LABEL: test_mm_cmp_pd_mask_le_os
2436  // CHECK: fcmp ole <2 x double> %{{.*}}, %{{.*}}
2437  return _mm_cmp_pd_mask(a, b, _CMP_LE_OS);
2438}
2439
2440__mmask8 test_mm_cmp_pd_mask_unord_q(__m128d a, __m128d b) {
2441  // CHECK-LABEL: test_mm_cmp_pd_mask_unord_q
2442  // CHECK: fcmp uno <2 x double> %{{.*}}, %{{.*}}
2443  return _mm_cmp_pd_mask(a, b, _CMP_UNORD_Q);
2444}
2445
2446__mmask8 test_mm_cmp_pd_mask_neq_uq(__m128d a, __m128d b) {
2447  // CHECK-LABEL: test_mm_cmp_pd_mask_neq_uq
2448  // CHECK: fcmp une <2 x double> %{{.*}}, %{{.*}}
2449  return _mm_cmp_pd_mask(a, b, _CMP_NEQ_UQ);
2450}
2451
2452__mmask8 test_mm_cmp_pd_mask_nlt_us(__m128d a, __m128d b) {
2453  // CHECK-LABEL: test_mm_cmp_pd_mask_nlt_us
2454  // CHECK: fcmp uge <2 x double> %{{.*}}, %{{.*}}
2455  return _mm_cmp_pd_mask(a, b, _CMP_NLT_US);
2456}
2457
2458__mmask8 test_mm_cmp_pd_mask_nle_us(__m128d a, __m128d b) {
2459  // CHECK-LABEL: test_mm_cmp_pd_mask_nle_us
2460  // CHECK: fcmp ugt <2 x double> %{{.*}}, %{{.*}}
2461  return _mm_cmp_pd_mask(a, b, _CMP_NLE_US);
2462}
2463
2464__mmask8 test_mm_cmp_pd_mask_ord_q(__m128d a, __m128d b) {
2465  // CHECK-LABEL: test_mm_cmp_pd_mask_ord_q
2466  // CHECK: fcmp ord <2 x double> %{{.*}}, %{{.*}}
2467  return _mm_cmp_pd_mask(a, b, _CMP_ORD_Q);
2468}
2469
2470__mmask8 test_mm_cmp_pd_mask_eq_uq(__m128d a, __m128d b) {
2471  // CHECK-LABEL: test_mm_cmp_pd_mask_eq_uq
2472  // CHECK: fcmp ueq <2 x double> %{{.*}}, %{{.*}}
2473  return _mm_cmp_pd_mask(a, b, _CMP_EQ_UQ);
2474}
2475
2476__mmask8 test_mm_cmp_pd_mask_nge_us(__m128d a, __m128d b) {
2477  // CHECK-LABEL: test_mm_cmp_pd_mask_nge_us
2478  // CHECK: fcmp ult <2 x double> %{{.*}}, %{{.*}}
2479  return _mm_cmp_pd_mask(a, b, _CMP_NGE_US);
2480}
2481
2482__mmask8 test_mm_cmp_pd_mask_ngt_us(__m128d a, __m128d b) {
2483  // CHECK-LABEL: test_mm_cmp_pd_mask_ngt_us
2484  // CHECK: fcmp ule <2 x double> %{{.*}}, %{{.*}}
2485  return _mm_cmp_pd_mask(a, b, _CMP_NGT_US);
2486}
2487
2488__mmask8 test_mm_cmp_pd_mask_false_oq(__m128d a, __m128d b) {
2489  // CHECK-LABEL: test_mm_cmp_pd_mask_false_oq
2490  // CHECK: fcmp false <2 x double> %{{.*}}, %{{.*}}
2491  return _mm_cmp_pd_mask(a, b, _CMP_FALSE_OQ);
2492}
2493
2494__mmask8 test_mm_cmp_pd_mask_neq_oq(__m128d a, __m128d b) {
2495  // CHECK-LABEL: test_mm_cmp_pd_mask_neq_oq
2496  // CHECK: fcmp one <2 x double> %{{.*}}, %{{.*}}
2497  return _mm_cmp_pd_mask(a, b, _CMP_NEQ_OQ);
2498}
2499
2500__mmask8 test_mm_cmp_pd_mask_ge_os(__m128d a, __m128d b) {
2501  // CHECK-LABEL: test_mm_cmp_pd_mask_ge_os
2502  // CHECK: fcmp oge <2 x double> %{{.*}}, %{{.*}}
2503  return _mm_cmp_pd_mask(a, b, _CMP_GE_OS);
2504}
2505
2506__mmask8 test_mm_cmp_pd_mask_gt_os(__m128d a, __m128d b) {
2507  // CHECK-LABEL: test_mm_cmp_pd_mask_gt_os
2508  // CHECK: fcmp ogt <2 x double> %{{.*}}, %{{.*}}
2509  return _mm_cmp_pd_mask(a, b, _CMP_GT_OS);
2510}
2511
2512__mmask8 test_mm_cmp_pd_mask_true_uq(__m128d a, __m128d b) {
2513  // CHECK-LABEL: test_mm_cmp_pd_mask_true_uq
2514  // CHECK: fcmp true <2 x double> %{{.*}}, %{{.*}}
2515  return _mm_cmp_pd_mask(a, b, _CMP_TRUE_UQ);
2516}
2517
2518__mmask8 test_mm_cmp_pd_mask_eq_os(__m128d a, __m128d b) {
2519  // CHECK-LABEL: test_mm_cmp_pd_mask_eq_os
2520  // CHECK: fcmp oeq <2 x double> %{{.*}}, %{{.*}}
2521  return _mm_cmp_pd_mask(a, b, _CMP_EQ_OS);
2522}
2523
2524__mmask8 test_mm_cmp_pd_mask_lt_oq(__m128d a, __m128d b) {
2525  // CHECK-LABEL: test_mm_cmp_pd_mask_lt_oq
2526  // CHECK: fcmp olt <2 x double> %{{.*}}, %{{.*}}
2527  return _mm_cmp_pd_mask(a, b, _CMP_LT_OQ);
2528}
2529
2530__mmask8 test_mm_cmp_pd_mask_le_oq(__m128d a, __m128d b) {
2531  // CHECK-LABEL: test_mm_cmp_pd_mask_le_oq
2532  // CHECK: fcmp ole <2 x double> %{{.*}}, %{{.*}}
2533  return _mm_cmp_pd_mask(a, b, _CMP_LE_OQ);
2534}
2535
2536__mmask8 test_mm_cmp_pd_mask_unord_s(__m128d a, __m128d b) {
2537  // CHECK-LABEL: test_mm_cmp_pd_mask_unord_s
2538  // CHECK: fcmp uno <2 x double> %{{.*}}, %{{.*}}
2539  return _mm_cmp_pd_mask(a, b, _CMP_UNORD_S);
2540}
2541
2542__mmask8 test_mm_cmp_pd_mask_neq_us(__m128d a, __m128d b) {
2543  // CHECK-LABEL: test_mm_cmp_pd_mask_neq_us
2544  // CHECK: fcmp une <2 x double> %{{.*}}, %{{.*}}
2545  return _mm_cmp_pd_mask(a, b, _CMP_NEQ_US);
2546}
2547
2548__mmask8 test_mm_cmp_pd_mask_nlt_uq(__m128d a, __m128d b) {
2549  // CHECK-LABEL: test_mm_cmp_pd_mask_nlt_uq
2550  // CHECK: fcmp uge <2 x double> %{{.*}}, %{{.*}}
2551  return _mm_cmp_pd_mask(a, b, _CMP_NLT_UQ);
2552}
2553
2554__mmask8 test_mm_cmp_pd_mask_nle_uq(__m128d a, __m128d b) {
2555  // CHECK-LABEL: test_mm_cmp_pd_mask_nle_uq
2556  // CHECK: fcmp ugt <2 x double> %{{.*}}, %{{.*}}
2557  return _mm_cmp_pd_mask(a, b, _CMP_NLE_UQ);
2558}
2559
2560__mmask8 test_mm_cmp_pd_mask_ord_s(__m128d a, __m128d b) {
2561  // CHECK-LABEL: test_mm_cmp_pd_mask_ord_s
2562  // CHECK: fcmp ord <2 x double> %{{.*}}, %{{.*}}
2563  return _mm_cmp_pd_mask(a, b, _CMP_ORD_S);
2564}
2565
2566__mmask8 test_mm_cmp_pd_mask_eq_us(__m128d a, __m128d b) {
2567  // CHECK-LABEL: test_mm_cmp_pd_mask_eq_us
2568  // CHECK: fcmp ueq <2 x double> %{{.*}}, %{{.*}}
2569  return _mm_cmp_pd_mask(a, b, _CMP_EQ_US);
2570}
2571
2572__mmask8 test_mm_cmp_pd_mask_nge_uq(__m128d a, __m128d b) {
2573  // CHECK-LABEL: test_mm_cmp_pd_mask_nge_uq
2574  // CHECK: fcmp ult <2 x double> %{{.*}}, %{{.*}}
2575  return _mm_cmp_pd_mask(a, b, _CMP_NGE_UQ);
2576}
2577
2578__mmask8 test_mm_cmp_pd_mask_ngt_uq(__m128d a, __m128d b) {
2579  // CHECK-LABEL: test_mm_cmp_pd_mask_ngt_uq
2580  // CHECK: fcmp ule <2 x double> %{{.*}}, %{{.*}}
2581  return _mm_cmp_pd_mask(a, b, _CMP_NGT_UQ);
2582}
2583
2584__mmask8 test_mm_cmp_pd_mask_false_os(__m128d a, __m128d b) {
2585  // CHECK-LABEL: test_mm_cmp_pd_mask_false_os
2586  // CHECK: fcmp false <2 x double> %{{.*}}, %{{.*}}
2587  return _mm_cmp_pd_mask(a, b, _CMP_FALSE_OS);
2588}
2589
2590__mmask8 test_mm_cmp_pd_mask_neq_os(__m128d a, __m128d b) {
2591  // CHECK-LABEL: test_mm_cmp_pd_mask_neq_os
2592  // CHECK: fcmp one <2 x double> %{{.*}}, %{{.*}}
2593  return _mm_cmp_pd_mask(a, b, _CMP_NEQ_OS);
2594}
2595
2596__mmask8 test_mm_cmp_pd_mask_ge_oq(__m128d a, __m128d b) {
2597  // CHECK-LABEL: test_mm_cmp_pd_mask_ge_oq
2598  // CHECK: fcmp oge <2 x double> %{{.*}}, %{{.*}}
2599  return _mm_cmp_pd_mask(a, b, _CMP_GE_OQ);
2600}
2601
2602__mmask8 test_mm_cmp_pd_mask_gt_oq(__m128d a, __m128d b) {
2603  // CHECK-LABEL: test_mm_cmp_pd_mask_gt_oq
2604  // CHECK: fcmp ogt <2 x double> %{{.*}}, %{{.*}}
2605  return _mm_cmp_pd_mask(a, b, _CMP_GT_OQ);
2606}
2607
2608__mmask8 test_mm_cmp_pd_mask_true_us(__m128d a, __m128d b) {
2609  // CHECK-LABEL: test_mm_cmp_pd_mask_true_us
2610  // CHECK: fcmp true <2 x double> %{{.*}}, %{{.*}}
2611  return _mm_cmp_pd_mask(a, b, _CMP_TRUE_US);
2612}
2613
2614__mmask8 test_mm_mask_cmp_pd_mask_eq_oq(__mmask8 m, __m128d a, __m128d b) {
2615  // CHECK-LABEL: @test_mm_mask_cmp_pd_mask_eq_oq
2616  // CHECK: [[CMP:%.*]] = fcmp oeq <2 x double> %{{.*}}, %{{.*}}
2617  // CHECK: and <2 x i1> [[CMP]], {{.*}}
2618  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_EQ_OQ);
2619}
2620
2621__mmask8 test_mm_mask_cmp_pd_mask_lt_os(__mmask8 m, __m128d a, __m128d b) {
2622  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_lt_os
2623  // CHECK: [[CMP:%.*]] = fcmp olt <2 x double> %{{.*}}, %{{.*}}
2624  // CHECK: and <2 x i1> [[CMP]], {{.*}}
2625  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_LT_OS);
2626}
2627
2628__mmask8 test_mm_mask_cmp_pd_mask_le_os(__mmask8 m, __m128d a, __m128d b) {
2629  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_le_os
2630  // CHECK: [[CMP:%.*]] = fcmp ole <2 x double> %{{.*}}, %{{.*}}
2631  // CHECK: and <2 x i1> [[CMP]], {{.*}}
2632  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_LE_OS);
2633}
2634
2635__mmask8 test_mm_mask_cmp_pd_mask_unord_q(__mmask8 m, __m128d a, __m128d b) {
2636  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_unord_q
2637  // CHECK: [[CMP:%.*]] = fcmp uno <2 x double> %{{.*}}, %{{.*}}
2638  // CHECK: and <2 x i1> [[CMP]], {{.*}}
2639  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_UNORD_Q);
2640}
2641
2642__mmask8 test_mm_mask_cmp_pd_mask_neq_uq(__mmask8 m, __m128d a, __m128d b) {
2643  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_neq_uq
2644  // CHECK: [[CMP:%.*]] = fcmp une <2 x double> %{{.*}}, %{{.*}}
2645  // CHECK: and <2 x i1> [[CMP]], {{.*}}
2646  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_UQ);
2647}
2648
2649__mmask8 test_mm_mask_cmp_pd_mask_nlt_us(__mmask8 m, __m128d a, __m128d b) {
2650  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_nlt_us
2651  // CHECK: [[CMP:%.*]] = fcmp uge <2 x double> %{{.*}}, %{{.*}}
2652  // CHECK: and <2 x i1> [[CMP]], {{.*}}
2653  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NLT_US);
2654}
2655
2656__mmask8 test_mm_mask_cmp_pd_mask_nle_us(__mmask8 m, __m128d a, __m128d b) {
2657  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_nle_us
2658  // CHECK: [[CMP:%.*]] = fcmp ugt <2 x double> %{{.*}}, %{{.*}}
2659  // CHECK: and <2 x i1> [[CMP]], {{.*}}
2660  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NLE_US);
2661}
2662
2663__mmask8 test_mm_mask_cmp_pd_mask_ord_q(__mmask8 m, __m128d a, __m128d b) {
2664  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_ord_q
2665  // CHECK: [[CMP:%.*]] = fcmp ord <2 x double> %{{.*}}, %{{.*}}
2666  // CHECK: and <2 x i1> [[CMP]], {{.*}}
2667  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_ORD_Q);
2668}
2669
2670__mmask8 test_mm_mask_cmp_pd_mask_eq_uq(__mmask8 m, __m128d a, __m128d b) {
2671  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_eq_uq
2672  // CHECK: [[CMP:%.*]] = fcmp ueq <2 x double> %{{.*}}, %{{.*}}
2673  // CHECK: and <2 x i1> [[CMP]], {{.*}}
2674  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_EQ_UQ);
2675}
2676
2677__mmask8 test_mm_mask_cmp_pd_mask_nge_us(__mmask8 m, __m128d a, __m128d b) {
2678  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_nge_us
2679  // CHECK: [[CMP:%.*]] = fcmp ult <2 x double> %{{.*}}, %{{.*}}
2680  // CHECK: and <2 x i1> [[CMP]], {{.*}}
2681  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NGE_US);
2682}
2683
2684__mmask8 test_mm_mask_cmp_pd_mask_ngt_us(__mmask8 m, __m128d a, __m128d b) {
2685  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_ngt_us
2686  // CHECK: [[CMP:%.*]] = fcmp ule <2 x double> %{{.*}}, %{{.*}}
2687  // CHECK: and <2 x i1> [[CMP]], {{.*}}
2688  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NGT_US);
2689}
2690
2691__mmask8 test_mm_mask_cmp_pd_mask_false_oq(__mmask8 m, __m128d a, __m128d b) {
2692  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_false_oq
2693  // CHECK: [[CMP:%.*]] = fcmp false <2 x double> %{{.*}}, %{{.*}}
2694  // CHECK: and <2 x i1> [[CMP]], {{.*}}
2695  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OQ);
2696}
2697
2698__mmask8 test_mm_mask_cmp_pd_mask_neq_oq(__mmask8 m, __m128d a, __m128d b) {
2699  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_neq_oq
2700  // CHECK: [[CMP:%.*]] = fcmp one <2 x double> %{{.*}}, %{{.*}}
2701  // CHECK: and <2 x i1> [[CMP]], {{.*}}
2702  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_OQ);
2703}
2704
2705__mmask8 test_mm_mask_cmp_pd_mask_ge_os(__mmask8 m, __m128d a, __m128d b) {
2706  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_ge_os
2707  // CHECK: [[CMP:%.*]] = fcmp oge <2 x double> %{{.*}}, %{{.*}}
2708  // CHECK: and <2 x i1> [[CMP]], {{.*}}
2709  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_GE_OS);
2710}
2711
2712__mmask8 test_mm_mask_cmp_pd_mask_gt_os(__mmask8 m, __m128d a, __m128d b) {
2713  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_gt_os
2714  // CHECK: [[CMP:%.*]] = fcmp ogt <2 x double> %{{.*}}, %{{.*}}
2715  // CHECK: and <2 x i1> [[CMP]], {{.*}}
2716  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_GT_OS);
2717}
2718
2719__mmask8 test_mm_mask_cmp_pd_mask_true_uq(__mmask8 m, __m128d a, __m128d b) {
2720  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_true_uq
2721  // CHECK: [[CMP:%.*]] = fcmp true <2 x double> %{{.*}}, %{{.*}}
2722  // CHECK: and <2 x i1> [[CMP]], {{.*}}
2723  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_UQ);
2724}
2725
2726__mmask8 test_mm_mask_cmp_pd_mask_eq_os(__mmask8 m, __m128d a, __m128d b) {
2727  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_eq_os
2728  // CHECK: [[CMP:%.*]] = fcmp oeq <2 x double> %{{.*}}, %{{.*}}
2729  // CHECK: and <2 x i1> [[CMP]], {{.*}}
2730  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_EQ_OS);
2731}
2732
2733__mmask8 test_mm_mask_cmp_pd_mask_lt_oq(__mmask8 m, __m128d a, __m128d b) {
2734  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_lt_oq
2735  // CHECK: [[CMP:%.*]] = fcmp olt <2 x double> %{{.*}}, %{{.*}}
2736  // CHECK: and <2 x i1> [[CMP]], {{.*}}
2737  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_LT_OQ);
2738}
2739
2740__mmask8 test_mm_mask_cmp_pd_mask_le_oq(__mmask8 m, __m128d a, __m128d b) {
2741  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_le_oq
2742  // CHECK: [[CMP:%.*]] = fcmp ole <2 x double> %{{.*}}, %{{.*}}
2743  // CHECK: and <2 x i1> [[CMP]], {{.*}}
2744  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_LE_OQ);
2745}
2746
2747__mmask8 test_mm_mask_cmp_pd_mask_unord_s(__mmask8 m, __m128d a, __m128d b) {
2748  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_unord_s
2749  // CHECK: [[CMP:%.*]] = fcmp uno <2 x double> %{{.*}}, %{{.*}}
2750  // CHECK: and <2 x i1> [[CMP]], {{.*}}
2751  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_UNORD_S);
2752}
2753
2754__mmask8 test_mm_mask_cmp_pd_mask_neq_us(__mmask8 m, __m128d a, __m128d b) {
2755  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_neq_us
2756  // CHECK: [[CMP:%.*]] = fcmp une <2 x double> %{{.*}}, %{{.*}}
2757  // CHECK: and <2 x i1> [[CMP]], {{.*}}
2758  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_US);
2759}
2760
2761__mmask8 test_mm_mask_cmp_pd_mask_nlt_uq(__mmask8 m, __m128d a, __m128d b) {
2762  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_nlt_uq
2763  // CHECK: [[CMP:%.*]] = fcmp uge <2 x double> %{{.*}}, %{{.*}}
2764  // CHECK: and <2 x i1> [[CMP]], {{.*}}
2765  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NLT_UQ);
2766}
2767
2768__mmask8 test_mm_mask_cmp_pd_mask_nle_uq(__mmask8 m, __m128d a, __m128d b) {
2769  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_nle_uq
2770  // CHECK: [[CMP:%.*]] = fcmp ugt <2 x double> %{{.*}}, %{{.*}}
2771  // CHECK: and <2 x i1> [[CMP]], {{.*}}
2772  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NLE_UQ);
2773}
2774
2775__mmask8 test_mm_mask_cmp_pd_mask_ord_s(__mmask8 m, __m128d a, __m128d b) {
2776  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_ord_s
2777  // CHECK: [[CMP:%.*]] = fcmp ord <2 x double> %{{.*}}, %{{.*}}
2778  // CHECK: and <2 x i1> [[CMP]], {{.*}}
2779  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_ORD_S);
2780}
2781
2782__mmask8 test_mm_mask_cmp_pd_mask_eq_us(__mmask8 m, __m128d a, __m128d b) {
2783  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_eq_us
2784  // CHECK: [[CMP:%.*]] = fcmp ueq <2 x double> %{{.*}}, %{{.*}}
2785  // CHECK: and <2 x i1> [[CMP]], {{.*}}
2786  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_EQ_US);
2787}
2788
2789__mmask8 test_mm_mask_cmp_pd_mask_nge_uq(__mmask8 m, __m128d a, __m128d b) {
2790  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_nge_uq
2791  // CHECK: [[CMP:%.*]] = fcmp ult <2 x double> %{{.*}}, %{{.*}}
2792  // CHECK: and <2 x i1> [[CMP]], {{.*}}
2793  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NGE_UQ);
2794}
2795
2796__mmask8 test_mm_mask_cmp_pd_mask_ngt_uq(__mmask8 m, __m128d a, __m128d b) {
2797  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_ngt_uq
2798  // CHECK: [[CMP:%.*]] = fcmp ule <2 x double> %{{.*}}, %{{.*}}
2799  // CHECK: and <2 x i1> [[CMP]], {{.*}}
2800  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NGT_UQ);
2801}
2802
2803__mmask8 test_mm_mask_cmp_pd_mask_false_os(__mmask8 m, __m128d a, __m128d b) {
2804  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_false_os
2805  // CHECK: [[CMP:%.*]] = fcmp false <2 x double> %{{.*}}, %{{.*}}
2806  // CHECK: and <2 x i1> [[CMP]], {{.*}}
2807  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OS);
2808}
2809
2810__mmask8 test_mm_mask_cmp_pd_mask_neq_os(__mmask8 m, __m128d a, __m128d b) {
2811  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_neq_os
2812  // CHECK: [[CMP:%.*]] = fcmp one <2 x double> %{{.*}}, %{{.*}}
2813  // CHECK: and <2 x i1> [[CMP]], {{.*}}
2814  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_OS);
2815}
2816
2817__mmask8 test_mm_mask_cmp_pd_mask_ge_oq(__mmask8 m, __m128d a, __m128d b) {
2818  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_ge_oq
2819  // CHECK: [[CMP:%.*]] = fcmp oge <2 x double> %{{.*}}, %{{.*}}
2820  // CHECK: and <2 x i1> [[CMP]], {{.*}}
2821  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_GE_OQ);
2822}
2823
2824__mmask8 test_mm_mask_cmp_pd_mask_gt_oq(__mmask8 m, __m128d a, __m128d b) {
2825  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_gt_oq
2826  // CHECK: [[CMP:%.*]] = fcmp ogt <2 x double> %{{.*}}, %{{.*}}
2827  // CHECK: and <2 x i1> [[CMP]], {{.*}}
2828  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_GT_OQ);
2829}
2830
2831__mmask8 test_mm_mask_cmp_pd_mask_true_us(__mmask8 m, __m128d a, __m128d b) {
2832  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_true_us
2833  // CHECK: [[CMP:%.*]] = fcmp true <2 x double> %{{.*}}, %{{.*}}
2834  // CHECK: and <2 x i1> [[CMP]], {{.*}}
2835  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_US);
2836}
2837
2838__m128d test_mm_mask_fmadd_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C) {
2839  // CHECK-LABEL: @test_mm_mask_fmadd_pd
2840  // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
2841  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2842  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
2843  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
2844  return _mm_mask_fmadd_pd(__A, __U, __B, __C);
2845}
2846
2847__m128d test_mm_mask_fmsub_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C) {
2848  // CHECK-LABEL: @test_mm_mask_fmsub_pd
2849  // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2850  // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
2851  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2852  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
2853  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
2854  return _mm_mask_fmsub_pd(__A, __U, __B, __C);
2855}
2856
2857__m128d test_mm_mask3_fmadd_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U) {
2858  // CHECK-LABEL: @test_mm_mask3_fmadd_pd
2859  // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
2860  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2861  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
2862  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
2863  return _mm_mask3_fmadd_pd(__A, __B, __C, __U);
2864}
2865
2866__m128d test_mm_mask3_fnmadd_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U) {
2867  // CHECK-LABEL: @test_mm_mask3_fnmadd_pd
2868  // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2869  // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
2870  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2871  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
2872  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
2873  return _mm_mask3_fnmadd_pd(__A, __B, __C, __U);
2874}
2875
2876__m128d test_mm_maskz_fmadd_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C) {
2877  // CHECK-LABEL: @test_mm_maskz_fmadd_pd
2878  // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
2879  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2880  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
2881  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
2882  return _mm_maskz_fmadd_pd(__U, __A, __B, __C);
2883}
2884
2885__m128d test_mm_maskz_fmsub_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C) {
2886  // CHECK-LABEL: @test_mm_maskz_fmsub_pd
2887  // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2888  // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
2889  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2890  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
2891  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
2892  return _mm_maskz_fmsub_pd(__U, __A, __B, __C);
2893}
2894
2895__m128d test_mm_maskz_fnmadd_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C) {
2896  // CHECK-LABEL: @test_mm_maskz_fnmadd_pd
2897  // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2898  // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
2899  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2900  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
2901  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
2902  return _mm_maskz_fnmadd_pd(__U, __A, __B, __C);
2903}
2904
2905__m128d test_mm_maskz_fnmsub_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C) {
2906  // CHECK-LABEL: @test_mm_maskz_fnmsub_pd
2907  // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2908  // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2909  // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
2910  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2911  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
2912  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
2913  return _mm_maskz_fnmsub_pd(__U, __A, __B, __C);
2914}
2915
2916__m256d test_mm256_mask_fmadd_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C) {
2917  // CHECK-LABEL: @test_mm256_mask_fmadd_pd
2918  // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
2919  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2920  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2921  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2922  return _mm256_mask_fmadd_pd(__A, __U, __B, __C);
2923}
2924
2925__m256d test_mm256_mask_fmsub_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C) {
2926  // CHECK-LABEL: @test_mm256_mask_fmsub_pd
2927  // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2928  // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
2929  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2930  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2931  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2932  return _mm256_mask_fmsub_pd(__A, __U, __B, __C);
2933}
2934
2935__m256d test_mm256_mask3_fmadd_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U) {
2936  // CHECK-LABEL: @test_mm256_mask3_fmadd_pd
2937  // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
2938  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2939  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2940  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2941  return _mm256_mask3_fmadd_pd(__A, __B, __C, __U);
2942}
2943
2944__m256d test_mm256_mask3_fnmadd_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U) {
2945  // CHECK-LABEL: @test_mm256_mask3_fnmadd_pd
2946  // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2947  // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
2948  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2949  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2950  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2951  return _mm256_mask3_fnmadd_pd(__A, __B, __C, __U);
2952}
2953
2954__m256d test_mm256_maskz_fmadd_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C) {
2955  // CHECK-LABEL: @test_mm256_maskz_fmadd_pd
2956  // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
2957  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2958  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2959  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2960  return _mm256_maskz_fmadd_pd(__U, __A, __B, __C);
2961}
2962
2963__m256d test_mm256_maskz_fmsub_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C) {
2964  // CHECK-LABEL: @test_mm256_maskz_fmsub_pd
2965  // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2966  // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
2967  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2968  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2969  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2970  return _mm256_maskz_fmsub_pd(__U, __A, __B, __C);
2971}
2972
2973__m256d test_mm256_maskz_fnmadd_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C) {
2974  // CHECK-LABEL: @test_mm256_maskz_fnmadd_pd
2975  // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2976  // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
2977  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2978  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2979  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2980  return _mm256_maskz_fnmadd_pd(__U, __A, __B, __C);
2981}
2982
2983__m256d test_mm256_maskz_fnmsub_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C) {
2984  // CHECK-LABEL: @test_mm256_maskz_fnmsub_pd
2985  // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2986  // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2987  // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
2988  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2989  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2990  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2991  return _mm256_maskz_fnmsub_pd(__U, __A, __B, __C);
2992}
2993
2994__m128 test_mm_mask_fmadd_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C) {
2995  // CHECK-LABEL: @test_mm_mask_fmadd_ps
2996  // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
2997  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2998  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2999  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3000  return _mm_mask_fmadd_ps(__A, __U, __B, __C);
3001}
3002
3003__m128 test_mm_mask_fmsub_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C) {
3004  // CHECK-LABEL: @test_mm_mask_fmsub_ps
3005  // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3006  // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3007  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3008  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3009  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3010  return _mm_mask_fmsub_ps(__A, __U, __B, __C);
3011}
3012
3013__m128 test_mm_mask3_fmadd_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U) {
3014  // CHECK-LABEL: @test_mm_mask3_fmadd_ps
3015  // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3016  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3017  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3018  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3019  return _mm_mask3_fmadd_ps(__A, __B, __C, __U);
3020}
3021
3022__m128 test_mm_mask3_fnmadd_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U) {
3023  // CHECK-LABEL: @test_mm_mask3_fnmadd_ps
3024  // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3025  // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3026  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3027  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3028  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3029  return _mm_mask3_fnmadd_ps(__A, __B, __C, __U);
3030}
3031
3032__m128 test_mm_maskz_fmadd_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C) {
3033  // CHECK-LABEL: @test_mm_maskz_fmadd_ps
3034  // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3035  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3036  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3037  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3038  return _mm_maskz_fmadd_ps(__U, __A, __B, __C);
3039}
3040
3041__m128 test_mm_maskz_fmsub_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C) {
3042  // CHECK-LABEL: @test_mm_maskz_fmsub_ps
3043  // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3044  // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3045  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3046  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3047  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3048  return _mm_maskz_fmsub_ps(__U, __A, __B, __C);
3049}
3050
3051__m128 test_mm_maskz_fnmadd_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C) {
3052  // CHECK-LABEL: @test_mm_maskz_fnmadd_ps
3053  // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3054  // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3055  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3056  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3057  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3058  return _mm_maskz_fnmadd_ps(__U, __A, __B, __C);
3059}
3060
3061__m128 test_mm_maskz_fnmsub_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C) {
3062  // CHECK-LABEL: @test_mm_maskz_fnmsub_ps
3063  // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3064  // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3065  // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3066  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3067  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3068  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3069  return _mm_maskz_fnmsub_ps(__U, __A, __B, __C);
3070}
3071
3072__m256 test_mm256_mask_fmadd_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C) {
3073  // CHECK-LABEL: @test_mm256_mask_fmadd_ps
3074  // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3075  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3076  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3077  return _mm256_mask_fmadd_ps(__A, __U, __B, __C);
3078}
3079
3080__m256 test_mm256_mask_fmsub_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C) {
3081  // CHECK-LABEL: @test_mm256_mask_fmsub_ps
3082  // CHECK: fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3083  // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3084  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3085  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3086  return _mm256_mask_fmsub_ps(__A, __U, __B, __C);
3087}
3088
3089__m256 test_mm256_mask3_fmadd_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U) {
3090  // CHECK-LABEL: @test_mm256_mask3_fmadd_ps
3091  // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3092  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3093  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3094  return _mm256_mask3_fmadd_ps(__A, __B, __C, __U);
3095}
3096
3097__m256 test_mm256_mask3_fnmadd_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U) {
3098  // CHECK-LABEL: @test_mm256_mask3_fnmadd_ps
3099  // CHECK: fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3100  // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3101  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3102  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3103  return _mm256_mask3_fnmadd_ps(__A, __B, __C, __U);
3104}
3105
3106__m256 test_mm256_maskz_fmadd_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C) {
3107  // CHECK-LABEL: @test_mm256_maskz_fmadd_ps
3108  // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3109  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3110  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3111  return _mm256_maskz_fmadd_ps(__U, __A, __B, __C);
3112}
3113
3114__m256 test_mm256_maskz_fmsub_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C) {
3115  // CHECK-LABEL: @test_mm256_maskz_fmsub_ps
3116  // CHECK: fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3117  // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3118  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3119  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3120  return _mm256_maskz_fmsub_ps(__U, __A, __B, __C);
3121}
3122
3123__m256 test_mm256_maskz_fnmadd_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C) {
3124  // CHECK-LABEL: @test_mm256_maskz_fnmadd_ps
3125  // CHECK: fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3126  // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3127  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3128  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3129  return _mm256_maskz_fnmadd_ps(__U, __A, __B, __C);
3130}
3131
3132__m256 test_mm256_maskz_fnmsub_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C) {
3133  // CHECK-LABEL: @test_mm256_maskz_fnmsub_ps
3134  // CHECK: fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3135  // CHECK: fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3136  // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3137  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3138  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3139  return _mm256_maskz_fnmsub_ps(__U, __A, __B, __C);
3140}
3141
3142__m128d test_mm_mask_fmaddsub_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C) {
3143  // CHECK-LABEL: @test_mm_mask_fmaddsub_pd
3144  // CHECK: [[ADD:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
3145  // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3146  // CHECK: [[SUB:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> [[NEG]]
3147  // CHECK: shufflevector <2 x double> [[SUB]], <2 x double> [[ADD]], <2 x i32> <i32 0, i32 3>
3148  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3149  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
3150  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3151  return _mm_mask_fmaddsub_pd(__A, __U, __B, __C);
3152}
3153
3154__m128d test_mm_mask_fmsubadd_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C) {
3155  // CHECK-LABEL: @test_mm_mask_fmsubadd_pd
3156  // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3157  // CHECK: [[SUB:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> [[NEG]]
3158  // CHECK: [[ADD:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
3159  // CHECK: shufflevector <2 x double> [[ADD]], <2 x double> [[SUB]], <2 x i32> <i32 0, i32 3>
3160  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3161  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
3162  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3163  return _mm_mask_fmsubadd_pd(__A, __U, __B, __C);
3164}
3165
3166__m128d test_mm_mask3_fmaddsub_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U) {
3167  // CHECK-LABEL: @test_mm_mask3_fmaddsub_pd
3168  // CHECK: [[ADD:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
3169  // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3170  // CHECK: [[SUB:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> [[NEG]]
3171  // CHECK: shufflevector <2 x double> [[SUB]], <2 x double> [[ADD]], <2 x i32> <i32 0, i32 3>
3172  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3173  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
3174  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3175  return _mm_mask3_fmaddsub_pd(__A, __B, __C, __U);
3176}
3177
3178__m128d test_mm_maskz_fmaddsub_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C) {
3179  // CHECK-LABEL: @test_mm_maskz_fmaddsub_pd
3180  // CHECK: [[ADD:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
3181  // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3182  // CHECK: [[SUB:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> [[NEG]]
3183  // CHECK: shufflevector <2 x double> [[SUB]], <2 x double> [[ADD]], <2 x i32> <i32 0, i32 3>
3184  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3185  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
3186  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3187  return _mm_maskz_fmaddsub_pd(__U, __A, __B, __C);
3188}
3189
3190__m128d test_mm_maskz_fmsubadd_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C) {
3191  // CHECK-LABEL: @test_mm_maskz_fmsubadd_pd
3192  // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3193  // CHECK: [[SUB:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> [[NEG]]
3194  // CHECK: [[ADD:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
3195  // CHECK: shufflevector <2 x double> [[ADD]], <2 x double> [[SUB]], <2 x i32> <i32 0, i32 3>
3196  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3197  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
3198  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3199  return _mm_maskz_fmsubadd_pd(__U, __A, __B, __C);
3200}
3201
3202__m256d test_mm256_mask_fmaddsub_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C) {
3203  // CHECK-LABEL: @test_mm256_mask_fmaddsub_pd
3204  // CHECK: [[ADD:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3205  // CHECK: [[NEG:%.+]] = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3206  // CHECK: [[SUB:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3207  // CHECK: shufflevector <4 x double> [[SUB]], <4 x double> [[ADD]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3208  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3209  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3210  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3211  return _mm256_mask_fmaddsub_pd(__A, __U, __B, __C);
3212}
3213
3214__m256d test_mm256_mask_fmsubadd_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C) {
3215  // CHECK-LABEL: @test_mm256_mask_fmsubadd_pd
3216  // CHECK: [[NEG:%.+]] = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3217  // CHECK: [[SUB:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> [[NEG]]
3218  // CHECK: [[ADD:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3219  // CHECK: shufflevector <4 x double> [[ADD]], <4 x double> [[SUB]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3220  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3221  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3222  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3223  return _mm256_mask_fmsubadd_pd(__A, __U, __B, __C);
3224}
3225
3226__m256d test_mm256_mask3_fmaddsub_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U) {
3227  // CHECK-LABEL: @test_mm256_mask3_fmaddsub_pd
3228  // CHECK: [[ADD:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3229  // CHECK: [[NEG:%.+]] = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3230  // CHECK: [[SUB:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3231  // CHECK: shufflevector <4 x double> [[SUB]], <4 x double> [[ADD]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3232  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3233  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3234  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3235  return _mm256_mask3_fmaddsub_pd(__A, __B, __C, __U);
3236}
3237
3238__m256d test_mm256_maskz_fmaddsub_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C) {
3239  // CHECK-LABEL: @test_mm256_maskz_fmaddsub_pd
3240  // CHECK: [[ADD:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3241  // CHECK: [[NEG:%.+]] = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3242  // CHECK: [[SUB:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3243  // CHECK: shufflevector <4 x double> [[SUB]], <4 x double> [[ADD]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3244  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3245  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3246  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3247  return _mm256_maskz_fmaddsub_pd(__U, __A, __B, __C);
3248}
3249
3250__m256d test_mm256_maskz_fmsubadd_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C) {
3251  // CHECK-LABEL: @test_mm256_maskz_fmsubadd_pd
3252  // CHECK: [[NEG:%.+]] = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3253  // CHECK: [[SUB:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> [[NEG]]
3254  // CHECK: [[ADD:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3255  // CHECK: shufflevector <4 x double> [[ADD]], <4 x double> [[SUB]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3256  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3257  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3258  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3259  return _mm256_maskz_fmsubadd_pd(__U, __A, __B, __C);
3260}
3261
3262__m128 test_mm_mask_fmaddsub_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C) {
3263  // CHECK-LABEL: @test_mm_mask_fmaddsub_ps
3264  // CHECK: [[ADD:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3265  // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.+}}
3266  // CHECK: [[SUB:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> [[NEG]]
3267  // CHECK: shufflevector <4 x float> [[SUB]], <4 x float> [[ADD]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3268  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3269  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3270  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3271  return _mm_mask_fmaddsub_ps(__A, __U, __B, __C);
3272}
3273
3274__m128 test_mm_mask_fmsubadd_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C) {
3275  // CHECK-LABEL: @test_mm_mask_fmsubadd_ps
3276  // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.+}}
3277  // CHECK: [[SUB:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> [[NEG]]
3278  // CHECK: [[ADD:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3279  // CHECK: shufflevector <4 x float> [[ADD]], <4 x float> [[SUB]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3280  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3281  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3282  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3283  return _mm_mask_fmsubadd_ps(__A, __U, __B, __C);
3284}
3285
3286__m128 test_mm_mask3_fmaddsub_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U) {
3287  // CHECK-LABEL: @test_mm_mask3_fmaddsub_ps
3288  // CHECK: [[ADD:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3289  // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.+}}
3290  // CHECK: [[SUB:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> [[NEG]]
3291  // CHECK: shufflevector <4 x float> [[SUB]], <4 x float> [[ADD]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3292  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3293  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3294  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3295  return _mm_mask3_fmaddsub_ps(__A, __B, __C, __U);
3296}
3297
3298__m128 test_mm_maskz_fmaddsub_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C) {
3299  // CHECK-LABEL: @test_mm_maskz_fmaddsub_ps
3300  // CHECK: [[ADD:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3301  // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.+}}
3302  // CHECK: [[SUB:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> [[NEG]]
3303  // CHECK: shufflevector <4 x float> [[SUB]], <4 x float> [[ADD]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3304  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3305  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3306  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3307  return _mm_maskz_fmaddsub_ps(__U, __A, __B, __C);
3308}
3309
3310__m128 test_mm_maskz_fmsubadd_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C) {
3311  // CHECK-LABEL: @test_mm_maskz_fmsubadd_ps
3312  // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.+}}
3313  // CHECK: [[SUB:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> [[NEG]]
3314  // CHECK: [[ADD:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3315  // CHECK: shufflevector <4 x float> [[ADD]], <4 x float> [[SUB]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3316  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3317  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3318  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3319  return _mm_maskz_fmsubadd_ps(__U, __A, __B, __C);
3320}
3321
3322__m256 test_mm256_mask_fmaddsub_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C) {
3323  // CHECK-LABEL: @test_mm256_mask_fmaddsub_ps
3324  // CHECK: [[ADD:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3325  // CHECK: [[NEG:%.+]] = fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3326  // CHECK: [[SUB:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> [[NEG]]
3327  // CHECK: shufflevector <8 x float> [[SUB]], <8 x float> [[ADD]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
3328  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3329  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3330  return _mm256_mask_fmaddsub_ps(__A, __U, __B, __C);
3331}
3332
3333__m256 test_mm256_mask_fmsubadd_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C) {
3334  // CHECK-LABEL: @test_mm256_mask_fmsubadd_ps
3335  // CHECK: [[NEG:%.+]] = fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3336  // CHECK: [[SUB:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> [[NEG]]
3337  // CHECK: [[ADD:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3338  // CHECK: shufflevector <8 x float> [[ADD]], <8 x float> [[SUB]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
3339  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3340  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3341  return _mm256_mask_fmsubadd_ps(__A, __U, __B, __C);
3342}
3343
3344__m256 test_mm256_mask3_fmaddsub_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U) {
3345  // CHECK-LABEL: @test_mm256_mask3_fmaddsub_ps
3346  // CHECK: [[ADD:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3347  // CHECK: [[NEG:%.+]] = fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3348  // CHECK: [[SUB:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> [[NEG]]
3349  // CHECK: shufflevector <8 x float> [[SUB]], <8 x float> [[ADD]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
3350  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3351  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3352  return _mm256_mask3_fmaddsub_ps(__A, __B, __C, __U);
3353}
3354
3355__m256 test_mm256_maskz_fmaddsub_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C) {
3356  // CHECK-LABEL: @test_mm256_maskz_fmaddsub_ps
3357  // CHECK: [[ADD:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3358  // CHECK: [[NEG:%.+]] = fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3359  // CHECK: [[SUB:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> [[NEG]]
3360  // CHECK: shufflevector <8 x float> [[SUB]], <8 x float> [[ADD]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
3361  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3362  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3363  return _mm256_maskz_fmaddsub_ps(__U, __A, __B, __C);
3364}
3365
3366__m256 test_mm256_maskz_fmsubadd_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C) {
3367  // CHECK-LABEL: @test_mm256_maskz_fmsubadd_ps
3368  // CHECK: [[NEG:%.+]] = fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3369  // CHECK: [[SUB:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> [[NEG]]
3370  // CHECK: [[ADD:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3371  // CHECK: shufflevector <8 x float> [[ADD]], <8 x float> [[SUB]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
3372  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3373  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3374  return _mm256_maskz_fmsubadd_ps(__U, __A, __B, __C);
3375}
3376
3377__m128d test_mm_mask3_fmsub_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U) {
3378  // CHECK-LABEL: @test_mm_mask3_fmsub_pd
3379  // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3380  // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
3381  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3382  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
3383  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3384  return _mm_mask3_fmsub_pd(__A, __B, __C, __U);
3385}
3386
3387__m256d test_mm256_mask3_fmsub_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U) {
3388  // CHECK-LABEL: @test_mm256_mask3_fmsub_pd
3389  // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3390  // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3391  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3392  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3393  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3394  return _mm256_mask3_fmsub_pd(__A, __B, __C, __U);
3395}
3396
3397__m128 test_mm_mask3_fmsub_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U) {
3398  // CHECK-LABEL: @test_mm_mask3_fmsub_ps
3399  // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3400  // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3401  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3402  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3403  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3404  return _mm_mask3_fmsub_ps(__A, __B, __C, __U);
3405}
3406
3407__m256 test_mm256_mask3_fmsub_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U) {
3408  // CHECK-LABEL: @test_mm256_mask3_fmsub_ps
3409  // CHECK: fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3410  // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3411  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3412  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3413  return _mm256_mask3_fmsub_ps(__A, __B, __C, __U);
3414}
3415
3416__m128d test_mm_mask3_fmsubadd_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U) {
3417  // CHECK-LABEL: @test_mm_mask3_fmsubadd_pd
3418  // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3419  // CHECK: [[SUB:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> [[NEG]]
3420  // CHECK: [[ADD:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
3421  // CHECK: shufflevector <2 x double> [[ADD]], <2 x double> [[SUB]], <2 x i32> <i32 0, i32 3>
3422  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3423  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
3424  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3425  return _mm_mask3_fmsubadd_pd(__A, __B, __C, __U);
3426}
3427
3428__m256d test_mm256_mask3_fmsubadd_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U) {
3429  // CHECK-LABEL: @test_mm256_mask3_fmsubadd_pd
3430  // CHECK: [[NEG:%.+]] = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3431  // CHECK: [[SUB:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> [[NEG]]
3432  // CHECK: [[ADD:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3433  // CHECK: shufflevector <4 x double> [[ADD]], <4 x double> [[SUB]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3434  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3435  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3436  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3437  return _mm256_mask3_fmsubadd_pd(__A, __B, __C, __U);
3438}
3439
3440__m128 test_mm_mask3_fmsubadd_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U) {
3441  // CHECK-LABEL: @test_mm_mask3_fmsubadd_ps
3442  // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.+}}
3443  // CHECK: [[SUB:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> [[NEG]]
3444  // CHECK: [[ADD:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3445  // CHECK: shufflevector <4 x float> [[ADD]], <4 x float> [[SUB]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3446  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3447  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3448  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3449  return _mm_mask3_fmsubadd_ps(__A, __B, __C, __U);
3450}
3451
3452__m256 test_mm256_mask3_fmsubadd_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U) {
3453  // CHECK-LABEL: @test_mm256_mask3_fmsubadd_ps
3454  // CHECK: [[NEG:%.+]] = fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3455  // CHECK: [[SUB:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> [[NEG]]
3456  // CHECK: [[ADD:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3457  // CHECK: shufflevector <8 x float> [[ADD]], <8 x float> [[SUB]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
3458  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3459  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3460  return _mm256_mask3_fmsubadd_ps(__A, __B, __C, __U);
3461}
3462
3463__m128d test_mm_mask_fnmadd_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C) {
3464  // CHECK-LABEL: @test_mm_mask_fnmadd_pd
3465  // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3466  // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
3467  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3468  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
3469  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3470  return _mm_mask_fnmadd_pd(__A, __U, __B, __C);
3471}
3472
3473__m256d test_mm256_mask_fnmadd_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C) {
3474  // CHECK-LABEL: @test_mm256_mask_fnmadd_pd
3475  // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3476  // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3477  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3478  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3479  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3480  return _mm256_mask_fnmadd_pd(__A, __U, __B, __C);
3481}
3482
3483__m128 test_mm_mask_fnmadd_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C) {
3484  // CHECK-LABEL: @test_mm_mask_fnmadd_ps
3485  // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3486  // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3487  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3488  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3489  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3490  return _mm_mask_fnmadd_ps(__A, __U, __B, __C);
3491}
3492
3493__m256 test_mm256_mask_fnmadd_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C) {
3494  // CHECK-LABEL: @test_mm256_mask_fnmadd_ps
3495  // CHECK: fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3496  // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3497  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3498  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3499  return _mm256_mask_fnmadd_ps(__A, __U, __B, __C);
3500}
3501
3502__m128d test_mm_mask_fnmsub_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C) {
3503  // CHECK-LABEL: @test_mm_mask_fnmsub_pd
3504  // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3505  // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3506  // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
3507  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3508  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
3509  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3510  return _mm_mask_fnmsub_pd(__A, __U, __B, __C);
3511}
3512
3513__m128d test_mm_mask3_fnmsub_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U) {
3514  // CHECK-LABEL: @test_mm_mask3_fnmsub_pd
3515  // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3516  // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3517  // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
3518  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3519  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
3520  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3521  return _mm_mask3_fnmsub_pd(__A, __B, __C, __U);
3522}
3523
3524__m256d test_mm256_mask_fnmsub_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C) {
3525  // CHECK-LABEL: @test_mm256_mask_fnmsub_pd
3526  // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3527  // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3528  // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3529  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3530  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3531  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3532  return _mm256_mask_fnmsub_pd(__A, __U, __B, __C);
3533}
3534
3535__m256d test_mm256_mask3_fnmsub_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U) {
3536  // CHECK-LABEL: @test_mm256_mask3_fnmsub_pd
3537  // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3538  // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3539  // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3540  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3541  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3542  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3543  return _mm256_mask3_fnmsub_pd(__A, __B, __C, __U);
3544}
3545
3546__m128 test_mm_mask_fnmsub_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C) {
3547  // CHECK-LABEL: @test_mm_mask_fnmsub_ps
3548  // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3549  // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3550  // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3551  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3552  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3553  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3554  return _mm_mask_fnmsub_ps(__A, __U, __B, __C);
3555}
3556
3557__m128 test_mm_mask3_fnmsub_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U) {
3558  // CHECK-LABEL: @test_mm_mask3_fnmsub_ps
3559  // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3560  // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3561  // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3562  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3563  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3564  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3565  return _mm_mask3_fnmsub_ps(__A, __B, __C, __U);
3566}
3567
3568__m256 test_mm256_mask_fnmsub_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C) {
3569  // CHECK-LABEL: @test_mm256_mask_fnmsub_ps
3570  // CHECK: fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3571  // CHECK: fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3572  // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3573  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3574  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3575  return _mm256_mask_fnmsub_ps(__A, __U, __B, __C);
3576}
3577
3578__m256 test_mm256_mask3_fnmsub_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U) {
3579  // CHECK-LABEL: @test_mm256_mask3_fnmsub_ps
3580  // CHECK: fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3581  // CHECK: fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3582  // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3583  // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3584  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3585  return _mm256_mask3_fnmsub_ps(__A, __B, __C, __U);
3586}
3587
3588__m128d test_mm_mask_add_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3589  // CHECK-LABEL: @test_mm_mask_add_pd
3590  // CHECK: fadd <2 x double> %{{.*}}, %{{.*}}
3591  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3592  return _mm_mask_add_pd(__W,__U,__A,__B); 
3593}
3594__m128d test_mm_maskz_add_pd(__mmask8 __U, __m128d __A, __m128d __B) {
3595  // CHECK-LABEL: @test_mm_maskz_add_pd
3596  // CHECK: fadd <2 x double> %{{.*}}, %{{.*}}
3597  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3598  return _mm_maskz_add_pd(__U,__A,__B); 
3599}
3600__m256d test_mm256_mask_add_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
3601  // CHECK-LABEL: @test_mm256_mask_add_pd
3602  // CHECK: fadd <4 x double> %{{.*}}, %{{.*}}
3603  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3604  return _mm256_mask_add_pd(__W,__U,__A,__B); 
3605}
3606__m256d test_mm256_maskz_add_pd(__mmask8 __U, __m256d __A, __m256d __B) {
3607  // CHECK-LABEL: @test_mm256_maskz_add_pd
3608  // CHECK: fadd <4 x double> %{{.*}}, %{{.*}}
3609  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3610  return _mm256_maskz_add_pd(__U,__A,__B); 
3611}
3612__m128 test_mm_mask_add_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3613  // CHECK-LABEL: @test_mm_mask_add_ps
3614  // CHECK: fadd <4 x float> %{{.*}}, %{{.*}}
3615  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3616  return _mm_mask_add_ps(__W,__U,__A,__B); 
3617}
3618__m128 test_mm_maskz_add_ps(__mmask8 __U, __m128 __A, __m128 __B) {
3619  // CHECK-LABEL: @test_mm_maskz_add_ps
3620  // CHECK: fadd <4 x float> %{{.*}}, %{{.*}}
3621  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3622  return _mm_maskz_add_ps(__U,__A,__B); 
3623}
3624__m256 test_mm256_mask_add_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
3625  // CHECK-LABEL: @test_mm256_mask_add_ps
3626  // CHECK: fadd <8 x float> %{{.*}}, %{{.*}}
3627  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3628  return _mm256_mask_add_ps(__W,__U,__A,__B); 
3629}
3630__m256 test_mm256_maskz_add_ps(__mmask8 __U, __m256 __A, __m256 __B) {
3631  // CHECK-LABEL: @test_mm256_maskz_add_ps
3632  // CHECK: fadd <8 x float> %{{.*}}, %{{.*}}
3633  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3634  return _mm256_maskz_add_ps(__U,__A,__B); 
3635}
3636__m128i test_mm_mask_blend_epi32(__mmask8 __U, __m128i __A, __m128i __W) {
3637  // CHECK-LABEL: @test_mm_mask_blend_epi32
3638  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
3639  return _mm_mask_blend_epi32(__U,__A,__W); 
3640}
3641__m256i test_mm256_mask_blend_epi32(__mmask8 __U, __m256i __A, __m256i __W) {
3642  // CHECK-LABEL: @test_mm256_mask_blend_epi32
3643  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
3644  return _mm256_mask_blend_epi32(__U,__A,__W); 
3645}
3646__m128d test_mm_mask_blend_pd(__mmask8 __U, __m128d __A, __m128d __W) {
3647  // CHECK-LABEL: @test_mm_mask_blend_pd
3648  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3649  return _mm_mask_blend_pd(__U,__A,__W); 
3650}
3651__m256d test_mm256_mask_blend_pd(__mmask8 __U, __m256d __A, __m256d __W) {
3652  // CHECK-LABEL: @test_mm256_mask_blend_pd
3653  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3654  return _mm256_mask_blend_pd(__U,__A,__W); 
3655}
3656__m128 test_mm_mask_blend_ps(__mmask8 __U, __m128 __A, __m128 __W) {
3657  // CHECK-LABEL: @test_mm_mask_blend_ps
3658  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3659  return _mm_mask_blend_ps(__U,__A,__W); 
3660}
3661__m256 test_mm256_mask_blend_ps(__mmask8 __U, __m256 __A, __m256 __W) {
3662  // CHECK-LABEL: @test_mm256_mask_blend_ps
3663  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3664  return _mm256_mask_blend_ps(__U,__A,__W); 
3665}
3666__m128i test_mm_mask_blend_epi64(__mmask8 __U, __m128i __A, __m128i __W) {
3667  // CHECK-LABEL: @test_mm_mask_blend_epi64
3668  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
3669  return _mm_mask_blend_epi64(__U,__A,__W); 
3670}
3671__m256i test_mm256_mask_blend_epi64(__mmask8 __U, __m256i __A, __m256i __W) {
3672  // CHECK-LABEL: @test_mm256_mask_blend_epi64
3673  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
3674  return _mm256_mask_blend_epi64(__U,__A,__W); 
3675}
3676__m128d test_mm_mask_compress_pd(__m128d __W, __mmask8 __U, __m128d __A) {
3677  // CHECK-LABEL: @test_mm_mask_compress_pd
3678  // CHECK: @llvm.x86.avx512.mask.compress
3679  return _mm_mask_compress_pd(__W,__U,__A); 
3680}
3681__m128d test_mm_maskz_compress_pd(__mmask8 __U, __m128d __A) {
3682  // CHECK-LABEL: @test_mm_maskz_compress_pd
3683  // CHECK: @llvm.x86.avx512.mask.compress
3684  return _mm_maskz_compress_pd(__U,__A); 
3685}
3686__m256d test_mm256_mask_compress_pd(__m256d __W, __mmask8 __U, __m256d __A) {
3687  // CHECK-LABEL: @test_mm256_mask_compress_pd
3688  // CHECK: @llvm.x86.avx512.mask.compress
3689  return _mm256_mask_compress_pd(__W,__U,__A); 
3690}
3691__m256d test_mm256_maskz_compress_pd(__mmask8 __U, __m256d __A) {
3692  // CHECK-LABEL: @test_mm256_maskz_compress_pd
3693  // CHECK: @llvm.x86.avx512.mask.compress
3694  return _mm256_maskz_compress_pd(__U,__A); 
3695}
3696__m128i test_mm_mask_compress_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
3697  // CHECK-LABEL: @test_mm_mask_compress_epi64
3698  // CHECK: @llvm.x86.avx512.mask.compress
3699  return _mm_mask_compress_epi64(__W,__U,__A); 
3700}
3701__m128i test_mm_maskz_compress_epi64(__mmask8 __U, __m128i __A) {
3702  // CHECK-LABEL: @test_mm_maskz_compress_epi64
3703  // CHECK: @llvm.x86.avx512.mask.compress
3704  return _mm_maskz_compress_epi64(__U,__A); 
3705}
3706__m256i test_mm256_mask_compress_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
3707  // CHECK-LABEL: @test_mm256_mask_compress_epi64
3708  // CHECK: @llvm.x86.avx512.mask.compress
3709  return _mm256_mask_compress_epi64(__W,__U,__A); 
3710}
3711__m256i test_mm256_maskz_compress_epi64(__mmask8 __U, __m256i __A) {
3712  // CHECK-LABEL: @test_mm256_maskz_compress_epi64
3713  // CHECK: @llvm.x86.avx512.mask.compress
3714  return _mm256_maskz_compress_epi64(__U,__A); 
3715}
3716__m128 test_mm_mask_compress_ps(__m128 __W, __mmask8 __U, __m128 __A) {
3717  // CHECK-LABEL: @test_mm_mask_compress_ps
3718  // CHECK: @llvm.x86.avx512.mask.compress
3719  return _mm_mask_compress_ps(__W,__U,__A); 
3720}
3721__m128 test_mm_maskz_compress_ps(__mmask8 __U, __m128 __A) {
3722  // CHECK-LABEL: @test_mm_maskz_compress_ps
3723  // CHECK: @llvm.x86.avx512.mask.compress
3724  return _mm_maskz_compress_ps(__U,__A); 
3725}
3726__m256 test_mm256_mask_compress_ps(__m256 __W, __mmask8 __U, __m256 __A) {
3727  // CHECK-LABEL: @test_mm256_mask_compress_ps
3728  // CHECK: @llvm.x86.avx512.mask.compress
3729  return _mm256_mask_compress_ps(__W,__U,__A); 
3730}
3731__m256 test_mm256_maskz_compress_ps(__mmask8 __U, __m256 __A) {
3732  // CHECK-LABEL: @test_mm256_maskz_compress_ps
3733  // CHECK: @llvm.x86.avx512.mask.compress
3734  return _mm256_maskz_compress_ps(__U,__A); 
3735}
3736__m128i test_mm_mask_compress_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
3737  // CHECK-LABEL: @test_mm_mask_compress_epi32
3738  // CHECK: @llvm.x86.avx512.mask.compress
3739  return _mm_mask_compress_epi32(__W,__U,__A); 
3740}
3741__m128i test_mm_maskz_compress_epi32(__mmask8 __U, __m128i __A) {
3742  // CHECK-LABEL: @test_mm_maskz_compress_epi32
3743  // CHECK: @llvm.x86.avx512.mask.compress
3744  return _mm_maskz_compress_epi32(__U,__A); 
3745}
3746__m256i test_mm256_mask_compress_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
3747  // CHECK-LABEL: @test_mm256_mask_compress_epi32
3748  // CHECK: @llvm.x86.avx512.mask.compress
3749  return _mm256_mask_compress_epi32(__W,__U,__A); 
3750}
3751__m256i test_mm256_maskz_compress_epi32(__mmask8 __U, __m256i __A) {
3752  // CHECK-LABEL: @test_mm256_maskz_compress_epi32
3753  // CHECK: @llvm.x86.avx512.mask.compress
3754  return _mm256_maskz_compress_epi32(__U,__A); 
3755}
3756void test_mm_mask_compressstoreu_pd(void *__P, __mmask8 __U, __m128d __A) {
3757  // CHECK-LABEL: @test_mm_mask_compressstoreu_pd
3758  // CHECK: @llvm.masked.compressstore.v2f64(<2 x double> %{{.*}}, double* %{{.*}}, <2 x i1> %{{.*}})
3759  return _mm_mask_compressstoreu_pd(__P,__U,__A); 
3760}
3761void test_mm256_mask_compressstoreu_pd(void *__P, __mmask8 __U, __m256d __A) {
3762  // CHECK-LABEL: @test_mm256_mask_compressstoreu_pd
3763  // CHECK: @llvm.masked.compressstore.v4f64(<4 x double> %{{.*}}, double* %{{.*}}, <4 x i1> %{{.*}})
3764  return _mm256_mask_compressstoreu_pd(__P,__U,__A); 
3765}
3766void test_mm_mask_compressstoreu_epi64(void *__P, __mmask8 __U, __m128i __A) {
3767  // CHECK-LABEL: @test_mm_mask_compressstoreu_epi64
3768  // CHECK: @llvm.masked.compressstore.v2i64(<2 x i64> %{{.*}}, i64* %{{.*}}, <2 x i1> %{{.*}})
3769  return _mm_mask_compressstoreu_epi64(__P,__U,__A); 
3770}
3771void test_mm256_mask_compressstoreu_epi64(void *__P, __mmask8 __U, __m256i __A) {
3772  // CHECK-LABEL: @test_mm256_mask_compressstoreu_epi64
3773  // CHECK: @llvm.masked.compressstore.v4i64(<4 x i64> %{{.*}}, i64* %{{.*}}, <4 x i1> %{{.*}})
3774  return _mm256_mask_compressstoreu_epi64(__P,__U,__A); 
3775}
3776void test_mm_mask_compressstoreu_ps(void *__P, __mmask8 __U, __m128 __A) {
3777  // CHECK-LABEL: @test_mm_mask_compressstoreu_ps
3778  // CHECK: @llvm.masked.compressstore.v4f32(<4 x float> %{{.*}}, float* %{{.*}}, <4 x i1> %{{.*}})
3779  return _mm_mask_compressstoreu_ps(__P,__U,__A); 
3780}
3781void test_mm256_mask_compressstoreu_ps(void *__P, __mmask8 __U, __m256 __A) {
3782  // CHECK-LABEL: @test_mm256_mask_compressstoreu_ps
3783  // CHECK: @llvm.masked.compressstore.v8f32(<8 x float> %{{.*}}, float* %{{.*}}, <8 x i1> %{{.*}})
3784  return _mm256_mask_compressstoreu_ps(__P,__U,__A); 
3785}
3786void test_mm_mask_compressstoreu_epi32(void *__P, __mmask8 __U, __m128i __A) {
3787  // CHECK-LABEL: @test_mm_mask_compressstoreu_epi32
3788  // CHECK: @llvm.masked.compressstore.v4i32(<4 x i32> %{{.*}}, i32* %{{.*}}, <4 x i1> %{{.*}})
3789  return _mm_mask_compressstoreu_epi32(__P,__U,__A); 
3790}
3791void test_mm256_mask_compressstoreu_epi32(void *__P, __mmask8 __U, __m256i __A) {
3792  // CHECK-LABEL: @test_mm256_mask_compressstoreu_epi32
3793  // CHECK: @llvm.masked.compressstore.v8i32(<8 x i32> %{{.*}}, i32* %{{.*}}, <8 x i1> %{{.*}})
3794  return _mm256_mask_compressstoreu_epi32(__P,__U,__A); 
3795}
3796__m128d test_mm_mask_cvtepi32_pd(__m128d __W, __mmask8 __U, __m128i __A) {
3797  // CHECK-LABEL: @test_mm_mask_cvtepi32_pd
3798  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i32> <i32 0, i32 1>
3799  // CHECK: sitofp <2 x i32> %{{.*}} to <2 x double>
3800  // CHECK: select <2 x i1> {{.*}}, <2 x double> {{.*}}, <2 x double> {{.*}}
3801  return _mm_mask_cvtepi32_pd(__W,__U,__A);
3802}
3803__m128d test_mm_maskz_cvtepi32_pd(__mmask8 __U, __m128i __A) {
3804  // CHECK-LABEL: @test_mm_maskz_cvtepi32_pd
3805  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i32> <i32 0, i32 1>
3806  // CHECK: sitofp <2 x i32> %{{.*}} to <2 x double>
3807  // CHECK: select <2 x i1> {{.*}}, <2 x double> {{.*}}, <2 x double> {{.*}}
3808  return _mm_maskz_cvtepi32_pd(__U,__A);
3809}
3810__m256d test_mm256_mask_cvtepi32_pd(__m256d __W, __mmask8 __U, __m128i __A) {
3811  // CHECK-LABEL: @test_mm256_mask_cvtepi32_pd
3812  // CHECK: sitofp <4 x i32> %{{.*}} to <4 x double>
3813  // CHECK: select <4 x i1> {{.*}}, <4 x double> {{.*}}, <4 x double> {{.*}}
3814  return _mm256_mask_cvtepi32_pd(__W,__U,__A);
3815}
3816__m256d test_mm256_maskz_cvtepi32_pd(__mmask8 __U, __m128i __A) {
3817  // CHECK-LABEL: @test_mm256_maskz_cvtepi32_pd
3818  // CHECK: sitofp <4 x i32> %{{.*}} to <4 x double>
3819  // CHECK: select <4 x i1> {{.*}}, <4 x double> {{.*}}, <4 x double> {{.*}}
3820  return _mm256_maskz_cvtepi32_pd(__U,__A);
3821}
3822__m128 test_mm_mask_cvtepi32_ps(__m128 __W, __mmask8 __U, __m128i __A) {
3823  // CHECK-LABEL: @test_mm_mask_cvtepi32_ps
3824  // CHECK: sitofp <4 x i32> %{{.*}} to <4 x float>
3825  // CHECK: select <4 x i1> {{.*}}, <4 x float> {{.*}}, <4 x float> {{.*}}
3826  return _mm_mask_cvtepi32_ps(__W,__U,__A); 
3827}
3828__m128 test_mm_maskz_cvtepi32_ps(__mmask8 __U, __m128i __A) {
3829  // CHECK-LABEL: @test_mm_maskz_cvtepi32_ps
3830  // CHECK: sitofp <4 x i32> %{{.*}} to <4 x float>
3831  // CHECK: select <4 x i1> {{.*}}, <4 x float> {{.*}}, <4 x float> {{.*}}
3832  return _mm_maskz_cvtepi32_ps(__U,__A); 
3833}
3834__m256 test_mm256_mask_cvtepi32_ps(__m256 __W, __mmask8 __U, __m256i __A) {
3835  // CHECK-LABEL: @test_mm256_mask_cvtepi32_ps
3836  // CHECK: sitofp <8 x i32> %{{.*}} to <8 x float>
3837  // CHECK: select <8 x i1> {{.*}}, <8 x float> {{.*}}, <8 x float> {{.*}}
3838  return _mm256_mask_cvtepi32_ps(__W,__U,__A); 
3839}
3840__m256 test_mm256_maskz_cvtepi32_ps(__mmask8 __U, __m256i __A) {
3841  // CHECK-LABEL: @test_mm256_maskz_cvtepi32_ps
3842  // CHECK: sitofp <8 x i32> %{{.*}} to <8 x float>
3843  // CHECK: select <8 x i1> {{.*}}, <8 x float> {{.*}}, <8 x float> {{.*}}
3844  return _mm256_maskz_cvtepi32_ps(__U,__A); 
3845}
3846__m128i test_mm_mask_cvtpd_epi32(__m128i __W, __mmask8 __U, __m128d __A) {
3847  // CHECK-LABEL: @test_mm_mask_cvtpd_epi32
3848  // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.128
3849  return _mm_mask_cvtpd_epi32(__W,__U,__A); 
3850}
3851__m128i test_mm_maskz_cvtpd_epi32(__mmask8 __U, __m128d __A) {
3852  // CHECK-LABEL: @test_mm_maskz_cvtpd_epi32
3853  // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.128
3854  return _mm_maskz_cvtpd_epi32(__U,__A); 
3855}
3856__m128i test_mm256_mask_cvtpd_epi32(__m128i __W, __mmask8 __U, __m256d __A) {
3857  // CHECK-LABEL: @test_mm256_mask_cvtpd_epi32
3858  // CHECK: @llvm.x86.avx.cvt.pd2dq.256
3859  // CHECK: select <4 x i1> {{.*}}, <4 x i32> {{.*}}, <4 x i32> {{.*}}
3860  return _mm256_mask_cvtpd_epi32(__W,__U,__A); 
3861}
3862__m128i test_mm256_maskz_cvtpd_epi32(__mmask8 __U, __m256d __A) {
3863  // CHECK-LABEL: @test_mm256_maskz_cvtpd_epi32
3864  // CHECK: @llvm.x86.avx.cvt.pd2dq.256
3865  // CHECK: select <4 x i1> {{.*}}, <4 x i32> {{.*}}, <4 x i32> {{.*}}
3866  return _mm256_maskz_cvtpd_epi32(__U,__A); 
3867}
3868__m128 test_mm_mask_cvtpd_ps(__m128 __W, __mmask8 __U, __m128d __A) {
3869  // CHECK-LABEL: @test_mm_mask_cvtpd_ps
3870  // CHECK: @llvm.x86.avx512.mask.cvtpd2ps
3871  return _mm_mask_cvtpd_ps(__W,__U,__A); 
3872}
3873__m128 test_mm_maskz_cvtpd_ps(__mmask8 __U, __m128d __A) {
3874  // CHECK-LABEL: @test_mm_maskz_cvtpd_ps
3875  // CHECK: @llvm.x86.avx512.mask.cvtpd2ps
3876  return _mm_maskz_cvtpd_ps(__U,__A); 
3877}
3878__m128 test_mm256_mask_cvtpd_ps(__m128 __W, __mmask8 __U, __m256d __A) {
3879  // CHECK-LABEL: @test_mm256_mask_cvtpd_ps
3880  // CHECK: @llvm.x86.avx.cvt.pd2.ps.256
3881  // CHECK: select <4 x i1> {{.*}}, <4 x float> {{.*}}, <4 x float> {{.*}}
3882  return _mm256_mask_cvtpd_ps(__W,__U,__A); 
3883}
3884__m128 test_mm256_maskz_cvtpd_ps(__mmask8 __U, __m256d __A) {
3885  // CHECK-LABEL: @test_mm256_maskz_cvtpd_ps
3886  // CHECK: @llvm.x86.avx.cvt.pd2.ps.256
3887  // CHECK: select <4 x i1> {{.*}}, <4 x float> {{.*}}, <4 x float> {{.*}}
3888  return _mm256_maskz_cvtpd_ps(__U,__A); 
3889}
3890__m128i test_mm_cvtpd_epu32(__m128d __A) {
3891  // CHECK-LABEL: @test_mm_cvtpd_epu32
3892  // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.128
3893  return _mm_cvtpd_epu32(__A); 
3894}
3895__m128i test_mm_mask_cvtpd_epu32(__m128i __W, __mmask8 __U, __m128d __A) {
3896  // CHECK-LABEL: @test_mm_mask_cvtpd_epu32
3897  // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.128
3898  return _mm_mask_cvtpd_epu32(__W,__U,__A); 
3899}
3900__m128i test_mm_maskz_cvtpd_epu32(__mmask8 __U, __m128d __A) {
3901  // CHECK-LABEL: @test_mm_maskz_cvtpd_epu32
3902  // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.128
3903  return _mm_maskz_cvtpd_epu32(__U,__A); 
3904}
3905__m128i test_mm256_cvtpd_epu32(__m256d __A) {
3906  // CHECK-LABEL: @test_mm256_cvtpd_epu32
3907  // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.256
3908  return _mm256_cvtpd_epu32(__A); 
3909}
3910__m128i test_mm256_mask_cvtpd_epu32(__m128i __W, __mmask8 __U, __m256d __A) {
3911  // CHECK-LABEL: @test_mm256_mask_cvtpd_epu32
3912  // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.256
3913  return _mm256_mask_cvtpd_epu32(__W,__U,__A); 
3914}
3915__m128i test_mm256_maskz_cvtpd_epu32(__mmask8 __U, __m256d __A) {
3916  // CHECK-LABEL: @test_mm256_maskz_cvtpd_epu32
3917  // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.256
3918  return _mm256_maskz_cvtpd_epu32(__U,__A); 
3919}
3920__m128i test_mm_mask_cvtps_epi32(__m128i __W, __mmask8 __U, __m128 __A) {
3921  // CHECK-LABEL: @test_mm_mask_cvtps_epi32
3922  // CHECK: @llvm.x86.sse2.cvtps2dq
3923  // CHECK: select <4 x i1> {{.*}}, <4 x i32> {{.*}}, <4 x i32> {{.*}}
3924  return _mm_mask_cvtps_epi32(__W,__U,__A); 
3925}
3926__m128i test_mm_maskz_cvtps_epi32(__mmask8 __U, __m128 __A) {
3927  // CHECK-LABEL: @test_mm_maskz_cvtps_epi32
3928  // CHECK: @llvm.x86.sse2.cvtps2dq
3929  // CHECK: select <4 x i1> {{.*}}, <4 x i32> {{.*}}, <4 x i32> {{.*}}
3930  return _mm_maskz_cvtps_epi32(__U,__A); 
3931}
3932__m256i test_mm256_mask_cvtps_epi32(__m256i __W, __mmask8 __U, __m256 __A) {
3933  // CHECK-LABEL: @test_mm256_mask_cvtps_epi32
3934  // CHECK: @llvm.x86.avx.cvt.ps2dq.256
3935  // CHECK: select <8 x i1> {{.*}}, <8 x i32> {{.*}}, <8 x i32> {{.*}}
3936  return _mm256_mask_cvtps_epi32(__W,__U,__A); 
3937}
3938__m256i test_mm256_maskz_cvtps_epi32(__mmask8 __U, __m256 __A) {
3939  // CHECK-LABEL: @test_mm256_maskz_cvtps_epi32
3940  // CHECK: @llvm.x86.avx.cvt.ps2dq.256
3941  // CHECK: select <8 x i1> {{.*}}, <8 x i32> {{.*}}, <8 x i32> {{.*}}
3942  return _mm256_maskz_cvtps_epi32(__U,__A); 
3943}
3944__m128d test_mm_mask_cvtps_pd(__m128d __W, __mmask8 __U, __m128 __A) {
3945  // CHECK-LABEL: @test_mm_mask_cvtps_pd
3946  // CHECK: fpext <2 x float> %{{.*}} to <2 x double>
3947  // CHECK: select <2 x i1> {{.*}}, <2 x double> {{.*}}, <2 x double> {{.*}}
3948  return _mm_mask_cvtps_pd(__W,__U,__A); 
3949}
3950__m128d test_mm_maskz_cvtps_pd(__mmask8 __U, __m128 __A) {
3951  // CHECK-LABEL: @test_mm_maskz_cvtps_pd
3952  // CHECK: fpext <2 x float> %{{.*}} to <2 x double>
3953  // CHECK: select <2 x i1> {{.*}}, <2 x double> {{.*}}, <2 x double> {{.*}}
3954  return _mm_maskz_cvtps_pd(__U,__A); 
3955}
3956__m256d test_mm256_mask_cvtps_pd(__m256d __W, __mmask8 __U, __m128 __A) {
3957  // CHECK-LABEL: @test_mm256_mask_cvtps_pd
3958  // CHECK: fpext <4 x float> %{{.*}} to <4 x double>
3959  // CHECK: select <4 x i1> {{.*}}, <4 x double> {{.*}}, <4 x double> {{.*}}
3960  return _mm256_mask_cvtps_pd(__W,__U,__A); 
3961}
3962__m256d test_mm256_maskz_cvtps_pd(__mmask8 __U, __m128 __A) {
3963  // CHECK-LABEL: @test_mm256_maskz_cvtps_pd
3964  // CHECK: fpext <4 x float> %{{.*}} to <4 x double>
3965  // CHECK: select <4 x i1> {{.*}}, <4 x double> {{.*}}, <4 x double> {{.*}}
3966  return _mm256_maskz_cvtps_pd(__U,__A); 
3967}
3968__m128i test_mm_cvtps_epu32(__m128 __A) {
3969  // CHECK-LABEL: @test_mm_cvtps_epu32
3970  // CHECK: @llvm.x86.avx512.mask.cvtps2udq.128
3971  return _mm_cvtps_epu32(__A); 
3972}
3973__m128i test_mm_mask_cvtps_epu32(__m128i __W, __mmask8 __U, __m128 __A) {
3974  // CHECK-LABEL: @test_mm_mask_cvtps_epu32
3975  // CHECK: @llvm.x86.avx512.mask.cvtps2udq.128
3976  return _mm_mask_cvtps_epu32(__W,__U,__A); 
3977}
3978__m128i test_mm_maskz_cvtps_epu32(__mmask8 __U, __m128 __A) {
3979  // CHECK-LABEL: @test_mm_maskz_cvtps_epu32
3980  // CHECK: @llvm.x86.avx512.mask.cvtps2udq.128
3981  return _mm_maskz_cvtps_epu32(__U,__A); 
3982}
3983__m256i test_mm256_cvtps_epu32(__m256 __A) {
3984  // CHECK-LABEL: @test_mm256_cvtps_epu32
3985  // CHECK: @llvm.x86.avx512.mask.cvtps2udq.256
3986  return _mm256_cvtps_epu32(__A); 
3987}
3988__m256i test_mm256_mask_cvtps_epu32(__m256i __W, __mmask8 __U, __m256 __A) {
3989  // CHECK-LABEL: @test_mm256_mask_cvtps_epu32
3990  // CHECK: @llvm.x86.avx512.mask.cvtps2udq.256
3991  return _mm256_mask_cvtps_epu32(__W,__U,__A); 
3992}
3993__m256i test_mm256_maskz_cvtps_epu32(__mmask8 __U, __m256 __A) {
3994  // CHECK-LABEL: @test_mm256_maskz_cvtps_epu32
3995  // CHECK: @llvm.x86.avx512.mask.cvtps2udq.256
3996  return _mm256_maskz_cvtps_epu32(__U,__A); 
3997}
3998__m128i test_mm_mask_cvttpd_epi32(__m128i __W, __mmask8 __U, __m128d __A) {
3999  // CHECK-LABEL: @test_mm_mask_cvttpd_epi32
4000  // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.128
4001  return _mm_mask_cvttpd_epi32(__W,__U,__A); 
4002}
4003__m128i test_mm_maskz_cvttpd_epi32(__mmask8 __U, __m128d __A) {
4004  // CHECK-LABEL: @test_mm_maskz_cvttpd_epi32
4005  // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.128
4006  return _mm_maskz_cvttpd_epi32(__U,__A); 
4007}
4008__m128i test_mm256_mask_cvttpd_epi32(__m128i __W, __mmask8 __U, __m256d __A) {
4009  // CHECK-LABEL: @test_mm256_mask_cvttpd_epi32
4010  // CHECK: @llvm.x86.avx.cvtt.pd2dq.256
4011  // CHECK: select <4 x i1> {{.*}}, <4 x i32> {{.*}}, <4 x i32> {{.*}}
4012  return _mm256_mask_cvttpd_epi32(__W,__U,__A); 
4013}
4014__m128i test_mm256_maskz_cvttpd_epi32(__mmask8 __U, __m256d __A) {
4015  // CHECK-LABEL: @test_mm256_maskz_cvttpd_epi32
4016  // CHECK: @llvm.x86.avx.cvtt.pd2dq.256
4017  // CHECK: select <4 x i1> {{.*}}, <4 x i32> {{.*}}, <4 x i32> {{.*}}
4018  return _mm256_maskz_cvttpd_epi32(__U,__A); 
4019}
4020__m128i test_mm_cvttpd_epu32(__m128d __A) {
4021  // CHECK-LABEL: @test_mm_cvttpd_epu32
4022  // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.128
4023  return _mm_cvttpd_epu32(__A); 
4024}
4025__m128i test_mm_mask_cvttpd_epu32(__m128i __W, __mmask8 __U, __m128d __A) {
4026  // CHECK-LABEL: @test_mm_mask_cvttpd_epu32
4027  // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.128
4028  return _mm_mask_cvttpd_epu32(__W,__U,__A); 
4029}
4030__m128i test_mm_maskz_cvttpd_epu32(__mmask8 __U, __m128d __A) {
4031  // CHECK-LABEL: @test_mm_maskz_cvttpd_epu32
4032  // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.128
4033  return _mm_maskz_cvttpd_epu32(__U,__A); 
4034}
4035__m128i test_mm256_cvttpd_epu32(__m256d __A) {
4036  // CHECK-LABEL: @test_mm256_cvttpd_epu32
4037  // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.256
4038  return _mm256_cvttpd_epu32(__A); 
4039}
4040__m128i test_mm256_mask_cvttpd_epu32(__m128i __W, __mmask8 __U, __m256d __A) {
4041  // CHECK-LABEL: @test_mm256_mask_cvttpd_epu32
4042  // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.256
4043  return _mm256_mask_cvttpd_epu32(__W,__U,__A); 
4044}
4045__m128i test_mm256_maskz_cvttpd_epu32(__mmask8 __U, __m256d __A) {
4046  // CHECK-LABEL: @test_mm256_maskz_cvttpd_epu32
4047  // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.256
4048  return _mm256_maskz_cvttpd_epu32(__U,__A); 
4049}
4050__m128i test_mm_mask_cvttps_epi32(__m128i __W, __mmask8 __U, __m128 __A) {
4051  // CHECK-LABEL: @test_mm_mask_cvttps_epi32
4052  // CHECK: @llvm.x86.sse2.cvttps2dq
4053  // CHECK: select <4 x i1> {{.*}}, <4 x i32> {{.*}}, <4 x i32> {{.*}}
4054  return _mm_mask_cvttps_epi32(__W,__U,__A); 
4055}
4056__m128i test_mm_maskz_cvttps_epi32(__mmask8 __U, __m128 __A) {
4057  // CHECK-LABEL: @test_mm_maskz_cvttps_epi32
4058  // CHECK: @llvm.x86.sse2.cvttps2dq
4059  // CHECK: select <4 x i1> {{.*}}, <4 x i32> {{.*}}, <4 x i32> {{.*}}
4060  return _mm_maskz_cvttps_epi32(__U,__A); 
4061}
4062__m256i test_mm256_mask_cvttps_epi32(__m256i __W, __mmask8 __U, __m256 __A) {
4063  // CHECK-LABEL: @test_mm256_mask_cvttps_epi32
4064  // CHECK: @llvm.x86.avx.cvtt.ps2dq.256
4065  // CHECK: select <8 x i1> {{.*}}, <8 x i32> {{.*}}, <8 x i32> {{.*}}
4066  return _mm256_mask_cvttps_epi32(__W,__U,__A); 
4067}
4068__m256i test_mm256_maskz_cvttps_epi32(__mmask8 __U, __m256 __A) {
4069  // CHECK-LABEL: @test_mm256_maskz_cvttps_epi32
4070  // CHECK: @llvm.x86.avx.cvtt.ps2dq.256
4071  // CHECK: select <8 x i1> {{.*}}, <8 x i32> {{.*}}, <8 x i32> {{.*}}
4072  return _mm256_maskz_cvttps_epi32(__U,__A); 
4073}
4074__m128i test_mm_cvttps_epu32(__m128 __A) {
4075  // CHECK-LABEL: @test_mm_cvttps_epu32
4076  // CHECK: @llvm.x86.avx512.mask.cvttps2udq.128
4077  return _mm_cvttps_epu32(__A); 
4078}
4079__m128i test_mm_mask_cvttps_epu32(__m128i __W, __mmask8 __U, __m128 __A) {
4080  // CHECK-LABEL: @test_mm_mask_cvttps_epu32
4081  // CHECK: @llvm.x86.avx512.mask.cvttps2udq.128
4082  return _mm_mask_cvttps_epu32(__W,__U,__A); 
4083}
4084__m128i test_mm_maskz_cvttps_epu32(__mmask8 __U, __m128 __A) {
4085  // CHECK-LABEL: @test_mm_maskz_cvttps_epu32
4086  // CHECK: @llvm.x86.avx512.mask.cvttps2udq.128
4087  return _mm_maskz_cvttps_epu32(__U,__A); 
4088}
4089__m256i test_mm256_cvttps_epu32(__m256 __A) {
4090  // CHECK-LABEL: @test_mm256_cvttps_epu32
4091  // CHECK: @llvm.x86.avx512.mask.cvttps2udq.256
4092  return _mm256_cvttps_epu32(__A); 
4093}
4094__m256i test_mm256_mask_cvttps_epu32(__m256i __W, __mmask8 __U, __m256 __A) {
4095  // CHECK-LABEL: @test_mm256_mask_cvttps_epu32
4096  // CHECK: @llvm.x86.avx512.mask.cvttps2udq.256
4097  return _mm256_mask_cvttps_epu32(__W,__U,__A); 
4098}
4099__m256i test_mm256_maskz_cvttps_epu32(__mmask8 __U, __m256 __A) {
4100  // CHECK-LABEL: @test_mm256_maskz_cvttps_epu32
4101  // CHECK: @llvm.x86.avx512.mask.cvttps2udq.256
4102  return _mm256_maskz_cvttps_epu32(__U,__A); 
4103}
4104__m128d test_mm_cvtepu32_pd(__m128i __A) {
4105  // CHECK-LABEL: @test_mm_cvtepu32_pd
4106  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i32> <i32 0, i32 1>
4107  // CHECK: uitofp <2 x i32> %{{.*}} to <2 x double>
4108  return _mm_cvtepu32_pd(__A);
4109}
4110__m128d test_mm_mask_cvtepu32_pd(__m128d __W, __mmask8 __U, __m128i __A) {
4111  // CHECK-LABEL: @test_mm_mask_cvtepu32_pd
4112  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i32> <i32 0, i32 1>
4113  // CHECK: uitofp <2 x i32> %{{.*}} to <2 x double>
4114  // CHECK: select <2 x i1> {{.*}}, <2 x double> {{.*}}, <2 x double> {{.*}}
4115  return _mm_mask_cvtepu32_pd(__W,__U,__A);
4116}
4117__m128d test_mm_maskz_cvtepu32_pd(__mmask8 __U, __m128i __A) {
4118  // CHECK-LABEL: @test_mm_maskz_cvtepu32_pd
4119  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i32> <i32 0, i32 1>
4120  // CHECK: uitofp <2 x i32> %{{.*}} to <2 x double>
4121  // CHECK: select <2 x i1> {{.*}}, <2 x double> {{.*}}, <2 x double> {{.*}}
4122  return _mm_maskz_cvtepu32_pd(__U,__A);
4123}
4124__m256d test_mm256_cvtepu32_pd(__m128i __A) {
4125  // CHECK-LABEL: @test_mm256_cvtepu32_pd
4126  // CHECK: uitofp <4 x i32> %{{.*}} to <4 x double>
4127  return _mm256_cvtepu32_pd(__A);
4128}
4129__m256d test_mm256_mask_cvtepu32_pd(__m256d __W, __mmask8 __U, __m128i __A) {
4130  // CHECK-LABEL: @test_mm256_mask_cvtepu32_pd
4131  // CHECK: uitofp <4 x i32> %{{.*}} to <4 x double>
4132  // CHECK: select <4 x i1> {{.*}}, <4 x double> {{.*}}, <4 x double> {{.*}}
4133  return _mm256_mask_cvtepu32_pd(__W,__U,__A);
4134}
4135__m256d test_mm256_maskz_cvtepu32_pd(__mmask8 __U, __m128i __A) {
4136  // CHECK-LABEL: @test_mm256_maskz_cvtepu32_pd
4137  // CHECK: uitofp <4 x i32> %{{.*}} to <4 x double>
4138  // CHECK: select <4 x i1> {{.*}}, <4 x double> {{.*}}, <4 x double> {{.*}}
4139  return _mm256_maskz_cvtepu32_pd(__U,__A);
4140}
4141__m128 test_mm_cvtepu32_ps(__m128i __A) {
4142  // CHECK-LABEL: @test_mm_cvtepu32_ps
4143  // CHECK: uitofp <4 x i32> %{{.*}} to <4 x float>
4144  return _mm_cvtepu32_ps(__A); 
4145}
4146__m128 test_mm_mask_cvtepu32_ps(__m128 __W, __mmask8 __U, __m128i __A) {
4147  // CHECK-LABEL: @test_mm_mask_cvtepu32_ps
4148  // CHECK: uitofp <4 x i32> %{{.*}} to <4 x float>
4149  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
4150  return _mm_mask_cvtepu32_ps(__W,__U,__A); 
4151}
4152__m128 test_mm_maskz_cvtepu32_ps(__mmask8 __U, __m128i __A) {
4153  // CHECK-LABEL: @test_mm_maskz_cvtepu32_ps
4154  // CHECK: uitofp <4 x i32> %{{.*}} to <4 x float>
4155  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
4156  return _mm_maskz_cvtepu32_ps(__U,__A); 
4157}
4158__m256 test_mm256_cvtepu32_ps(__m256i __A) {
4159  // CHECK-LABEL: @test_mm256_cvtepu32_ps
4160  // CHECK: uitofp <8 x i32> %{{.*}} to <8 x float>
4161  return _mm256_cvtepu32_ps(__A); 
4162}
4163__m256 test_mm256_mask_cvtepu32_ps(__m256 __W, __mmask8 __U, __m256i __A) {
4164  // CHECK-LABEL: @test_mm256_mask_cvtepu32_ps
4165  // CHECK: uitofp <8 x i32> %{{.*}} to <8 x float>
4166  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
4167  return _mm256_mask_cvtepu32_ps(__W,__U,__A); 
4168}
4169__m256 test_mm256_maskz_cvtepu32_ps(__mmask8 __U, __m256i __A) {
4170  // CHECK-LABEL: @test_mm256_maskz_cvtepu32_ps
4171  // CHECK: uitofp <8 x i32> %{{.*}} to <8 x float>
4172  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
4173  return _mm256_maskz_cvtepu32_ps(__U,__A); 
4174}
4175__m128d test_mm_mask_div_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
4176  // CHECK-LABEL: @test_mm_mask_div_pd
4177  // CHECK: fdiv <2 x double> %{{.*}}, %{{.*}}
4178  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
4179  return _mm_mask_div_pd(__W,__U,__A,__B); 
4180}
4181__m128d test_mm_maskz_div_pd(__mmask8 __U, __m128d __A, __m128d __B) {
4182  // CHECK-LABEL: @test_mm_maskz_div_pd
4183  // CHECK: fdiv <2 x double> %{{.*}}, %{{.*}}
4184  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
4185  return _mm_maskz_div_pd(__U,__A,__B); 
4186}
4187__m256d test_mm256_mask_div_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
4188  // CHECK-LABEL: @test_mm256_mask_div_pd
4189  // CHECK: fdiv <4 x double> %{{.*}}, %{{.*}}
4190  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
4191  return _mm256_mask_div_pd(__W,__U,__A,__B); 
4192}
4193__m256d test_mm256_maskz_div_pd(__mmask8 __U, __m256d __A, __m256d __B) {
4194  // CHECK-LABEL: @test_mm256_maskz_div_pd
4195  // CHECK: fdiv <4 x double> %{{.*}}, %{{.*}}
4196  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
4197  return _mm256_maskz_div_pd(__U,__A,__B); 
4198}
4199__m128 test_mm_mask_div_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
4200  // CHECK-LABEL: @test_mm_mask_div_ps
4201  // CHECK: fdiv <4 x float> %{{.*}}, %{{.*}}
4202  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
4203  return _mm_mask_div_ps(__W,__U,__A,__B); 
4204}
4205__m128 test_mm_maskz_div_ps(__mmask8 __U, __m128 __A, __m128 __B) {
4206  // CHECK-LABEL: @test_mm_maskz_div_ps
4207  // CHECK: fdiv <4 x float> %{{.*}}, %{{.*}}
4208  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
4209  return _mm_maskz_div_ps(__U,__A,__B); 
4210}
4211__m256 test_mm256_mask_div_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
4212  // CHECK-LABEL: @test_mm256_mask_div_ps
4213  // CHECK: fdiv <8 x float> %{{.*}}, %{{.*}}
4214  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
4215  return _mm256_mask_div_ps(__W,__U,__A,__B); 
4216}
4217__m256 test_mm256_maskz_div_ps(__mmask8 __U, __m256 __A, __m256 __B) {
4218  // CHECK-LABEL: @test_mm256_maskz_div_ps
4219  // CHECK: fdiv <8 x float> %{{.*}}, %{{.*}}
4220  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
4221  return _mm256_maskz_div_ps(__U,__A,__B); 
4222}
4223__m128d test_mm_mask_expand_pd(__m128d __W, __mmask8 __U, __m128d __A) {
4224  // CHECK-LABEL: @test_mm_mask_expand_pd
4225  // CHECK: @llvm.x86.avx512.mask.expand
4226  return _mm_mask_expand_pd(__W,__U,__A); 
4227}
4228__m128d test_mm_maskz_expand_pd(__mmask8 __U, __m128d __A) {
4229  // CHECK-LABEL: @test_mm_maskz_expand_pd
4230  // CHECK: @llvm.x86.avx512.mask.expand
4231  return _mm_maskz_expand_pd(__U,__A); 
4232}
4233__m256d test_mm256_mask_expand_pd(__m256d __W, __mmask8 __U, __m256d __A) {
4234  // CHECK-LABEL: @test_mm256_mask_expand_pd
4235  // CHECK: @llvm.x86.avx512.mask.expand
4236  return _mm256_mask_expand_pd(__W,__U,__A); 
4237}
4238__m256d test_mm256_maskz_expand_pd(__mmask8 __U, __m256d __A) {
4239  // CHECK-LABEL: @test_mm256_maskz_expand_pd
4240  // CHECK: @llvm.x86.avx512.mask.expand
4241  return _mm256_maskz_expand_pd(__U,__A); 
4242}
4243__m128i test_mm_mask_expand_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
4244  // CHECK-LABEL: @test_mm_mask_expand_epi64
4245  // CHECK: @llvm.x86.avx512.mask.expand
4246  return _mm_mask_expand_epi64(__W,__U,__A); 
4247}
4248__m128i test_mm_maskz_expand_epi64(__mmask8 __U, __m128i __A) {
4249  // CHECK-LABEL: @test_mm_maskz_expand_epi64
4250  // CHECK: @llvm.x86.avx512.mask.expand
4251  return _mm_maskz_expand_epi64(__U,__A); 
4252}
4253__m256i test_mm256_mask_expand_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
4254  // CHECK-LABEL: @test_mm256_mask_expand_epi64
4255  // CHECK: @llvm.x86.avx512.mask.expand
4256  return _mm256_mask_expand_epi64(__W,__U,__A); 
4257}
4258__m256i test_mm256_maskz_expand_epi64(__mmask8 __U, __m256i __A) {
4259  // CHECK-LABEL: @test_mm256_maskz_expand_epi64
4260  // CHECK: @llvm.x86.avx512.mask.expand
4261  return _mm256_maskz_expand_epi64(__U,__A); 
4262}
4263__m128d test_mm_mask_expandloadu_pd(__m128d __W, __mmask8 __U, void const *__P) {
4264  // CHECK-LABEL: @test_mm_mask_expandloadu_pd
4265  // CHECK: @llvm.masked.expandload.v2f64(double* %{{.*}}, <2 x i1> %{{.*}}, <2 x double> %{{.*}})
4266  return _mm_mask_expandloadu_pd(__W,__U,__P); 
4267}
4268__m128d test_mm_maskz_expandloadu_pd(__mmask8 __U, void const *__P) {
4269  // CHECK-LABEL: @test_mm_maskz_expandloadu_pd
4270  // CHECK: @llvm.masked.expandload.v2f64(double* %{{.*}}, <2 x i1> %{{.*}}, <2 x double> %{{.*}})
4271  return _mm_maskz_expandloadu_pd(__U,__P); 
4272}
4273__m256d test_mm256_mask_expandloadu_pd(__m256d __W, __mmask8 __U, void const *__P) {
4274  // CHECK-LABEL: @test_mm256_mask_expandloadu_pd
4275  // CHECK: @llvm.masked.expandload.v4f64(double* %{{.*}}, <4 x i1> %{{.*}}, <4 x double> %{{.*}})
4276  return _mm256_mask_expandloadu_pd(__W,__U,__P); 
4277}
4278__m256d test_mm256_maskz_expandloadu_pd(__mmask8 __U, void const *__P) {
4279  // CHECK-LABEL: @test_mm256_maskz_expandloadu_pd
4280  // CHECK: @llvm.masked.expandload.v4f64(double* %{{.*}}, <4 x i1> %{{.*}}, <4 x double> %{{.*}})
4281  return _mm256_maskz_expandloadu_pd(__U,__P); 
4282}
4283__m128i test_mm_mask_expandloadu_epi64(__m128i __W, __mmask8 __U, void const *__P) {
4284  // CHECK-LABEL: @test_mm_mask_expandloadu_epi64
4285  // CHECK: @llvm.masked.expandload.v2i64(i64* %{{.*}}, <2 x i1> %{{.*}}, <2 x i64> %{{.*}})
4286  return _mm_mask_expandloadu_epi64(__W,__U,__P); 
4287}
4288__m128i test_mm_maskz_expandloadu_epi64(__mmask8 __U, void const *__P) {
4289  // CHECK-LABEL: @test_mm_maskz_expandloadu_epi64
4290  // CHECK: @llvm.masked.expandload.v2i64(i64* %{{.*}}, <2 x i1> %{{.*}}, <2 x i64> %{{.*}})
4291  return _mm_maskz_expandloadu_epi64(__U,__P); 
4292}
4293__m256i test_mm256_mask_expandloadu_epi64(__m256i __W, __mmask8 __U,   void const *__P) {
4294  // CHECK-LABEL: @test_mm256_mask_expandloadu_epi64
4295  // CHECK: @llvm.masked.expandload.v4i64(i64* %{{.*}}, <4 x i1> %{{.*}}, <4 x i64> %{{.*}})
4296  return _mm256_mask_expandloadu_epi64(__W,__U,__P); 
4297}
4298__m256i test_mm256_maskz_expandloadu_epi64(__mmask8 __U, void const *__P) {
4299  // CHECK-LABEL: @test_mm256_maskz_expandloadu_epi64
4300  // CHECK: @llvm.masked.expandload.v4i64(i64* %{{.*}}, <4 x i1> %{{.*}}, <4 x i64> %{{.*}})
4301  return _mm256_maskz_expandloadu_epi64(__U,__P); 
4302}
4303__m128 test_mm_mask_expandloadu_ps(__m128 __W, __mmask8 __U, void const *__P) {
4304  // CHECK-LABEL: @test_mm_mask_expandloadu_ps
4305  // CHECK: @llvm.masked.expandload.v4f32(float* %{{.*}}, <4 x i1> %{{.*}}, <4 x float> %{{.*}})
4306  return _mm_mask_expandloadu_ps(__W,__U,__P); 
4307}
4308__m128 test_mm_maskz_expandloadu_ps(__mmask8 __U, void const *__P) {
4309  // CHECK-LABEL: @test_mm_maskz_expandloadu_ps
4310  // CHECK: @llvm.masked.expandload.v4f32(float* %{{.*}}, <4 x i1> %{{.*}}, <4 x float> %{{.*}})
4311  return _mm_maskz_expandloadu_ps(__U,__P); 
4312}
4313__m256 test_mm256_mask_expandloadu_ps(__m256 __W, __mmask8 __U, void const *__P) {
4314  // CHECK-LABEL: @test_mm256_mask_expandloadu_ps
4315  // CHECK: @llvm.masked.expandload.v8f32(float* %{{.*}}, <8 x i1> %{{.*}}, <8 x float> %{{.*}})
4316  return _mm256_mask_expandloadu_ps(__W,__U,__P); 
4317}
4318__m256 test_mm256_maskz_expandloadu_ps(__mmask8 __U, void const *__P) {
4319  // CHECK-LABEL: @test_mm256_maskz_expandloadu_ps
4320  // CHECK: @llvm.masked.expandload.v8f32(float* %{{.*}}, <8 x i1> %{{.*}}, <8 x float> %{{.*}})
4321  return _mm256_maskz_expandloadu_ps(__U,__P); 
4322}
4323__m128i test_mm_mask_expandloadu_epi32(__m128i __W, __mmask8 __U, void const *__P) {
4324  // CHECK-LABEL: @test_mm_mask_expandloadu_epi32
4325  // CHECK: @llvm.masked.expandload.v4i32(i32* %{{.*}}, <4 x i1> %{{.*}}, <4 x i32> %{{.*}})
4326  return _mm_mask_expandloadu_epi32(__W,__U,__P); 
4327}
4328__m128i test_mm_maskz_expandloadu_epi32(__mmask8 __U, void const *__P) {
4329  // CHECK-LABEL: @test_mm_maskz_expandloadu_epi32
4330  // CHECK: @llvm.masked.expandload.v4i32(i32* %{{.*}}, <4 x i1> %{{.*}}, <4 x i32> %{{.*}})
4331  return _mm_maskz_expandloadu_epi32(__U,__P); 
4332}
4333__m256i test_mm256_mask_expandloadu_epi32(__m256i __W, __mmask8 __U,   void const *__P) {
4334  // CHECK-LABEL: @test_mm256_mask_expandloadu_epi32
4335  // CHECK: @llvm.masked.expandload.v8i32(i32* %{{.*}}, <8 x i1> %{{.*}}, <8 x i32> %{{.*}})
4336  return _mm256_mask_expandloadu_epi32(__W,__U,__P); 
4337}
4338__m256i test_mm256_maskz_expandloadu_epi32(__mmask8 __U, void const *__P) {
4339  // CHECK-LABEL: @test_mm256_maskz_expandloadu_epi32
4340  // CHECK: @llvm.masked.expandload.v8i32(i32* %{{.*}}, <8 x i1> %{{.*}}, <8 x i32> %{{.*}})
4341  return _mm256_maskz_expandloadu_epi32(__U,__P); 
4342}
4343__m128 test_mm_mask_expand_ps(__m128 __W, __mmask8 __U, __m128 __A) {
4344  // CHECK-LABEL: @test_mm_mask_expand_ps
4345  // CHECK: @llvm.x86.avx512.mask.expand
4346  return _mm_mask_expand_ps(__W,__U,__A); 
4347}
4348__m128 test_mm_maskz_expand_ps(__mmask8 __U, __m128 __A) {
4349  // CHECK-LABEL: @test_mm_maskz_expand_ps
4350  // CHECK: @llvm.x86.avx512.mask.expand
4351  return _mm_maskz_expand_ps(__U,__A); 
4352}
4353__m256 test_mm256_mask_expand_ps(__m256 __W, __mmask8 __U, __m256 __A) {
4354  // CHECK-LABEL: @test_mm256_mask_expand_ps
4355  // CHECK: @llvm.x86.avx512.mask.expand
4356  return _mm256_mask_expand_ps(__W,__U,__A); 
4357}
4358__m256 test_mm256_maskz_expand_ps(__mmask8 __U, __m256 __A) {
4359  // CHECK-LABEL: @test_mm256_maskz_expand_ps
4360  // CHECK: @llvm.x86.avx512.mask.expand
4361  return _mm256_maskz_expand_ps(__U,__A); 
4362}
4363__m128i test_mm_mask_expand_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
4364  // CHECK-LABEL: @test_mm_mask_expand_epi32
4365  // CHECK: @llvm.x86.avx512.mask.expand
4366  return _mm_mask_expand_epi32(__W,__U,__A); 
4367}
4368__m128i test_mm_maskz_expand_epi32(__mmask8 __U, __m128i __A) {
4369  // CHECK-LABEL: @test_mm_maskz_expand_epi32
4370  // CHECK: @llvm.x86.avx512.mask.expand
4371  return _mm_maskz_expand_epi32(__U,__A); 
4372}
4373__m256i test_mm256_mask_expand_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
4374  // CHECK-LABEL: @test_mm256_mask_expand_epi32
4375  // CHECK: @llvm.x86.avx512.mask.expand
4376  return _mm256_mask_expand_epi32(__W,__U,__A); 
4377}
4378__m256i test_mm256_maskz_expand_epi32(__mmask8 __U, __m256i __A) {
4379  // CHECK-LABEL: @test_mm256_maskz_expand_epi32
4380  // CHECK: @llvm.x86.avx512.mask.expand
4381  return _mm256_maskz_expand_epi32(__U,__A); 
4382}
4383__m128d test_mm_getexp_pd(__m128d __A) {
4384  // CHECK-LABEL: @test_mm_getexp_pd
4385  // CHECK: @llvm.x86.avx512.mask.getexp.pd.128
4386  return _mm_getexp_pd(__A); 
4387}
4388__m128d test_mm_mask_getexp_pd(__m128d __W, __mmask8 __U, __m128d __A) {
4389  // CHECK-LABEL: @test_mm_mask_getexp_pd
4390  // CHECK: @llvm.x86.avx512.mask.getexp.pd.128
4391  return _mm_mask_getexp_pd(__W,__U,__A); 
4392}
4393__m128d test_mm_maskz_getexp_pd(__mmask8 __U, __m128d __A) {
4394  // CHECK-LABEL: @test_mm_maskz_getexp_pd
4395  // CHECK: @llvm.x86.avx512.mask.getexp.pd.128
4396  return _mm_maskz_getexp_pd(__U,__A); 
4397}
4398__m256d test_mm256_getexp_pd(__m256d __A) {
4399  // CHECK-LABEL: @test_mm256_getexp_pd
4400  // CHECK: @llvm.x86.avx512.mask.getexp.pd.256
4401  return _mm256_getexp_pd(__A); 
4402}
4403__m256d test_mm256_mask_getexp_pd(__m256d __W, __mmask8 __U, __m256d __A) {
4404  // CHECK-LABEL: @test_mm256_mask_getexp_pd
4405  // CHECK: @llvm.x86.avx512.mask.getexp.pd.256
4406  return _mm256_mask_getexp_pd(__W,__U,__A); 
4407}
4408__m256d test_mm256_maskz_getexp_pd(__mmask8 __U, __m256d __A) {
4409  // CHECK-LABEL: @test_mm256_maskz_getexp_pd
4410  // CHECK: @llvm.x86.avx512.mask.getexp.pd.256
4411  return _mm256_maskz_getexp_pd(__U,__A); 
4412}
4413__m128 test_mm_getexp_ps(__m128 __A) {
4414  // CHECK-LABEL: @test_mm_getexp_ps
4415  // CHECK: @llvm.x86.avx512.mask.getexp.ps.128
4416  return _mm_getexp_ps(__A); 
4417}
4418__m128 test_mm_mask_getexp_ps(__m128 __W, __mmask8 __U, __m128 __A) {
4419  // CHECK-LABEL: @test_mm_mask_getexp_ps
4420  // CHECK: @llvm.x86.avx512.mask.getexp.ps.128
4421  return _mm_mask_getexp_ps(__W,__U,__A); 
4422}
4423__m128 test_mm_maskz_getexp_ps(__mmask8 __U, __m128 __A) {
4424  // CHECK-LABEL: @test_mm_maskz_getexp_ps
4425  // CHECK: @llvm.x86.avx512.mask.getexp.ps.128
4426  return _mm_maskz_getexp_ps(__U,__A); 
4427}
4428__m256 test_mm256_getexp_ps(__m256 __A) {
4429  // CHECK-LABEL: @test_mm256_getexp_ps
4430  // CHECK: @llvm.x86.avx512.mask.getexp.ps.256
4431  return _mm256_getexp_ps(__A); 
4432}
4433__m256 test_mm256_mask_getexp_ps(__m256 __W, __mmask8 __U, __m256 __A) {
4434  // CHECK-LABEL: @test_mm256_mask_getexp_ps
4435  // CHECK: @llvm.x86.avx512.mask.getexp.ps.256
4436  return _mm256_mask_getexp_ps(__W,__U,__A); 
4437}
4438__m256 test_mm256_maskz_getexp_ps(__mmask8 __U, __m256 __A) {
4439  // CHECK-LABEL: @test_mm256_maskz_getexp_ps
4440  // CHECK: @llvm.x86.avx512.mask.getexp.ps.256
4441  return _mm256_maskz_getexp_ps(__U,__A); 
4442}
4443__m128d test_mm_mask_max_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
4444  // CHECK-LABEL: @test_mm_mask_max_pd
4445  // CHECK: @llvm.x86.sse2.max.pd
4446  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
4447  return _mm_mask_max_pd(__W,__U,__A,__B); 
4448}
4449__m128d test_mm_maskz_max_pd(__mmask8 __U, __m128d __A, __m128d __B) {
4450  // CHECK-LABEL: @test_mm_maskz_max_pd
4451  // CHECK: @llvm.x86.sse2.max.pd
4452  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
4453  return _mm_maskz_max_pd(__U,__A,__B); 
4454}
4455__m256d test_mm256_mask_max_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
4456  // CHECK-LABEL: @test_mm256_mask_max_pd
4457  // CHECK: @llvm.x86.avx.max.pd.256
4458  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
4459  return _mm256_mask_max_pd(__W,__U,__A,__B); 
4460}
4461__m256d test_mm256_maskz_max_pd(__mmask8 __U, __m256d __A, __m256d __B) {
4462  // CHECK-LABEL: @test_mm256_maskz_max_pd
4463  // CHECK: @llvm.x86.avx.max.pd.256
4464  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
4465  return _mm256_maskz_max_pd(__U,__A,__B); 
4466}
4467__m128 test_mm_mask_max_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
4468  // CHECK-LABEL: @test_mm_mask_max_ps
4469  // CHECK: @llvm.x86.sse.max.ps
4470  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
4471  return _mm_mask_max_ps(__W,__U,__A,__B); 
4472}
4473__m128 test_mm_maskz_max_ps(__mmask8 __U, __m128 __A, __m128 __B) {
4474  // CHECK-LABEL: @test_mm_maskz_max_ps
4475  // CHECK: @llvm.x86.sse.max.ps
4476  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
4477  return _mm_maskz_max_ps(__U,__A,__B); 
4478}
4479__m256 test_mm256_mask_max_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
4480  // CHECK-LABEL: @test_mm256_mask_max_ps
4481  // CHECK: @llvm.x86.avx.max.ps.256
4482  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
4483  return _mm256_mask_max_ps(__W,__U,__A,__B); 
4484}
4485__m256 test_mm256_maskz_max_ps(__mmask8 __U, __m256 __A, __m256 __B) {
4486  // CHECK-LABEL: @test_mm256_maskz_max_ps
4487  // CHECK: @llvm.x86.avx.max.ps.256
4488  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
4489  return _mm256_maskz_max_ps(__U,__A,__B); 
4490}
4491__m128d test_mm_mask_min_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
4492  // CHECK-LABEL: @test_mm_mask_min_pd
4493  // CHECK: @llvm.x86.sse2.min.pd
4494  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
4495  return _mm_mask_min_pd(__W,__U,__A,__B); 
4496}
4497__m128d test_mm_maskz_min_pd(__mmask8 __U, __m128d __A, __m128d __B) {
4498  // CHECK-LABEL: @test_mm_maskz_min_pd
4499  // CHECK: @llvm.x86.sse2.min.pd
4500  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
4501  return _mm_maskz_min_pd(__U,__A,__B); 
4502}
4503__m256d test_mm256_mask_min_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
4504  // CHECK-LABEL: @test_mm256_mask_min_pd
4505  // CHECK: @llvm.x86.avx.min.pd.256
4506  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
4507  return _mm256_mask_min_pd(__W,__U,__A,__B); 
4508}
4509__m256d test_mm256_maskz_min_pd(__mmask8 __U, __m256d __A, __m256d __B) {
4510  // CHECK-LABEL: @test_mm256_maskz_min_pd
4511  // CHECK: @llvm.x86.avx.min.pd.256
4512  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
4513  return _mm256_maskz_min_pd(__U,__A,__B); 
4514}
4515__m128 test_mm_mask_min_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
4516  // CHECK-LABEL: @test_mm_mask_min_ps
4517  // CHECK: @llvm.x86.sse.min.ps
4518  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
4519  return _mm_mask_min_ps(__W,__U,__A,__B); 
4520}
4521__m128 test_mm_maskz_min_ps(__mmask8 __U, __m128 __A, __m128 __B) {
4522  // CHECK-LABEL: @test_mm_maskz_min_ps
4523  // CHECK: @llvm.x86.sse.min.ps
4524  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
4525  return _mm_maskz_min_ps(__U,__A,__B); 
4526}
4527__m256 test_mm256_mask_min_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
4528  // CHECK-LABEL: @test_mm256_mask_min_ps
4529  // CHECK: @llvm.x86.avx.min.ps.256
4530  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
4531  return _mm256_mask_min_ps(__W,__U,__A,__B); 
4532}
4533__m256 test_mm256_maskz_min_ps(__mmask8 __U, __m256 __A, __m256 __B) {
4534  // CHECK-LABEL: @test_mm256_maskz_min_ps
4535  // CHECK: @llvm.x86.avx.min.ps.256
4536  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
4537  return _mm256_maskz_min_ps(__U,__A,__B); 
4538}
4539__m128d test_mm_mask_mul_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
4540  // CHECK-LABEL: @test_mm_mask_mul_pd
4541  // CHECK: fmul <2 x double> %{{.*}}, %{{.*}}
4542  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
4543  return _mm_mask_mul_pd(__W,__U,__A,__B); 
4544}
4545__m128d test_mm_maskz_mul_pd(__mmask8 __U, __m128d __A, __m128d __B) {
4546  // CHECK-LABEL: @test_mm_maskz_mul_pd
4547  // CHECK: fmul <2 x double> %{{.*}}, %{{.*}}
4548  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
4549  return _mm_maskz_mul_pd(__U,__A,__B); 
4550}
4551__m256d test_mm256_mask_mul_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
4552  // CHECK-LABEL: @test_mm256_mask_mul_pd
4553  // CHECK: fmul <4 x double> %{{.*}}, %{{.*}}
4554  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
4555  return _mm256_mask_mul_pd(__W,__U,__A,__B); 
4556}
4557__m256d test_mm256_maskz_mul_pd(__mmask8 __U, __m256d __A, __m256d __B) {
4558  // CHECK-LABEL: @test_mm256_maskz_mul_pd
4559  // CHECK: fmul <4 x double> %{{.*}}, %{{.*}}
4560  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
4561  return _mm256_maskz_mul_pd(__U,__A,__B); 
4562}
4563__m128 test_mm_mask_mul_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
4564  // CHECK-LABEL: @test_mm_mask_mul_ps
4565  // CHECK: fmul <4 x float> %{{.*}}, %{{.*}}
4566  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
4567  return _mm_mask_mul_ps(__W,__U,__A,__B); 
4568}
4569__m128 test_mm_maskz_mul_ps(__mmask8 __U, __m128 __A, __m128 __B) {
4570  // CHECK-LABEL: @test_mm_maskz_mul_ps
4571  // CHECK: fmul <4 x float> %{{.*}}, %{{.*}}
4572  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
4573  return _mm_maskz_mul_ps(__U,__A,__B); 
4574}
4575__m256 test_mm256_mask_mul_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
4576  // CHECK-LABEL: @test_mm256_mask_mul_ps
4577  // CHECK: fmul <8 x float> %{{.*}}, %{{.*}}
4578  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
4579  return _mm256_mask_mul_ps(__W,__U,__A,__B); 
4580}
4581__m256 test_mm256_maskz_mul_ps(__mmask8 __U, __m256 __A, __m256 __B) {
4582  // CHECK-LABEL: @test_mm256_maskz_mul_ps
4583  // CHECK: fmul <8 x float> %{{.*}}, %{{.*}}
4584  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
4585  return _mm256_maskz_mul_ps(__U,__A,__B); 
4586}
4587__m128i test_mm_mask_abs_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
4588  // CHECK-LABEL: @test_mm_mask_abs_epi32
4589  // CHECK: [[SUB:%.*]] = sub <4 x i32> zeroinitializer, [[A:%.*]]
4590  // CHECK: [[CMP:%.*]] = icmp sgt <4 x i32> [[A]], zeroinitializer
4591  // CHECK: [[SEL:%.*]] = select <4 x i1> [[CMP]], <4 x i32> [[A]], <4 x i32> [[SUB]]
4592  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> [[SEL]], <4 x i32> %{{.*}}
4593  return _mm_mask_abs_epi32(__W,__U,__A); 
4594}
4595__m128i test_mm_maskz_abs_epi32(__mmask8 __U, __m128i __A) {
4596  // CHECK-LABEL: @test_mm_maskz_abs_epi32
4597  // CHECK: [[SUB:%.*]] = sub <4 x i32> zeroinitializer, [[A:%.*]]
4598  // CHECK: [[CMP:%.*]] = icmp sgt <4 x i32> [[A]], zeroinitializer
4599  // CHECK: [[SEL:%.*]] = select <4 x i1> [[CMP]], <4 x i32> [[A]], <4 x i32> [[SUB]]
4600  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> [[SEL]], <4 x i32> %{{.*}}
4601  return _mm_maskz_abs_epi32(__U,__A); 
4602}
4603__m256i test_mm256_mask_abs_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
4604  // CHECK-LABEL: @test_mm256_mask_abs_epi32
4605  // CHECK: [[SUB:%.*]] = sub <8 x i32> zeroinitializer, [[A:%.*]]
4606  // CHECK: [[CMP:%.*]] = icmp sgt <8 x i32> [[A]], zeroinitializer
4607  // CHECK: [[SEL:%.*]] = select <8 x i1> [[CMP]], <8 x i32> [[A]], <8 x i32> [[SUB]]
4608  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> [[SEL]], <8 x i32> %{{.*}}
4609  return _mm256_mask_abs_epi32(__W,__U,__A); 
4610}
4611__m256i test_mm256_maskz_abs_epi32(__mmask8 __U, __m256i __A) {
4612  // CHECK-LABEL: @test_mm256_maskz_abs_epi32
4613  // CHECK: [[SUB:%.*]] = sub <8 x i32> zeroinitializer, [[A:%.*]]
4614  // CHECK: [[CMP:%.*]] = icmp sgt <8 x i32> [[A]], zeroinitializer
4615  // CHECK: [[SEL:%.*]] = select <8 x i1> [[CMP]], <8 x i32> [[A]], <8 x i32> [[SUB]]
4616  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> [[SEL]], <8 x i32> %{{.*}}
4617  return _mm256_maskz_abs_epi32(__U,__A); 
4618}
4619__m128i test_mm_abs_epi64(__m128i __A) {
4620  // CHECK-LABEL: @test_mm_abs_epi64
4621  // CHECK: [[SUB:%.*]] = sub <2 x i64> zeroinitializer, [[A:%.*]]
4622  // CHECK: [[CMP:%.*]] = icmp sgt <2 x i64> [[A]], zeroinitializer
4623  // CHECK: select <2 x i1> [[CMP]], <2 x i64> [[A]], <2 x i64> [[SUB]]
4624
4625  return _mm_abs_epi64(__A); 
4626}
4627__m128i test_mm_mask_abs_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
4628  // CHECK-LABEL: @test_mm_mask_abs_epi64
4629  // CHECK: [[SUB:%.*]] = sub <2 x i64> zeroinitializer, [[A:%.*]]
4630  // CHECK: [[CMP:%.*]] = icmp sgt <2 x i64> [[A]], zeroinitializer
4631  // CHECK: [[SEL:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[A]], <2 x i64> [[SUB]]
4632  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> [[SEL]], <2 x i64> %{{.*}}
4633
4634  return _mm_mask_abs_epi64(__W,__U,__A); 
4635}
4636__m128i test_mm_maskz_abs_epi64(__mmask8 __U, __m128i __A) {
4637  // CHECK-LABEL: @test_mm_maskz_abs_epi64
4638  // CHECK: [[SUB:%.*]] = sub <2 x i64> zeroinitializer, [[A:%.*]]
4639  // CHECK: [[CMP:%.*]] = icmp sgt <2 x i64> [[A]], zeroinitializer
4640  // CHECK: [[SEL:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[A]], <2 x i64> [[SUB]]
4641  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> [[SEL]], <2 x i64> %{{.*}}
4642  return _mm_maskz_abs_epi64(__U,__A); 
4643}
4644__m256i test_mm256_abs_epi64(__m256i __A) {
4645  // CHECK-LABEL: @test_mm256_abs_epi64
4646  // CHECK: [[SUB:%.*]] = sub <4 x i64> zeroinitializer, [[A:%.*]]
4647  // CHECK: [[CMP:%.*]] = icmp sgt <4 x i64> [[A]], zeroinitializer
4648  // CHECK: select <4 x i1> [[CMP]], <4 x i64> [[A]], <4 x i64> [[SUB]]
4649  return _mm256_abs_epi64(__A); 
4650}
4651__m256i test_mm256_mask_abs_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
4652  // CHECK-LABEL: @test_mm256_mask_abs_epi64
4653  // CHECK: [[SUB:%.*]] = sub <4 x i64> zeroinitializer, [[A:%.*]]
4654  // CHECK: [[CMP:%.*]] = icmp sgt <4 x i64> [[A]], zeroinitializer
4655  // CHECK: [[SEL:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[A]], <4 x i64> [[SUB]]
4656  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> [[SEL]], <4 x i64> %{{.*}}
4657  return _mm256_mask_abs_epi64(__W,__U,__A); 
4658}
4659__m256i test_mm256_maskz_abs_epi64(__mmask8 __U, __m256i __A) {
4660  // CHECK-LABEL: @test_mm256_maskz_abs_epi64
4661  // CHECK: [[SUB:%.*]] = sub <4 x i64> zeroinitializer, [[A:%.*]]
4662  // CHECK: [[CMP:%.*]] = icmp sgt <4 x i64> [[A]], zeroinitializer
4663  // CHECK: [[SEL:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[A]], <4 x i64> [[SUB]]
4664  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> [[SEL]], <4 x i64> %{{.*}}
4665  return _mm256_maskz_abs_epi64(__U,__A); 
4666}
4667__m128i test_mm_maskz_max_epi32(__mmask8 __M, __m128i __A, __m128i __B) {
4668  // CHECK-LABEL: @test_mm_maskz_max_epi32
4669  // CHECK:       [[CMP:%.*]] = icmp sgt <4 x i32> [[X:%.*]], [[Y:%.*]]
4670  // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i32> [[X]], <4 x i32> [[Y]]
4671  // CHECK:       select <4 x i1> {{.*}}, <4 x i32> [[RES]], <4 x i32> {{.*}}
4672  return _mm_maskz_max_epi32(__M,__A,__B); 
4673}
4674__m128i test_mm_mask_max_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
4675  // CHECK-LABEL: @test_mm_mask_max_epi32
4676  // CHECK:       [[CMP:%.*]] = icmp sgt <4 x i32> [[X:%.*]], [[Y:%.*]]
4677  // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i32> [[X]], <4 x i32> [[Y]]
4678  // CHECK:       select <4 x i1> {{.*}}, <4 x i32> [[RES]], <4 x i32> {{.*}}
4679  return _mm_mask_max_epi32(__W,__M,__A,__B); 
4680}
4681__m256i test_mm256_maskz_max_epi32(__mmask8 __M, __m256i __A, __m256i __B) {
4682  // CHECK-LABEL: @test_mm256_maskz_max_epi32
4683  // CHECK:       [[CMP:%.*]] = icmp sgt <8 x i32> [[X:%.*]], [[Y:%.*]]
4684  // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i32> [[X]], <8 x i32> [[Y]]
4685  // CHECK:       select <8 x i1> {{.*}}, <8 x i32> [[RES]], <8 x i32> {{.*}}
4686  return _mm256_maskz_max_epi32(__M,__A,__B); 
4687}
4688__m256i test_mm256_mask_max_epi32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
4689  // CHECK-LABEL: @test_mm256_mask_max_epi32
4690  // CHECK:       [[CMP:%.*]] = icmp sgt <8 x i32> [[X:%.*]], [[Y:%.*]]
4691  // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i32> [[X]], <8 x i32> [[Y]]
4692  // CHECK:       select <8 x i1> {{.*}}, <8 x i32> [[RES]], <8 x i32> {{.*}}
4693  return _mm256_mask_max_epi32(__W,__M,__A,__B); 
4694}
4695__m128i test_mm_maskz_max_epi64(__mmask8 __M, __m128i __A, __m128i __B) {
4696  // CHECK-LABEL: @test_mm_maskz_max_epi64
4697  // CHECK:       [[CMP:%.*]] = icmp sgt <2 x i64> [[X:%.*]], [[Y:%.*]]
4698  // CHECK-NEXT:  [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4699  // CHECK:       select <2 x i1> {{.*}}, <2 x i64> [[RES]], <2 x i64> {{.*}}
4700  return _mm_maskz_max_epi64(__M,__A,__B); 
4701}
4702__m128i test_mm_mask_max_epi64(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
4703  // CHECK-LABEL: @test_mm_mask_max_epi64
4704  // CHECK:       [[CMP:%.*]] = icmp sgt <2 x i64> [[X:%.*]], [[Y:%.*]]
4705  // CHECK-NEXT:  [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4706  // CHECK:       select <2 x i1> {{.*}}, <2 x i64> [[RES]], <2 x i64> {{.*}}
4707  return _mm_mask_max_epi64(__W,__M,__A,__B); 
4708}
4709__m128i test_mm_max_epi64(__m128i __A, __m128i __B) {
4710  // CHECK-LABEL: @test_mm_max_epi64
4711  // CHECK:       [[CMP:%.*]] = icmp sgt <2 x i64> [[X:%.*]], [[Y:%.*]]
4712  // CHECK-NEXT:  [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4713  return _mm_max_epi64(__A,__B); 
4714}
4715__m256i test_mm256_maskz_max_epi64(__mmask8 __M, __m256i __A, __m256i __B) {
4716  // CHECK-LABEL: @test_mm256_maskz_max_epi64
4717  // CHECK:       [[CMP:%.*]] = icmp sgt <4 x i64> [[X:%.*]], [[Y:%.*]]
4718  // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4719  // CHECK:       select <4 x i1> {{.*}}, <4 x i64> [[RES]], <4 x i64> {{.*}}
4720  return _mm256_maskz_max_epi64(__M,__A,__B); 
4721}
4722__m256i test_mm256_mask_max_epi64(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
4723  // CHECK-LABEL: @test_mm256_mask_max_epi64
4724  // CHECK:       [[CMP:%.*]] = icmp sgt <4 x i64> [[X:%.*]], [[Y:%.*]]
4725  // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4726  // CHECK:       select <4 x i1> {{.*}}, <4 x i64> [[RES]], <4 x i64> {{.*}}
4727  return _mm256_mask_max_epi64(__W,__M,__A,__B); 
4728}
4729__m256i test_mm256_max_epi64(__m256i __A, __m256i __B) {
4730  // CHECK-LABEL: @test_mm256_max_epi64
4731  // CHECK:       [[CMP:%.*]] = icmp sgt <4 x i64> [[X:%.*]], [[Y:%.*]]
4732  // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4733  return _mm256_max_epi64(__A,__B); 
4734}
4735__m128i test_mm_maskz_max_epu32(__mmask8 __M, __m128i __A, __m128i __B) {
4736  // CHECK-LABEL: @test_mm_maskz_max_epu32
4737  // CHECK:       [[CMP:%.*]] = icmp ugt <4 x i32> [[X:%.*]], [[Y:%.*]]
4738  // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i32> [[X]], <4 x i32> [[Y]]
4739  // CHECK:       select <4 x i1> {{.*}}, <4 x i32> [[RES]], <4 x i32> {{.*}}
4740  return _mm_maskz_max_epu32(__M,__A,__B); 
4741}
4742__m128i test_mm_mask_max_epu32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
4743  // CHECK-LABEL: @test_mm_mask_max_epu32
4744  // CHECK:       [[CMP:%.*]] = icmp ugt <4 x i32> [[X:%.*]], [[Y:%.*]]
4745  // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i32> [[X]], <4 x i32> [[Y]]
4746  // CHECK:       select <4 x i1> {{.*}}, <4 x i32> [[RES]], <4 x i32> {{.*}}
4747  return _mm_mask_max_epu32(__W,__M,__A,__B); 
4748}
4749__m256i test_mm256_maskz_max_epu32(__mmask8 __M, __m256i __A, __m256i __B) {
4750  // CHECK-LABEL: @test_mm256_maskz_max_epu32
4751  // CHECK:       [[CMP:%.*]] = icmp ugt <8 x i32> [[X:%.*]], [[Y:%.*]]
4752  // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i32> [[X]], <8 x i32> [[Y]]
4753  // CHECK:       select <8 x i1> {{.*}}, <8 x i32> [[RES]], <8 x i32> {{.*}}
4754  return _mm256_maskz_max_epu32(__M,__A,__B); 
4755}
4756__m256i test_mm256_mask_max_epu32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
4757  // CHECK-LABEL: @test_mm256_mask_max_epu32
4758  // CHECK:       [[CMP:%.*]] = icmp ugt <8 x i32> [[X:%.*]], [[Y:%.*]]
4759  // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i32> [[X]], <8 x i32> [[Y]]
4760  // CHECK:       select <8 x i1> {{.*}}, <8 x i32> [[RES]], <8 x i32> {{.*}}
4761  return _mm256_mask_max_epu32(__W,__M,__A,__B); 
4762}
4763__m128i test_mm_maskz_max_epu64(__mmask8 __M, __m128i __A, __m128i __B) {
4764  // CHECK-LABEL: @test_mm_maskz_max_epu64
4765  // CHECK:       [[CMP:%.*]] = icmp ugt <2 x i64> [[X:%.*]], [[Y:%.*]]
4766  // CHECK-NEXT:  [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4767  // CHECK:       select <2 x i1> {{.*}}, <2 x i64> [[RES]], <2 x i64> {{.*}}
4768  return _mm_maskz_max_epu64(__M,__A,__B); 
4769}
4770__m128i test_mm_max_epu64(__m128i __A, __m128i __B) {
4771  // CHECK-LABEL: @test_mm_max_epu64
4772  // CHECK:       [[CMP:%.*]] = icmp ugt <2 x i64> [[X:%.*]], [[Y:%.*]]
4773  // CHECK-NEXT:  [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4774  return _mm_max_epu64(__A,__B); 
4775}
4776__m128i test_mm_mask_max_epu64(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
4777  // CHECK-LABEL: @test_mm_mask_max_epu64
4778  // CHECK:       [[CMP:%.*]] = icmp ugt <2 x i64> [[X:%.*]], [[Y:%.*]]
4779  // CHECK-NEXT:  [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4780  // CHECK:       select <2 x i1> {{.*}}, <2 x i64> [[RES]], <2 x i64> {{.*}}
4781  return _mm_mask_max_epu64(__W,__M,__A,__B); 
4782}
4783__m256i test_mm256_maskz_max_epu64(__mmask8 __M, __m256i __A, __m256i __B) {
4784  // CHECK-LABEL: @test_mm256_maskz_max_epu64
4785  // CHECK:       [[CMP:%.*]] = icmp ugt <4 x i64> [[X:%.*]], [[Y:%.*]]
4786  // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4787  // CHECK:       select <4 x i1> {{.*}}, <4 x i64> [[RES]], <4 x i64> {{.*}}
4788  return _mm256_maskz_max_epu64(__M,__A,__B); 
4789}
4790__m256i test_mm256_max_epu64(__m256i __A, __m256i __B) {
4791  // CHECK-LABEL: @test_mm256_max_epu64
4792  // CHECK:       [[CMP:%.*]] = icmp ugt <4 x i64> [[X:%.*]], [[Y:%.*]]
4793  // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4794  return _mm256_max_epu64(__A,__B); 
4795}
4796__m256i test_mm256_mask_max_epu64(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
4797  // CHECK-LABEL: @test_mm256_mask_max_epu64
4798  // CHECK:       [[CMP:%.*]] = icmp ugt <4 x i64> [[X:%.*]], [[Y:%.*]]
4799  // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4800  // CHECK:       select <4 x i1> {{.*}}, <4 x i64> [[RES]], <4 x i64> {{.*}}
4801  return _mm256_mask_max_epu64(__W,__M,__A,__B); 
4802}
4803__m128i test_mm_maskz_min_epi32(__mmask8 __M, __m128i __A, __m128i __B) {
4804  // CHECK-LABEL: @test_mm_maskz_min_epi32
4805  // CHECK:       [[CMP:%.*]] = icmp slt <4 x i32> [[X:%.*]], [[Y:%.*]]
4806  // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i32> [[X]], <4 x i32> [[Y]]
4807  // CHECK:       select <4 x i1> {{.*}}, <4 x i32> [[RES]], <4 x i32> {{.*}}
4808  return _mm_maskz_min_epi32(__M,__A,__B); 
4809}
4810__m128i test_mm_mask_min_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
4811  // CHECK-LABEL: @test_mm_mask_min_epi32
4812  // CHECK:       [[CMP:%.*]] = icmp slt <4 x i32> [[X:%.*]], [[Y:%.*]]
4813  // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i32> [[X]], <4 x i32> [[Y]]
4814  // CHECK:       select <4 x i1> {{.*}}, <4 x i32> [[RES]], <4 x i32> {{.*}}
4815  return _mm_mask_min_epi32(__W,__M,__A,__B); 
4816}
4817__m256i test_mm256_maskz_min_epi32(__mmask8 __M, __m256i __A, __m256i __B) {
4818  // CHECK-LABEL: @test_mm256_maskz_min_epi32
4819  // CHECK:       [[CMP:%.*]] = icmp slt <8 x i32> [[X:%.*]], [[Y:%.*]]
4820  // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i32> [[X]], <8 x i32> [[Y]]
4821  // CHECK:       select <8 x i1> {{.*}}, <8 x i32> [[RES]], <8 x i32> {{.*}}
4822  return _mm256_maskz_min_epi32(__M,__A,__B); 
4823}
4824__m256i test_mm256_mask_min_epi32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
4825  // CHECK-LABEL: @test_mm256_mask_min_epi32
4826  // CHECK:       [[CMP:%.*]] = icmp slt <8 x i32> [[X:%.*]], [[Y:%.*]]
4827  // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i32> [[X]], <8 x i32> [[Y]]
4828  // CHECK:       select <8 x i1> {{.*}}, <8 x i32> [[RES]], <8 x i32> {{.*}}
4829  return _mm256_mask_min_epi32(__W,__M,__A,__B); 
4830}
4831__m128i test_mm_min_epi64(__m128i __A, __m128i __B) {
4832  // CHECK-LABEL: @test_mm_min_epi64
4833  // CHECK:       [[CMP:%.*]] = icmp slt <2 x i64> [[X:%.*]], [[Y:%.*]]
4834  // CHECK-NEXT:  [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4835  return _mm_min_epi64(__A,__B); 
4836}
4837__m128i test_mm_mask_min_epi64(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
4838  // CHECK-LABEL: @test_mm_mask_min_epi64
4839  // CHECK:       [[CMP:%.*]] = icmp slt <2 x i64> [[X:%.*]], [[Y:%.*]]
4840  // CHECK-NEXT:  [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4841  // CHECK:       select <2 x i1> {{.*}}, <2 x i64> [[RES]], <2 x i64> {{.*}}
4842  return _mm_mask_min_epi64(__W,__M,__A,__B); 
4843}
4844__m128i test_mm_maskz_min_epi64(__mmask8 __M, __m128i __A, __m128i __B) {
4845  // CHECK-LABEL: @test_mm_maskz_min_epi64
4846  // CHECK:       [[CMP:%.*]] = icmp slt <2 x i64> [[X:%.*]], [[Y:%.*]]
4847  // CHECK-NEXT:  [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4848  // CHECK:       select <2 x i1> {{.*}}, <2 x i64> [[RES]], <2 x i64> {{.*}}
4849  return _mm_maskz_min_epi64(__M,__A,__B); 
4850}
4851__m256i test_mm256_min_epi64(__m256i __A, __m256i __B) {
4852  // CHECK-LABEL: @test_mm256_min_epi64
4853  // CHECK:       [[CMP:%.*]] = icmp slt <4 x i64> [[X:%.*]], [[Y:%.*]]
4854  // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4855  return _mm256_min_epi64(__A,__B); 
4856}
4857__m256i test_mm256_mask_min_epi64(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
4858  // CHECK-LABEL: @test_mm256_mask_min_epi64
4859  // CHECK:       [[CMP:%.*]] = icmp slt <4 x i64> [[X:%.*]], [[Y:%.*]]
4860  // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4861  // CHECK:       select <4 x i1> {{.*}}, <4 x i64> [[RES]], <4 x i64> {{.*}}
4862  return _mm256_mask_min_epi64(__W,__M,__A,__B); 
4863}
4864__m256i test_mm256_maskz_min_epi64(__mmask8 __M, __m256i __A, __m256i __B) {
4865  // CHECK-LABEL: @test_mm256_maskz_min_epi64
4866  // CHECK:       [[CMP:%.*]] = icmp slt <4 x i64> [[X:%.*]], [[Y:%.*]]
4867  // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4868  // CHECK:       select <4 x i1> {{.*}}, <4 x i64> [[RES]], <4 x i64> {{.*}}
4869  return _mm256_maskz_min_epi64(__M,__A,__B); 
4870}
4871__m128i test_mm_maskz_min_epu32(__mmask8 __M, __m128i __A, __m128i __B) {
4872  // CHECK-LABEL: @test_mm_maskz_min_epu32
4873  // CHECK:       [[CMP:%.*]] = icmp ult <4 x i32> [[X:%.*]], [[Y:%.*]]
4874  // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i32> [[X]], <4 x i32> [[Y]]
4875  // CHECK:       select <4 x i1> {{.*}}, <4 x i32> [[RES]], <4 x i32> {{.*}}
4876  return _mm_maskz_min_epu32(__M,__A,__B); 
4877}
4878__m128i test_mm_mask_min_epu32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
4879  // CHECK-LABEL: @test_mm_mask_min_epu32
4880  // CHECK:       [[CMP:%.*]] = icmp ult <4 x i32> [[X:%.*]], [[Y:%.*]]
4881  // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i32> [[X]], <4 x i32> [[Y]]
4882  // CHECK:       select <4 x i1> {{.*}}, <4 x i32> [[RES]], <4 x i32> {{.*}}
4883  return _mm_mask_min_epu32(__W,__M,__A,__B); 
4884}
4885__m256i test_mm256_maskz_min_epu32(__mmask8 __M, __m256i __A, __m256i __B) {
4886  // CHECK-LABEL: @test_mm256_maskz_min_epu32
4887  // CHECK:       [[CMP:%.*]] = icmp ult <8 x i32> [[X:%.*]], [[Y:%.*]]
4888  // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i32> [[X]], <8 x i32> [[Y]]
4889  // CHECK:       select <8 x i1> {{.*}}, <8 x i32> [[RES]], <8 x i32> {{.*}}
4890  return _mm256_maskz_min_epu32(__M,__A,__B); 
4891}
4892__m256i test_mm256_mask_min_epu32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
4893  // CHECK-LABEL: @test_mm256_mask_min_epu32
4894  // CHECK:       [[CMP:%.*]] = icmp ult <8 x i32> [[X:%.*]], [[Y:%.*]]
4895  // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i32> [[X]], <8 x i32> [[Y]]
4896  // CHECK:       select <8 x i1> {{.*}}, <8 x i32> [[RES]], <8 x i32> {{.*}}
4897  return _mm256_mask_min_epu32(__W,__M,__A,__B); 
4898}
4899__m128i test_mm_min_epu64(__m128i __A, __m128i __B) {
4900  // CHECK-LABEL: @test_mm_min_epu64
4901  // CHECK:       [[CMP:%.*]] = icmp ult <2 x i64> [[X:%.*]], [[Y:%.*]]
4902  // CHECK-NEXT:  [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4903  return _mm_min_epu64(__A,__B); 
4904}
4905__m128i test_mm_mask_min_epu64(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
4906  // CHECK-LABEL: @test_mm_mask_min_epu64
4907  // CHECK:       [[CMP:%.*]] = icmp ult <2 x i64> [[X:%.*]], [[Y:%.*]]
4908  // CHECK-NEXT:  [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4909  // CHECK:       select <2 x i1> {{.*}}, <2 x i64> [[RES]], <2 x i64> {{.*}}
4910  return _mm_mask_min_epu64(__W,__M,__A,__B); 
4911}
4912__m128i test_mm_maskz_min_epu64(__mmask8 __M, __m128i __A, __m128i __B) {
4913  // CHECK-LABEL: @test_mm_maskz_min_epu64
4914  // CHECK:       [[CMP:%.*]] = icmp ult <2 x i64> [[X:%.*]], [[Y:%.*]]
4915  // CHECK-NEXT:  [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4916  // CHECK:       select <2 x i1> {{.*}}, <2 x i64> [[RES]], <2 x i64> {{.*}}
4917  return _mm_maskz_min_epu64(__M,__A,__B); 
4918}
4919__m256i test_mm256_min_epu64(__m256i __A, __m256i __B) {
4920  // CHECK-LABEL: @test_mm256_min_epu64
4921  // CHECK:       [[CMP:%.*]] = icmp ult <4 x i64> [[X:%.*]], [[Y:%.*]]
4922  // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4923  return _mm256_min_epu64(__A,__B); 
4924}
4925__m256i test_mm256_mask_min_epu64(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
4926  // CHECK-LABEL: @test_mm256_mask_min_epu64
4927  // CHECK:       [[CMP:%.*]] = icmp ult <4 x i64> [[X:%.*]], [[Y:%.*]]
4928  // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4929  // CHECK:       select <4 x i1> {{.*}}, <4 x i64> [[RES]], <4 x i64> {{.*}}
4930  return _mm256_mask_min_epu64(__W,__M,__A,__B); 
4931}
4932__m256i test_mm256_maskz_min_epu64(__mmask8 __M, __m256i __A, __m256i __B) {
4933  // CHECK-LABEL: @test_mm256_maskz_min_epu64
4934  // CHECK:       [[CMP:%.*]] = icmp ult <4 x i64> [[X:%.*]], [[Y:%.*]]
4935  // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4936  // CHECK:       select <4 x i1> {{.*}}, <4 x i64> [[RES]], <4 x i64> {{.*}}
4937  return _mm256_maskz_min_epu64(__M,__A,__B); 
4938}
4939__m128d test_mm_roundscale_pd(__m128d __A) {
4940  // CHECK-LABEL: @test_mm_roundscale_pd
4941  // CHECK: @llvm.x86.avx512.mask.rndscale.pd.128
4942  return _mm_roundscale_pd(__A,4); 
4943}
4944__m128d test_mm_mask_roundscale_pd(__m128d __W, __mmask8 __U, __m128d __A) {
4945  // CHECK-LABEL: @test_mm_mask_roundscale_pd
4946  // CHECK: @llvm.x86.avx512.mask.rndscale.pd.128
4947  return _mm_mask_roundscale_pd(__W,__U,__A,4); 
4948}
4949__m128d test_mm_maskz_roundscale_pd(__mmask8 __U, __m128d __A) {
4950  // CHECK-LABEL: @test_mm_maskz_roundscale_pd
4951  // CHECK: @llvm.x86.avx512.mask.rndscale.pd.128
4952  return _mm_maskz_roundscale_pd(__U,__A,4); 
4953}
4954__m256d test_mm256_roundscale_pd(__m256d __A) {
4955  // CHECK-LABEL: @test_mm256_roundscale_pd
4956  // CHECK: @llvm.x86.avx512.mask.rndscale.pd.256
4957  return _mm256_roundscale_pd(__A,4); 
4958}
4959__m256d test_mm256_mask_roundscale_pd(__m256d __W, __mmask8 __U, __m256d __A) {
4960  // CHECK-LABEL: @test_mm256_mask_roundscale_pd
4961  // CHECK: @llvm.x86.avx512.mask.rndscale.pd.256
4962  return _mm256_mask_roundscale_pd(__W,__U,__A,4); 
4963}
4964__m256d test_mm256_maskz_roundscale_pd(__mmask8 __U, __m256d __A) {
4965  // CHECK-LABEL: @test_mm256_maskz_roundscale_pd
4966  // CHECK: @llvm.x86.avx512.mask.rndscale.pd.256
4967  return _mm256_maskz_roundscale_pd(__U,__A,4); 
4968}
4969__m128 test_mm_roundscale_ps(__m128 __A) {
4970  // CHECK-LABEL: @test_mm_roundscale_ps
4971  // CHECK: @llvm.x86.avx512.mask.rndscale.ps.128
4972  return _mm_roundscale_ps(__A,4); 
4973}
4974__m128 test_mm_mask_roundscale_ps(__m128 __W, __mmask8 __U, __m128 __A) {
4975  // CHECK-LABEL: @test_mm_mask_roundscale_ps
4976  // CHECK: @llvm.x86.avx512.mask.rndscale.ps.128
4977  return _mm_mask_roundscale_ps(__W,__U,__A,4); 
4978}
4979__m128 test_mm_maskz_roundscale_ps(__mmask8 __U, __m128 __A) {
4980  // CHECK-LABEL: @test_mm_maskz_roundscale_ps
4981  // CHECK: @llvm.x86.avx512.mask.rndscale.ps.128
4982  return _mm_maskz_roundscale_ps(__U,__A, 4); 
4983}
4984__m256 test_mm256_roundscale_ps(__m256 __A) {
4985  // CHECK-LABEL: @test_mm256_roundscale_ps
4986  // CHECK: @llvm.x86.avx512.mask.rndscale.ps.256
4987  return _mm256_roundscale_ps(__A,4); 
4988}
4989__m256 test_mm256_mask_roundscale_ps(__m256 __W, __mmask8 __U, __m256 __A) {
4990  // CHECK-LABEL: @test_mm256_mask_roundscale_ps
4991  // CHECK: @llvm.x86.avx512.mask.rndscale.ps.256
4992  return _mm256_mask_roundscale_ps(__W,__U,__A,4); 
4993}
4994__m256 test_mm256_maskz_roundscale_ps(__mmask8 __U, __m256 __A) {
4995  // CHECK-LABEL: @test_mm256_maskz_roundscale_ps
4996  // CHECK: @llvm.x86.avx512.mask.rndscale.ps.256
4997  return _mm256_maskz_roundscale_ps(__U,__A,4); 
4998}
4999__m128d test_mm_scalef_pd(__m128d __A, __m128d __B) {
5000  // CHECK-LABEL: @test_mm_scalef_pd
5001  // CHECK: @llvm.x86.avx512.mask.scalef.pd.128
5002  return _mm_scalef_pd(__A,__B); 
5003}
5004__m128d test_mm_mask_scalef_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
5005  // CHECK-LABEL: @test_mm_mask_scalef_pd
5006  // CHECK: @llvm.x86.avx512.mask.scalef.pd.128
5007  return _mm_mask_scalef_pd(__W,__U,__A,__B); 
5008}
5009__m128d test_mm_maskz_scalef_pd(__mmask8 __U, __m128d __A, __m128d __B) {
5010  // CHECK-LABEL: @test_mm_maskz_scalef_pd
5011  // CHECK: @llvm.x86.avx512.mask.scalef.pd.128
5012  return _mm_maskz_scalef_pd(__U,__A,__B); 
5013}
5014__m256d test_mm256_scalef_pd(__m256d __A, __m256d __B) {
5015  // CHECK-LABEL: @test_mm256_scalef_pd
5016  // CHECK: @llvm.x86.avx512.mask.scalef.pd.256
5017  return _mm256_scalef_pd(__A,__B); 
5018}
5019__m256d test_mm256_mask_scalef_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
5020  // CHECK-LABEL: @test_mm256_mask_scalef_pd
5021  // CHECK: @llvm.x86.avx512.mask.scalef.pd.256
5022  return _mm256_mask_scalef_pd(__W,__U,__A,__B); 
5023}
5024__m256d test_mm256_maskz_scalef_pd(__mmask8 __U, __m256d __A, __m256d __B) {
5025  // CHECK-LABEL: @test_mm256_maskz_scalef_pd
5026  // CHECK: @llvm.x86.avx512.mask.scalef.pd.256
5027  return _mm256_maskz_scalef_pd(__U,__A,__B); 
5028}
5029__m128 test_mm_scalef_ps(__m128 __A, __m128 __B) {
5030  // CHECK-LABEL: @test_mm_scalef_ps
5031  // CHECK: @llvm.x86.avx512.mask.scalef.ps.128
5032  return _mm_scalef_ps(__A,__B); 
5033}
5034__m128 test_mm_mask_scalef_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
5035  // CHECK-LABEL: @test_mm_mask_scalef_ps
5036  // CHECK: @llvm.x86.avx512.mask.scalef.ps.128
5037  return _mm_mask_scalef_ps(__W,__U,__A,__B); 
5038}
5039__m128 test_mm_maskz_scalef_ps(__mmask8 __U, __m128 __A, __m128 __B) {
5040  // CHECK-LABEL: @test_mm_maskz_scalef_ps
5041  // CHECK: @llvm.x86.avx512.mask.scalef.ps.128
5042  return _mm_maskz_scalef_ps(__U,__A,__B); 
5043}
5044__m256 test_mm256_scalef_ps(__m256 __A, __m256 __B) {
5045  // CHECK-LABEL: @test_mm256_scalef_ps
5046  // CHECK: @llvm.x86.avx512.mask.scalef.ps.256
5047  return _mm256_scalef_ps(__A,__B); 
5048}
5049__m256 test_mm256_mask_scalef_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
5050  // CHECK-LABEL: @test_mm256_mask_scalef_ps
5051  // CHECK: @llvm.x86.avx512.mask.scalef.ps.256
5052  return _mm256_mask_scalef_ps(__W,__U,__A,__B); 
5053}
5054__m256 test_mm256_maskz_scalef_ps(__mmask8 __U, __m256 __A, __m256 __B) {
5055  // CHECK-LABEL: @test_mm256_maskz_scalef_ps
5056  // CHECK: @llvm.x86.avx512.mask.scalef.ps.256
5057  return _mm256_maskz_scalef_ps(__U,__A,__B); 
5058}
5059void test_mm_i64scatter_pd(double *__addr, __m128i __index,  __m128d __v1) {
5060  // CHECK-LABEL: @test_mm_i64scatter_pd
5061  // CHECK: @llvm.x86.avx512.mask.scatterdiv2.df
5062  return _mm_i64scatter_pd(__addr,__index,__v1,2); 
5063}
5064void test_mm_mask_i64scatter_pd(double *__addr, __mmask8 __mask, __m128i __index, __m128d __v1) {
5065  // CHECK-LABEL: @test_mm_mask_i64scatter_pd
5066  // CHECK: @llvm.x86.avx512.mask.scatterdiv2.df
5067  return _mm_mask_i64scatter_pd(__addr,__mask,__index,__v1,2); 
5068}
5069void test_mm_i64scatter_epi64(long long *__addr, __m128i __index,  __m128i __v1) {
5070  // CHECK-LABEL: @test_mm_i64scatter_epi64
5071  // CHECK: @llvm.x86.avx512.mask.scatterdiv2.di
5072  return _mm_i64scatter_epi64(__addr,__index,__v1,2); 
5073}
5074void test_mm_mask_i64scatter_epi64(long long *__addr, __mmask8 __mask, __m128i __index, __m128i __v1) {
5075  // CHECK-LABEL: @test_mm_mask_i64scatter_epi64
5076  // CHECK: @llvm.x86.avx512.mask.scatterdiv2.di
5077  return _mm_mask_i64scatter_epi64(__addr,__mask,__index,__v1,2); 
5078}
5079void test_mm256_i64scatter_pd(double *__addr, __m256i __index,  __m256d __v1) {
5080  // CHECK-LABEL: @test_mm256_i64scatter_pd
5081  // CHECK: @llvm.x86.avx512.mask.scatterdiv4.df
5082  return _mm256_i64scatter_pd(__addr,__index,__v1,2); 
5083}
5084void test_mm256_mask_i64scatter_pd(double *__addr, __mmask8 __mask, __m256i __index, __m256d __v1) {
5085  // CHECK-LABEL: @test_mm256_mask_i64scatter_pd
5086  // CHECK: @llvm.x86.avx512.mask.scatterdiv4.df
5087  return _mm256_mask_i64scatter_pd(__addr,__mask,__index,__v1,2); 
5088}
5089void test_mm256_i64scatter_epi64(long long *__addr, __m256i __index,  __m256i __v1) {
5090  // CHECK-LABEL: @test_mm256_i64scatter_epi64
5091  // CHECK: @llvm.x86.avx512.mask.scatterdiv4.di
5092  return _mm256_i64scatter_epi64(__addr,__index,__v1,2); 
5093}
5094void test_mm256_mask_i64scatter_epi64(long long *__addr, __mmask8 __mask,  __m256i __index, __m256i __v1) {
5095  // CHECK-LABEL: @test_mm256_mask_i64scatter_epi64
5096  // CHECK: @llvm.x86.avx512.mask.scatterdiv4.di
5097  return _mm256_mask_i64scatter_epi64(__addr,__mask,__index,__v1,2); 
5098}
5099void test_mm_i64scatter_ps(float *__addr, __m128i __index, __m128 __v1) {
5100  // CHECK-LABEL: @test_mm_i64scatter_ps
5101  // CHECK: @llvm.x86.avx512.mask.scatterdiv4.sf
5102  return _mm_i64scatter_ps(__addr,__index,__v1,2); 
5103}
5104void test_mm_mask_i64scatter_ps(float *__addr, __mmask8 __mask, __m128i __index, __m128 __v1) {
5105  // CHECK-LABEL: @test_mm_mask_i64scatter_ps
5106  // CHECK: @llvm.x86.avx512.mask.scatterdiv4.sf
5107  return _mm_mask_i64scatter_ps(__addr,__mask,__index,__v1,2); 
5108}
5109void test_mm_i64scatter_epi32(int *__addr, __m128i __index,  __m128i __v1) {
5110  // CHECK-LABEL: @test_mm_i64scatter_epi32
5111  // CHECK: @llvm.x86.avx512.mask.scatterdiv4.si
5112  return _mm_i64scatter_epi32(__addr,__index,__v1,2); 
5113}
5114void test_mm_mask_i64scatter_epi32(int *__addr, __mmask8 __mask, __m128i __index, __m128i __v1) {
5115  // CHECK-LABEL: @test_mm_mask_i64scatter_epi32
5116  // CHECK: @llvm.x86.avx512.mask.scatterdiv4.si
5117  return _mm_mask_i64scatter_epi32(__addr,__mask,__index,__v1,2); 
5118}
5119void test_mm256_i64scatter_ps(float *__addr, __m256i __index,  __m128 __v1) {
5120  // CHECK-LABEL: @test_mm256_i64scatter_ps
5121  // CHECK: @llvm.x86.avx512.mask.scatterdiv8.sf
5122  return _mm256_i64scatter_ps(__addr,__index,__v1,2); 
5123}
5124void test_mm256_mask_i64scatter_ps(float *__addr, __mmask8 __mask, __m256i __index, __m128 __v1) {
5125  // CHECK-LABEL: @test_mm256_mask_i64scatter_ps
5126  // CHECK: @llvm.x86.avx512.mask.scatterdiv8.sf
5127  return _mm256_mask_i64scatter_ps(__addr,__mask,__index,__v1,2); 
5128}
5129void test_mm256_i64scatter_epi32(int *__addr, __m256i __index,  __m128i __v1) {
5130  // CHECK-LABEL: @test_mm256_i64scatter_epi32
5131  // CHECK: @llvm.x86.avx512.mask.scatterdiv8.si
5132  return _mm256_i64scatter_epi32(__addr,__index,__v1,2); 
5133}
5134void test_mm256_mask_i64scatter_epi32(int *__addr, __mmask8 __mask,  __m256i __index, __m128i __v1) {
5135  // CHECK-LABEL: @test_mm256_mask_i64scatter_epi32
5136  // CHECK: @llvm.x86.avx512.mask.scatterdiv8.si
5137  return _mm256_mask_i64scatter_epi32(__addr,__mask,__index,__v1,2); 
5138}
5139void test_mm_i32scatter_pd(double *__addr, __m128i __index,  __m128d __v1) {
5140  // CHECK-LABEL: @test_mm_i32scatter_pd
5141  // CHECK: @llvm.x86.avx512.mask.scattersiv2.df
5142  return _mm_i32scatter_pd(__addr,__index,__v1,2); 
5143}
5144void test_mm_mask_i32scatter_pd(double *__addr, __mmask8 __mask, __m128i __index, __m128d __v1) {
5145  // CHECK-LABEL: @test_mm_mask_i32scatter_pd
5146  // CHECK: @llvm.x86.avx512.mask.scattersiv2.df
5147  return _mm_mask_i32scatter_pd(__addr,__mask,__index,__v1,2); 
5148}
5149void test_mm_i32scatter_epi64(long long *__addr, __m128i __index,  __m128i __v1) {
5150  // CHECK-LABEL: @test_mm_i32scatter_epi64
5151  // CHECK: @llvm.x86.avx512.mask.scattersiv2.di
5152  return _mm_i32scatter_epi64(__addr,__index,__v1,2); 
5153}
5154void test_mm_mask_i32scatter_epi64(long long *__addr, __mmask8 __mask, __m128i __index, __m128i __v1) {
5155  // CHECK-LABEL: @test_mm_mask_i32scatter_epi64
5156  // CHECK: @llvm.x86.avx512.mask.scattersiv2.di
5157  return _mm_mask_i32scatter_epi64(__addr,__mask,__index,__v1,2); 
5158}
5159void test_mm256_i32scatter_pd(double *__addr, __m128i __index,  __m256d __v1) {
5160  // CHECK-LABEL: @test_mm256_i32scatter_pd
5161  // CHECK: @llvm.x86.avx512.mask.scattersiv4.df
5162  return _mm256_i32scatter_pd(__addr,__index,__v1,2); 
5163}
5164void test_mm256_mask_i32scatter_pd(double *__addr, __mmask8 __mask, __m128i __index, __m256d __v1) {
5165  // CHECK-LABEL: @test_mm256_mask_i32scatter_pd
5166  // CHECK: @llvm.x86.avx512.mask.scattersiv4.df
5167  return _mm256_mask_i32scatter_pd(__addr,__mask,__index,__v1,2); 
5168}
5169void test_mm256_i32scatter_epi64(long long *__addr, __m128i __index,  __m256i __v1) {
5170  // CHECK-LABEL: @test_mm256_i32scatter_epi64
5171  // CHECK: @llvm.x86.avx512.mask.scattersiv4.di
5172  return _mm256_i32scatter_epi64(__addr,__index,__v1,2); 
5173}
5174void test_mm256_mask_i32scatter_epi64(long long *__addr, __mmask8 __mask,  __m128i __index, __m256i __v1) {
5175  // CHECK-LABEL: @test_mm256_mask_i32scatter_epi64
5176  // CHECK: @llvm.x86.avx512.mask.scattersiv4.di
5177  return _mm256_mask_i32scatter_epi64(__addr,__mask,__index,__v1,2); 
5178}
5179void test_mm_i32scatter_ps(float *__addr, __m128i __index, __m128 __v1) {
5180  // CHECK-LABEL: @test_mm_i32scatter_ps
5181  // CHECK: @llvm.x86.avx512.mask.scattersiv4.sf
5182  return _mm_i32scatter_ps(__addr,__index,__v1,2); 
5183}
5184void test_mm_mask_i32scatter_ps(float *__addr, __mmask8 __mask, __m128i __index, __m128 __v1) {
5185  // CHECK-LABEL: @test_mm_mask_i32scatter_ps
5186  // CHECK: @llvm.x86.avx512.mask.scattersiv4.sf
5187  return _mm_mask_i32scatter_ps(__addr,__mask,__index,__v1,2); 
5188}
5189void test_mm_i32scatter_epi32(int *__addr, __m128i __index,  __m128i __v1) {
5190  // CHECK-LABEL: @test_mm_i32scatter_epi32
5191  // CHECK: @llvm.x86.avx512.mask.scattersiv4.si
5192  return _mm_i32scatter_epi32(__addr,__index,__v1,2); 
5193}
5194void test_mm_mask_i32scatter_epi32(int *__addr, __mmask8 __mask, __m128i __index, __m128i __v1) {
5195  // CHECK-LABEL: @test_mm_mask_i32scatter_epi32
5196  // CHECK: @llvm.x86.avx512.mask.scattersiv4.si
5197  return _mm_mask_i32scatter_epi32(__addr,__mask,__index,__v1,2); 
5198}
5199void test_mm256_i32scatter_ps(float *__addr, __m256i __index,  __m256 __v1) {
5200  // CHECK-LABEL: @test_mm256_i32scatter_ps
5201  // CHECK: @llvm.x86.avx512.mask.scattersiv8.sf
5202  return _mm256_i32scatter_ps(__addr,__index,__v1,2); 
5203}
5204void test_mm256_mask_i32scatter_ps(float *__addr, __mmask8 __mask, __m256i __index, __m256 __v1) {
5205  // CHECK-LABEL: @test_mm256_mask_i32scatter_ps
5206  // CHECK: @llvm.x86.avx512.mask.scattersiv8.sf
5207  return _mm256_mask_i32scatter_ps(__addr,__mask,__index,__v1,2); 
5208}
5209void test_mm256_i32scatter_epi32(int *__addr, __m256i __index,  __m256i __v1) {
5210  // CHECK-LABEL: @test_mm256_i32scatter_epi32
5211  // CHECK: @llvm.x86.avx512.mask.scattersiv8.si
5212  return _mm256_i32scatter_epi32(__addr,__index,__v1,2); 
5213}
5214void test_mm256_mask_i32scatter_epi32(int *__addr, __mmask8 __mask,  __m256i __index, __m256i __v1) {
5215  // CHECK-LABEL: @test_mm256_mask_i32scatter_epi32
5216  // CHECK: @llvm.x86.avx512.mask.scattersiv8.si
5217  return _mm256_mask_i32scatter_epi32(__addr,__mask,__index,__v1,2); 
5218}
5219__m128d test_mm_mask_sqrt_pd(__m128d __W, __mmask8 __U, __m128d __A) {
5220  // CHECK-LABEL: @test_mm_mask_sqrt_pd
5221  // CHECK: @llvm.sqrt.v2f64
5222  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
5223  return _mm_mask_sqrt_pd(__W,__U,__A); 
5224}
5225__m128d test_mm_maskz_sqrt_pd(__mmask8 __U, __m128d __A) {
5226  // CHECK-LABEL: @test_mm_maskz_sqrt_pd
5227  // CHECK: @llvm.sqrt.v2f64
5228  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
5229  return _mm_maskz_sqrt_pd(__U,__A); 
5230}
5231__m256d test_mm256_mask_sqrt_pd(__m256d __W, __mmask8 __U, __m256d __A) {
5232  // CHECK-LABEL: @test_mm256_mask_sqrt_pd
5233  // CHECK: @llvm.sqrt.v4f64
5234  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
5235  return _mm256_mask_sqrt_pd(__W,__U,__A); 
5236}
5237__m256d test_mm256_maskz_sqrt_pd(__mmask8 __U, __m256d __A) {
5238  // CHECK-LABEL: @test_mm256_maskz_sqrt_pd
5239  // CHECK: @llvm.sqrt.v4f64
5240  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
5241  return _mm256_maskz_sqrt_pd(__U,__A); 
5242}
5243__m128 test_mm_mask_sqrt_ps(__m128 __W, __mmask8 __U, __m128 __A) {
5244  // CHECK-LABEL: @test_mm_mask_sqrt_ps
5245  // CHECK: @llvm.sqrt.v4f32
5246  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
5247  return _mm_mask_sqrt_ps(__W,__U,__A); 
5248}
5249__m128 test_mm_maskz_sqrt_ps(__mmask8 __U, __m128 __A) {
5250  // CHECK-LABEL: @test_mm_maskz_sqrt_ps
5251  // CHECK: @llvm.sqrt.v4f32
5252  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
5253  return _mm_maskz_sqrt_ps(__U,__A); 
5254}
5255__m256 test_mm256_mask_sqrt_ps(__m256 __W, __mmask8 __U, __m256 __A) {
5256  // CHECK-LABEL: @test_mm256_mask_sqrt_ps
5257  // CHECK: @llvm.sqrt.v8f32
5258  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
5259  return _mm256_mask_sqrt_ps(__W,__U,__A); 
5260}
5261__m256 test_mm256_maskz_sqrt_ps(__mmask8 __U, __m256 __A) {
5262  // CHECK-LABEL: @test_mm256_maskz_sqrt_ps
5263  // CHECK: @llvm.sqrt.v8f32
5264  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
5265  return _mm256_maskz_sqrt_ps(__U,__A); 
5266}
5267__m128d test_mm_mask_sub_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
5268  // CHECK-LABEL: @test_mm_mask_sub_pd
5269  // CHECK: fsub <2 x double> %{{.*}}, %{{.*}}
5270  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
5271  return _mm_mask_sub_pd(__W,__U,__A,__B); 
5272}
5273__m128d test_mm_maskz_sub_pd(__mmask8 __U, __m128d __A, __m128d __B) {
5274  // CHECK-LABEL: @test_mm_maskz_sub_pd
5275  // CHECK: fsub <2 x double> %{{.*}}, %{{.*}}
5276  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
5277  return _mm_maskz_sub_pd(__U,__A,__B); 
5278}
5279__m256d test_mm256_mask_sub_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
5280  // CHECK-LABEL: @test_mm256_mask_sub_pd
5281  // CHECK: fsub <4 x double> %{{.*}}, %{{.*}}
5282  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
5283  return _mm256_mask_sub_pd(__W,__U,__A,__B); 
5284}
5285__m256d test_mm256_maskz_sub_pd(__mmask8 __U, __m256d __A, __m256d __B) {
5286  // CHECK-LABEL: @test_mm256_maskz_sub_pd
5287  // CHECK: fsub <4 x double> %{{.*}}, %{{.*}}
5288  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
5289  return _mm256_maskz_sub_pd(__U,__A,__B); 
5290}
5291__m128 test_mm_mask_sub_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
5292  // CHECK-LABEL: @test_mm_mask_sub_ps
5293  // CHECK: fsub <4 x float> %{{.*}}, %{{.*}}
5294  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
5295  return _mm_mask_sub_ps(__W,__U,__A,__B); 
5296}
5297__m128 test_mm_maskz_sub_ps(__mmask8 __U, __m128 __A, __m128 __B) {
5298  // CHECK-LABEL: @test_mm_maskz_sub_ps
5299  // CHECK: fsub <4 x float> %{{.*}}, %{{.*}}
5300  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
5301  return _mm_maskz_sub_ps(__U,__A,__B); 
5302}
5303__m256 test_mm256_mask_sub_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
5304  // CHECK-LABEL: @test_mm256_mask_sub_ps
5305  // CHECK: fsub <8 x float> %{{.*}}, %{{.*}}
5306  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
5307  return _mm256_mask_sub_ps(__W,__U,__A,__B); 
5308}
5309__m256 test_mm256_maskz_sub_ps(__mmask8 __U, __m256 __A, __m256 __B) {
5310  // CHECK-LABEL: @test_mm256_maskz_sub_ps
5311  // CHECK: fsub <8 x float> %{{.*}}, %{{.*}}
5312  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
5313  return _mm256_maskz_sub_ps(__U,__A,__B); 
5314}
5315__m128i test_mm_mask2_permutex2var_epi32(__m128i __A, __m128i __I, __mmask8 __U,  __m128i __B) {
5316  // CHECK-LABEL: @test_mm_mask2_permutex2var_epi32
5317  // CHECK: @llvm.x86.avx512.vpermi2var.d.128
5318  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5319  return _mm_mask2_permutex2var_epi32(__A,__I,__U,__B); 
5320}
5321__m256i test_mm256_mask2_permutex2var_epi32(__m256i __A, __m256i __I, __mmask8 __U, __m256i __B) {
5322  // CHECK-LABEL: @test_mm256_mask2_permutex2var_epi32
5323  // CHECK: @llvm.x86.avx512.vpermi2var.d.256
5324  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5325  return _mm256_mask2_permutex2var_epi32(__A,__I,__U,__B); 
5326}
5327__m128d test_mm_mask2_permutex2var_pd(__m128d __A, __m128i __I, __mmask8 __U, __m128d __B) {
5328  // CHECK-LABEL: @test_mm_mask2_permutex2var_pd
5329  // CHECK: @llvm.x86.avx512.vpermi2var.pd.128
5330  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
5331  return _mm_mask2_permutex2var_pd(__A,__I,__U,__B); 
5332}
5333__m256d test_mm256_mask2_permutex2var_pd(__m256d __A, __m256i __I, __mmask8 __U,  __m256d __B) {
5334  // CHECK-LABEL: @test_mm256_mask2_permutex2var_pd
5335  // CHECK: @llvm.x86.avx512.vpermi2var.pd.256
5336  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
5337  return _mm256_mask2_permutex2var_pd(__A,__I,__U,__B); 
5338}
5339__m128 test_mm_mask2_permutex2var_ps(__m128 __A, __m128i __I, __mmask8 __U, __m128 __B) {
5340  // CHECK-LABEL: @test_mm_mask2_permutex2var_ps
5341  // CHECK: @llvm.x86.avx512.vpermi2var.ps.128
5342  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
5343  return _mm_mask2_permutex2var_ps(__A,__I,__U,__B); 
5344}
5345__m256 test_mm256_mask2_permutex2var_ps(__m256 __A, __m256i __I, __mmask8 __U,  __m256 __B) {
5346  // CHECK-LABEL: @test_mm256_mask2_permutex2var_ps
5347  // CHECK: @llvm.x86.avx512.vpermi2var.ps.256
5348  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
5349  return _mm256_mask2_permutex2var_ps(__A,__I,__U,__B); 
5350}
5351__m128i test_mm_mask2_permutex2var_epi64(__m128i __A, __m128i __I, __mmask8 __U,  __m128i __B) {
5352  // CHECK-LABEL: @test_mm_mask2_permutex2var_epi64
5353  // CHECK: @llvm.x86.avx512.vpermi2var.q.128
5354  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5355  return _mm_mask2_permutex2var_epi64(__A,__I,__U,__B); 
5356}
5357__m256i test_mm256_mask2_permutex2var_epi64(__m256i __A, __m256i __I, __mmask8 __U, __m256i __B) {
5358  // CHECK-LABEL: @test_mm256_mask2_permutex2var_epi64
5359  // CHECK: @llvm.x86.avx512.vpermi2var.q.256
5360  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5361  return _mm256_mask2_permutex2var_epi64(__A,__I,__U,__B); 
5362}
5363__m128i test_mm_permutex2var_epi32(__m128i __A, __m128i __I, __m128i __B) {
5364  // CHECK-LABEL: @test_mm_permutex2var_epi32
5365  // CHECK: @llvm.x86.avx512.vpermi2var.d.128
5366  return _mm_permutex2var_epi32(__A,__I,__B); 
5367}
5368__m128i test_mm_mask_permutex2var_epi32(__m128i __A, __mmask8 __U, __m128i __I, __m128i __B) {
5369  // CHECK-LABEL: @test_mm_mask_permutex2var_epi32
5370  // CHECK: @llvm.x86.avx512.vpermi2var.d.128
5371  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5372  return _mm_mask_permutex2var_epi32(__A,__U,__I,__B); 
5373}
5374__m128i test_mm_maskz_permutex2var_epi32(__mmask8 __U, __m128i __A, __m128i __I,  __m128i __B) {
5375  // CHECK-LABEL: @test_mm_maskz_permutex2var_epi32
5376  // CHECK: @llvm.x86.avx512.vpermi2var.d.128
5377  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5378  return _mm_maskz_permutex2var_epi32(__U,__A,__I,__B); 
5379}
5380__m256i test_mm256_permutex2var_epi32(__m256i __A, __m256i __I, __m256i __B) {
5381  // CHECK-LABEL: @test_mm256_permutex2var_epi32
5382  // CHECK: @llvm.x86.avx512.vpermi2var.d.256
5383  return _mm256_permutex2var_epi32(__A,__I,__B); 
5384}
5385__m256i test_mm256_mask_permutex2var_epi32(__m256i __A, __mmask8 __U, __m256i __I, __m256i __B) {
5386  // CHECK-LABEL: @test_mm256_mask_permutex2var_epi32
5387  // CHECK: @llvm.x86.avx512.vpermi2var.d.256
5388  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5389  return _mm256_mask_permutex2var_epi32(__A,__U,__I,__B); 
5390}
5391__m256i test_mm256_maskz_permutex2var_epi32(__mmask8 __U, __m256i __A, __m256i __I, __m256i __B) {
5392  // CHECK-LABEL: @test_mm256_maskz_permutex2var_epi32
5393  // CHECK: @llvm.x86.avx512.vpermi2var.d.256
5394  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5395  return _mm256_maskz_permutex2var_epi32(__U,__A,__I,__B); 
5396}
5397__m128d test_mm_permutex2var_pd(__m128d __A, __m128i __I, __m128d __B) {
5398  // CHECK-LABEL: @test_mm_permutex2var_pd
5399  // CHECK: @llvm.x86.avx512.vpermi2var.pd.128
5400  return _mm_permutex2var_pd(__A,__I,__B); 
5401}
5402__m128d test_mm_mask_permutex2var_pd(__m128d __A, __mmask8 __U, __m128i __I, __m128d __B) {
5403  // CHECK-LABEL: @test_mm_mask_permutex2var_pd
5404  // CHECK: @llvm.x86.avx512.vpermi2var.pd.128
5405  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
5406  return _mm_mask_permutex2var_pd(__A,__U,__I,__B); 
5407}
5408__m128d test_mm_maskz_permutex2var_pd(__mmask8 __U, __m128d __A, __m128i __I, __m128d __B) {
5409  // CHECK-LABEL: @test_mm_maskz_permutex2var_pd
5410  // CHECK: @llvm.x86.avx512.vpermi2var.pd.128
5411  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
5412  return _mm_maskz_permutex2var_pd(__U,__A,__I,__B); 
5413}
5414__m256d test_mm256_permutex2var_pd(__m256d __A, __m256i __I, __m256d __B) {
5415  // CHECK-LABEL: @test_mm256_permutex2var_pd
5416  // CHECK: @llvm.x86.avx512.vpermi2var.pd.256
5417  return _mm256_permutex2var_pd(__A,__I,__B); 
5418}
5419__m256d test_mm256_mask_permutex2var_pd(__m256d __A, __mmask8 __U, __m256i __I, __m256d __B) {
5420  // CHECK-LABEL: @test_mm256_mask_permutex2var_pd
5421  // CHECK: @llvm.x86.avx512.vpermi2var.pd.256
5422  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
5423  return _mm256_mask_permutex2var_pd(__A,__U,__I,__B); 
5424}
5425__m256d test_mm256_maskz_permutex2var_pd(__mmask8 __U, __m256d __A, __m256i __I,  __m256d __B) {
5426  // CHECK-LABEL: @test_mm256_maskz_permutex2var_pd
5427  // CHECK: @llvm.x86.avx512.vpermi2var.pd.256
5428  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
5429  return _mm256_maskz_permutex2var_pd(__U,__A,__I,__B); 
5430}
5431__m128 test_mm_permutex2var_ps(__m128 __A, __m128i __I, __m128 __B) {
5432  // CHECK-LABEL: @test_mm_permutex2var_ps
5433  // CHECK: @llvm.x86.avx512.vpermi2var.ps.128
5434  return _mm_permutex2var_ps(__A,__I,__B); 
5435}
5436__m128 test_mm_mask_permutex2var_ps(__m128 __A, __mmask8 __U, __m128i __I, __m128 __B) {
5437  // CHECK-LABEL: @test_mm_mask_permutex2var_ps
5438  // CHECK: @llvm.x86.avx512.vpermi2var.ps.128
5439  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
5440  return _mm_mask_permutex2var_ps(__A,__U,__I,__B); 
5441}
5442__m128 test_mm_maskz_permutex2var_ps(__mmask8 __U, __m128 __A, __m128i __I, __m128 __B) {
5443  // CHECK-LABEL: @test_mm_maskz_permutex2var_ps
5444  // CHECK: @llvm.x86.avx512.vpermi2var.ps.128
5445  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
5446  return _mm_maskz_permutex2var_ps(__U,__A,__I,__B); 
5447}
5448__m256 test_mm256_permutex2var_ps(__m256 __A, __m256i __I, __m256 __B) {
5449  // CHECK-LABEL: @test_mm256_permutex2var_ps
5450  // CHECK: @llvm.x86.avx512.vpermi2var.ps.256
5451  return _mm256_permutex2var_ps(__A,__I,__B); 
5452}
5453__m256 test_mm256_mask_permutex2var_ps(__m256 __A, __mmask8 __U, __m256i __I, __m256 __B) {
5454  // CHECK-LABEL: @test_mm256_mask_permutex2var_ps
5455  // CHECK: @llvm.x86.avx512.vpermi2var.ps.256
5456  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
5457  return _mm256_mask_permutex2var_ps(__A,__U,__I,__B); 
5458}
5459__m256 test_mm256_maskz_permutex2var_ps(__mmask8 __U, __m256 __A, __m256i __I, __m256 __B) {
5460  // CHECK-LABEL: @test_mm256_maskz_permutex2var_ps
5461  // CHECK: @llvm.x86.avx512.vpermi2var.ps.256
5462  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
5463  return _mm256_maskz_permutex2var_ps(__U,__A,__I,__B); 
5464}
5465__m128i test_mm_permutex2var_epi64(__m128i __A, __m128i __I, __m128i __B) {
5466  // CHECK-LABEL: @test_mm_permutex2var_epi64
5467  // CHECK: @llvm.x86.avx512.vpermi2var.q.128
5468  return _mm_permutex2var_epi64(__A,__I,__B); 
5469}
5470__m128i test_mm_mask_permutex2var_epi64(__m128i __A, __mmask8 __U, __m128i __I, __m128i __B) {
5471  // CHECK-LABEL: @test_mm_mask_permutex2var_epi64
5472  // CHECK: @llvm.x86.avx512.vpermi2var.q.128
5473  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5474  return _mm_mask_permutex2var_epi64(__A,__U,__I,__B); 
5475}
5476__m128i test_mm_maskz_permutex2var_epi64(__mmask8 __U, __m128i __A, __m128i __I, __m128i __B) {
5477  // CHECK-LABEL: @test_mm_maskz_permutex2var_epi64
5478  // CHECK: @llvm.x86.avx512.vpermi2var.q.128
5479  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5480  return _mm_maskz_permutex2var_epi64(__U,__A,__I,__B); 
5481}
5482__m256i test_mm256_permutex2var_epi64(__m256i __A, __m256i __I, __m256i __B) {
5483  // CHECK-LABEL: @test_mm256_permutex2var_epi64
5484  // CHECK: @llvm.x86.avx512.vpermi2var.q.256
5485  return _mm256_permutex2var_epi64(__A,__I,__B); 
5486}
5487__m256i test_mm256_mask_permutex2var_epi64(__m256i __A, __mmask8 __U, __m256i __I, __m256i __B) {
5488  // CHECK-LABEL: @test_mm256_mask_permutex2var_epi64
5489  // CHECK: @llvm.x86.avx512.vpermi2var.q.256
5490  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5491  return _mm256_mask_permutex2var_epi64(__A,__U,__I,__B); 
5492}
5493__m256i test_mm256_maskz_permutex2var_epi64(__mmask8 __U, __m256i __A, __m256i __I, __m256i __B) {
5494  // CHECK-LABEL: @test_mm256_maskz_permutex2var_epi64
5495  // CHECK: @llvm.x86.avx512.vpermi2var.q.256
5496  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5497  return _mm256_maskz_permutex2var_epi64(__U,__A,__I,__B); 
5498}
5499
5500__m128i test_mm_mask_cvtepi8_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
5501  // CHECK-LABEL: @test_mm_mask_cvtepi8_epi32
5502  // CHECK: sext <4 x i8> %{{.*}} to <4 x i32>
5503  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5504  return _mm_mask_cvtepi8_epi32(__W, __U, __A); 
5505}
5506
5507__m128i test_mm_maskz_cvtepi8_epi32(__mmask8 __U, __m128i __A) {
5508  // CHECK-LABEL: @test_mm_maskz_cvtepi8_epi32
5509  // CHECK: sext <4 x i8> %{{.*}} to <4 x i32>
5510  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5511  return _mm_maskz_cvtepi8_epi32(__U, __A); 
5512}
5513
5514__m256i test_mm256_mask_cvtepi8_epi32(__m256i __W, __mmask8 __U, __m128i __A) {
5515  // CHECK-LABEL: @test_mm256_mask_cvtepi8_epi32
5516  // CHECK: sext <8 x i8> %{{.*}} to <8 x i32>
5517  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5518  return _mm256_mask_cvtepi8_epi32(__W, __U, __A); 
5519}
5520
5521__m256i test_mm256_maskz_cvtepi8_epi32(__mmask8 __U, __m128i __A) {
5522  // CHECK-LABEL: @test_mm256_maskz_cvtepi8_epi32
5523  // CHECK: sext <8 x i8> %{{.*}} to <8 x i32>
5524  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5525  return _mm256_maskz_cvtepi8_epi32(__U, __A); 
5526}
5527
5528__m128i test_mm_mask_cvtepi8_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
5529  // CHECK-LABEL: @test_mm_mask_cvtepi8_epi64
5530  // CHECK: sext <2 x i8> %{{.*}} to <2 x i64>
5531  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5532  return _mm_mask_cvtepi8_epi64(__W, __U, __A); 
5533}
5534
5535__m128i test_mm_maskz_cvtepi8_epi64(__mmask8 __U, __m128i __A) {
5536  // CHECK-LABEL: @test_mm_maskz_cvtepi8_epi64
5537  // CHECK: sext <2 x i8> %{{.*}} to <2 x i64>
5538  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5539  return _mm_maskz_cvtepi8_epi64(__U, __A); 
5540}
5541
5542__m256i test_mm256_mask_cvtepi8_epi64(__m256i __W, __mmask8 __U, __m128i __A) {
5543  // CHECK-LABEL: @test_mm256_mask_cvtepi8_epi64
5544  // CHECK: sext <4 x i8> %{{.*}} to <4 x i64>
5545  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5546  return _mm256_mask_cvtepi8_epi64(__W, __U, __A); 
5547}
5548
5549__m256i test_mm256_maskz_cvtepi8_epi64(__mmask8 __U, __m128i __A) {
5550  // CHECK-LABEL: @test_mm256_maskz_cvtepi8_epi64
5551  // CHECK: sext <4 x i8> %{{.*}} to <4 x i64>
5552  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5553  return _mm256_maskz_cvtepi8_epi64(__U, __A); 
5554}
5555
5556__m128i test_mm_mask_cvtepi32_epi64(__m128i __W, __mmask8 __U, __m128i __X) {
5557  // CHECK-LABEL: @test_mm_mask_cvtepi32_epi64
5558  // CHECK: sext <2 x i32> %{{.*}} to <2 x i64>
5559  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5560  return _mm_mask_cvtepi32_epi64(__W, __U, __X); 
5561}
5562
5563__m128i test_mm_maskz_cvtepi32_epi64(__mmask8 __U, __m128i __X) {
5564  // CHECK-LABEL: @test_mm_maskz_cvtepi32_epi64
5565  // CHECK: sext <2 x i32> %{{.*}} to <2 x i64>
5566  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5567  return _mm_maskz_cvtepi32_epi64(__U, __X); 
5568}
5569
5570__m256i test_mm256_mask_cvtepi32_epi64(__m256i __W, __mmask8 __U, __m128i __X) {
5571  // CHECK-LABEL: @test_mm256_mask_cvtepi32_epi64
5572  // CHECK: sext <4 x i32> %{{.*}} to <4 x i64>
5573  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5574  return _mm256_mask_cvtepi32_epi64(__W, __U, __X); 
5575}
5576
5577__m256i test_mm256_maskz_cvtepi32_epi64(__mmask8 __U, __m128i __X) {
5578  // CHECK-LABEL: @test_mm256_maskz_cvtepi32_epi64
5579  // CHECK: sext <4 x i32> %{{.*}} to <4 x i64>
5580  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5581  return _mm256_maskz_cvtepi32_epi64(__U, __X); 
5582}
5583
5584__m128i test_mm_mask_cvtepi16_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
5585  // CHECK-LABEL: @test_mm_mask_cvtepi16_epi32
5586  // CHECK: sext <4 x i16> %{{.*}} to <4 x i32>
5587  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5588  return _mm_mask_cvtepi16_epi32(__W, __U, __A); 
5589}
5590
5591__m128i test_mm_maskz_cvtepi16_epi32(__mmask8 __U, __m128i __A) {
5592  // CHECK-LABEL: @test_mm_maskz_cvtepi16_epi32
5593  // CHECK: sext <4 x i16> %{{.*}} to <4 x i32>
5594  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5595  return _mm_maskz_cvtepi16_epi32(__U, __A); 
5596}
5597
5598__m256i test_mm256_mask_cvtepi16_epi32(__m256i __W, __mmask8 __U, __m128i __A) {
5599  // CHECK-LABEL: @test_mm256_mask_cvtepi16_epi32
5600  // CHECK: sext <8 x i16> %{{.*}} to <8 x i32>
5601  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5602  return _mm256_mask_cvtepi16_epi32(__W, __U, __A); 
5603}
5604
5605__m256i test_mm256_maskz_cvtepi16_epi32(__mmask8 __U, __m128i __A) {
5606  // CHECK-LABEL: @test_mm256_maskz_cvtepi16_epi32
5607  // CHECK: sext <8 x i16> %{{.*}} to <8 x i32>
5608  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5609  return _mm256_maskz_cvtepi16_epi32(__U, __A); 
5610}
5611
5612__m128i test_mm_mask_cvtepi16_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
5613  // CHECK-LABEL: @test_mm_mask_cvtepi16_epi64
5614  // CHECK: sext <2 x i16> %{{.*}} to <2 x i64>
5615  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5616  return _mm_mask_cvtepi16_epi64(__W, __U, __A); 
5617}
5618
5619__m128i test_mm_maskz_cvtepi16_epi64(__mmask8 __U, __m128i __A) {
5620  // CHECK-LABEL: @test_mm_maskz_cvtepi16_epi64
5621  // CHECK: sext <2 x i16> %{{.*}} to <2 x i64>
5622  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5623  return _mm_maskz_cvtepi16_epi64(__U, __A); 
5624}
5625
5626__m256i test_mm256_mask_cvtepi16_epi64(__m256i __W, __mmask8 __U, __m128i __A) {
5627  // CHECK-LABEL: @test_mm256_mask_cvtepi16_epi64
5628  // CHECK: sext <4 x i16> %{{.*}} to <4 x i64>
5629  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5630  return _mm256_mask_cvtepi16_epi64(__W, __U, __A); 
5631}
5632
5633__m256i test_mm256_maskz_cvtepi16_epi64(__mmask8 __U, __m128i __A) {
5634  // CHECK-LABEL: @test_mm256_maskz_cvtepi16_epi64
5635  // CHECK: sext <4 x i16> %{{.*}} to <4 x i64>
5636  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5637  return _mm256_maskz_cvtepi16_epi64(__U, __A); 
5638}
5639
5640__m128i test_mm_mask_cvtepu8_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
5641  // CHECK-LABEL: @test_mm_mask_cvtepu8_epi32
5642  // CHECK: zext <4 x i8> %{{.*}} to <4 x i32>
5643  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5644  return _mm_mask_cvtepu8_epi32(__W, __U, __A); 
5645}
5646
5647__m128i test_mm_maskz_cvtepu8_epi32(__mmask8 __U, __m128i __A) {
5648  // CHECK-LABEL: @test_mm_maskz_cvtepu8_epi32
5649  // CHECK: zext <4 x i8> %{{.*}} to <4 x i32>
5650  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5651  return _mm_maskz_cvtepu8_epi32(__U, __A);
5652}
5653
5654__m256i test_mm256_mask_cvtepu8_epi32(__m256i __W, __mmask8 __U, __m128i __A) {
5655  // CHECK-LABEL: @test_mm256_mask_cvtepu8_epi32
5656  // CHECK: zext <8 x i8> %{{.*}} to <8 x i32>
5657  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5658  return _mm256_mask_cvtepu8_epi32(__W, __U, __A); 
5659}
5660
5661__m256i test_mm256_maskz_cvtepu8_epi32(__mmask8 __U, __m128i __A) {
5662  // CHECK-LABEL: @test_mm256_maskz_cvtepu8_epi32
5663  // CHECK: zext <8 x i8> %{{.*}} to <8 x i32>
5664  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5665  return _mm256_maskz_cvtepu8_epi32(__U, __A); 
5666}
5667
5668__m128i test_mm_mask_cvtepu8_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
5669  // CHECK-LABEL: @test_mm_mask_cvtepu8_epi64
5670  // CHECK: zext <2 x i8> %{{.*}} to <2 x i64>
5671  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5672  return _mm_mask_cvtepu8_epi64(__W, __U, __A); 
5673}
5674
5675__m128i test_mm_maskz_cvtepu8_epi64(__mmask8 __U, __m128i __A) {
5676  // CHECK-LABEL: @test_mm_maskz_cvtepu8_epi64
5677  // CHECK: zext <2 x i8> %{{.*}} to <2 x i64>
5678  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5679  return _mm_maskz_cvtepu8_epi64(__U, __A); 
5680}
5681
5682__m256i test_mm256_mask_cvtepu8_epi64(__m256i __W, __mmask8 __U, __m128i __A) {
5683  // CHECK-LABEL: @test_mm256_mask_cvtepu8_epi64
5684  // CHECK: zext <4 x i8> %{{.*}} to <4 x i64>
5685  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5686  return _mm256_mask_cvtepu8_epi64(__W, __U, __A); 
5687}
5688
5689__m256i test_mm256_maskz_cvtepu8_epi64(__mmask8 __U, __m128i __A) {
5690  // CHECK-LABEL: @test_mm256_maskz_cvtepu8_epi64
5691  // CHECK: zext <4 x i8> %{{.*}} to <4 x i64>
5692  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5693  return _mm256_maskz_cvtepu8_epi64(__U, __A); 
5694}
5695
5696__m128i test_mm_mask_cvtepu32_epi64(__m128i __W, __mmask8 __U, __m128i __X) {
5697  // CHECK-LABEL: @test_mm_mask_cvtepu32_epi64
5698  // CHECK: zext <2 x i32> %{{.*}} to <2 x i64>
5699  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5700  return _mm_mask_cvtepu32_epi64(__W, __U, __X); 
5701}
5702
5703__m128i test_mm_maskz_cvtepu32_epi64(__mmask8 __U, __m128i __X) {
5704  // CHECK-LABEL: @test_mm_maskz_cvtepu32_epi64
5705  // CHECK: zext <2 x i32> %{{.*}} to <2 x i64>
5706  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5707  return _mm_maskz_cvtepu32_epi64(__U, __X); 
5708}
5709
5710__m256i test_mm256_mask_cvtepu32_epi64(__m256i __W, __mmask8 __U, __m128i __X) {
5711  // CHECK-LABEL: @test_mm256_mask_cvtepu32_epi64
5712  // CHECK: zext <4 x i32> %{{.*}} to <4 x i64>
5713  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5714  return _mm256_mask_cvtepu32_epi64(__W, __U, __X); 
5715}
5716
5717__m256i test_mm256_maskz_cvtepu32_epi64(__mmask8 __U, __m128i __X) {
5718  // CHECK-LABEL: @test_mm256_maskz_cvtepu32_epi64
5719  // CHECK: zext <4 x i32> %{{.*}} to <4 x i64>
5720  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5721  return _mm256_maskz_cvtepu32_epi64(__U, __X); 
5722}
5723
5724__m128i test_mm_mask_cvtepu16_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
5725  // CHECK-LABEL: @test_mm_mask_cvtepu16_epi32
5726  // CHECK: zext <4 x i16> %{{.*}} to <4 x i32>
5727  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5728  return _mm_mask_cvtepu16_epi32(__W, __U, __A); 
5729}
5730
5731__m128i test_mm_maskz_cvtepu16_epi32(__mmask8 __U, __m128i __A) {
5732  // CHECK-LABEL: @test_mm_maskz_cvtepu16_epi32
5733  // CHECK: zext <4 x i16> %{{.*}} to <4 x i32>
5734  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5735  return _mm_maskz_cvtepu16_epi32(__U, __A); 
5736}
5737
5738__m256i test_mm256_mask_cvtepu16_epi32(__m256i __W, __mmask8 __U, __m128i __A) {
5739  // CHECK-LABEL: @test_mm256_mask_cvtepu16_epi32
5740  // CHECK: zext <8 x i16> %{{.*}} to <8 x i32>
5741  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5742  return _mm256_mask_cvtepu16_epi32(__W, __U, __A); 
5743}
5744
5745__m256i test_mm256_maskz_cvtepu16_epi32(__mmask8 __U, __m128i __A) {
5746  // CHECK-LABEL: @test_mm256_maskz_cvtepu16_epi32
5747  // CHECK: zext <8 x i16> %{{.*}} to <8 x i32>
5748  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5749  return _mm256_maskz_cvtepu16_epi32(__U, __A); 
5750}
5751
5752__m128i test_mm_mask_cvtepu16_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
5753  // CHECK-LABEL: @test_mm_mask_cvtepu16_epi64
5754  // CHECK: zext <2 x i16> %{{.*}} to <2 x i64>
5755  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5756  return _mm_mask_cvtepu16_epi64(__W, __U, __A); 
5757}
5758
5759__m128i test_mm_maskz_cvtepu16_epi64(__mmask8 __U, __m128i __A) {
5760  // CHECK-LABEL: @test_mm_maskz_cvtepu16_epi64
5761  // CHECK: zext <2 x i16> %{{.*}} to <2 x i64>
5762  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5763  return _mm_maskz_cvtepu16_epi64(__U, __A); 
5764}
5765
5766__m256i test_mm256_mask_cvtepu16_epi64(__m256i __W, __mmask8 __U, __m128i __A) {
5767  // CHECK-LABEL: @test_mm256_mask_cvtepu16_epi64
5768  // CHECK: zext <4 x i16> %{{.*}} to <4 x i64>
5769  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5770  return _mm256_mask_cvtepu16_epi64(__W, __U, __A); 
5771}
5772
5773__m256i test_mm256_maskz_cvtepu16_epi64(__mmask8 __U, __m128i __A) {
5774  // CHECK-LABEL: @test_mm256_maskz_cvtepu16_epi64
5775  // CHECK: zext <4 x i16> %{{.*}} to <4 x i64>
5776  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5777  return _mm256_maskz_cvtepu16_epi64(__U, __A); 
5778}
5779
5780__m128i test_mm_rol_epi32(__m128i __A) {
5781  // CHECK-LABEL: @test_mm_rol_epi32
5782  // CHECK: @llvm.fshl.v4i32
5783  return _mm_rol_epi32(__A, 5); 
5784}
5785
5786__m128i test_mm_mask_rol_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
5787  // CHECK-LABEL: @test_mm_mask_rol_epi32
5788  // CHECK: @llvm.fshl.v4i32
5789  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5790  return _mm_mask_rol_epi32(__W, __U, __A, 5); 
5791}
5792
5793__m128i test_mm_maskz_rol_epi32(__mmask8 __U, __m128i __A) {
5794  // CHECK-LABEL: @test_mm_maskz_rol_epi32
5795  // CHECK: @llvm.fshl.v4i32
5796  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5797  return _mm_maskz_rol_epi32(__U, __A, 5); 
5798}
5799
5800__m256i test_mm256_rol_epi32(__m256i __A) {
5801  // CHECK-LABEL: @test_mm256_rol_epi32
5802  // CHECK: @llvm.fshl.v8i32
5803  return _mm256_rol_epi32(__A, 5); 
5804}
5805
5806__m256i test_mm256_mask_rol_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
5807  // CHECK-LABEL: @test_mm256_mask_rol_epi32
5808  // CHECK: @llvm.fshl.v8i32
5809  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5810  return _mm256_mask_rol_epi32(__W, __U, __A, 5); 
5811}
5812
5813__m256i test_mm256_maskz_rol_epi32(__mmask8 __U, __m256i __A) {
5814  // CHECK-LABEL: @test_mm256_maskz_rol_epi32
5815  // CHECK: @llvm.fshl.v8i32
5816  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5817  return _mm256_maskz_rol_epi32(__U, __A, 5); 
5818}
5819
5820__m128i test_mm_rol_epi64(__m128i __A) {
5821  // CHECK-LABEL: @test_mm_rol_epi64
5822  // CHECK: @llvm.fshl.v2i64
5823  return _mm_rol_epi64(__A, 5); 
5824}
5825
5826__m128i test_mm_mask_rol_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
5827  // CHECK-LABEL: @test_mm_mask_rol_epi64
5828  // CHECK: @llvm.fshl.v2i64
5829  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5830  return _mm_mask_rol_epi64(__W, __U, __A, 5); 
5831}
5832
5833__m128i test_mm_maskz_rol_epi64(__mmask8 __U, __m128i __A) {
5834  // CHECK-LABEL: @test_mm_maskz_rol_epi64
5835  // CHECK: @llvm.fshl.v2i64
5836  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5837  return _mm_maskz_rol_epi64(__U, __A, 5); 
5838}
5839
5840__m256i test_mm256_rol_epi64(__m256i __A) {
5841  // CHECK-LABEL: @test_mm256_rol_epi64
5842  // CHECK: @llvm.fshl.v4i64
5843  return _mm256_rol_epi64(__A, 5); 
5844}
5845
5846__m256i test_mm256_mask_rol_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
5847  // CHECK-LABEL: @test_mm256_mask_rol_epi64
5848  // CHECK: @llvm.fshl.v4i64
5849  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5850  return _mm256_mask_rol_epi64(__W, __U, __A, 5); 
5851}
5852
5853__m256i test_mm256_maskz_rol_epi64(__mmask8 __U, __m256i __A) {
5854  // CHECK-LABEL: @test_mm256_maskz_rol_epi64
5855  // CHECK: @llvm.fshl.v4i64
5856  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5857  return _mm256_maskz_rol_epi64(__U, __A, 5); 
5858}
5859
5860__m128i test_mm_rolv_epi32(__m128i __A, __m128i __B) {
5861  // CHECK-LABEL: @test_mm_rolv_epi32
5862  // CHECK: llvm.fshl.v4i32
5863  return _mm_rolv_epi32(__A, __B); 
5864}
5865
5866__m128i test_mm_mask_rolv_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
5867  // CHECK-LABEL: @test_mm_mask_rolv_epi32
5868  // CHECK: llvm.fshl.v4i32
5869  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5870  return _mm_mask_rolv_epi32(__W, __U, __A, __B); 
5871}
5872
5873__m128i test_mm_maskz_rolv_epi32(__mmask8 __U, __m128i __A, __m128i __B) {
5874  // CHECK-LABEL: @test_mm_maskz_rolv_epi32
5875  // CHECK: llvm.fshl.v4i32
5876  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5877  return _mm_maskz_rolv_epi32(__U, __A, __B); 
5878}
5879
5880__m256i test_mm256_rolv_epi32(__m256i __A, __m256i __B) {
5881  // CHECK-LABEL: @test_mm256_rolv_epi32
5882  // CHECK: @llvm.fshl.v8i32
5883  return _mm256_rolv_epi32(__A, __B); 
5884}
5885
5886__m256i test_mm256_mask_rolv_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
5887  // CHECK-LABEL: @test_mm256_mask_rolv_epi32
5888  // CHECK: @llvm.fshl.v8i32
5889  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5890  return _mm256_mask_rolv_epi32(__W, __U, __A, __B); 
5891}
5892
5893__m256i test_mm256_maskz_rolv_epi32(__mmask8 __U, __m256i __A, __m256i __B) {
5894  // CHECK-LABEL: @test_mm256_maskz_rolv_epi32
5895  // CHECK: @llvm.fshl.v8i32
5896  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5897  return _mm256_maskz_rolv_epi32(__U, __A, __B); 
5898}
5899
5900__m128i test_mm_rolv_epi64(__m128i __A, __m128i __B) {
5901  // CHECK-LABEL: @test_mm_rolv_epi64
5902  // CHECK: @llvm.fshl.v2i64
5903  return _mm_rolv_epi64(__A, __B); 
5904}
5905
5906__m128i test_mm_mask_rolv_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
5907  // CHECK-LABEL: @test_mm_mask_rolv_epi64
5908  // CHECK: @llvm.fshl.v2i64
5909  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5910  return _mm_mask_rolv_epi64(__W, __U, __A, __B); 
5911}
5912
5913__m128i test_mm_maskz_rolv_epi64(__mmask8 __U, __m128i __A, __m128i __B) {
5914  // CHECK-LABEL: @test_mm_maskz_rolv_epi64
5915  // CHECK: @llvm.fshl.v2i64
5916  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5917  return _mm_maskz_rolv_epi64(__U, __A, __B); 
5918}
5919
5920__m256i test_mm256_rolv_epi64(__m256i __A, __m256i __B) {
5921  // CHECK-LABEL: @test_mm256_rolv_epi64
5922  // CHECK: @llvm.fshl.v4i64
5923  return _mm256_rolv_epi64(__A, __B); 
5924}
5925
5926__m256i test_mm256_mask_rolv_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
5927  // CHECK-LABEL: @test_mm256_mask_rolv_epi64
5928  // CHECK: @llvm.fshl.v4i64
5929  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5930  return _mm256_mask_rolv_epi64(__W, __U, __A, __B); 
5931}
5932
5933__m256i test_mm256_maskz_rolv_epi64(__mmask8 __U, __m256i __A, __m256i __B) {
5934  // CHECK-LABEL: @test_mm256_maskz_rolv_epi64
5935  // CHECK: @llvm.fshl.v4i64
5936  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5937  return _mm256_maskz_rolv_epi64(__U, __A, __B); 
5938}
5939
5940__m128i test_mm_ror_epi32(__m128i __A) {
5941  // CHECK-LABEL: @test_mm_ror_epi32
5942  // CHECK: @llvm.fshr.v4i32
5943  return _mm_ror_epi32(__A, 5); 
5944}
5945
5946__m128i test_mm_mask_ror_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
5947  // CHECK-LABEL: @test_mm_mask_ror_epi32
5948  // CHECK: @llvm.fshr.v4i32
5949  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5950  return _mm_mask_ror_epi32(__W, __U, __A, 5); 
5951}
5952
5953__m128i test_mm_maskz_ror_epi32(__mmask8 __U, __m128i __A) {
5954  // CHECK-LABEL: @test_mm_maskz_ror_epi32
5955  // CHECK: @llvm.fshr.v4i32
5956  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5957  return _mm_maskz_ror_epi32(__U, __A, 5); 
5958}
5959
5960__m256i test_mm256_ror_epi32(__m256i __A) {
5961  // CHECK-LABEL: @test_mm256_ror_epi32
5962  // CHECK: @llvm.fshr.v8i32
5963  return _mm256_ror_epi32(__A, 5); 
5964}
5965
5966__m256i test_mm256_mask_ror_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
5967  // CHECK-LABEL: @test_mm256_mask_ror_epi32
5968  // CHECK: @llvm.fshr.v8i32
5969  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5970  return _mm256_mask_ror_epi32(__W, __U, __A, 5); 
5971}
5972
5973__m256i test_mm256_maskz_ror_epi32(__mmask8 __U, __m256i __A) {
5974  // CHECK-LABEL: @test_mm256_maskz_ror_epi32
5975  // CHECK: @llvm.fshr.v8i32
5976  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5977  return _mm256_maskz_ror_epi32(__U, __A, 5); 
5978}
5979
5980__m128i test_mm_ror_epi64(__m128i __A) {
5981  // CHECK-LABEL: @test_mm_ror_epi64
5982  // CHECK: @llvm.fshr.v2i64
5983  return _mm_ror_epi64(__A, 5); 
5984}
5985
5986__m128i test_mm_mask_ror_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
5987  // CHECK-LABEL: @test_mm_mask_ror_epi64
5988  // CHECK: @llvm.fshr.v2i64
5989  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5990  return _mm_mask_ror_epi64(__W, __U, __A, 5); 
5991}
5992
5993__m128i test_mm_maskz_ror_epi64(__mmask8 __U, __m128i __A) {
5994  // CHECK-LABEL: @test_mm_maskz_ror_epi64
5995  // CHECK: @llvm.fshr.v2i64
5996  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5997  return _mm_maskz_ror_epi64(__U, __A, 5); 
5998}
5999
6000__m256i test_mm256_ror_epi64(__m256i __A) {
6001  // CHECK-LABEL: @test_mm256_ror_epi64
6002  // CHECK: @llvm.fshr.v4i64
6003  return _mm256_ror_epi64(__A, 5); 
6004}
6005
6006__m256i test_mm256_mask_ror_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
6007  // CHECK-LABEL: @test_mm256_mask_ror_epi64
6008  // CHECK: @llvm.fshr.v4i64
6009  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6010  return _mm256_mask_ror_epi64(__W, __U, __A,5); 
6011}
6012
6013__m256i test_mm256_maskz_ror_epi64(__mmask8 __U, __m256i __A) {
6014  // CHECK-LABEL: @test_mm256_maskz_ror_epi64
6015  // CHECK: @llvm.fshr.v4i64
6016  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6017  return _mm256_maskz_ror_epi64(__U, __A, 5); 
6018}
6019
6020
6021__m128i test_mm_rorv_epi32(__m128i __A, __m128i __B) {
6022  // CHECK-LABEL: @test_mm_rorv_epi32
6023  // CHECK: @llvm.fshr.v4i32
6024  return _mm_rorv_epi32(__A, __B); 
6025}
6026
6027__m128i test_mm_mask_rorv_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
6028  // CHECK-LABEL: @test_mm_mask_rorv_epi32
6029  // CHECK: @llvm.fshr.v4i32
6030  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6031  return _mm_mask_rorv_epi32(__W, __U, __A, __B); 
6032}
6033
6034__m128i test_mm_maskz_rorv_epi32(__mmask8 __U, __m128i __A, __m128i __B) {
6035  // CHECK-LABEL: @test_mm_maskz_rorv_epi32
6036  // CHECK: @llvm.fshr.v4i32
6037  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6038  return _mm_maskz_rorv_epi32(__U, __A, __B); 
6039}
6040
6041__m256i test_mm256_rorv_epi32(__m256i __A, __m256i __B) {
6042  // CHECK-LABEL: @test_mm256_rorv_epi32
6043  // CHECK: @llvm.fshr.v8i32
6044  return _mm256_rorv_epi32(__A, __B); 
6045}
6046
6047__m256i test_mm256_mask_rorv_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
6048  // CHECK-LABEL: @test_mm256_mask_rorv_epi32
6049  // CHECK: @llvm.fshr.v8i32
6050  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6051  return _mm256_mask_rorv_epi32(__W, __U, __A, __B); 
6052}
6053
6054__m256i test_mm256_maskz_rorv_epi32(__mmask8 __U, __m256i __A, __m256i __B) {
6055  // CHECK-LABEL: @test_mm256_maskz_rorv_epi32
6056  // CHECK: @llvm.fshr.v8i32
6057  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6058  return _mm256_maskz_rorv_epi32(__U, __A, __B); 
6059}
6060
6061__m128i test_mm_rorv_epi64(__m128i __A, __m128i __B) {
6062  // CHECK-LABEL: @test_mm_rorv_epi64
6063  // CHECK: @llvm.fshr.v2i64
6064  return _mm_rorv_epi64(__A, __B); 
6065}
6066
6067__m128i test_mm_mask_rorv_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
6068  // CHECK-LABEL: @test_mm_mask_rorv_epi64
6069  // CHECK: @llvm.fshr.v2i64
6070  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6071  return _mm_mask_rorv_epi64(__W, __U, __A, __B); 
6072}
6073
6074__m128i test_mm_maskz_rorv_epi64(__mmask8 __U, __m128i __A, __m128i __B) {
6075  // CHECK-LABEL: @test_mm_maskz_rorv_epi64
6076  // CHECK: @llvm.fshr.v2i64
6077  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6078  return _mm_maskz_rorv_epi64(__U, __A, __B); 
6079}
6080
6081__m256i test_mm256_rorv_epi64(__m256i __A, __m256i __B) {
6082  // CHECK-LABEL: @test_mm256_rorv_epi64
6083  // CHECK: @llvm.fshr.v4i64
6084  return _mm256_rorv_epi64(__A, __B); 
6085}
6086
6087__m256i test_mm256_mask_rorv_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
6088  // CHECK-LABEL: @test_mm256_mask_rorv_epi64
6089  // CHECK: @llvm.fshr.v4i64
6090  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6091  return _mm256_mask_rorv_epi64(__W, __U, __A, __B); 
6092}
6093
6094__m256i test_mm256_maskz_rorv_epi64(__mmask8 __U, __m256i __A, __m256i __B) {
6095  // CHECK-LABEL: @test_mm256_maskz_rorv_epi64
6096  // CHECK: @llvm.fshr.v4i64
6097  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6098  return _mm256_maskz_rorv_epi64(__U, __A, __B); 
6099}
6100
6101__m128i test_mm_mask_sllv_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
6102  // CHECK-LABEL: @test_mm_mask_sllv_epi64
6103  // CHECK: @llvm.x86.avx2.psllv.q
6104  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6105  return _mm_mask_sllv_epi64(__W, __U, __X, __Y); 
6106}
6107
6108__m128i test_mm_maskz_sllv_epi64(__mmask8 __U, __m128i __X, __m128i __Y) {
6109  // CHECK-LABEL: @test_mm_maskz_sllv_epi64
6110  // CHECK: @llvm.x86.avx2.psllv.q
6111  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6112  return _mm_maskz_sllv_epi64(__U, __X, __Y); 
6113}
6114
6115__m256i test_mm256_mask_sllv_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y) {
6116  // CHECK-LABEL: @test_mm256_mask_sllv_epi64
6117  // CHECK: @llvm.x86.avx2.psllv.q.256
6118  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6119  return _mm256_mask_sllv_epi64(__W, __U, __X, __Y); 
6120}
6121
6122__m256i test_mm256_maskz_sllv_epi64(__mmask8 __U, __m256i __X, __m256i __Y) {
6123  // CHECK-LABEL: @test_mm256_maskz_sllv_epi64
6124  // CHECK: @llvm.x86.avx2.psllv.q.256
6125  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6126  return _mm256_maskz_sllv_epi64(__U, __X, __Y); 
6127}
6128
6129__m128i test_mm_mask_sllv_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
6130  // CHECK-LABEL: @test_mm_mask_sllv_epi32
6131  // CHECK: @llvm.x86.avx2.psllv.d
6132  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6133  return _mm_mask_sllv_epi32(__W, __U, __X, __Y); 
6134}
6135
6136__m128i test_mm_maskz_sllv_epi32(__mmask8 __U, __m128i __X, __m128i __Y) {
6137  // CHECK-LABEL: @test_mm_maskz_sllv_epi32
6138  // CHECK: @llvm.x86.avx2.psllv.d
6139  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6140  return _mm_maskz_sllv_epi32(__U, __X, __Y); 
6141}
6142
6143__m256i test_mm256_mask_sllv_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y) {
6144  // CHECK-LABEL: @test_mm256_mask_sllv_epi32
6145  // CHECK: @llvm.x86.avx2.psllv.d.256
6146  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6147  return _mm256_mask_sllv_epi32(__W, __U, __X, __Y); 
6148}
6149
6150__m256i test_mm256_maskz_sllv_epi32(__mmask8 __U, __m256i __X, __m256i __Y) {
6151  // CHECK-LABEL: @test_mm256_maskz_sllv_epi32
6152  // CHECK: @llvm.x86.avx2.psllv.d.256
6153  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6154  return _mm256_maskz_sllv_epi32(__U, __X, __Y); 
6155}
6156
6157__m128i test_mm_mask_srlv_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
6158  // CHECK-LABEL: @test_mm_mask_srlv_epi64
6159  // CHECK: @llvm.x86.avx2.psrlv.q
6160  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6161  return _mm_mask_srlv_epi64(__W, __U, __X, __Y); 
6162}
6163
6164__m128i test_mm_maskz_srlv_epi64(__mmask8 __U, __m128i __X, __m128i __Y) {
6165  // CHECK-LABEL: @test_mm_maskz_srlv_epi64
6166  // CHECK: @llvm.x86.avx2.psrlv.q
6167  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6168  return _mm_maskz_srlv_epi64(__U, __X, __Y); 
6169}
6170
6171__m256i test_mm256_mask_srlv_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y) {
6172  // CHECK-LABEL: @test_mm256_mask_srlv_epi64
6173  // CHECK: @llvm.x86.avx2.psrlv.q.256
6174  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6175  return _mm256_mask_srlv_epi64(__W, __U, __X, __Y); 
6176}
6177
6178__m256i test_mm256_maskz_srlv_epi64(__mmask8 __U, __m256i __X, __m256i __Y) {
6179  // CHECK-LABEL: @test_mm256_maskz_srlv_epi64
6180  // CHECK: @llvm.x86.avx2.psrlv.q.256
6181  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6182  return _mm256_maskz_srlv_epi64(__U, __X, __Y); 
6183}
6184
6185__m128i test_mm_mask_srlv_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
6186  // CHECK-LABEL: @test_mm_mask_srlv_epi32
6187  // CHECK: @llvm.x86.avx2.psrlv.d
6188  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6189  return _mm_mask_srlv_epi32(__W, __U, __X, __Y); 
6190}
6191
6192__m128i test_mm_maskz_srlv_epi32(__mmask8 __U, __m128i __X, __m128i __Y) {
6193  // CHECK-LABEL: @test_mm_maskz_srlv_epi32
6194  // CHECK: @llvm.x86.avx2.psrlv.d
6195  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6196  return _mm_maskz_srlv_epi32(__U, __X, __Y); 
6197}
6198
6199__m256i test_mm256_mask_srlv_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y) {
6200  // CHECK-LABEL: @test_mm256_mask_srlv_epi32
6201  // CHECK: @llvm.x86.avx2.psrlv.d.256
6202  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6203  return _mm256_mask_srlv_epi32(__W, __U, __X, __Y); 
6204}
6205
6206__m256i test_mm256_maskz_srlv_epi32(__mmask8 __U, __m256i __X, __m256i __Y) {
6207  // CHECK-LABEL: @test_mm256_maskz_srlv_epi32
6208  // CHECK: @llvm.x86.avx2.psrlv.d.256
6209  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6210  return _mm256_maskz_srlv_epi32(__U, __X, __Y); 
6211}
6212
6213__m128i test_mm_mask_srl_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
6214  // CHECK-LABEL: @test_mm_mask_srl_epi32
6215  // CHECK: @llvm.x86.sse2.psrl.d
6216  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6217  return _mm_mask_srl_epi32(__W, __U, __A, __B); 
6218}
6219
6220__m128i test_mm_maskz_srl_epi32(__mmask8 __U, __m128i __A, __m128i __B) {
6221  // CHECK-LABEL: @test_mm_maskz_srl_epi32
6222  // CHECK: @llvm.x86.sse2.psrl.d
6223  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6224  return _mm_maskz_srl_epi32(__U, __A, __B); 
6225}
6226
6227__m256i test_mm256_mask_srl_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B) {
6228  // CHECK-LABEL: @test_mm256_mask_srl_epi32
6229  // CHECK: @llvm.x86.avx2.psrl.d
6230  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6231  return _mm256_mask_srl_epi32(__W, __U, __A, __B); 
6232}
6233
6234__m256i test_mm256_maskz_srl_epi32(__mmask8 __U, __m256i __A, __m128i __B) {
6235  // CHECK-LABEL: @test_mm256_maskz_srl_epi32
6236  // CHECK: @llvm.x86.avx2.psrl.d
6237  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6238  return _mm256_maskz_srl_epi32(__U, __A, __B); 
6239}
6240
6241__m128i test_mm_mask_srli_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
6242  // CHECK-LABEL: @test_mm_mask_srli_epi32
6243  // CHECK: @llvm.x86.sse2.psrli.d
6244  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6245  return _mm_mask_srli_epi32(__W, __U, __A, 5); 
6246}
6247
6248__m128i test_mm_mask_srli_epi32_2(__m128i __W, __mmask8 __U, __m128i __A, int __B) {
6249  // CHECK-LABEL: @test_mm_mask_srli_epi32_2
6250  // CHECK: @llvm.x86.sse2.psrli.d
6251  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6252  return _mm_mask_srli_epi32(__W, __U, __A, __B); 
6253}
6254
6255__m128i test_mm_maskz_srli_epi32(__mmask8 __U, __m128i __A) {
6256  // CHECK-LABEL: @test_mm_maskz_srli_epi32
6257  // CHECK: @llvm.x86.sse2.psrli.d
6258  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6259  return _mm_maskz_srli_epi32(__U, __A, 5); 
6260}
6261
6262__m128i test_mm_maskz_srli_epi32_2(__mmask8 __U, __m128i __A, int __B) {
6263  // CHECK-LABEL: @test_mm_maskz_srli_epi32_2
6264  // CHECK: @llvm.x86.sse2.psrli.d
6265  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6266  return _mm_maskz_srli_epi32(__U, __A, __B); 
6267}
6268
6269__m256i test_mm256_mask_srli_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
6270  // CHECK-LABEL: @test_mm256_mask_srli_epi32
6271  // CHECK: @llvm.x86.avx2.psrli.d
6272  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6273  return _mm256_mask_srli_epi32(__W, __U, __A, 5); 
6274}
6275
6276__m256i test_mm256_mask_srli_epi32_2(__m256i __W, __mmask8 __U, __m256i __A, int __B) {
6277  // CHECK-LABEL: @test_mm256_mask_srli_epi32_2
6278  // CHECK: @llvm.x86.avx2.psrli.d
6279  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6280  return _mm256_mask_srli_epi32(__W, __U, __A, __B); 
6281}
6282
6283__m256i test_mm256_maskz_srli_epi32(__mmask8 __U, __m256i __A) {
6284  // CHECK-LABEL: @test_mm256_maskz_srli_epi32
6285  // CHECK: @llvm.x86.avx2.psrli.d
6286  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6287  return _mm256_maskz_srli_epi32(__U, __A, 5); 
6288}
6289
6290__m256i test_mm256_maskz_srli_epi32_2(__mmask8 __U, __m256i __A, int __B) {
6291  // CHECK-LABEL: @test_mm256_maskz_srli_epi32_2
6292  // CHECK: @llvm.x86.avx2.psrli.d
6293  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6294  return _mm256_maskz_srli_epi32(__U, __A, __B); 
6295}
6296__m128i test_mm_mask_srl_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
6297  // CHECK-LABEL: @test_mm_mask_srl_epi64
6298  // CHECK: @llvm.x86.sse2.psrl.q
6299  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6300  return _mm_mask_srl_epi64(__W, __U, __A, __B); 
6301}
6302
6303__m128i test_mm_maskz_srl_epi64(__mmask8 __U, __m128i __A, __m128i __B) {
6304  // CHECK-LABEL: @test_mm_maskz_srl_epi64
6305  // CHECK: @llvm.x86.sse2.psrl.q
6306  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6307  return _mm_maskz_srl_epi64(__U, __A, __B); 
6308}
6309
6310__m256i test_mm256_mask_srl_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B) {
6311  // CHECK-LABEL: @test_mm256_mask_srl_epi64
6312  // CHECK: @llvm.x86.avx2.psrl.q
6313  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6314  return _mm256_mask_srl_epi64(__W, __U, __A, __B); 
6315}
6316
6317__m256i test_mm256_maskz_srl_epi64(__mmask8 __U, __m256i __A, __m128i __B) {
6318  // CHECK-LABEL: @test_mm256_maskz_srl_epi64
6319  // CHECK: @llvm.x86.avx2.psrl.q
6320  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6321  return _mm256_maskz_srl_epi64(__U, __A, __B); 
6322}
6323
6324__m128i test_mm_mask_srli_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
6325  // CHECK-LABEL: @test_mm_mask_srli_epi64
6326  // CHECK: @llvm.x86.sse2.psrli.q
6327  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6328  return _mm_mask_srli_epi64(__W, __U, __A, 5); 
6329}
6330
6331__m128i test_mm_mask_srli_epi64_2(__m128i __W, __mmask8 __U, __m128i __A, int __B) {
6332  // CHECK-LABEL: @test_mm_mask_srli_epi64_2
6333  // CHECK: @llvm.x86.sse2.psrli.q
6334  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6335  return _mm_mask_srli_epi64(__W, __U, __A, __B); 
6336}
6337
6338__m128i test_mm_maskz_srli_epi64(__mmask8 __U, __m128i __A) {
6339  // CHECK-LABEL: @test_mm_maskz_srli_epi64
6340  // CHECK: @llvm.x86.sse2.psrli.q
6341  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6342  return _mm_maskz_srli_epi64(__U, __A, 5); 
6343}
6344
6345__m128i test_mm_maskz_srli_epi64_2(__mmask8 __U, __m128i __A, int __B) {
6346  // CHECK-LABEL: @test_mm_maskz_srli_epi64_2
6347  // CHECK: @llvm.x86.sse2.psrli.q
6348  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6349  return _mm_maskz_srli_epi64(__U, __A, __B); 
6350}
6351
6352__m256i test_mm256_mask_srli_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
6353  // CHECK-LABEL: @test_mm256_mask_srli_epi64
6354  // CHECK: @llvm.x86.avx2.psrli.q
6355  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6356  return _mm256_mask_srli_epi64(__W, __U, __A, 5); 
6357}
6358
6359__m256i test_mm256_mask_srli_epi64_2(__m256i __W, __mmask8 __U, __m256i __A, int __B) {
6360  // CHECK-LABEL: @test_mm256_mask_srli_epi64_2
6361  // CHECK: @llvm.x86.avx2.psrli.q
6362  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6363  return _mm256_mask_srli_epi64(__W, __U, __A, __B); 
6364}
6365
6366__m256i test_mm256_maskz_srli_epi64(__mmask8 __U, __m256i __A) {
6367  // CHECK-LABEL: @test_mm256_maskz_srli_epi64
6368  // CHECK: @llvm.x86.avx2.psrli.q
6369  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6370  return _mm256_maskz_srli_epi64(__U, __A, 5); 
6371}
6372
6373__m256i test_mm256_maskz_srli_epi64_2(__mmask8 __U, __m256i __A) {
6374  // CHECK-LABEL: @test_mm256_maskz_srli_epi64_2
6375  // CHECK: @llvm.x86.avx2.psrli.q
6376  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6377  return _mm256_maskz_srli_epi64(__U, __A, 5); 
6378}
6379
6380__m128i test_mm_mask_sll_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
6381  // CHECK-LABEL: @test_mm_mask_sll_epi32
6382  // CHECK: @llvm.x86.sse2.psll.d
6383  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6384  return _mm_mask_sll_epi32(__W, __U, __A, __B); 
6385}
6386
6387__m128i test_mm_maskz_sll_epi32(__mmask8 __U, __m128i __A, __m128i __B) {
6388  // CHECK-LABEL: @test_mm_maskz_sll_epi32
6389  // CHECK: @llvm.x86.sse2.psll.d
6390  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6391  return _mm_maskz_sll_epi32(__U, __A, __B); 
6392}
6393
6394__m256i test_mm256_mask_sll_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B) {
6395  // CHECK-LABEL: @test_mm256_mask_sll_epi32
6396  // CHECK: @llvm.x86.avx2.psll.d
6397  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6398  return _mm256_mask_sll_epi32(__W, __U, __A, __B); 
6399}
6400
6401__m256i test_mm256_maskz_sll_epi32(__mmask8 __U, __m256i __A, __m128i __B) {
6402  // CHECK-LABEL: @test_mm256_maskz_sll_epi32
6403  // CHECK: @llvm.x86.avx2.psll.d
6404  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6405  return _mm256_maskz_sll_epi32(__U, __A, __B); 
6406}
6407
6408__m128i test_mm_mask_slli_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
6409  // CHECK-LABEL: @test_mm_mask_slli_epi32
6410  // CHECK: @llvm.x86.sse2.pslli.d
6411  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6412  return _mm_mask_slli_epi32(__W, __U, __A, 5); 
6413}
6414
6415__m128i test_mm_mask_slli_epi32_2(__m128i __W, __mmask8 __U, __m128i __A, int __B) {
6416  // CHECK-LABEL: @test_mm_mask_slli_epi32_2
6417  // CHECK: @llvm.x86.sse2.pslli.d
6418  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6419  return _mm_mask_slli_epi32(__W, __U, __A, __B); 
6420}
6421
6422__m128i test_mm_maskz_slli_epi32(__mmask8 __U, __m128i __A) {
6423  // CHECK-LABEL: @test_mm_maskz_slli_epi32
6424  // CHECK: @llvm.x86.sse2.pslli.d
6425  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6426  return _mm_maskz_slli_epi32(__U, __A, 5); 
6427}
6428
6429__m128i test_mm_maskz_slli_epi32_2(__mmask8 __U, __m128i __A, int __B) {
6430  // CHECK-LABEL: @test_mm_maskz_slli_epi32_2
6431  // CHECK: @llvm.x86.sse2.pslli.d
6432  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6433  return _mm_maskz_slli_epi32(__U, __A, __B); 
6434}
6435
6436__m256i test_mm256_mask_slli_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
6437  // CHECK-LABEL: @test_mm256_mask_slli_epi32
6438  // CHECK: @llvm.x86.avx2.pslli.d
6439  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6440  return _mm256_mask_slli_epi32(__W, __U, __A, 5); 
6441}
6442
6443__m256i test_mm256_mask_slli_epi32_2(__m256i __W, __mmask8 __U, __m256i __A, int __B) {
6444  // CHECK-LABEL: @test_mm256_mask_slli_epi32_2
6445  // CHECK: @llvm.x86.avx2.pslli.d
6446  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6447  return _mm256_mask_slli_epi32(__W, __U, __A, __B); 
6448}
6449
6450__m256i test_mm256_maskz_slli_epi32(__mmask8 __U, __m256i __A) {
6451  // CHECK-LABEL: @test_mm256_maskz_slli_epi32
6452  // CHECK: @llvm.x86.avx2.pslli.d
6453  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6454  return _mm256_maskz_slli_epi32(__U, __A, 5); 
6455}
6456
6457__m256i test_mm256_maskz_slli_epi32_2(__mmask8 __U, __m256i __A, int __B) {
6458  // CHECK-LABEL: @test_mm256_maskz_slli_epi32_2
6459  // CHECK: @llvm.x86.avx2.pslli.d
6460  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6461  return _mm256_maskz_slli_epi32(__U, __A, __B); 
6462}
6463
6464__m128i test_mm_mask_sll_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
6465  // CHECK-LABEL: @test_mm_mask_sll_epi64
6466  // CHECK: @llvm.x86.sse2.psll.q
6467  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6468  return _mm_mask_sll_epi64(__W, __U, __A, __B); 
6469}
6470
6471__m128i test_mm_maskz_sll_epi64(__mmask8 __U, __m128i __A, __m128i __B) {
6472  // CHECK-LABEL: @test_mm_maskz_sll_epi64
6473  // CHECK: @llvm.x86.sse2.psll.q
6474  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6475  return _mm_maskz_sll_epi64(__U, __A, __B); 
6476}
6477
6478__m256i test_mm256_mask_sll_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B) {
6479  // CHECK-LABEL: @test_mm256_mask_sll_epi64
6480  // CHECK: @llvm.x86.avx2.psll.q
6481  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6482  return _mm256_mask_sll_epi64(__W, __U, __A, __B); 
6483}
6484
6485__m256i test_mm256_maskz_sll_epi64(__mmask8 __U, __m256i __A, __m128i __B) {
6486  // CHECK-LABEL: @test_mm256_maskz_sll_epi64
6487  // CHECK: @llvm.x86.avx2.psll.q
6488  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6489  return _mm256_maskz_sll_epi64(__U, __A, __B); 
6490}
6491
6492__m128i test_mm_mask_slli_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
6493  // CHECK-LABEL: @test_mm_mask_slli_epi64
6494  // CHECK: @llvm.x86.sse2.pslli.q
6495  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6496  return _mm_mask_slli_epi64(__W, __U, __A, 5); 
6497}
6498
6499__m128i test_mm_mask_slli_epi64_2(__m128i __W, __mmask8 __U, __m128i __A, int __B) {
6500  // CHECK-LABEL: @test_mm_mask_slli_epi64_2
6501  // CHECK: @llvm.x86.sse2.pslli.q
6502  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6503  return _mm_mask_slli_epi64(__W, __U, __A, __B); 
6504}
6505
6506__m128i test_mm_maskz_slli_epi64(__mmask8 __U, __m128i __A) {
6507  // CHECK-LABEL: @test_mm_maskz_slli_epi64
6508  // CHECK: @llvm.x86.sse2.pslli.q
6509  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6510  return _mm_maskz_slli_epi64(__U, __A, 5); 
6511}
6512
6513__m128i test_mm_maskz_slli_epi64_2(__mmask8 __U, __m128i __A, int __B) {
6514  // CHECK-LABEL: @test_mm_maskz_slli_epi64_2
6515  // CHECK: @llvm.x86.sse2.pslli.q
6516  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6517  return _mm_maskz_slli_epi64(__U, __A, __B); 
6518}
6519
6520__m256i test_mm256_mask_slli_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
6521  // CHECK-LABEL: @test_mm256_mask_slli_epi64
6522  // CHECK: @llvm.x86.avx2.pslli.q
6523  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6524  return _mm256_mask_slli_epi64(__W, __U, __A, 5); 
6525}
6526
6527__m256i test_mm256_mask_slli_epi64_2(__m256i __W, __mmask8 __U, __m256i __A, int __B) {
6528  // CHECK-LABEL: @test_mm256_mask_slli_epi64_2
6529  // CHECK: @llvm.x86.avx2.pslli.q
6530  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6531  return _mm256_mask_slli_epi64(__W, __U, __A, __B); 
6532}
6533
6534__m256i test_mm256_maskz_slli_epi64(__mmask8 __U, __m256i __A) {
6535  // CHECK-LABEL: @test_mm256_maskz_slli_epi64
6536  // CHECK: @llvm.x86.avx2.pslli.q
6537  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6538  return _mm256_maskz_slli_epi64(__U, __A, 5); 
6539}
6540
6541__m256i test_mm256_maskz_slli_epi64_2(__mmask8 __U, __m256i __A) {
6542  // CHECK-LABEL: @test_mm256_maskz_slli_epi64_2
6543  // CHECK: @llvm.x86.avx2.pslli.q
6544  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6545  return _mm256_maskz_slli_epi64(__U, __A, 5); 
6546}
6547
6548__m128i test_mm_mask_srav_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
6549  // CHECK-LABEL: @test_mm_mask_srav_epi32
6550  // CHECK: @llvm.x86.avx2.psrav.d
6551  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6552  return _mm_mask_srav_epi32(__W, __U, __X, __Y); 
6553}
6554
6555__m128i test_mm_maskz_srav_epi32(__mmask8 __U, __m128i __X, __m128i __Y) {
6556  // CHECK-LABEL: @test_mm_maskz_srav_epi32
6557  // CHECK: @llvm.x86.avx2.psrav.d
6558  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6559  return _mm_maskz_srav_epi32(__U, __X, __Y); 
6560}
6561
6562__m256i test_mm256_mask_srav_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y) {
6563  // CHECK-LABEL: @test_mm256_mask_srav_epi32
6564  // CHECK: @llvm.x86.avx2.psrav.d.256
6565  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6566  return _mm256_mask_srav_epi32(__W, __U, __X, __Y); 
6567}
6568
6569__m256i test_mm256_maskz_srav_epi32(__mmask8 __U, __m256i __X, __m256i __Y) {
6570  // CHECK-LABEL: @test_mm256_maskz_srav_epi32
6571  // CHECK: @llvm.x86.avx2.psrav.d.256
6572  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6573  return _mm256_maskz_srav_epi32(__U, __X, __Y); 
6574}
6575
6576__m128i test_mm_srav_epi64(__m128i __X, __m128i __Y) {
6577  // CHECK-LABEL: @test_mm_srav_epi64
6578  // CHECK: @llvm.x86.avx512.psrav.q.128
6579  return _mm_srav_epi64(__X, __Y); 
6580}
6581
6582__m128i test_mm_mask_srav_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
6583  // CHECK-LABEL: @test_mm_mask_srav_epi64
6584  // CHECK: @llvm.x86.avx512.psrav.q.128
6585  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6586  return _mm_mask_srav_epi64(__W, __U, __X, __Y); 
6587}
6588
6589__m128i test_mm_maskz_srav_epi64(__mmask8 __U, __m128i __X, __m128i __Y) {
6590  // CHECK-LABEL: @test_mm_maskz_srav_epi64
6591  // CHECK: @llvm.x86.avx512.psrav.q.128
6592  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6593  return _mm_maskz_srav_epi64(__U, __X, __Y); 
6594}
6595
6596__m256i test_mm256_srav_epi64(__m256i __X, __m256i __Y) {
6597  // CHECK-LABEL: @test_mm256_srav_epi64
6598  // CHECK: @llvm.x86.avx512.psrav.q.256
6599  return _mm256_srav_epi64(__X, __Y); 
6600}
6601
6602__m256i test_mm256_mask_srav_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y) {
6603  // CHECK-LABEL: @test_mm256_mask_srav_epi64
6604  // CHECK: @llvm.x86.avx512.psrav.q.256
6605  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6606  return _mm256_mask_srav_epi64(__W, __U, __X, __Y); 
6607}
6608
6609__m256i test_mm256_maskz_srav_epi64(__mmask8 __U, __m256i __X, __m256i __Y) {
6610  // CHECK-LABEL: @test_mm256_maskz_srav_epi64
6611  // CHECK: @llvm.x86.avx512.psrav.q.256
6612  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6613  return _mm256_maskz_srav_epi64(__U, __X, __Y); 
6614}
6615
6616void test_mm_store_epi32(void *__P, __m128i __A) {
6617  // CHECK-LABEL: @test_mm_store_epi32
6618  // CHECK: store <2 x i64> %{{.*}}, <2 x i64>* %{{.*}}
6619  return _mm_store_epi32(__P, __A);
6620}
6621
6622void test_mm_mask_store_epi32(void *__P, __mmask8 __U, __m128i __A) {
6623  // CHECK-LABEL: @test_mm_mask_store_epi32
6624  // CHECK: @llvm.masked.store.v4i32.p0v4i32(<4 x i32> %{{.*}}, <4 x i32>* %{{.}}, i32 16, <4 x i1> %{{.*}})
6625  return _mm_mask_store_epi32(__P, __U, __A); 
6626}
6627
6628void test_mm256_store_epi32(void *__P, __m256i __A) {
6629  // CHECK-LABEL: @test_mm256_store_epi32
6630  // CHECK: store <4 x i64> %{{.*}}, <4 x i64>* %{{.*}}
6631  return _mm256_store_epi32(__P, __A);
6632}
6633
6634void test_mm256_mask_store_epi32(void *__P, __mmask8 __U, __m256i __A) {
6635  // CHECK-LABEL: @test_mm256_mask_store_epi32
6636  // CHECK: @llvm.masked.store.v8i32.p0v8i32(<8 x i32> %{{.*}}, <8 x i32>* %{{.}}, i32 32, <8 x i1> %{{.*}})
6637  return _mm256_mask_store_epi32(__P, __U, __A); 
6638}
6639
6640__m128i test_mm_mask_mov_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
6641  // CHECK-LABEL: @test_mm_mask_mov_epi32
6642  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6643  return _mm_mask_mov_epi32(__W, __U, __A); 
6644}
6645
6646__m128i test_mm_maskz_mov_epi32(__mmask8 __U, __m128i __A) {
6647  // CHECK-LABEL: @test_mm_maskz_mov_epi32
6648  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6649  return _mm_maskz_mov_epi32(__U, __A); 
6650}
6651
6652__m256i test_mm256_mask_mov_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
6653  // CHECK-LABEL: @test_mm256_mask_mov_epi32
6654  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6655  return _mm256_mask_mov_epi32(__W, __U, __A); 
6656}
6657
6658__m256i test_mm256_maskz_mov_epi32(__mmask8 __U, __m256i __A) {
6659  // CHECK-LABEL: @test_mm256_maskz_mov_epi32
6660  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6661  return _mm256_maskz_mov_epi32(__U, __A); 
6662}
6663
6664__m128i test_mm_mask_mov_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
6665  // CHECK-LABEL: @test_mm_mask_mov_epi64
6666  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6667  return _mm_mask_mov_epi64(__W, __U, __A); 
6668}
6669
6670__m128i test_mm_maskz_mov_epi64(__mmask8 __U, __m128i __A) {
6671  // CHECK-LABEL: @test_mm_maskz_mov_epi64
6672  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6673  return _mm_maskz_mov_epi64(__U, __A); 
6674}
6675
6676__m256i test_mm256_mask_mov_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
6677  // CHECK-LABEL: @test_mm256_mask_mov_epi64
6678  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6679  return _mm256_mask_mov_epi64(__W, __U, __A); 
6680}
6681
6682__m256i test_mm256_maskz_mov_epi64(__mmask8 __U, __m256i __A) {
6683  // CHECK-LABEL: @test_mm256_maskz_mov_epi64
6684  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6685  return _mm256_maskz_mov_epi64(__U, __A); 
6686}
6687
6688__m128i test_mm_load_epi32(void const *__P) {
6689  // CHECK-LABEL: @test_mm_load_epi32
6690  // CHECK: load <2 x i64>, <2 x i64>* %{{.*}}
6691  return _mm_load_epi32(__P);
6692}
6693
6694__m128i test_mm_mask_load_epi32(__m128i __W, __mmask8 __U, void const *__P) {
6695  // CHECK-LABEL: @test_mm_mask_load_epi32
6696  // CHECK: @llvm.masked.load.v4i32.p0v4i32(<4 x i32>* %{{.*}}, i32 16, <4 x i1> %{{.*}}, <4 x i32> %{{.*}})
6697  return _mm_mask_load_epi32(__W, __U, __P); 
6698}
6699
6700__m128i test_mm_maskz_load_epi32(__mmask8 __U, void const *__P) {
6701  // CHECK-LABEL: @test_mm_maskz_load_epi32
6702  // CHECK: @llvm.masked.load.v4i32.p0v4i32(<4 x i32>* %{{.*}}, i32 16, <4 x i1> %{{.*}}, <4 x i32> %{{.*}})
6703  return _mm_maskz_load_epi32(__U, __P); 
6704}
6705
6706__m256i test_mm256_load_epi32(void const *__P) {
6707  // CHECK-LABEL: @test_mm256_load_epi32
6708  // CHECK: load <4 x i64>, <4 x i64>* %{{.*}}
6709  return _mm256_load_epi32(__P);
6710}
6711
6712__m256i test_mm256_mask_load_epi32(__m256i __W, __mmask8 __U, void const *__P) {
6713  // CHECK-LABEL: @test_mm256_mask_load_epi32
6714  // CHECK: @llvm.masked.load.v8i32.p0v8i32(<8 x i32>* %{{.*}}, i32 32, <8 x i1> %{{.*}}, <8 x i32> %{{.*}})
6715  return _mm256_mask_load_epi32(__W, __U, __P); 
6716}
6717
6718__m256i test_mm256_maskz_load_epi32(__mmask8 __U, void const *__P) {
6719  // CHECK-LABEL: @test_mm256_maskz_load_epi32
6720  // CHECK: @llvm.masked.load.v8i32.p0v8i32(<8 x i32>* %{{.*}}, i32 32, <8 x i1> %{{.*}}, <8 x i32> %{{.*}})
6721  return _mm256_maskz_load_epi32(__U, __P); 
6722}
6723
6724__m128i test_mm_load_epi64(void const *__P) {
6725  // CHECK-LABEL: @test_mm_load_epi64
6726  // CHECK: load <2 x i64>, <2 x i64>* %{{.*}}
6727  return _mm_load_epi64(__P);
6728}
6729
6730__m128i test_mm_mask_load_epi64(__m128i __W, __mmask8 __U, void const *__P) {
6731  // CHECK-LABEL: @test_mm_mask_load_epi64
6732  // CHECK: @llvm.masked.load.v2i64.p0v2i64(<2 x i64>* %{{.*}}, i32 16, <2 x i1> %{{.*}}, <2 x i64> %{{.*}})
6733  return _mm_mask_load_epi64(__W, __U, __P); 
6734}
6735
6736__m128i test_mm_maskz_load_epi64(__mmask8 __U, void const *__P) {
6737  // CHECK-LABEL: @test_mm_maskz_load_epi64
6738  // CHECK: @llvm.masked.load.v2i64.p0v2i64(<2 x i64>* %{{.*}}, i32 16, <2 x i1> %{{.*}}, <2 x i64> %{{.*}})
6739  return _mm_maskz_load_epi64(__U, __P); 
6740}
6741
6742__m256i test_mm256_load_epi64(void const *__P) {
6743  // CHECK-LABEL: @test_mm256_load_epi64
6744  // CHECK: load <4 x i64>, <4 x i64>* %{{.*}}
6745  return _mm256_load_epi64(__P);
6746}
6747
6748__m256i test_mm256_mask_load_epi64(__m256i __W, __mmask8 __U, void const *__P) {
6749  // CHECK-LABEL: @test_mm256_mask_load_epi64
6750  // CHECK: @llvm.masked.load.v4i64.p0v4i64(<4 x i64>* %{{.*}}, i32 32, <4 x i1> %{{.*}}, <4 x i64> %{{.*}})
6751  return _mm256_mask_load_epi64(__W, __U, __P); 
6752}
6753
6754__m256i test_mm256_maskz_load_epi64(__mmask8 __U, void const *__P) {
6755  // CHECK-LABEL: @test_mm256_maskz_load_epi64
6756  // CHECK: @llvm.masked.load.v4i64.p0v4i64(<4 x i64>* %{{.*}}, i32 32, <4 x i1> %{{.*}}, <4 x i64> %{{.*}})
6757  return _mm256_maskz_load_epi64(__U, __P); 
6758}
6759
6760void test_mm_store_epi64(void *__P, __m128i __A) {
6761  // CHECK-LABEL: @test_mm_store_epi64
6762  // CHECK: store <2 x i64> %{{.*}}, <2 x i64>* %{{.*}}
6763  return _mm_store_epi64(__P, __A);
6764}
6765
6766void test_mm_mask_store_epi64(void *__P, __mmask8 __U, __m128i __A) {
6767  // CHECK-LABEL: @test_mm_mask_store_epi64
6768  // CHECK: @llvm.masked.store.v2i64.p0v2i64(<2 x i64> %{{.*}}, <2 x i64>* %{{.*}}, i32 16, <2 x i1> %{{.*}})
6769  return _mm_mask_store_epi64(__P, __U, __A); 
6770}
6771
6772void test_mm256_store_epi64(void *__P, __m256i __A) {
6773  // CHECK-LABEL: @test_mm256_store_epi64
6774  // CHECK: store <4 x i64> %{{.*}}, <4 x i64>* %{{.*}}
6775  return _mm256_store_epi64(__P, __A);
6776}
6777
6778void test_mm256_mask_store_epi64(void *__P, __mmask8 __U, __m256i __A) {
6779  // CHECK-LABEL: @test_mm256_mask_store_epi64
6780  // CHECK: @llvm.masked.store.v4i64.p0v4i64(<4 x i64> %{{.*}}, <4 x i64>* %{{.*}}, i32 32, <4 x i1> %{{.*}})
6781  return _mm256_mask_store_epi64(__P, __U, __A); 
6782}
6783
6784__m128d test_mm_mask_movedup_pd(__m128d __W, __mmask8 __U, __m128d __A) {
6785  // CHECK-LABEL: @test_mm_mask_movedup_pd
6786  // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> zeroinitializer
6787  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
6788  return _mm_mask_movedup_pd(__W, __U, __A); 
6789}
6790
6791__m128d test_mm_maskz_movedup_pd(__mmask8 __U, __m128d __A) {
6792  // CHECK-LABEL: @test_mm_maskz_movedup_pd
6793  // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> zeroinitializer
6794  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
6795  return _mm_maskz_movedup_pd(__U, __A); 
6796}
6797
6798__m256d test_mm256_mask_movedup_pd(__m256d __W, __mmask8 __U, __m256d __A) {
6799  // CHECK-LABEL: @test_mm256_mask_movedup_pd
6800  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 0, i32 0, i32 2, i32 2>
6801  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
6802  return _mm256_mask_movedup_pd(__W, __U, __A); 
6803}
6804
6805__m256d test_mm256_maskz_movedup_pd(__mmask8 __U, __m256d __A) {
6806  // CHECK-LABEL: @test_mm256_maskz_movedup_pd
6807  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 0, i32 0, i32 2, i32 2>
6808  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
6809  return _mm256_maskz_movedup_pd(__U, __A); 
6810}
6811
6812__m128i test_mm_mask_set1_epi32(__m128i __O, __mmask8 __M) {
6813  // CHECK-LABEL: @test_mm_mask_set1_epi32
6814  // CHECK: insertelement <4 x i32> undef, i32 %{{.*}}, i32 0
6815  // CHECK: insertelement <4 x i32> %{{.*}}32 1
6816  // CHECK: insertelement <4 x i32> %{{.*}}32 2
6817  // CHECK: insertelement <4 x i32> %{{.*}}32 3
6818  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
6819  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}  
6820  return _mm_mask_set1_epi32(__O, __M, 5); 
6821}
6822
6823__m128i test_mm_maskz_set1_epi32(__mmask8 __M) {
6824  // CHECK-LABEL: @test_mm_maskz_set1_epi32
6825  // CHECK: insertelement <4 x i32> undef, i32 %{{.*}}, i32 0
6826  // CHECK: insertelement <4 x i32> %{{.*}}32 1
6827  // CHECK: insertelement <4 x i32> %{{.*}}32 2
6828  // CHECK: insertelement <4 x i32> %{{.*}}32 3
6829  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
6830  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}  
6831  return _mm_maskz_set1_epi32(__M, 5); 
6832}
6833
6834__m256i test_mm256_mask_set1_epi32(__m256i __O, __mmask8 __M) {
6835  // CHECK-LABEL: @test_mm256_mask_set1_epi32
6836  // CHECK:  insertelement <8 x i32> undef, i32 %{{.*}}, i32 0
6837  // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 1
6838  // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 2
6839  // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 3
6840  // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 4
6841  // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 5
6842  // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 6
6843  // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 7
6844  // CHECK:  select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6845  return _mm256_mask_set1_epi32(__O, __M, 5); 
6846}
6847
6848__m256i test_mm256_maskz_set1_epi32(__mmask8 __M) {
6849  // CHECK-LABEL: @test_mm256_maskz_set1_epi32
6850  // CHECK:  insertelement <8 x i32> undef, i32 %{{.*}}, i32 0
6851  // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 1
6852  // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 2
6853  // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 3
6854  // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 4
6855  // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 5
6856  // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 6
6857  // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 7
6858  // CHECK:  select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6859  return _mm256_maskz_set1_epi32(__M, 5); 
6860}
6861
6862__m128i test_mm_mask_set1_epi64(__m128i __O, __mmask8 __M, long long __A) {
6863  // CHECK-LABEL: @test_mm_mask_set1_epi64
6864  // CHECK: insertelement <2 x i64> undef, i64 %{{.*}}, i32 0
6865  // CHECK: insertelement <2 x i64> %{{.*}}, i64 %{{.*}}, i32 1
6866  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
6867  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6868  return _mm_mask_set1_epi64(__O, __M, __A); 
6869}
6870
6871__m128i test_mm_maskz_set1_epi64(__mmask8 __M, long long __A) {
6872  // CHECK-LABEL: @test_mm_maskz_set1_epi64
6873  // CHECK: insertelement <2 x i64> undef, i64 %{{.*}}, i32 0
6874  // CHECK: insertelement <2 x i64> %{{.*}}, i64 %{{.*}}, i32 1
6875  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
6876  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6877  return _mm_maskz_set1_epi64(__M, __A); 
6878}
6879
6880__m256i test_mm256_mask_set1_epi64(__m256i __O, __mmask8 __M, long long __A) {
6881  // CHECK-LABEL: @test_mm256_mask_set1_epi64
6882  // CHECK: insertelement <4 x i64> undef, i64 %{{.*}}, i32 0
6883  // CHECK: insertelement <4 x i64> %{{.*}}, i64 %{{.*}}, i32 1
6884  // CHECK: insertelement <4 x i64> %{{.*}}, i64 %{{.*}}, i32 2
6885  // CHECK: insertelement <4 x i64> %{{.*}}, i64 %{{.*}}, i32 3
6886  // CHECK:  shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
6887  // CHECK:  select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6888  return _mm256_mask_set1_epi64(__O, __M, __A); 
6889}
6890
6891__m256i test_mm256_maskz_set1_epi64(__mmask8 __M, long long __A) {
6892  // CHECK-LABEL: @test_mm256_maskz_set1_epi64
6893  // CHECK: insertelement <4 x i64> undef, i64 %{{.*}}, i32 0
6894  // CHECK: insertelement <4 x i64> %{{.*}}, i64 %{{.*}}, i32 1
6895  // CHECK: insertelement <4 x i64> %{{.*}}, i64 %{{.*}}, i32 2
6896  // CHECK: insertelement <4 x i64> %{{.*}}, i64 %{{.*}}, i32 3
6897  // CHECK:  shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
6898  // CHECK:  select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6899  return _mm256_maskz_set1_epi64(__M, __A); 
6900}
6901
6902__m128d test_mm_fixupimm_pd(__m128d __A, __m128d __B, __m128i __C) {
6903  // CHECK-LABEL: @test_mm_fixupimm_pd
6904  // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.128
6905  return _mm_fixupimm_pd(__A, __B, __C, 5); 
6906}
6907
6908__m128d test_mm_mask_fixupimm_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128i __C) {
6909  // CHECK-LABEL: @test_mm_mask_fixupimm_pd
6910  // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.128
6911  return _mm_mask_fixupimm_pd(__A, __U, __B, __C, 5); 
6912}
6913
6914__m128d test_mm_maskz_fixupimm_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128i __C) {
6915  // CHECK-LABEL: @test_mm_maskz_fixupimm_pd
6916  // CHECK: @llvm.x86.avx512.maskz.fixupimm.pd.128
6917  return _mm_maskz_fixupimm_pd(__U, __A, __B, __C, 5); 
6918}
6919
6920__m256d test_mm256_fixupimm_pd(__m256d __A, __m256d __B, __m256i __C) {
6921  // CHECK-LABEL: @test_mm256_fixupimm_pd
6922  // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.256
6923  return _mm256_fixupimm_pd(__A, __B, __C, 5); 
6924}
6925
6926__m256d test_mm256_mask_fixupimm_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256i __C) {
6927  // CHECK-LABEL: @test_mm256_mask_fixupimm_pd
6928  // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.256
6929  return _mm256_mask_fixupimm_pd(__A, __U, __B, __C, 5); 
6930}
6931
6932__m256d test_mm256_maskz_fixupimm_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256i __C) {
6933  // CHECK-LABEL: @test_mm256_maskz_fixupimm_pd
6934  // CHECK: @llvm.x86.avx512.maskz.fixupimm.pd.256
6935  return _mm256_maskz_fixupimm_pd(__U, __A, __B, __C, 5); 
6936}
6937
6938__m128 test_mm_fixupimm_ps(__m128 __A, __m128 __B, __m128i __C) {
6939  // CHECK-LABEL: @test_mm_fixupimm_ps
6940  // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.128
6941  return _mm_fixupimm_ps(__A, __B, __C, 5); 
6942}
6943
6944__m128 test_mm_mask_fixupimm_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128i __C) {
6945  // CHECK-LABEL: @test_mm_mask_fixupimm_ps
6946  // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.128
6947  return _mm_mask_fixupimm_ps(__A, __U, __B, __C, 5); 
6948}
6949
6950__m128 test_mm_maskz_fixupimm_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128i __C) {
6951  // CHECK-LABEL: @test_mm_maskz_fixupimm_ps
6952  // CHECK: @llvm.x86.avx512.maskz.fixupimm.ps.128
6953  return _mm_maskz_fixupimm_ps(__U, __A, __B, __C, 5); 
6954}
6955
6956__m256 test_mm256_fixupimm_ps(__m256 __A, __m256 __B, __m256i __C) {
6957  // CHECK-LABEL: @test_mm256_fixupimm_ps
6958  // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.256
6959  return _mm256_fixupimm_ps(__A, __B, __C, 5); 
6960}
6961
6962__m256 test_mm256_mask_fixupimm_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256i __C) {
6963  // CHECK-LABEL: @test_mm256_mask_fixupimm_ps
6964  // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.256
6965  return _mm256_mask_fixupimm_ps(__A, __U, __B, __C, 5); 
6966}
6967
6968__m256 test_mm256_maskz_fixupimm_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256i __C) {
6969  // CHECK-LABEL: @test_mm256_maskz_fixupimm_ps
6970  // CHECK: @llvm.x86.avx512.maskz.fixupimm.ps.256
6971  return _mm256_maskz_fixupimm_ps(__U, __A, __B, __C, 5); 
6972}
6973
6974__m128d test_mm_mask_load_pd(__m128d __W, __mmask8 __U, void const *__P) {
6975  // CHECK-LABEL: @test_mm_mask_load_pd
6976  // CHECK: @llvm.masked.load.v2f64.p0v2f64(<2 x double>* %{{.*}}, i32 16, <2 x i1> %{{.*}}, <2 x double> %{{.*}})
6977  return _mm_mask_load_pd(__W, __U, __P); 
6978}
6979
6980__m128d test_mm_maskz_load_pd(__mmask8 __U, void const *__P) {
6981  // CHECK-LABEL: @test_mm_maskz_load_pd
6982  // CHECK: @llvm.masked.load.v2f64.p0v2f64(<2 x double>* %{{.*}}, i32 16, <2 x i1> %{{.*}}, <2 x double> %{{.*}})
6983  return _mm_maskz_load_pd(__U, __P); 
6984}
6985
6986__m256d test_mm256_mask_load_pd(__m256d __W, __mmask8 __U, void const *__P) {
6987  // CHECK-LABEL: @test_mm256_mask_load_pd
6988  // CHECK: @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %{{.*}}, i32 32, <4 x i1> %{{.*}}, <4 x double> %{{.*}})
6989  return _mm256_mask_load_pd(__W, __U, __P); 
6990}
6991
6992__m256d test_mm256_maskz_load_pd(__mmask8 __U, void const *__P) {
6993  // CHECK-LABEL: @test_mm256_maskz_load_pd
6994  // CHECK: @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %{{.*}}, i32 32, <4 x i1> %{{.*}}, <4 x double> %{{.*}})
6995  return _mm256_maskz_load_pd(__U, __P); 
6996}
6997
6998__m128 test_mm_mask_load_ps(__m128 __W, __mmask8 __U, void const *__P) {
6999  // CHECK-LABEL: @test_mm_mask_load_ps
7000  // CHECK: @llvm.masked.load.v4f32.p0v4f32(<4 x float>* %{{.*}}, i32 16, <4 x i1> %{{.*}}, <4 x float> %{{.*}})
7001  return _mm_mask_load_ps(__W, __U, __P); 
7002}
7003
7004__m128 test_mm_maskz_load_ps(__mmask8 __U, void const *__P) {
7005  // CHECK-LABEL: @test_mm_maskz_load_ps
7006  // CHECK: @llvm.masked.load.v4f32.p0v4f32(<4 x float>* %{{.*}}, i32 16, <4 x i1> %{{.*}}, <4 x float> %{{.*}})
7007  return _mm_maskz_load_ps(__U, __P); 
7008}
7009
7010__m256 test_mm256_mask_load_ps(__m256 __W, __mmask8 __U, void const *__P) {
7011  // CHECK-LABEL: @test_mm256_mask_load_ps
7012  // CHECK: @llvm.masked.load.v8f32.p0v8f32(<8 x float>* %{{.*}}, i32 32, <8 x i1> %{{.*}}, <8 x float> %{{.*}})
7013  return _mm256_mask_load_ps(__W, __U, __P); 
7014}
7015
7016__m256 test_mm256_maskz_load_ps(__mmask8 __U, void const *__P) {
7017  // CHECK-LABEL: @test_mm256_maskz_load_ps
7018  // CHECK: @llvm.masked.load.v8f32.p0v8f32(<8 x float>* %{{.*}}, i32 32, <8 x i1> %{{.*}}, <8 x float> %{{.*}})
7019  return _mm256_maskz_load_ps(__U, __P); 
7020}
7021
7022__m128i test_mm_loadu_epi64(void const *__P) {
7023  // CHECK-LABEL: @test_mm_loadu_epi64
7024  // CHECK: load <2 x i64>, <2 x i64>* %{{.*}}, align 1{{$}}
7025  return _mm_loadu_epi64(__P);
7026}
7027
7028__m128i test_mm_mask_loadu_epi64(__m128i __W, __mmask8 __U, void const *__P) {
7029  // CHECK-LABEL: @test_mm_mask_loadu_epi64
7030  // CHECK: @llvm.masked.load.v2i64.p0v2i64(<2 x i64>* %{{.*}}, i32 1, <2 x i1> %{{.*}}, <2 x i64> %{{.*}})
7031  return _mm_mask_loadu_epi64(__W, __U, __P); 
7032}
7033
7034__m128i test_mm_maskz_loadu_epi64(__mmask8 __U, void const *__P) {
7035  // CHECK-LABEL: @test_mm_maskz_loadu_epi64
7036  // CHECK: @llvm.masked.load.v2i64.p0v2i64(<2 x i64>* %{{.*}}, i32 1, <2 x i1> %{{.*}}, <2 x i64> %{{.*}})
7037  return _mm_maskz_loadu_epi64(__U, __P); 
7038}
7039
7040__m256i test_mm256_loadu_epi64(void const *__P) {
7041  // CHECK-LABEL: @test_mm256_loadu_epi64
7042  // CHECK: load <4 x i64>, <4 x i64>* %{{.*}}, align 1{{$}}
7043  return _mm256_loadu_epi64(__P);
7044}
7045
7046__m256i test_mm256_mask_loadu_epi64(__m256i __W, __mmask8 __U, void const *__P) {
7047  // CHECK-LABEL: @test_mm256_mask_loadu_epi64
7048  // CHECK: @llvm.masked.load.v4i64.p0v4i64(<4 x i64>* %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x i64> %{{.*}})
7049  return _mm256_mask_loadu_epi64(__W, __U, __P); 
7050}
7051
7052__m256i test_mm256_maskz_loadu_epi64(__mmask8 __U, void const *__P) {
7053  // CHECK-LABEL: @test_mm256_maskz_loadu_epi64
7054  // CHECK: @llvm.masked.load.v4i64.p0v4i64(<4 x i64>* %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x i64> %{{.*}})
7055  return _mm256_maskz_loadu_epi64(__U, __P); 
7056}
7057
7058__m128i test_mm_loadu_epi32(void const *__P) {
7059  // CHECK-LABEL: @test_mm_loadu_epi32
7060  // CHECK: load <2 x i64>, <2 x i64>* %{{.*}}, align 1{{$}}
7061  return _mm_loadu_epi32(__P);
7062}
7063
7064__m128i test_mm_mask_loadu_epi32(__m128i __W, __mmask8 __U, void const *__P) {
7065  // CHECK-LABEL: @test_mm_mask_loadu_epi32
7066  // CHECK: @llvm.masked.load.v4i32.p0v4i32(<4 x i32>* %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x i32> %{{.*}})
7067  return _mm_mask_loadu_epi32(__W, __U, __P); 
7068}
7069
7070__m128i test_mm_maskz_loadu_epi32(__mmask8 __U, void const *__P) {
7071  // CHECK-LABEL: @test_mm_maskz_loadu_epi32
7072  // CHECK: @llvm.masked.load.v4i32.p0v4i32(<4 x i32>* %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x i32> %{{.*}})
7073  return _mm_maskz_loadu_epi32(__U, __P); 
7074}
7075
7076__m256i test_mm256_loadu_epi32(void const *__P) {
7077  // CHECK-LABEL: @test_mm256_loadu_epi32
7078  // CHECK: load <4 x i64>, <4 x i64>* %{{.*}}, align 1{{$}}
7079  return _mm256_loadu_epi32(__P);
7080}
7081
7082__m256i test_mm256_mask_loadu_epi32(__m256i __W, __mmask8 __U, void const *__P) {
7083  // CHECK-LABEL: @test_mm256_mask_loadu_epi32
7084  // CHECK: @llvm.masked.load.v8i32.p0v8i32(<8 x i32>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x i32> %{{.*}})
7085  return _mm256_mask_loadu_epi32(__W, __U, __P); 
7086}
7087
7088__m256i test_mm256_maskz_loadu_epi32(__mmask8 __U, void const *__P) {
7089  // CHECK-LABEL: @test_mm256_maskz_loadu_epi32
7090  // CHECK: @llvm.masked.load.v8i32.p0v8i32(<8 x i32>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x i32> %{{.*}})
7091  return _mm256_maskz_loadu_epi32(__U, __P); 
7092}
7093
7094__m128d test_mm_mask_loadu_pd(__m128d __W, __mmask8 __U, void const *__P) {
7095  // CHECK-LABEL: @test_mm_mask_loadu_pd
7096  // CHECK: @llvm.masked.load.v2f64.p0v2f64(<2 x double>* %{{.*}}, i32 1, <2 x i1> %{{.*}}, <2 x double> %{{.*}})
7097  return _mm_mask_loadu_pd(__W, __U, __P); 
7098}
7099
7100__m128d test_mm_maskz_loadu_pd(__mmask8 __U, void const *__P) {
7101  // CHECK-LABEL: @test_mm_maskz_loadu_pd
7102  // CHECK: @llvm.masked.load.v2f64.p0v2f64(<2 x double>* %{{.*}}, i32 1, <2 x i1> %{{.*}}, <2 x double> %{{.*}})
7103  return _mm_maskz_loadu_pd(__U, __P); 
7104}
7105
7106__m256d test_mm256_mask_loadu_pd(__m256d __W, __mmask8 __U, void const *__P) {
7107  // CHECK-LABEL: @test_mm256_mask_loadu_pd
7108  // CHECK: @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x double> %{{.*}})
7109  return _mm256_mask_loadu_pd(__W, __U, __P); 
7110}
7111
7112__m256d test_mm256_maskz_loadu_pd(__mmask8 __U, void const *__P) {
7113  // CHECK-LABEL: @test_mm256_maskz_loadu_pd
7114  // CHECK: @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x double> %{{.*}})
7115  return _mm256_maskz_loadu_pd(__U, __P); 
7116}
7117
7118__m128 test_mm_mask_loadu_ps(__m128 __W, __mmask8 __U, void const *__P) {
7119  // CHECK-LABEL: @test_mm_mask_loadu_ps
7120  // CHECK: @llvm.masked.load.v4f32.p0v4f32(<4 x float>* %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x float> %{{.*}})
7121  return _mm_mask_loadu_ps(__W, __U, __P); 
7122}
7123
7124__m128 test_mm_maskz_loadu_ps(__mmask8 __U, void const *__P) {
7125  // CHECK-LABEL: @test_mm_maskz_loadu_ps
7126  // CHECK: @llvm.masked.load.v4f32.p0v4f32(<4 x float>* %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x float> %{{.*}})
7127  return _mm_maskz_loadu_ps(__U, __P); 
7128}
7129
7130__m256 test_mm256_mask_loadu_ps(__m256 __W, __mmask8 __U, void const *__P) {
7131  // CHECK-LABEL: @test_mm256_mask_loadu_ps
7132  // CHECK: @llvm.masked.load.v8f32.p0v8f32(<8 x float>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x float> %{{.*}})
7133  return _mm256_mask_loadu_ps(__W, __U, __P); 
7134}
7135
7136__m256 test_mm256_maskz_loadu_ps(__mmask8 __U, void const *__P) {
7137  // CHECK-LABEL: @test_mm256_maskz_loadu_ps
7138  // CHECK: @llvm.masked.load.v8f32.p0v8f32(<8 x float>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x float> %{{.*}})
7139  return _mm256_maskz_loadu_ps(__U, __P); 
7140}
7141
7142void test_mm_mask_store_pd(void *__P, __mmask8 __U, __m128d __A) {
7143  // CHECK-LABEL: @test_mm_mask_store_pd
7144  // CHECK: @llvm.masked.store.v2f64.p0v2f64(<2 x double> %{{.*}}, <2 x double>* %{{.*}}, i32 16, <2 x i1> %{{.*}})
7145  return _mm_mask_store_pd(__P, __U, __A); 
7146}
7147
7148void test_mm256_mask_store_pd(void *__P, __mmask8 __U, __m256d __A) {
7149  // CHECK-LABEL: @test_mm256_mask_store_pd
7150  // CHECK: @llvm.masked.store.v4f64.p0v4f64(<4 x double> %{{.*}}, <4 x double>* %{{.*}}, i32 32, <4 x i1> %{{.*}})
7151  return _mm256_mask_store_pd(__P, __U, __A); 
7152}
7153
7154void test_mm_mask_store_ps(void *__P, __mmask8 __U, __m128 __A) {
7155  // CHECK-LABEL: @test_mm_mask_store_ps
7156  // CHECK: @llvm.masked.store.v4f32.p0v4f32(<4 x float> %{{.*}}, <4 x float>* %{{.*}}, i32 16, <4 x i1> %{{.*}})
7157  return _mm_mask_store_ps(__P, __U, __A); 
7158}
7159
7160void test_mm256_mask_store_ps(void *__P, __mmask8 __U, __m256 __A) {
7161  // CHECK-LABEL: @test_mm256_mask_store_ps
7162  // CHECK: @llvm.masked.store.v8f32.p0v8f32(<8 x float> %{{.*}}, <8 x float>* %{{.*}}, i32 32, <8 x i1> %{{.*}})
7163  return _mm256_mask_store_ps(__P, __U, __A); 
7164}
7165
7166void test_mm_storeu_epi64(void *__p, __m128i __a) {
7167  // check-label: @test_mm_storeu_epi64
7168  // check: store <2 x i64> %{{.*}}, <2 x i64>* %{{.*}}, align 1{{$}}
7169  return _mm_storeu_epi64(__p, __a);
7170}
7171
7172void test_mm_mask_storeu_epi64(void *__P, __mmask8 __U, __m128i __A) {
7173  // CHECK-LABEL: @test_mm_mask_storeu_epi64
7174  // CHECK: @llvm.masked.store.v2i64.p0v2i64(<2 x i64> %{{.*}}, <2 x i64>* %{{.*}}, i32 1, <2 x i1> %{{.*}})
7175  return _mm_mask_storeu_epi64(__P, __U, __A); 
7176}
7177
7178void test_mm256_storeu_epi64(void *__P, __m256i __A) {
7179  // CHECK-LABEL: @test_mm256_storeu_epi64
7180  // CHECK: store <4 x i64> %{{.*}}, <4 x i64>* %{{.*}}, align 1{{$}}
7181  return _mm256_storeu_epi64(__P, __A);
7182}
7183
7184void test_mm256_mask_storeu_epi64(void *__P, __mmask8 __U, __m256i __A) {
7185  // CHECK-LABEL: @test_mm256_mask_storeu_epi64
7186  // CHECK: @llvm.masked.store.v4i64.p0v4i64(<4 x i64> %{{.*}}, <4 x i64>* %{{.*}}, i32 1, <4 x i1> %{{.*}})
7187  return _mm256_mask_storeu_epi64(__P, __U, __A); 
7188}
7189
7190void test_mm_storeu_epi32(void *__P, __m128i __A) {
7191  // CHECK-LABEL: @test_mm_storeu_epi32
7192  // CHECK: store <2 x i64> %{{.*}}, <2 x i64>* %{{.*}}, align 1{{$}}
7193  return _mm_storeu_epi32(__P, __A);
7194}
7195
7196void test_mm_mask_storeu_epi32(void *__P, __mmask8 __U, __m128i __A) {
7197  // CHECK-LABEL: @test_mm_mask_storeu_epi32
7198  // CHECK: @llvm.masked.store.v4i32.p0v4i32(<4 x i32> %{{.*}}, <4 x i32>* %{{.*}}, i32 1, <4 x i1> %{{.*}})
7199  return _mm_mask_storeu_epi32(__P, __U, __A); 
7200}
7201
7202void test_mm256_storeu_epi32(void *__P, __m256i __A) {
7203  // CHECK-LABEL: @test_mm256_storeu_epi32
7204  // CHECK: store <4 x i64> %{{.*}}, <4 x i64>* %{{.*}}, align 1{{$}}
7205  return _mm256_storeu_epi32(__P, __A);
7206}
7207
7208void test_mm256_mask_storeu_epi32(void *__P, __mmask8 __U, __m256i __A) {
7209  // CHECK-LABEL: @test_mm256_mask_storeu_epi32
7210  // CHECK: @llvm.masked.store.v8i32.p0v8i32(<8 x i32> %{{.*}}, <8 x i32>* %{{.*}}, i32 1, <8 x i1> %{{.*}})
7211  return _mm256_mask_storeu_epi32(__P, __U, __A); 
7212}
7213
7214void test_mm_mask_storeu_pd(void *__P, __mmask8 __U, __m128d __A) {
7215  // CHECK-LABEL: @test_mm_mask_storeu_pd
7216  // CHECK: @llvm.masked.store.v2f64.p0v2f64(<2 x double> %{{.*}}, <2 x double>* %{{.*}}, i32 1, <2 x i1> %{{.*}})
7217  return _mm_mask_storeu_pd(__P, __U, __A); 
7218}
7219
7220void test_mm256_mask_storeu_pd(void *__P, __mmask8 __U, __m256d __A) {
7221  // CHECK-LABEL: @test_mm256_mask_storeu_pd
7222  // CHECK: @llvm.masked.store.v4f64.p0v4f64(<4 x double> %{{.*}}, <4 x double>* %{{.*}}, i32 1, <4 x i1> %{{.*}})
7223  return _mm256_mask_storeu_pd(__P, __U, __A); 
7224}
7225
7226void test_mm_mask_storeu_ps(void *__P, __mmask8 __U, __m128 __A) {
7227  // CHECK-LABEL: @test_mm_mask_storeu_ps
7228  // CHECK: @llvm.masked.store.v4f32.p0v4f32(<4 x float> %{{.*}}, <4 x float>* %{{.*}}, i32 1, <4 x i1> %{{.*}})
7229  return _mm_mask_storeu_ps(__P, __U, __A); 
7230}
7231
7232void test_mm256_mask_storeu_ps(void *__P, __mmask8 __U, __m256 __A) {
7233  // CHECK-LABEL: @test_mm256_mask_storeu_ps
7234  // CHECK: @llvm.masked.store.v8f32.p0v8f32(<8 x float> %{{.*}}, <8 x float>* %{{.*}}, i32 1, <8 x i1> %{{.*}})
7235  return _mm256_mask_storeu_ps(__P, __U, __A); 
7236}
7237
7238__m128d test_mm_mask_unpackhi_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
7239  // CHECK-LABEL: @test_mm_mask_unpackhi_pd
7240  // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> <i32 1, i32 3>
7241  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
7242  return _mm_mask_unpackhi_pd(__W, __U, __A, __B); 
7243}
7244
7245__m128d test_mm_maskz_unpackhi_pd(__mmask8 __U, __m128d __A, __m128d __B) {
7246  // CHECK-LABEL: @test_mm_maskz_unpackhi_pd
7247  // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> <i32 1, i32 3>
7248  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
7249  return _mm_maskz_unpackhi_pd(__U, __A, __B); 
7250}
7251
7252__m256d test_mm256_mask_unpackhi_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
7253  // CHECK-LABEL: @test_mm256_mask_unpackhi_pd
7254  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
7255  // CHECK: select <4 x i1> %{{.*}} <4 x double> %{{.*}}, <4 x double> %{{.*}}
7256  return _mm256_mask_unpackhi_pd(__W, __U, __A, __B); 
7257}
7258
7259__m256d test_mm256_maskz_unpackhi_pd(__mmask8 __U, __m256d __A, __m256d __B) {
7260  // CHECK-LABEL: @test_mm256_maskz_unpackhi_pd
7261  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
7262  // CHECK: select <4 x i1> %{{.*}} <4 x double> %{{.*}}, <4 x double> %{{.*}}
7263  return _mm256_maskz_unpackhi_pd(__U, __A, __B); 
7264}
7265
7266__m128 test_mm_mask_unpackhi_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
7267  // CHECK-LABEL: @test_mm_mask_unpackhi_ps
7268  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
7269  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}} <4 x float> %{{.*}}
7270  return _mm_mask_unpackhi_ps(__W, __U, __A, __B); 
7271}
7272
7273__m128 test_mm_maskz_unpackhi_ps(__mmask8 __U, __m128 __A, __m128 __B) {
7274  // CHECK-LABEL: @test_mm_maskz_unpackhi_ps
7275  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
7276  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}} <4 x float> %{{.*}}
7277  return _mm_maskz_unpackhi_ps(__U, __A, __B); 
7278}
7279
7280__m256 test_mm256_mask_unpackhi_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
7281  // CHECK-LABEL: @test_mm256_mask_unpackhi_ps
7282  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 2, i32 10, i32 3, i32 11, i32 6, i32 14, i32 7, i32 15>
7283  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7284  return _mm256_mask_unpackhi_ps(__W, __U, __A, __B); 
7285}
7286
7287__m256 test_mm256_maskz_unpackhi_ps(__mmask8 __U, __m256 __A, __m256 __B) {
7288  // CHECK-LABEL: @test_mm256_maskz_unpackhi_ps
7289  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 2, i32 10, i32 3, i32 11, i32 6, i32 14, i32 7, i32 15>
7290  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7291  return _mm256_maskz_unpackhi_ps(__U, __A, __B); 
7292}
7293
7294__m128d test_mm_mask_unpacklo_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
7295  // CHECK-LABEL: @test_mm_mask_unpacklo_pd
7296  // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> <i32 0, i32 2>
7297  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
7298  return _mm_mask_unpacklo_pd(__W, __U, __A, __B); 
7299}
7300
7301__m128d test_mm_maskz_unpacklo_pd(__mmask8 __U, __m128d __A, __m128d __B) {
7302  // CHECK-LABEL: @test_mm_maskz_unpacklo_pd
7303  // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> <i32 0, i32 2>
7304  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
7305  return _mm_maskz_unpacklo_pd(__U, __A, __B); 
7306}
7307
7308__m256d test_mm256_mask_unpacklo_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
7309  // CHECK-LABEL: @test_mm256_mask_unpacklo_pd
7310  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
7311  // CHECK: select <4 x i1> %{{.*}} <4 x double> %{{.*}}, <4 x double> %{{.*}}
7312  return _mm256_mask_unpacklo_pd(__W, __U, __A, __B); 
7313}
7314
7315__m256d test_mm256_maskz_unpacklo_pd(__mmask8 __U, __m256d __A, __m256d __B) {
7316  // CHECK-LABEL: @test_mm256_maskz_unpacklo_pd
7317  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
7318  // CHECK: select <4 x i1> %{{.*}} <4 x double> %{{.*}}, <4 x double> %{{.*}}
7319  return _mm256_maskz_unpacklo_pd(__U, __A, __B); 
7320}
7321
7322__m128 test_mm_mask_unpacklo_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
7323  // CHECK-LABEL: @test_mm_mask_unpacklo_ps
7324  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
7325  // CHECK: select <4 x i1> %{{.*}} <4 x float> %{{.*}}, <4 x float> %{{.*}}
7326  return _mm_mask_unpacklo_ps(__W, __U, __A, __B); 
7327}
7328
7329__m128 test_mm_maskz_unpacklo_ps(__mmask8 __U, __m128 __A, __m128 __B) {
7330  // CHECK-LABEL: @test_mm_maskz_unpacklo_ps
7331  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
7332  // CHECK: select <4 x i1> %{{.*}} <4 x float> %{{.*}}, <4 x float> %{{.*}}
7333  return _mm_maskz_unpacklo_ps(__U, __A, __B); 
7334}
7335
7336__m256 test_mm256_mask_unpacklo_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
7337  // CHECK-LABEL: @test_mm256_mask_unpacklo_ps
7338  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 4, i32 12, i32 5, i32 13>
7339  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7340  return _mm256_mask_unpacklo_ps(__W, __U, __A, __B); 
7341}
7342
7343__m256 test_mm256_maskz_unpacklo_ps(__mmask8 __U, __m256 __A, __m256 __B) {
7344  // CHECK-LABEL: @test_mm256_maskz_unpacklo_ps
7345  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 4, i32 12, i32 5, i32 13>
7346  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7347  return _mm256_maskz_unpacklo_ps(__U, __A, __B); 
7348}
7349
7350__m128d test_mm_rcp14_pd(__m128d __A) {
7351  // CHECK-LABEL: @test_mm_rcp14_pd
7352  // CHECK: @llvm.x86.avx512.rcp14.pd.128
7353  return _mm_rcp14_pd(__A); 
7354}
7355
7356__m128d test_mm_mask_rcp14_pd(__m128d __W, __mmask8 __U, __m128d __A) {
7357  // CHECK-LABEL: @test_mm_mask_rcp14_pd
7358  // CHECK: @llvm.x86.avx512.rcp14.pd.128
7359  return _mm_mask_rcp14_pd(__W, __U, __A); 
7360}
7361
7362__m128d test_mm_maskz_rcp14_pd(__mmask8 __U, __m128d __A) {
7363  // CHECK-LABEL: @test_mm_maskz_rcp14_pd
7364  // CHECK: @llvm.x86.avx512.rcp14.pd.128
7365  return _mm_maskz_rcp14_pd(__U, __A); 
7366}
7367
7368__m256d test_mm256_rcp14_pd(__m256d __A) {
7369  // CHECK-LABEL: @test_mm256_rcp14_pd
7370  // CHECK: @llvm.x86.avx512.rcp14.pd.256
7371  return _mm256_rcp14_pd(__A); 
7372}
7373
7374__m256d test_mm256_mask_rcp14_pd(__m256d __W, __mmask8 __U, __m256d __A) {
7375  // CHECK-LABEL: @test_mm256_mask_rcp14_pd
7376  // CHECK: @llvm.x86.avx512.rcp14.pd.256
7377  return _mm256_mask_rcp14_pd(__W, __U, __A); 
7378}
7379
7380__m256d test_mm256_maskz_rcp14_pd(__mmask8 __U, __m256d __A) {
7381  // CHECK-LABEL: @test_mm256_maskz_rcp14_pd
7382  // CHECK: @llvm.x86.avx512.rcp14.pd.256
7383  return _mm256_maskz_rcp14_pd(__U, __A); 
7384}
7385
7386__m128 test_mm_rcp14_ps(__m128 __A) {
7387  // CHECK-LABEL: @test_mm_rcp14_ps
7388  // CHECK: @llvm.x86.avx512.rcp14.ps.128
7389  return _mm_rcp14_ps(__A); 
7390}
7391
7392__m128 test_mm_mask_rcp14_ps(__m128 __W, __mmask8 __U, __m128 __A) {
7393  // CHECK-LABEL: @test_mm_mask_rcp14_ps
7394  // CHECK: @llvm.x86.avx512.rcp14.ps.128
7395  return _mm_mask_rcp14_ps(__W, __U, __A); 
7396}
7397
7398__m128 test_mm_maskz_rcp14_ps(__mmask8 __U, __m128 __A) {
7399  // CHECK-LABEL: @test_mm_maskz_rcp14_ps
7400  // CHECK: @llvm.x86.avx512.rcp14.ps.128
7401  return _mm_maskz_rcp14_ps(__U, __A); 
7402}
7403
7404__m256 test_mm256_rcp14_ps(__m256 __A) {
7405  // CHECK-LABEL: @test_mm256_rcp14_ps
7406  // CHECK: @llvm.x86.avx512.rcp14.ps.256
7407  return _mm256_rcp14_ps(__A); 
7408}
7409
7410__m256 test_mm256_mask_rcp14_ps(__m256 __W, __mmask8 __U, __m256 __A) {
7411  // CHECK-LABEL: @test_mm256_mask_rcp14_ps
7412  // CHECK: @llvm.x86.avx512.rcp14.ps.256
7413  return _mm256_mask_rcp14_ps(__W, __U, __A); 
7414}
7415
7416__m256 test_mm256_maskz_rcp14_ps(__mmask8 __U, __m256 __A) {
7417  // CHECK-LABEL: @test_mm256_maskz_rcp14_ps
7418  // CHECK: @llvm.x86.avx512.rcp14.ps.256
7419  return _mm256_maskz_rcp14_ps(__U, __A); 
7420}
7421
7422__m128d test_mm_mask_permute_pd(__m128d __W, __mmask8 __U, __m128d __X) {
7423  // CHECK-LABEL: @test_mm_mask_permute_pd
7424  // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> undef, <2 x i32> <i32 1, i32 0>
7425  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
7426  return _mm_mask_permute_pd(__W, __U, __X, 1); 
7427}
7428
7429__m128d test_mm_maskz_permute_pd(__mmask8 __U, __m128d __X) {
7430  // CHECK-LABEL: @test_mm_maskz_permute_pd
7431  // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> undef, <2 x i32> <i32 1, i32 0>
7432  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
7433  return _mm_maskz_permute_pd(__U, __X, 1); 
7434}
7435
7436__m256d test_mm256_mask_permute_pd(__m256d __W, __mmask8 __U, __m256d __X) {
7437  // CHECK-LABEL: @test_mm256_mask_permute_pd
7438  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> undef, <4 x i32> <i32 1, i32 0, i32 3, i32 2>
7439  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
7440  return _mm256_mask_permute_pd(__W, __U, __X, 5); 
7441}
7442
7443__m256d test_mm256_maskz_permute_pd(__mmask8 __U, __m256d __X) {
7444  // CHECK-LABEL: @test_mm256_maskz_permute_pd
7445  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> undef, <4 x i32> <i32 1, i32 0, i32 3, i32 2>
7446  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
7447  return _mm256_maskz_permute_pd(__U, __X, 5); 
7448}
7449
7450__m128 test_mm_mask_permute_ps(__m128 __W, __mmask8 __U, __m128 __X) {
7451  // CHECK-LABEL: @test_mm_mask_permute_ps
7452  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> undef, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
7453  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
7454  return _mm_mask_permute_ps(__W, __U, __X, 0x1b); 
7455}
7456
7457__m128 test_mm_maskz_permute_ps(__mmask8 __U, __m128 __X) {
7458  // CHECK-LABEL: @test_mm_maskz_permute_ps
7459  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> undef, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
7460  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
7461  return _mm_maskz_permute_ps(__U, __X, 0x1b); 
7462}
7463
7464__m256 test_mm256_mask_permute_ps(__m256 __W, __mmask8 __U, __m256 __X) {
7465  // CHECK-LABEL: @test_mm256_mask_permute_ps
7466  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> undef, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>
7467  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7468  return _mm256_mask_permute_ps(__W, __U, __X, 0x1b); 
7469}
7470
7471__m256 test_mm256_maskz_permute_ps(__mmask8 __U, __m256 __X) {
7472  // CHECK-LABEL: @test_mm256_maskz_permute_ps
7473  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> undef, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>
7474  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7475  return _mm256_maskz_permute_ps(__U, __X, 0x1b); 
7476}
7477
7478__m128d test_mm_mask_permutevar_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128i __C) {
7479  // CHECK-LABEL: @test_mm_mask_permutevar_pd
7480  // CHECK: @llvm.x86.avx.vpermilvar.pd
7481  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
7482  return _mm_mask_permutevar_pd(__W, __U, __A, __C); 
7483}
7484
7485__m128d test_mm_maskz_permutevar_pd(__mmask8 __U, __m128d __A, __m128i __C) {
7486  // CHECK-LABEL: @test_mm_maskz_permutevar_pd
7487  // CHECK: @llvm.x86.avx.vpermilvar.pd
7488  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
7489  return _mm_maskz_permutevar_pd(__U, __A, __C); 
7490}
7491
7492__m256d test_mm256_mask_permutevar_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256i __C) {
7493  // CHECK-LABEL: @test_mm256_mask_permutevar_pd
7494  // CHECK: @llvm.x86.avx.vpermilvar.pd.256
7495  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
7496  return _mm256_mask_permutevar_pd(__W, __U, __A, __C); 
7497}
7498
7499__m256d test_mm256_maskz_permutevar_pd(__mmask8 __U, __m256d __A, __m256i __C) {
7500  // CHECK-LABEL: @test_mm256_maskz_permutevar_pd
7501  // CHECK: @llvm.x86.avx.vpermilvar.pd.256
7502  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
7503  return _mm256_maskz_permutevar_pd(__U, __A, __C); 
7504}
7505
7506__m128 test_mm_mask_permutevar_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128i __C) {
7507  // CHECK-LABEL: @test_mm_mask_permutevar_ps
7508  // CHECK: @llvm.x86.avx.vpermilvar.ps
7509  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
7510  return _mm_mask_permutevar_ps(__W, __U, __A, __C); 
7511}
7512
7513__m128 test_mm_maskz_permutevar_ps(__mmask8 __U, __m128 __A, __m128i __C) {
7514  // CHECK-LABEL: @test_mm_maskz_permutevar_ps
7515  // CHECK: @llvm.x86.avx.vpermilvar.ps
7516  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
7517  return _mm_maskz_permutevar_ps(__U, __A, __C); 
7518}
7519
7520__m256 test_mm256_mask_permutevar_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256i __C) {
7521  // CHECK-LABEL: @test_mm256_mask_permutevar_ps
7522  // CHECK: @llvm.x86.avx.vpermilvar.ps.256
7523  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7524  return _mm256_mask_permutevar_ps(__W, __U, __A, __C); 
7525}
7526
7527__m256 test_mm256_maskz_permutevar_ps(__mmask8 __U, __m256 __A, __m256i __C) {
7528  // CHECK-LABEL: @test_mm256_maskz_permutevar_ps
7529  // CHECK: @llvm.x86.avx.vpermilvar.ps.256
7530  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7531  return _mm256_maskz_permutevar_ps(__U, __A, __C); 
7532}
7533
7534__mmask8 test_mm_test_epi32_mask(__m128i __A, __m128i __B) {
7535  // CHECK-LABEL: @test_mm_test_epi32_mask
7536  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
7537  // CHECK: icmp ne <4 x i32> %{{.*}}, %{{.*}}
7538  return _mm_test_epi32_mask(__A, __B); 
7539}
7540
7541__mmask8 test_mm_mask_test_epi32_mask(__mmask8 __U, __m128i __A, __m128i __B) {
7542  // CHECK-LABEL: @test_mm_mask_test_epi32_mask
7543  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
7544  // CHECK: icmp ne <4 x i32> %{{.*}}, %{{.*}}
7545  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
7546  return _mm_mask_test_epi32_mask(__U, __A, __B); 
7547}
7548
7549__mmask8 test_mm256_test_epi32_mask(__m256i __A, __m256i __B) {
7550  // CHECK-LABEL: @test_mm256_test_epi32_mask
7551  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
7552  // CHECK: icmp ne <8 x i32> %{{.*}}, %{{.*}}
7553  return _mm256_test_epi32_mask(__A, __B); 
7554}
7555
7556__mmask8 test_mm256_mask_test_epi32_mask(__mmask8 __U, __m256i __A, __m256i __B) {
7557  // CHECK-LABEL: @test_mm256_mask_test_epi32_mask
7558  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
7559  // CHECK: icmp ne <8 x i32> %{{.*}}, %{{.*}}
7560  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
7561  return _mm256_mask_test_epi32_mask(__U, __A, __B); 
7562}
7563
7564__mmask8 test_mm_test_epi64_mask(__m128i __A, __m128i __B) {
7565  // CHECK-LABEL: @test_mm_test_epi64_mask
7566  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
7567  // CHECK: icmp ne <2 x i64> %{{.*}}, %{{.*}}
7568  return _mm_test_epi64_mask(__A, __B); 
7569}
7570
7571__mmask8 test_mm_mask_test_epi64_mask(__mmask8 __U, __m128i __A, __m128i __B) {
7572  // CHECK-LABEL: @test_mm_mask_test_epi64_mask
7573  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
7574  // CHECK: icmp ne <2 x i64> %{{.*}}, %{{.*}}
7575  // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
7576  return _mm_mask_test_epi64_mask(__U, __A, __B); 
7577}
7578
7579__mmask8 test_mm256_test_epi64_mask(__m256i __A, __m256i __B) {
7580  // CHECK-LABEL: @test_mm256_test_epi64_mask
7581  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
7582  // CHECK: icmp ne <4 x i64> %{{.*}}, %{{.*}}
7583  return _mm256_test_epi64_mask(__A, __B); 
7584}
7585
7586__mmask8 test_mm256_mask_test_epi64_mask(__mmask8 __U, __m256i __A, __m256i __B) {
7587  // CHECK-LABEL: @test_mm256_mask_test_epi64_mask
7588  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
7589  // CHECK: icmp ne <4 x i64> %{{.*}}, %{{.*}}
7590  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
7591  return _mm256_mask_test_epi64_mask(__U, __A, __B); 
7592}
7593
7594__mmask8 test_mm_testn_epi32_mask(__m128i __A, __m128i __B) {
7595  // CHECK-LABEL: @test_mm_testn_epi32_mask
7596  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
7597  // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}
7598  return _mm_testn_epi32_mask(__A, __B); 
7599}
7600
7601__mmask8 test_mm_mask_testn_epi32_mask(__mmask8 __U, __m128i __A, __m128i __B) {
7602  // CHECK-LABEL: @test_mm_mask_testn_epi32_mask
7603  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
7604  // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}
7605  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
7606  return _mm_mask_testn_epi32_mask(__U, __A, __B); 
7607}
7608
7609__mmask8 test_mm256_testn_epi32_mask(__m256i __A, __m256i __B) {
7610  // CHECK-LABEL: @test_mm256_testn_epi32_mask
7611  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
7612  // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}}
7613  return _mm256_testn_epi32_mask(__A, __B); 
7614}
7615
7616__mmask8 test_mm256_mask_testn_epi32_mask(__mmask8 __U, __m256i __A, __m256i __B) {
7617  // CHECK-LABEL: @test_mm256_mask_testn_epi32_mask
7618  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
7619  // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}}
7620  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
7621  return _mm256_mask_testn_epi32_mask(__U, __A, __B); 
7622}
7623
7624__mmask8 test_mm_testn_epi64_mask(__m128i __A, __m128i __B) {
7625  // CHECK-LABEL: @test_mm_testn_epi64_mask
7626  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
7627  // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}
7628  return _mm_testn_epi64_mask(__A, __B); 
7629}
7630
7631__mmask8 test_mm_mask_testn_epi64_mask(__mmask8 __U, __m128i __A, __m128i __B) {
7632  // CHECK-LABEL: @test_mm_mask_testn_epi64_mask
7633  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
7634  // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}
7635  // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
7636  return _mm_mask_testn_epi64_mask(__U, __A, __B); 
7637}
7638
7639__mmask8 test_mm256_testn_epi64_mask(__m256i __A, __m256i __B) {
7640  // CHECK-LABEL: @test_mm256_testn_epi64_mask
7641  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
7642  // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}}
7643  return _mm256_testn_epi64_mask(__A, __B); 
7644}
7645
7646__mmask8 test_mm256_mask_testn_epi64_mask(__mmask8 __U, __m256i __A, __m256i __B) {
7647  // CHECK-LABEL: @test_mm256_mask_testn_epi64_mask
7648  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
7649  // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}}
7650  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
7651  return _mm256_mask_testn_epi64_mask(__U, __A, __B); 
7652}
7653
7654__m128i test_mm_mask_unpackhi_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
7655  // CHECK-LABEL: @test_mm_mask_unpackhi_epi32
7656  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
7657  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
7658  return _mm_mask_unpackhi_epi32(__W, __U, __A, __B); 
7659}
7660
7661__m128i test_mm_maskz_unpackhi_epi32(__mmask8 __U, __m128i __A, __m128i __B) {
7662  // CHECK-LABEL: @test_mm_maskz_unpackhi_epi32
7663  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
7664  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
7665  return _mm_maskz_unpackhi_epi32(__U, __A, __B); 
7666}
7667
7668__m256i test_mm256_mask_unpackhi_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
7669  // CHECK-LABEL: @test_mm256_mask_unpackhi_epi32
7670  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 2, i32 10, i32 3, i32 11, i32 6, i32 14, i32 7, i32 15>
7671  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7672  return _mm256_mask_unpackhi_epi32(__W, __U, __A, __B); 
7673}
7674
7675__m256i test_mm256_maskz_unpackhi_epi32(__mmask8 __U, __m256i __A, __m256i __B) {
7676  // CHECK-LABEL: @test_mm256_maskz_unpackhi_epi32
7677  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 2, i32 10, i32 3, i32 11, i32 6, i32 14, i32 7, i32 15>
7678  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7679  return _mm256_maskz_unpackhi_epi32(__U, __A, __B); 
7680}
7681
7682__m128i test_mm_mask_unpackhi_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
7683  // CHECK-LABEL: @test_mm_mask_unpackhi_epi64
7684  // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 1, i32 3>
7685  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
7686  return _mm_mask_unpackhi_epi64(__W, __U, __A, __B); 
7687}
7688
7689__m128i test_mm_maskz_unpackhi_epi64(__mmask8 __U, __m128i __A, __m128i __B) {
7690  // CHECK-LABEL: @test_mm_maskz_unpackhi_epi64
7691  // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 1, i32 3>
7692  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
7693  return _mm_maskz_unpackhi_epi64(__U, __A, __B); 
7694}
7695
7696__m256i test_mm256_mask_unpackhi_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
7697  // CHECK-LABEL: @test_mm256_mask_unpackhi_epi64
7698  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
7699  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
7700  return _mm256_mask_unpackhi_epi64(__W, __U, __A, __B); 
7701}
7702
7703__m256i test_mm256_maskz_unpackhi_epi64(__mmask8 __U, __m256i __A, __m256i __B) {
7704  // CHECK-LABEL: @test_mm256_maskz_unpackhi_epi64
7705  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
7706  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
7707  return _mm256_maskz_unpackhi_epi64(__U, __A, __B); 
7708}
7709
7710__m128i test_mm_mask_unpacklo_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
7711  // CHECK-LABEL: @test_mm_mask_unpacklo_epi32
7712  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
7713  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
7714  return _mm_mask_unpacklo_epi32(__W, __U, __A, __B); 
7715}
7716
7717__m128i test_mm_maskz_unpacklo_epi32(__mmask8 __U, __m128i __A, __m128i __B) {
7718  // CHECK-LABEL: @test_mm_maskz_unpacklo_epi32
7719  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
7720  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
7721  return _mm_maskz_unpacklo_epi32(__U, __A, __B); 
7722}
7723
7724__m256i test_mm256_mask_unpacklo_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
7725  // CHECK-LABEL: @test_mm256_mask_unpacklo_epi32
7726  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 4, i32 12, i32 5, i32 13>
7727  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7728  return _mm256_mask_unpacklo_epi32(__W, __U, __A, __B); 
7729}
7730
7731__m256i test_mm256_maskz_unpacklo_epi32(__mmask8 __U, __m256i __A, __m256i __B) {
7732  // CHECK-LABEL: @test_mm256_maskz_unpacklo_epi32
7733  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 4, i32 12, i32 5, i32 13>
7734  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7735  return _mm256_maskz_unpacklo_epi32(__U, __A, __B); 
7736}
7737
7738__m128i test_mm_mask_unpacklo_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
7739  // CHECK-LABEL: @test_mm_mask_unpacklo_epi64
7740  // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 0, i32 2>
7741  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
7742  return _mm_mask_unpacklo_epi64(__W, __U, __A, __B); 
7743}
7744
7745__m128i test_mm_maskz_unpacklo_epi64(__mmask8 __U, __m128i __A, __m128i __B) {
7746  // CHECK-LABEL: @test_mm_maskz_unpacklo_epi64
7747  // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 0, i32 2>
7748  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
7749  return _mm_maskz_unpacklo_epi64(__U, __A, __B); 
7750}
7751
7752__m256i test_mm256_mask_unpacklo_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
7753  // CHECK-LABEL: @test_mm256_mask_unpacklo_epi64
7754  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
7755  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
7756  return _mm256_mask_unpacklo_epi64(__W, __U, __A, __B); 
7757}
7758
7759__m256i test_mm256_maskz_unpacklo_epi64(__mmask8 __U, __m256i __A, __m256i __B) {
7760  // CHECK-LABEL: @test_mm256_maskz_unpacklo_epi64
7761  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
7762  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
7763  return _mm256_maskz_unpacklo_epi64(__U, __A, __B); 
7764}
7765
7766__m128i test_mm_mask_sra_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
7767  // CHECK-LABEL: @test_mm_mask_sra_epi32
7768  // CHECK: @llvm.x86.sse2.psra.d
7769  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
7770  return _mm_mask_sra_epi32(__W, __U, __A, __B); 
7771}
7772
7773__m128i test_mm_maskz_sra_epi32(__mmask8 __U, __m128i __A, __m128i __B) {
7774  // CHECK-LABEL: @test_mm_maskz_sra_epi32
7775  // CHECK: @llvm.x86.sse2.psra.d
7776  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
7777  return _mm_maskz_sra_epi32(__U, __A, __B); 
7778}
7779
7780__m256i test_mm256_mask_sra_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B) {
7781  // CHECK-LABEL: @test_mm256_mask_sra_epi32
7782  // CHECK: @llvm.x86.avx2.psra.d
7783  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7784  return _mm256_mask_sra_epi32(__W, __U, __A, __B); 
7785}
7786
7787__m256i test_mm256_maskz_sra_epi32(__mmask8 __U, __m256i __A, __m128i __B) {
7788  // CHECK-LABEL: @test_mm256_maskz_sra_epi32
7789  // CHECK: @llvm.x86.avx2.psra.d
7790  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7791  return _mm256_maskz_sra_epi32(__U, __A, __B); 
7792}
7793
7794__m128i test_mm_mask_srai_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
7795  // CHECK-LABEL: @test_mm_mask_srai_epi32
7796  // CHECK: @llvm.x86.sse2.psrai.d
7797  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
7798  return _mm_mask_srai_epi32(__W, __U, __A, 5); 
7799}
7800
7801__m128i test_mm_mask_srai_epi32_2(__m128i __W, __mmask8 __U, __m128i __A, int __B) {
7802  // CHECK-LABEL: @test_mm_mask_srai_epi32_2
7803  // CHECK: @llvm.x86.sse2.psrai.d
7804  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
7805  return _mm_mask_srai_epi32(__W, __U, __A, __B); 
7806}
7807
7808__m128i test_mm_maskz_srai_epi32(__mmask8 __U, __m128i __A) {
7809  // CHECK-LABEL: @test_mm_maskz_srai_epi32
7810  // CHECK: @llvm.x86.sse2.psrai.d
7811  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
7812  return _mm_maskz_srai_epi32(__U, __A, 5); 
7813}
7814
7815__m128i test_mm_maskz_srai_epi32_2(__mmask8 __U, __m128i __A, int __B) {
7816  // CHECK-LABEL: @test_mm_maskz_srai_epi32_2
7817  // CHECK: @llvm.x86.sse2.psrai.d
7818  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
7819  return _mm_maskz_srai_epi32(__U, __A, __B); 
7820}
7821
7822__m256i test_mm256_mask_srai_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
7823  // CHECK-LABEL: @test_mm256_mask_srai_epi32
7824  // CHECK: @llvm.x86.avx2.psrai.d
7825  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7826  return _mm256_mask_srai_epi32(__W, __U, __A, 5); 
7827}
7828
7829__m256i test_mm256_mask_srai_epi32_2(__m256i __W, __mmask8 __U, __m256i __A, int __B) {
7830  // CHECK-LABEL: @test_mm256_mask_srai_epi32_2
7831  // CHECK: @llvm.x86.avx2.psrai.d
7832  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7833  return _mm256_mask_srai_epi32(__W, __U, __A, __B); 
7834}
7835
7836__m256i test_mm256_maskz_srai_epi32(__mmask8 __U, __m256i __A) {
7837  // CHECK-LABEL: @test_mm256_maskz_srai_epi32
7838  // CHECK: @llvm.x86.avx2.psrai.d
7839  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7840  return _mm256_maskz_srai_epi32(__U, __A, 5); 
7841}
7842
7843__m256i test_mm256_maskz_srai_epi32_2(__mmask8 __U, __m256i __A, int __B) {
7844  // CHECK-LABEL: @test_mm256_maskz_srai_epi32_2
7845  // CHECK: @llvm.x86.avx2.psrai.d
7846  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7847  return _mm256_maskz_srai_epi32(__U, __A, __B); 
7848}
7849
7850__m128i test_mm_sra_epi64(__m128i __A, __m128i __B) {
7851  // CHECK-LABEL: @test_mm_sra_epi64
7852  // CHECK: @llvm.x86.avx512.psra.q.128
7853  return _mm_sra_epi64(__A, __B); 
7854}
7855
7856__m128i test_mm_mask_sra_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
7857  // CHECK-LABEL: @test_mm_mask_sra_epi64
7858  // CHECK: @llvm.x86.avx512.psra.q.128
7859  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
7860  return _mm_mask_sra_epi64(__W, __U, __A, __B); 
7861}
7862
7863__m128i test_mm_maskz_sra_epi64(__mmask8 __U, __m128i __A, __m128i __B) {
7864  // CHECK-LABEL: @test_mm_maskz_sra_epi64
7865  // CHECK: @llvm.x86.avx512.psra.q.128
7866  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
7867  return _mm_maskz_sra_epi64(__U, __A, __B); 
7868}
7869
7870__m256i test_mm256_sra_epi64(__m256i __A, __m128i __B) {
7871  // CHECK-LABEL: @test_mm256_sra_epi64
7872  // CHECK: @llvm.x86.avx512.psra.q.256
7873  return _mm256_sra_epi64(__A, __B); 
7874}
7875
7876__m256i test_mm256_mask_sra_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B) {
7877  // CHECK-LABEL: @test_mm256_mask_sra_epi64
7878  // CHECK: @llvm.x86.avx512.psra.q.256
7879  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
7880  return _mm256_mask_sra_epi64(__W, __U, __A, __B); 
7881}
7882
7883__m256i test_mm256_maskz_sra_epi64(__mmask8 __U, __m256i __A, __m128i __B) {
7884  // CHECK-LABEL: @test_mm256_maskz_sra_epi64
7885  // CHECK: @llvm.x86.avx512.psra.q.256
7886  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
7887  return _mm256_maskz_sra_epi64(__U, __A, __B); 
7888}
7889
7890__m128i test_mm_srai_epi64(__m128i __A) {
7891  // CHECK-LABEL: @test_mm_srai_epi64
7892  // CHECK: @llvm.x86.avx512.psrai.q.128
7893  return _mm_srai_epi64(__A, 5); 
7894}
7895
7896__m128i test_mm_srai_epi64_2(__m128i __A, int __B) {
7897  // CHECK-LABEL: @test_mm_srai_epi64_2
7898  // CHECK: @llvm.x86.avx512.psrai.q.128
7899  return _mm_srai_epi64(__A, __B); 
7900}
7901
7902__m128i test_mm_mask_srai_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
7903  // CHECK-LABEL: @test_mm_mask_srai_epi64
7904  // CHECK: @llvm.x86.avx512.psrai.q.128
7905  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
7906  return _mm_mask_srai_epi64(__W, __U, __A, 5); 
7907}
7908
7909__m128i test_mm_mask_srai_epi64_2(__m128i __W, __mmask8 __U, __m128i __A, int __B) {
7910  // CHECK-LABEL: @test_mm_mask_srai_epi64_2
7911  // CHECK: @llvm.x86.avx512.psrai.q.128
7912  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
7913  return _mm_mask_srai_epi64(__W, __U, __A, __B); 
7914}
7915
7916__m128i test_mm_maskz_srai_epi64(__mmask8 __U, __m128i __A) {
7917  // CHECK-LABEL: @test_mm_maskz_srai_epi64
7918  // CHECK: @llvm.x86.avx512.psrai.q.128
7919  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
7920  return _mm_maskz_srai_epi64(__U, __A, 5); 
7921}
7922
7923__m128i test_mm_maskz_srai_epi64_2(__mmask8 __U, __m128i __A, int __B) {
7924  // CHECK-LABEL: @test_mm_maskz_srai_epi64_2
7925  // CHECK: @llvm.x86.avx512.psrai.q.128
7926  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
7927  return _mm_maskz_srai_epi64(__U, __A, __B); 
7928}
7929
7930__m256i test_mm256_srai_epi64(__m256i __A) {
7931  // CHECK-LABEL: @test_mm256_srai_epi64
7932  // CHECK: @llvm.x86.avx512.psrai.q.256
7933  return _mm256_srai_epi64(__A, 5); 
7934}
7935
7936__m256i test_mm256_srai_epi64_2(__m256i __A, int __B) {
7937  // CHECK-LABEL: @test_mm256_srai_epi64_2
7938  // CHECK: @llvm.x86.avx512.psrai.q.256
7939  return _mm256_srai_epi64(__A, __B); 
7940}
7941
7942__m256i test_mm256_mask_srai_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
7943  // CHECK-LABEL: @test_mm256_mask_srai_epi64
7944  // CHECK: @llvm.x86.avx512.psrai.q.256
7945  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
7946  return _mm256_mask_srai_epi64(__W, __U, __A, 5); 
7947}
7948
7949__m256i test_mm256_mask_srai_epi64_2(__m256i __W, __mmask8 __U, __m256i __A, int __B) {
7950  // CHECK-LABEL: @test_mm256_mask_srai_epi64_2
7951  // CHECK: @llvm.x86.avx512.psrai.q.256
7952  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
7953  return _mm256_mask_srai_epi64(__W, __U, __A, __B); 
7954}
7955
7956__m256i test_mm256_maskz_srai_epi64(__mmask8 __U, __m256i __A) {
7957  // CHECK-LABEL: @test_mm256_maskz_srai_epi64
7958  // CHECK: @llvm.x86.avx512.psrai.q.256
7959  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
7960  return _mm256_maskz_srai_epi64(__U, __A, 5); 
7961}
7962
7963__m256i test_mm256_maskz_srai_epi64_2(__mmask8 __U, __m256i __A, int __B) {
7964  // CHECK-LABEL: @test_mm256_maskz_srai_epi64_2
7965  // CHECK: @llvm.x86.avx512.psrai.q.256
7966  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
7967  return _mm256_maskz_srai_epi64(__U, __A, __B); 
7968}
7969
7970__m128i test_mm_ternarylogic_epi32(__m128i __A, __m128i __B, __m128i __C) {
7971  // CHECK-LABEL: @test_mm_ternarylogic_epi32
7972  // CHECK: @llvm.x86.avx512.pternlog.d.128
7973  return _mm_ternarylogic_epi32(__A, __B, __C, 4); 
7974}
7975
7976__m128i test_mm_mask_ternarylogic_epi32(__m128i __A, __mmask8 __U, __m128i __B, __m128i __C) {
7977  // CHECK-LABEL: @test_mm_mask_ternarylogic_epi32
7978  // CHECK: @llvm.x86.avx512.pternlog.d.128
7979  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
7980  return _mm_mask_ternarylogic_epi32(__A, __U, __B, __C, 4); 
7981}
7982
7983__m128i test_mm_maskz_ternarylogic_epi32(__mmask8 __U, __m128i __A, __m128i __B, __m128i __C) {
7984  // CHECK-LABEL: @test_mm_maskz_ternarylogic_epi32
7985  // CHECK: @llvm.x86.avx512.pternlog.d.128
7986  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> zeroinitializer
7987  return _mm_maskz_ternarylogic_epi32(__U, __A, __B, __C, 4); 
7988}
7989
7990__m256i test_mm256_ternarylogic_epi32(__m256i __A, __m256i __B, __m256i __C) {
7991  // CHECK-LABEL: @test_mm256_ternarylogic_epi32
7992  // CHECK: @llvm.x86.avx512.pternlog.d.256
7993  return _mm256_ternarylogic_epi32(__A, __B, __C, 4); 
7994}
7995
7996__m256i test_mm256_mask_ternarylogic_epi32(__m256i __A, __mmask8 __U, __m256i __B, __m256i __C) {
7997  // CHECK-LABEL: @test_mm256_mask_ternarylogic_epi32
7998  // CHECK: @llvm.x86.avx512.pternlog.d.256
7999  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
8000  return _mm256_mask_ternarylogic_epi32(__A, __U, __B, __C, 4); 
8001}
8002
8003__m256i test_mm256_maskz_ternarylogic_epi32(__mmask8 __U, __m256i __A, __m256i __B, __m256i __C) {
8004  // CHECK-LABEL: @test_mm256_maskz_ternarylogic_epi32
8005  // CHECK: @llvm.x86.avx512.pternlog.d.256
8006  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> zeroinitializer
8007  return _mm256_maskz_ternarylogic_epi32(__U, __A, __B, __C, 4); 
8008}
8009
8010__m128i test_mm_ternarylogic_epi64(__m128i __A, __m128i __B, __m128i __C) {
8011  // CHECK-LABEL: @test_mm_ternarylogic_epi64
8012  // CHECK: @llvm.x86.avx512.pternlog.q.128
8013  return _mm_ternarylogic_epi64(__A, __B, __C, 4); 
8014}
8015
8016__m128i test_mm_mask_ternarylogic_epi64(__m128i __A, __mmask8 __U, __m128i __B, __m128i __C) {
8017  // CHECK-LABEL: @test_mm_mask_ternarylogic_epi64
8018  // CHECK: @llvm.x86.avx512.pternlog.q.128
8019  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
8020  return _mm_mask_ternarylogic_epi64(__A, __U, __B, __C, 4); 
8021}
8022
8023__m128i test_mm_maskz_ternarylogic_epi64(__mmask8 __U, __m128i __A, __m128i __B, __m128i __C) {
8024  // CHECK-LABEL: @test_mm_maskz_ternarylogic_epi64
8025  // CHECK: @llvm.x86.avx512.pternlog.q.128
8026  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> zeroinitializer
8027  return _mm_maskz_ternarylogic_epi64(__U, __A, __B, __C, 4); 
8028}
8029
8030__m256i test_mm256_ternarylogic_epi64(__m256i __A, __m256i __B, __m256i __C) {
8031  // CHECK-LABEL: @test_mm256_ternarylogic_epi64
8032  // CHECK: @llvm.x86.avx512.pternlog.q.256
8033  return _mm256_ternarylogic_epi64(__A, __B, __C, 4); 
8034}
8035
8036__m256i test_mm256_mask_ternarylogic_epi64(__m256i __A, __mmask8 __U, __m256i __B, __m256i __C) {
8037  // CHECK-LABEL: @test_mm256_mask_ternarylogic_epi64
8038  // CHECK: @llvm.x86.avx512.pternlog.q.256
8039  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
8040  return _mm256_mask_ternarylogic_epi64(__A, __U, __B, __C, 4); 
8041}
8042
8043__m256i test_mm256_maskz_ternarylogic_epi64(__mmask8 __U, __m256i __A, __m256i __B, __m256i __C) {
8044  // CHECK-LABEL: @test_mm256_maskz_ternarylogic_epi64
8045  // CHECK: @llvm.x86.avx512.pternlog.q.256
8046  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> zeroinitializer
8047  return _mm256_maskz_ternarylogic_epi64(__U, __A, __B, __C, 4); 
8048}
8049__m256 test_mm256_shuffle_f32x4(__m256 __A, __m256 __B) {
8050  // CHECK-LABEL: @test_mm256_shuffle_f32x4
8051  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 12, i32 13, i32 14, i32 15>
8052  return _mm256_shuffle_f32x4(__A, __B, 3); 
8053}
8054
8055__m256 test_mm256_mask_shuffle_f32x4(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
8056  // CHECK-LABEL: @test_mm256_mask_shuffle_f32x4
8057  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 12, i32 13, i32 14, i32 15>
8058  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
8059  return _mm256_mask_shuffle_f32x4(__W, __U, __A, __B, 3); 
8060}
8061
8062__m256 test_mm256_maskz_shuffle_f32x4(__mmask8 __U, __m256 __A, __m256 __B) {
8063  // CHECK-LABEL: @test_mm256_maskz_shuffle_f32x4
8064  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 12, i32 13, i32 14, i32 15>
8065  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
8066  return _mm256_maskz_shuffle_f32x4(__U, __A, __B, 3); 
8067}
8068
8069__m256d test_mm256_shuffle_f64x2(__m256d __A, __m256d __B) {
8070  // CHECK-LABEL: @test_mm256_shuffle_f64x2
8071  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 2, i32 3, i32 6, i32 7>
8072  return _mm256_shuffle_f64x2(__A, __B, 3); 
8073}
8074
8075__m256d test_mm256_mask_shuffle_f64x2(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
8076  // CHECK-LABEL: @test_mm256_mask_shuffle_f64x2
8077  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 2, i32 3, i32 6, i32 7>
8078  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
8079  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
8080  return _mm256_mask_shuffle_f64x2(__W, __U, __A, __B, 3); 
8081}
8082
8083__m256d test_mm256_maskz_shuffle_f64x2(__mmask8 __U, __m256d __A, __m256d __B) {
8084  // CHECK-LABEL: @test_mm256_maskz_shuffle_f64x2
8085  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 2, i32 3, i32 6, i32 7>
8086  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
8087  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
8088  return _mm256_maskz_shuffle_f64x2(__U, __A, __B, 3); 
8089}
8090
8091__m256i test_mm256_shuffle_i32x4(__m256i __A, __m256i __B) {
8092  // CHECK-LABEL: @test_mm256_shuffle_i32x4
8093  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 12, i32 13, i32 14, i32 15>
8094  return _mm256_shuffle_i32x4(__A, __B, 3); 
8095}
8096
8097__m256i test_mm256_mask_shuffle_i32x4(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
8098  // CHECK-LABEL: @test_mm256_mask_shuffle_i32x4
8099  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 12, i32 13, i32 14, i32 15>
8100  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
8101  return _mm256_mask_shuffle_i32x4(__W, __U, __A, __B, 3); 
8102}
8103
8104__m256i test_mm256_maskz_shuffle_i32x4(__mmask8 __U, __m256i __A, __m256i __B) {
8105  // CHECK-LABEL: @test_mm256_maskz_shuffle_i32x4
8106  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 12, i32 13, i32 14, i32 15>
8107  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
8108  return _mm256_maskz_shuffle_i32x4(__U, __A, __B, 3); 
8109}
8110
8111__m256i test_mm256_shuffle_i64x2(__m256i __A, __m256i __B) {
8112  // CHECK-LABEL: @test_mm256_shuffle_i64x2
8113  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 2, i32 3, i32 6, i32 7>
8114  return _mm256_shuffle_i64x2(__A, __B, 3); 
8115}
8116
8117__m256i test_mm256_mask_shuffle_i64x2(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
8118  // CHECK-LABEL: @test_mm256_mask_shuffle_i64x2
8119  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 2, i32 3, i32 6, i32 7>
8120  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
8121  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
8122  return _mm256_mask_shuffle_i64x2(__W, __U, __A, __B, 3); 
8123}
8124
8125__m256i test_mm256_maskz_shuffle_i64x2(__mmask8 __U, __m256i __A, __m256i __B) {
8126  // CHECK-LABEL: @test_mm256_maskz_shuffle_i64x2
8127  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 2, i32 3, i32 6, i32 7>
8128  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
8129  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
8130  return _mm256_maskz_shuffle_i64x2(__U, __A, __B, 3); 
8131}
8132
8133__m128d test_mm_mask_shuffle_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
8134  // CHECK-LABEL: @test_mm_mask_shuffle_pd
8135  // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> <i32 1, i32 3>
8136  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
8137  return _mm_mask_shuffle_pd(__W, __U, __A, __B, 3); 
8138}
8139
8140__m128d test_mm_maskz_shuffle_pd(__mmask8 __U, __m128d __A, __m128d __B) {
8141  // CHECK-LABEL: @test_mm_maskz_shuffle_pd
8142  // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> <i32 1, i32 3>
8143  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
8144  return _mm_maskz_shuffle_pd(__U, __A, __B, 3); 
8145}
8146
8147__m256d test_mm256_mask_shuffle_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
8148  // CHECK-LABEL: @test_mm256_mask_shuffle_pd
8149  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 1, i32 5, i32 2, i32 6>
8150  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
8151  return _mm256_mask_shuffle_pd(__W, __U, __A, __B, 3); 
8152}
8153
8154__m256d test_mm256_maskz_shuffle_pd(__mmask8 __U, __m256d __A, __m256d __B) {
8155  // CHECK-LABEL: @test_mm256_maskz_shuffle_pd
8156  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 1, i32 5, i32 2, i32 6>
8157  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
8158  return _mm256_maskz_shuffle_pd(__U, __A, __B, 3); 
8159}
8160
8161__m128 test_mm_mask_shuffle_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
8162  // CHECK-LABEL: @test_mm_mask_shuffle_ps
8163  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 4, i32 4>
8164  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
8165  return _mm_mask_shuffle_ps(__W, __U, __A, __B, 4); 
8166}
8167
8168__m128 test_mm_maskz_shuffle_ps(__mmask8 __U, __m128 __A, __m128 __B) {
8169  // CHECK-LABEL: @test_mm_maskz_shuffle_ps
8170  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 4, i32 4>
8171  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
8172  return _mm_maskz_shuffle_ps(__U, __A, __B, 4); 
8173}
8174
8175__m256 test_mm256_mask_shuffle_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
8176  // CHECK-LABEL: @test_mm256_mask_shuffle_ps
8177  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 8, i32 8, i32 4, i32 5, i32 12, i32 12>
8178  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
8179  return _mm256_mask_shuffle_ps(__W, __U, __A, __B, 4); 
8180}
8181
8182__m256 test_mm256_maskz_shuffle_ps(__mmask8 __U, __m256 __A, __m256 __B) {
8183  // CHECK-LABEL: @test_mm256_maskz_shuffle_ps
8184  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 8, i32 8, i32 4, i32 5, i32 12, i32 12>
8185  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
8186  return _mm256_maskz_shuffle_ps(__U, __A, __B, 4); 
8187}
8188
8189__m128d test_mm_rsqrt14_pd(__m128d __A) {
8190  // CHECK-LABEL: @test_mm_rsqrt14_pd
8191  // CHECK: @llvm.x86.avx512.rsqrt14.pd.128
8192  return _mm_rsqrt14_pd(__A); 
8193}
8194
8195__m128d test_mm_mask_rsqrt14_pd(__m128d __W, __mmask8 __U, __m128d __A) {
8196  // CHECK-LABEL: @test_mm_mask_rsqrt14_pd
8197  // CHECK: @llvm.x86.avx512.rsqrt14.pd.128
8198  return _mm_mask_rsqrt14_pd(__W, __U, __A); 
8199}
8200
8201__m128d test_mm_maskz_rsqrt14_pd(__mmask8 __U, __m128d __A) {
8202  // CHECK-LABEL: @test_mm_maskz_rsqrt14_pd
8203  // CHECK: @llvm.x86.avx512.rsqrt14.pd.128
8204  return _mm_maskz_rsqrt14_pd(__U, __A); 
8205}
8206
8207__m256d test_mm256_rsqrt14_pd(__m256d __A) {
8208  // CHECK-LABEL: @test_mm256_rsqrt14_pd
8209  // CHECK: @llvm.x86.avx512.rsqrt14.pd.256
8210  return _mm256_rsqrt14_pd(__A); 
8211}
8212
8213__m256d test_mm256_mask_rsqrt14_pd(__m256d __W, __mmask8 __U, __m256d __A) {
8214  // CHECK-LABEL: @test_mm256_mask_rsqrt14_pd
8215  // CHECK: @llvm.x86.avx512.rsqrt14.pd.256
8216  return _mm256_mask_rsqrt14_pd(__W, __U, __A); 
8217}
8218
8219__m256d test_mm256_maskz_rsqrt14_pd(__mmask8 __U, __m256d __A) {
8220  // CHECK-LABEL: @test_mm256_maskz_rsqrt14_pd
8221  // CHECK: @llvm.x86.avx512.rsqrt14.pd.256
8222  return _mm256_maskz_rsqrt14_pd(__U, __A); 
8223}
8224
8225__m128 test_mm_rsqrt14_ps(__m128 __A) {
8226  // CHECK-LABEL: @test_mm_rsqrt14_ps
8227  // CHECK: @llvm.x86.avx512.rsqrt14.ps.128
8228  return _mm_rsqrt14_ps(__A); 
8229}
8230
8231__m128 test_mm_mask_rsqrt14_ps(__m128 __W, __mmask8 __U, __m128 __A) {
8232  // CHECK-LABEL: @test_mm_mask_rsqrt14_ps
8233  // CHECK: @llvm.x86.avx512.rsqrt14.ps.128
8234  return _mm_mask_rsqrt14_ps(__W, __U, __A); 
8235}
8236
8237__m128 test_mm_maskz_rsqrt14_ps(__mmask8 __U, __m128 __A) {
8238  // CHECK-LABEL: @test_mm_maskz_rsqrt14_ps
8239  // CHECK: @llvm.x86.avx512.rsqrt14.ps.128
8240  return _mm_maskz_rsqrt14_ps(__U, __A); 
8241}
8242
8243__m256 test_mm256_rsqrt14_ps(__m256 __A) {
8244  // CHECK-LABEL: @test_mm256_rsqrt14_ps
8245  // CHECK: @llvm.x86.avx512.rsqrt14.ps.256
8246  return _mm256_rsqrt14_ps(__A); 
8247}
8248
8249__m256 test_mm256_mask_rsqrt14_ps(__m256 __W, __mmask8 __U, __m256 __A) {
8250  // CHECK-LABEL: @test_mm256_mask_rsqrt14_ps
8251  // CHECK: @llvm.x86.avx512.rsqrt14.ps.256
8252  return _mm256_mask_rsqrt14_ps(__W, __U, __A); 
8253}
8254
8255__m256 test_mm256_maskz_rsqrt14_ps(__mmask8 __U, __m256 __A) {
8256  // CHECK-LABEL: @test_mm256_maskz_rsqrt14_ps
8257  // CHECK: @llvm.x86.avx512.rsqrt14.ps.256
8258  return _mm256_maskz_rsqrt14_ps(__U, __A); 
8259}
8260
8261__m256 test_mm256_broadcast_f32x4(__m128 __A) {
8262  // CHECK-LABEL: @test_mm256_broadcast_f32x4
8263  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
8264  return _mm256_broadcast_f32x4(__A); 
8265}
8266
8267__m256 test_mm256_mask_broadcast_f32x4(__m256 __O, __mmask8 __M, __m128 __A) {
8268  // CHECK-LABEL: @test_mm256_mask_broadcast_f32x4
8269  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
8270  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
8271  return _mm256_mask_broadcast_f32x4(__O, __M, __A); 
8272}
8273
8274__m256 test_mm256_maskz_broadcast_f32x4(__mmask8 __M, __m128 __A) {
8275  // CHECK-LABEL: @test_mm256_maskz_broadcast_f32x4
8276  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
8277  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
8278  return _mm256_maskz_broadcast_f32x4(__M, __A); 
8279}
8280
8281__m256i test_mm256_broadcast_i32x4(__m128i const* __A) {
8282  // CHECK-LABEL: @test_mm256_broadcast_i32x4
8283  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
8284  return _mm256_broadcast_i32x4(_mm_loadu_si128(__A)); 
8285}
8286
8287__m256i test_mm256_mask_broadcast_i32x4(__m256i __O, __mmask8 __M, __m128i const* __A) {
8288  // CHECK-LABEL: @test_mm256_mask_broadcast_i32x4
8289  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
8290  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
8291  return _mm256_mask_broadcast_i32x4(__O, __M, _mm_loadu_si128(__A)); 
8292}
8293
8294__m256i test_mm256_maskz_broadcast_i32x4(__mmask8 __M, __m128i const* __A) {
8295  // CHECK-LABEL: @test_mm256_maskz_broadcast_i32x4
8296  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
8297  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
8298  return _mm256_maskz_broadcast_i32x4(__M, _mm_loadu_si128(__A)); 
8299}
8300
8301__m256d test_mm256_mask_broadcastsd_pd(__m256d __O, __mmask8 __M, __m128d __A) {
8302  // CHECK-LABEL: @test_mm256_mask_broadcastsd_pd
8303  // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <4 x i32> zeroinitializer
8304  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
8305  return _mm256_mask_broadcastsd_pd(__O, __M, __A);
8306}
8307
8308__m256d test_mm256_maskz_broadcastsd_pd(__mmask8 __M, __m128d __A) {
8309  // CHECK-LABEL: @test_mm256_maskz_broadcastsd_pd
8310  // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <4 x i32> zeroinitializer
8311  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
8312  return _mm256_maskz_broadcastsd_pd(__M, __A);
8313}
8314
8315__m128 test_mm_mask_broadcastss_ps(__m128 __O, __mmask8 __M, __m128 __A) {
8316  // CHECK-LABEL: @test_mm_mask_broadcastss_ps
8317  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> zeroinitializer
8318  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
8319  return _mm_mask_broadcastss_ps(__O, __M, __A);
8320}
8321
8322__m128 test_mm_maskz_broadcastss_ps(__mmask8 __M, __m128 __A) {
8323  // CHECK-LABEL: @test_mm_maskz_broadcastss_ps
8324  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> zeroinitializer
8325  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
8326  return _mm_maskz_broadcastss_ps(__M, __A);
8327}
8328
8329__m256 test_mm256_mask_broadcastss_ps(__m256 __O, __mmask8 __M, __m128 __A) {
8330  // CHECK-LABEL: @test_mm256_mask_broadcastss_ps
8331  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <8 x i32> zeroinitializer
8332  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
8333  return _mm256_mask_broadcastss_ps(__O, __M, __A);
8334}
8335
8336__m256 test_mm256_maskz_broadcastss_ps(__mmask8 __M, __m128 __A) {
8337  // CHECK-LABEL: @test_mm256_maskz_broadcastss_ps
8338  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <8 x i32> zeroinitializer
8339  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
8340  return _mm256_maskz_broadcastss_ps(__M, __A);
8341}
8342
8343__m128i test_mm_mask_broadcastd_epi32(__m128i __O, __mmask8 __M, __m128i __A) {
8344  // CHECK-LABEL: @test_mm_mask_broadcastd_epi32
8345  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> zeroinitializer
8346  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
8347  return _mm_mask_broadcastd_epi32(__O, __M, __A);
8348}
8349
8350__m128i test_mm_maskz_broadcastd_epi32(__mmask8 __M, __m128i __A) {
8351  // CHECK-LABEL: @test_mm_maskz_broadcastd_epi32
8352  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> zeroinitializer
8353  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
8354  return _mm_maskz_broadcastd_epi32(__M, __A);
8355}
8356
8357__m256i test_mm256_mask_broadcastd_epi32(__m256i __O, __mmask8 __M, __m128i __A) {
8358  // CHECK-LABEL: @test_mm256_mask_broadcastd_epi32
8359  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <8 x i32> zeroinitializer
8360  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
8361  return _mm256_mask_broadcastd_epi32(__O, __M, __A);
8362}
8363
8364__m256i test_mm256_maskz_broadcastd_epi32(__mmask8 __M, __m128i __A) {
8365  // CHECK-LABEL: @test_mm256_maskz_broadcastd_epi32
8366  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <8 x i32> zeroinitializer
8367  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
8368  return _mm256_maskz_broadcastd_epi32(__M, __A);
8369}
8370
8371__m128i test_mm_mask_broadcastq_epi64(__m128i __O, __mmask8 __M, __m128i __A) {
8372  // CHECK-LABEL: @test_mm_mask_broadcastq_epi64
8373  // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> zeroinitializer
8374  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
8375  return _mm_mask_broadcastq_epi64(__O, __M, __A);
8376}
8377
8378__m128i test_mm_maskz_broadcastq_epi64(__mmask8 __M, __m128i __A) {
8379  // CHECK-LABEL: @test_mm_maskz_broadcastq_epi64
8380  // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> zeroinitializer
8381  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
8382  return _mm_maskz_broadcastq_epi64(__M, __A);
8383}
8384
8385__m256i test_mm256_mask_broadcastq_epi64(__m256i __O, __mmask8 __M, __m128i __A) {
8386  // CHECK-LABEL: @test_mm256_mask_broadcastq_epi64
8387  // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <4 x i32> zeroinitializer
8388  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
8389  return _mm256_mask_broadcastq_epi64(__O, __M, __A);
8390}
8391
8392__m256i test_mm256_maskz_broadcastq_epi64(__mmask8 __M, __m128i __A) {
8393  // CHECK-LABEL: @test_mm256_maskz_broadcastq_epi64
8394  // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <4 x i32> zeroinitializer
8395  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
8396  return _mm256_maskz_broadcastq_epi64(__M, __A);
8397}
8398
8399__m128i test_mm_cvtsepi32_epi8(__m128i __A) {
8400  // CHECK-LABEL: @test_mm_cvtsepi32_epi8
8401  // CHECK: @llvm.x86.avx512.mask.pmovs.db.128
8402  return _mm_cvtsepi32_epi8(__A); 
8403}
8404
8405__m128i test_mm_mask_cvtsepi32_epi8(__m128i __O, __mmask8 __M, __m128i __A) {
8406  // CHECK-LABEL: @test_mm_mask_cvtsepi32_epi8
8407  // CHECK: @llvm.x86.avx512.mask.pmovs.db.128
8408  return _mm_mask_cvtsepi32_epi8(__O, __M, __A); 
8409}
8410
8411__m128i test_mm_maskz_cvtsepi32_epi8(__mmask8 __M, __m128i __A) {
8412  // CHECK-LABEL: @test_mm_maskz_cvtsepi32_epi8
8413  // CHECK: @llvm.x86.avx512.mask.pmovs.db.128
8414  return _mm_maskz_cvtsepi32_epi8(__M, __A); 
8415}
8416
8417void test_mm_mask_cvtsepi32_storeu_epi8(void * __P, __mmask8 __M, __m128i __A) {
8418  // CHECK-LABEL: @test_mm_mask_cvtsepi32_storeu_epi8
8419  // CHECK: @llvm.x86.avx512.mask.pmovs.db.mem.128
8420  return _mm_mask_cvtsepi32_storeu_epi8(__P, __M, __A); 
8421}
8422
8423__m128i test_mm256_cvtsepi32_epi8(__m256i __A) {
8424  // CHECK-LABEL: @test_mm256_cvtsepi32_epi8
8425  // CHECK: @llvm.x86.avx512.mask.pmovs.db.256
8426  return _mm256_cvtsepi32_epi8(__A); 
8427}
8428
8429__m128i test_mm256_mask_cvtsepi32_epi8(__m128i __O, __mmask8 __M, __m256i __A) {
8430  // CHECK-LABEL: @test_mm256_mask_cvtsepi32_epi8
8431  // CHECK: @llvm.x86.avx512.mask.pmovs.db.256
8432  return _mm256_mask_cvtsepi32_epi8(__O, __M, __A); 
8433}
8434
8435__m128i test_mm256_maskz_cvtsepi32_epi8(__mmask8 __M, __m256i __A) {
8436  // CHECK-LABEL: @test_mm256_maskz_cvtsepi32_epi8
8437  // CHECK: @llvm.x86.avx512.mask.pmovs.db.256
8438  return _mm256_maskz_cvtsepi32_epi8(__M, __A); 
8439}
8440
8441void test_mm256_mask_cvtsepi32_storeu_epi8(void * __P, __mmask8 __M, __m256i __A) {
8442  // CHECK-LABEL: @test_mm256_mask_cvtsepi32_storeu_epi8
8443  // CHECK: @llvm.x86.avx512.mask.pmovs.db.mem.256
8444  return _mm256_mask_cvtsepi32_storeu_epi8(__P, __M, __A); 
8445}
8446
8447__m128i test_mm_cvtsepi32_epi16(__m128i __A) {
8448  // CHECK-LABEL: @test_mm_cvtsepi32_epi16
8449  // CHECK: @llvm.x86.avx512.mask.pmovs.dw.128
8450  return _mm_cvtsepi32_epi16(__A); 
8451}
8452
8453__m128i test_mm_mask_cvtsepi32_epi16(__m128i __O, __mmask8 __M, __m128i __A) {
8454  // CHECK-LABEL: @test_mm_mask_cvtsepi32_epi16
8455  // CHECK: @llvm.x86.avx512.mask.pmovs.dw.128
8456  return _mm_mask_cvtsepi32_epi16(__O, __M, __A); 
8457}
8458
8459__m128i test_mm_maskz_cvtsepi32_epi16(__mmask8 __M, __m128i __A) {
8460  // CHECK-LABEL: @test_mm_maskz_cvtsepi32_epi16
8461  // CHECK: @llvm.x86.avx512.mask.pmovs.dw.128
8462  return _mm_maskz_cvtsepi32_epi16(__M, __A); 
8463}
8464
8465void test_mm_mask_cvtsepi32_storeu_epi16(void * __P, __mmask8 __M, __m128i __A) {
8466  // CHECK-LABEL: @test_mm_mask_cvtsepi32_storeu_epi16
8467  // CHECK: @llvm.x86.avx512.mask.pmovs.dw.mem.128
8468  return _mm_mask_cvtsepi32_storeu_epi16(__P, __M, __A); 
8469}
8470
8471__m128i test_mm256_cvtsepi32_epi16(__m256i __A) {
8472  // CHECK-LABEL: @test_mm256_cvtsepi32_epi16
8473  // CHECK: @llvm.x86.avx512.mask.pmovs.dw.256
8474  return _mm256_cvtsepi32_epi16(__A); 
8475}
8476
8477__m128i test_mm256_mask_cvtsepi32_epi16(__m128i __O, __mmask8 __M, __m256i __A) {
8478  // CHECK-LABEL: @test_mm256_mask_cvtsepi32_epi16
8479  // CHECK: @llvm.x86.avx512.mask.pmovs.dw.256
8480  return _mm256_mask_cvtsepi32_epi16(__O, __M, __A); 
8481}
8482
8483__m128i test_mm256_maskz_cvtsepi32_epi16(__mmask8 __M, __m256i __A) {
8484  // CHECK-LABEL: @test_mm256_maskz_cvtsepi32_epi16
8485  // CHECK: @llvm.x86.avx512.mask.pmovs.dw.256
8486  return _mm256_maskz_cvtsepi32_epi16(__M, __A); 
8487}
8488
8489void test_mm256_mask_cvtsepi32_storeu_epi16(void * __P, __mmask8 __M, __m256i __A) {
8490  // CHECK-LABEL: @test_mm256_mask_cvtsepi32_storeu_epi16
8491  // CHECK: @llvm.x86.avx512.mask.pmovs.dw.mem.256
8492  return _mm256_mask_cvtsepi32_storeu_epi16(__P, __M, __A); 
8493}
8494
8495__m128i test_mm_cvtsepi64_epi8(__m128i __A) {
8496  // CHECK-LABEL: @test_mm_cvtsepi64_epi8
8497  // CHECK: @llvm.x86.avx512.mask.pmovs.qb.128
8498  return _mm_cvtsepi64_epi8(__A); 
8499}
8500
8501__m128i test_mm_mask_cvtsepi64_epi8(__m128i __O, __mmask8 __M, __m128i __A) {
8502  // CHECK-LABEL: @test_mm_mask_cvtsepi64_epi8
8503  // CHECK: @llvm.x86.avx512.mask.pmovs.qb.128
8504  return _mm_mask_cvtsepi64_epi8(__O, __M, __A); 
8505}
8506
8507__m128i test_mm_maskz_cvtsepi64_epi8(__mmask8 __M, __m128i __A) {
8508  // CHECK-LABEL: @test_mm_maskz_cvtsepi64_epi8
8509  // CHECK: @llvm.x86.avx512.mask.pmovs.qb.128
8510  return _mm_maskz_cvtsepi64_epi8(__M, __A); 
8511}
8512
8513void test_mm_mask_cvtsepi64_storeu_epi8(void * __P, __mmask8 __M, __m128i __A) {
8514  // CHECK-LABEL: @test_mm_mask_cvtsepi64_storeu_epi8
8515  // CHECK: @llvm.x86.avx512.mask.pmovs.qb.mem.128
8516  return _mm_mask_cvtsepi64_storeu_epi8(__P, __M, __A); 
8517}
8518
8519__m128i test_mm256_cvtsepi64_epi8(__m256i __A) {
8520  // CHECK-LABEL: @test_mm256_cvtsepi64_epi8
8521  // CHECK: @llvm.x86.avx512.mask.pmovs.qb.256
8522  return _mm256_cvtsepi64_epi8(__A); 
8523}
8524
8525__m128i test_mm256_mask_cvtsepi64_epi8(__m128i __O, __mmask8 __M, __m256i __A) {
8526  // CHECK-LABEL: @test_mm256_mask_cvtsepi64_epi8
8527  // CHECK: @llvm.x86.avx512.mask.pmovs.qb.256
8528  return _mm256_mask_cvtsepi64_epi8(__O, __M, __A); 
8529}
8530
8531__m128i test_mm256_maskz_cvtsepi64_epi8(__mmask8 __M, __m256i __A) {
8532  // CHECK-LABEL: @test_mm256_maskz_cvtsepi64_epi8
8533  // CHECK: @llvm.x86.avx512.mask.pmovs.qb.256
8534  return _mm256_maskz_cvtsepi64_epi8(__M, __A); 
8535}
8536
8537void test_mm256_mask_cvtsepi64_storeu_epi8(void * __P, __mmask8 __M, __m256i __A) {
8538  // CHECK-LABEL: @test_mm256_mask_cvtsepi64_storeu_epi8
8539  // CHECK: @llvm.x86.avx512.mask.pmovs.qb.mem.256
8540  return _mm256_mask_cvtsepi64_storeu_epi8(__P, __M, __A); 
8541}
8542
8543__m128i test_mm_cvtsepi64_epi32(__m128i __A) {
8544  // CHECK-LABEL: @test_mm_cvtsepi64_epi32
8545  // CHECK: @llvm.x86.avx512.mask.pmovs.qd.128
8546  return _mm_cvtsepi64_epi32(__A); 
8547}
8548
8549__m128i test_mm_mask_cvtsepi64_epi32(__m128i __O, __mmask8 __M, __m128i __A) {
8550  // CHECK-LABEL: @test_mm_mask_cvtsepi64_epi32
8551  // CHECK: @llvm.x86.avx512.mask.pmovs.qd.128
8552  return _mm_mask_cvtsepi64_epi32(__O, __M, __A); 
8553}
8554
8555__m128i test_mm_maskz_cvtsepi64_epi32(__mmask8 __M, __m128i __A) {
8556  // CHECK-LABEL: @test_mm_maskz_cvtsepi64_epi32
8557  // CHECK: @llvm.x86.avx512.mask.pmovs.qd.128
8558  return _mm_maskz_cvtsepi64_epi32(__M, __A); 
8559}
8560
8561void test_mm_mask_cvtsepi64_storeu_epi32(void * __P, __mmask8 __M, __m128i __A) {
8562  // CHECK-LABEL: @test_mm_mask_cvtsepi64_storeu_epi32
8563  // CHECK: @llvm.x86.avx512.mask.pmovs.qd.mem.128
8564  return _mm_mask_cvtsepi64_storeu_epi32(__P, __M, __A); 
8565}
8566
8567__m128i test_mm256_cvtsepi64_epi32(__m256i __A) {
8568  // CHECK-LABEL: @test_mm256_cvtsepi64_epi32
8569  // CHECK: @llvm.x86.avx512.mask.pmovs.qd.256
8570  return _mm256_cvtsepi64_epi32(__A); 
8571}
8572
8573__m128i test_mm256_mask_cvtsepi64_epi32(__m128i __O, __mmask8 __M, __m256i __A) {
8574  // CHECK-LABEL: @test_mm256_mask_cvtsepi64_epi32
8575  // CHECK: @llvm.x86.avx512.mask.pmovs.qd.256
8576  return _mm256_mask_cvtsepi64_epi32(__O, __M, __A); 
8577}
8578
8579__m128i test_mm256_maskz_cvtsepi64_epi32(__mmask8 __M, __m256i __A) {
8580  // CHECK-LABEL: @test_mm256_maskz_cvtsepi64_epi32
8581  // CHECK: @llvm.x86.avx512.mask.pmovs.qd.256
8582  return _mm256_maskz_cvtsepi64_epi32(__M, __A); 
8583}
8584
8585void test_mm256_mask_cvtsepi64_storeu_epi32(void * __P, __mmask8 __M, __m256i __A) {
8586  // CHECK-LABEL: @test_mm256_mask_cvtsepi64_storeu_epi32
8587  // CHECK: @llvm.x86.avx512.mask.pmovs.qd.mem.256
8588  return _mm256_mask_cvtsepi64_storeu_epi32(__P, __M, __A); 
8589}
8590
8591__m128i test_mm_cvtsepi64_epi16(__m128i __A) {
8592  // CHECK-LABEL: @test_mm_cvtsepi64_epi16
8593  // CHECK: @llvm.x86.avx512.mask.pmovs.qw.128
8594  return _mm_cvtsepi64_epi16(__A); 
8595}
8596
8597__m128i test_mm_mask_cvtsepi64_epi16(__m128i __O, __mmask8 __M, __m128i __A) {
8598  // CHECK-LABEL: @test_mm_mask_cvtsepi64_epi16
8599  // CHECK: @llvm.x86.avx512.mask.pmovs.qw.128
8600  return _mm_mask_cvtsepi64_epi16(__O, __M, __A); 
8601}
8602
8603__m128i test_mm_maskz_cvtsepi64_epi16(__mmask8 __M, __m128i __A) {
8604  // CHECK-LABEL: @test_mm_maskz_cvtsepi64_epi16
8605  // CHECK: @llvm.x86.avx512.mask.pmovs.qw.128
8606  return _mm_maskz_cvtsepi64_epi16(__M, __A); 
8607}
8608
8609void test_mm_mask_cvtsepi64_storeu_epi16(void * __P, __mmask8 __M, __m128i __A) {
8610  // CHECK-LABEL: @test_mm_mask_cvtsepi64_storeu_epi16
8611  // CHECK: @llvm.x86.avx512.mask.pmovs.qw.mem.128
8612  return _mm_mask_cvtsepi64_storeu_epi16(__P, __M, __A); 
8613}
8614
8615__m128i test_mm256_cvtsepi64_epi16(__m256i __A) {
8616  // CHECK-LABEL: @test_mm256_cvtsepi64_epi16
8617  // CHECK: @llvm.x86.avx512.mask.pmovs.qw.256
8618  return _mm256_cvtsepi64_epi16(__A); 
8619}
8620
8621__m128i test_mm256_mask_cvtsepi64_epi16(__m128i __O, __mmask8 __M, __m256i __A) {
8622  // CHECK-LABEL: @test_mm256_mask_cvtsepi64_epi16
8623  // CHECK: @llvm.x86.avx512.mask.pmovs.qw.256
8624  return _mm256_mask_cvtsepi64_epi16(__O, __M, __A); 
8625}
8626
8627__m128i test_mm256_maskz_cvtsepi64_epi16(__mmask8 __M, __m256i __A) {
8628  // CHECK-LABEL: @test_mm256_maskz_cvtsepi64_epi16
8629  // CHECK: @llvm.x86.avx512.mask.pmovs.qw.256
8630  return _mm256_maskz_cvtsepi64_epi16(__M, __A); 
8631}
8632
8633void test_mm256_mask_cvtsepi64_storeu_epi16(void * __P, __mmask8 __M, __m256i __A) {
8634  // CHECK-LABEL: @test_mm256_mask_cvtsepi64_storeu_epi16
8635  // CHECK: @llvm.x86.avx512.mask.pmovs.qw.mem.256
8636  return _mm256_mask_cvtsepi64_storeu_epi16(__P, __M, __A); 
8637}
8638
8639__m128i test_mm_cvtusepi32_epi8(__m128i __A) {
8640  // CHECK-LABEL: @test_mm_cvtusepi32_epi8
8641  // CHECK: @llvm.x86.avx512.mask.pmovus.db.128
8642  return _mm_cvtusepi32_epi8(__A); 
8643}
8644
8645__m128i test_mm_mask_cvtusepi32_epi8(__m128i __O, __mmask8 __M, __m128i __A) {
8646  // CHECK-LABEL: @test_mm_mask_cvtusepi32_epi8
8647  // CHECK: @llvm.x86.avx512.mask.pmovus.db.128
8648  return _mm_mask_cvtusepi32_epi8(__O, __M, __A); 
8649}
8650
8651__m128i test_mm_maskz_cvtusepi32_epi8(__mmask8 __M, __m128i __A) {
8652  // CHECK-LABEL: @test_mm_maskz_cvtusepi32_epi8
8653  // CHECK: @llvm.x86.avx512.mask.pmovus.db.128
8654  return _mm_maskz_cvtusepi32_epi8(__M, __A); 
8655}
8656
8657void test_mm_mask_cvtusepi32_storeu_epi8(void * __P, __mmask8 __M, __m128i __A) {
8658  // CHECK-LABEL: @test_mm_mask_cvtusepi32_storeu_epi8
8659  // CHECK: @llvm.x86.avx512.mask.pmovus.db.mem.128
8660  return _mm_mask_cvtusepi32_storeu_epi8(__P, __M, __A); 
8661}
8662
8663__m128i test_mm256_cvtusepi32_epi8(__m256i __A) {
8664  // CHECK-LABEL: @test_mm256_cvtusepi32_epi8
8665  // CHECK: @llvm.x86.avx512.mask.pmovus.db.256
8666  return _mm256_cvtusepi32_epi8(__A); 
8667}
8668
8669__m128i test_mm256_mask_cvtusepi32_epi8(__m128i __O, __mmask8 __M, __m256i __A) {
8670  // CHECK-LABEL: @test_mm256_mask_cvtusepi32_epi8
8671  // CHECK: @llvm.x86.avx512.mask.pmovus.db.256
8672  return _mm256_mask_cvtusepi32_epi8(__O, __M, __A); 
8673}
8674
8675__m128i test_mm256_maskz_cvtusepi32_epi8(__mmask8 __M, __m256i __A) {
8676  // CHECK-LABEL: @test_mm256_maskz_cvtusepi32_epi8
8677  // CHECK: @llvm.x86.avx512.mask.pmovus.db.256
8678  return _mm256_maskz_cvtusepi32_epi8(__M, __A); 
8679}
8680
8681void test_mm256_mask_cvtusepi32_storeu_epi8(void * __P, __mmask8 __M, __m256i __A) {
8682  // CHECK-LABEL: @test_mm256_mask_cvtusepi32_storeu_epi8
8683  // CHECK: @llvm.x86.avx512.mask.pmovus.db.mem.256
8684  return _mm256_mask_cvtusepi32_storeu_epi8(__P, __M, __A); 
8685}
8686
8687__m128i test_mm_cvtusepi32_epi16(__m128i __A) {
8688  // CHECK-LABEL: @test_mm_cvtusepi32_epi16
8689  // CHECK: @llvm.x86.avx512.mask.pmovus.dw.128
8690  return _mm_cvtusepi32_epi16(__A); 
8691}
8692
8693__m128i test_mm_mask_cvtusepi32_epi16(__m128i __O, __mmask8 __M, __m128i __A) {
8694  // CHECK-LABEL: @test_mm_mask_cvtusepi32_epi16
8695  // CHECK: @llvm.x86.avx512.mask.pmovus.dw.128
8696  return _mm_mask_cvtusepi32_epi16(__O, __M, __A); 
8697}
8698
8699__m128i test_mm_maskz_cvtusepi32_epi16(__mmask8 __M, __m128i __A) {
8700  // CHECK-LABEL: @test_mm_maskz_cvtusepi32_epi16
8701  // CHECK: @llvm.x86.avx512.mask.pmovus.dw.128
8702  return _mm_maskz_cvtusepi32_epi16(__M, __A); 
8703}
8704
8705void test_mm_mask_cvtusepi32_storeu_epi16(void * __P, __mmask8 __M, __m128i __A) {
8706  // CHECK-LABEL: @test_mm_mask_cvtusepi32_storeu_epi16
8707  // CHECK: @llvm.x86.avx512.mask.pmovus.dw.mem.128
8708  return _mm_mask_cvtusepi32_storeu_epi16(__P, __M, __A); 
8709}
8710
8711__m128i test_mm256_cvtusepi32_epi16(__m256i __A) {
8712  // CHECK-LABEL: @test_mm256_cvtusepi32_epi16
8713  // CHECK: @llvm.x86.avx512.mask.pmovus.dw.256
8714  return _mm256_cvtusepi32_epi16(__A); 
8715}
8716
8717__m128i test_mm256_mask_cvtusepi32_epi16(__m128i __O, __mmask8 __M, __m256i __A) {
8718  // CHECK-LABEL: @test_mm256_mask_cvtusepi32_epi16
8719  // CHECK: @llvm.x86.avx512.mask.pmovus.dw.256
8720  return _mm256_mask_cvtusepi32_epi16(__O, __M, __A); 
8721}
8722
8723__m128i test_mm256_maskz_cvtusepi32_epi16(__mmask8 __M, __m256i __A) {
8724  // CHECK-LABEL: @test_mm256_maskz_cvtusepi32_epi16
8725  // CHECK: @llvm.x86.avx512.mask.pmovus.dw.256
8726  return _mm256_maskz_cvtusepi32_epi16(__M, __A); 
8727}
8728
8729void test_mm256_mask_cvtusepi32_storeu_epi16(void * __P, __mmask8 __M, __m256i __A) {
8730  // CHECK-LABEL: @test_mm256_mask_cvtusepi32_storeu_epi16
8731  // CHECK: @llvm.x86.avx512.mask.pmovus.dw.mem.256
8732  return _mm256_mask_cvtusepi32_storeu_epi16(__P, __M, __A); 
8733}
8734
8735__m128i test_mm_cvtusepi64_epi8(__m128i __A) {
8736  // CHECK-LABEL: @test_mm_cvtusepi64_epi8
8737  // CHECK: @llvm.x86.avx512.mask.pmovus.qb.128
8738  return _mm_cvtusepi64_epi8(__A); 
8739}
8740
8741__m128i test_mm_mask_cvtusepi64_epi8(__m128i __O, __mmask8 __M, __m128i __A) {
8742  // CHECK-LABEL: @test_mm_mask_cvtusepi64_epi8
8743  // CHECK: @llvm.x86.avx512.mask.pmovus.qb.128
8744  return _mm_mask_cvtusepi64_epi8(__O, __M, __A); 
8745}
8746
8747__m128i test_mm_maskz_cvtusepi64_epi8(__mmask8 __M, __m128i __A) {
8748  // CHECK-LABEL: @test_mm_maskz_cvtusepi64_epi8
8749  // CHECK: @llvm.x86.avx512.mask.pmovus.qb.128
8750  return _mm_maskz_cvtusepi64_epi8(__M, __A); 
8751}
8752
8753void test_mm_mask_cvtusepi64_storeu_epi8(void * __P, __mmask8 __M, __m128i __A) {
8754  // CHECK-LABEL: @test_mm_mask_cvtusepi64_storeu_epi8
8755  // CHECK: @llvm.x86.avx512.mask.pmovus.qb.mem.128
8756  return _mm_mask_cvtusepi64_storeu_epi8(__P, __M, __A); 
8757}
8758
8759__m128i test_mm256_cvtusepi64_epi8(__m256i __A) {
8760  // CHECK-LABEL: @test_mm256_cvtusepi64_epi8
8761  // CHECK: @llvm.x86.avx512.mask.pmovus.qb.256
8762  return _mm256_cvtusepi64_epi8(__A); 
8763}
8764
8765__m128i test_mm256_mask_cvtusepi64_epi8(__m128i __O, __mmask8 __M, __m256i __A) {
8766  // CHECK-LABEL: @test_mm256_mask_cvtusepi64_epi8
8767  // CHECK: @llvm.x86.avx512.mask.pmovus.qb.256
8768  return _mm256_mask_cvtusepi64_epi8(__O, __M, __A); 
8769}
8770
8771__m128i test_mm256_maskz_cvtusepi64_epi8(__mmask8 __M, __m256i __A) {
8772  // CHECK-LABEL: @test_mm256_maskz_cvtusepi64_epi8
8773  // CHECK: @llvm.x86.avx512.mask.pmovus.qb.256
8774  return _mm256_maskz_cvtusepi64_epi8(__M, __A); 
8775}
8776
8777void test_mm256_mask_cvtusepi64_storeu_epi8(void * __P, __mmask8 __M, __m256i __A) {
8778  // CHECK-LABEL: @test_mm256_mask_cvtusepi64_storeu_epi8
8779  // CHECK: @llvm.x86.avx512.mask.pmovus.qb.mem.256
8780  return _mm256_mask_cvtusepi64_storeu_epi8(__P, __M, __A); 
8781}
8782
8783__m128i test_mm_cvtusepi64_epi32(__m128i __A) {
8784  // CHECK-LABEL: @test_mm_cvtusepi64_epi32
8785  // CHECK: @llvm.x86.avx512.mask.pmovus.qd.128
8786  return _mm_cvtusepi64_epi32(__A); 
8787}
8788
8789__m128i test_mm_mask_cvtusepi64_epi32(__m128i __O, __mmask8 __M, __m128i __A) {
8790  // CHECK-LABEL: @test_mm_mask_cvtusepi64_epi32
8791  // CHECK: @llvm.x86.avx512.mask.pmovus.qd.128
8792  return _mm_mask_cvtusepi64_epi32(__O, __M, __A); 
8793}
8794
8795__m128i test_mm_maskz_cvtusepi64_epi32(__mmask8 __M, __m128i __A) {
8796  // CHECK-LABEL: @test_mm_maskz_cvtusepi64_epi32
8797  // CHECK: @llvm.x86.avx512.mask.pmovus.qd.128
8798  return _mm_maskz_cvtusepi64_epi32(__M, __A); 
8799}
8800
8801void test_mm_mask_cvtusepi64_storeu_epi32(void * __P, __mmask8 __M, __m128i __A) {
8802  // CHECK-LABEL: @test_mm_mask_cvtusepi64_storeu_epi32
8803  // CHECK: @llvm.x86.avx512.mask.pmovus.qd.mem.128
8804  return _mm_mask_cvtusepi64_storeu_epi32(__P, __M, __A); 
8805}
8806
8807__m128i test_mm256_cvtusepi64_epi32(__m256i __A) {
8808  // CHECK-LABEL: @test_mm256_cvtusepi64_epi32
8809  // CHECK: @llvm.x86.avx512.mask.pmovus.qd.256
8810  return _mm256_cvtusepi64_epi32(__A); 
8811}
8812
8813__m128i test_mm256_mask_cvtusepi64_epi32(__m128i __O, __mmask8 __M, __m256i __A) {
8814  // CHECK-LABEL: @test_mm256_mask_cvtusepi64_epi32
8815  // CHECK: @llvm.x86.avx512.mask.pmovus.qd.256
8816  return _mm256_mask_cvtusepi64_epi32(__O, __M, __A); 
8817}
8818
8819__m128i test_mm256_maskz_cvtusepi64_epi32(__mmask8 __M, __m256i __A) {
8820  // CHECK-LABEL: @test_mm256_maskz_cvtusepi64_epi32
8821  // CHECK: @llvm.x86.avx512.mask.pmovus.qd.256
8822  return _mm256_maskz_cvtusepi64_epi32(__M, __A); 
8823}
8824
8825void test_mm256_mask_cvtusepi64_storeu_epi32(void * __P, __mmask8 __M, __m256i __A) {
8826  // CHECK-LABEL: @test_mm256_mask_cvtusepi64_storeu_epi32
8827  // CHECK: @llvm.x86.avx512.mask.pmovus.qd.mem.256
8828  return _mm256_mask_cvtusepi64_storeu_epi32(__P, __M, __A); 
8829}
8830
8831__m128i test_mm_cvtusepi64_epi16(__m128i __A) {
8832  // CHECK-LABEL: @test_mm_cvtusepi64_epi16
8833  // CHECK: @llvm.x86.avx512.mask.pmovus.qw.128
8834  return _mm_cvtusepi64_epi16(__A); 
8835}
8836
8837__m128i test_mm_mask_cvtusepi64_epi16(__m128i __O, __mmask8 __M, __m128i __A) {
8838  // CHECK-LABEL: @test_mm_mask_cvtusepi64_epi16
8839  // CHECK: @llvm.x86.avx512.mask.pmovus.qw.128
8840  return _mm_mask_cvtusepi64_epi16(__O, __M, __A); 
8841}
8842
8843__m128i test_mm_maskz_cvtusepi64_epi16(__mmask8 __M, __m128i __A) {
8844  // CHECK-LABEL: @test_mm_maskz_cvtusepi64_epi16
8845  // CHECK: @llvm.x86.avx512.mask.pmovus.qw.128
8846  return _mm_maskz_cvtusepi64_epi16(__M, __A); 
8847}
8848
8849void test_mm_mask_cvtusepi64_storeu_epi16(void * __P, __mmask8 __M, __m128i __A) {
8850  // CHECK-LABEL: @test_mm_mask_cvtusepi64_storeu_epi16
8851  // CHECK: @llvm.x86.avx512.mask.pmovus.qw.mem.128
8852  return _mm_mask_cvtusepi64_storeu_epi16(__P, __M, __A); 
8853}
8854
8855__m128i test_mm256_cvtusepi64_epi16(__m256i __A) {
8856  // CHECK-LABEL: @test_mm256_cvtusepi64_epi16
8857  // CHECK: @llvm.x86.avx512.mask.pmovus.qw.256
8858  return _mm256_cvtusepi64_epi16(__A); 
8859}
8860
8861__m128i test_mm256_mask_cvtusepi64_epi16(__m128i __O, __mmask8 __M, __m256i __A) {
8862  // CHECK-LABEL: @test_mm256_mask_cvtusepi64_epi16
8863  // CHECK: @llvm.x86.avx512.mask.pmovus.qw.256
8864  return _mm256_mask_cvtusepi64_epi16(__O, __M, __A); 
8865}
8866
8867__m128i test_mm256_maskz_cvtusepi64_epi16(__mmask8 __M, __m256i __A) {
8868  // CHECK-LABEL: @test_mm256_maskz_cvtusepi64_epi16
8869  // CHECK: @llvm.x86.avx512.mask.pmovus.qw.256
8870  return _mm256_maskz_cvtusepi64_epi16(__M, __A); 
8871}
8872
8873void test_mm256_mask_cvtusepi64_storeu_epi16(void * __P, __mmask8 __M, __m256i __A) {
8874  // CHECK-LABEL: @test_mm256_mask_cvtusepi64_storeu_epi16
8875  // CHECK: @llvm.x86.avx512.mask.pmovus.qw.mem.256
8876  return _mm256_mask_cvtusepi64_storeu_epi16(__P, __M, __A); 
8877}
8878
8879__m128i test_mm_cvtepi32_epi8(__m128i __A) {
8880  // CHECK-LABEL: @test_mm_cvtepi32_epi8
8881  // CHECK: trunc <4 x i32> %{{.*}} to <4 x i8>
8882  // CHECK: shufflevector <4 x i8> %{{.*}}, <4 x i8> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7>
8883  return _mm_cvtepi32_epi8(__A); 
8884}
8885
8886__m128i test_mm_mask_cvtepi32_epi8(__m128i __O, __mmask8 __M, __m128i __A) {
8887  // CHECK-LABEL: @test_mm_mask_cvtepi32_epi8
8888  // CHECK: @llvm.x86.avx512.mask.pmov.db.128
8889  return _mm_mask_cvtepi32_epi8(__O, __M, __A); 
8890}
8891
8892__m128i test_mm_maskz_cvtepi32_epi8(__mmask8 __M, __m128i __A) {
8893  // CHECK-LABEL: @test_mm_maskz_cvtepi32_epi8
8894  // CHECK: @llvm.x86.avx512.mask.pmov.db.128
8895  return _mm_maskz_cvtepi32_epi8(__M, __A); 
8896}
8897
8898void test_mm_mask_cvtepi32_storeu_epi8(void * __P, __mmask8 __M, __m128i __A) {
8899  // CHECK-LABEL: @test_mm_mask_cvtepi32_storeu_epi8
8900  // CHECK: @llvm.x86.avx512.mask.pmov.db.mem.128
8901  return _mm_mask_cvtepi32_storeu_epi8(__P, __M, __A); 
8902}
8903
8904__m128i test_mm256_cvtepi32_epi8(__m256i __A) {
8905  // CHECK-LABEL: @test_mm256_cvtepi32_epi8
8906  // CHECK: trunc <8 x i32> %{{.*}} to <8 x i8>
8907  // 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>
8908  return _mm256_cvtepi32_epi8(__A); 
8909}
8910
8911__m128i test_mm256_mask_cvtepi32_epi8(__m128i __O, __mmask8 __M, __m256i __A) {
8912  // CHECK-LABEL: @test_mm256_mask_cvtepi32_epi8
8913  // CHECK: @llvm.x86.avx512.mask.pmov.db.256
8914  return _mm256_mask_cvtepi32_epi8(__O, __M, __A); 
8915}
8916
8917__m128i test_mm256_maskz_cvtepi32_epi8(__mmask8 __M, __m256i __A) {
8918  // CHECK-LABEL: @test_mm256_maskz_cvtepi32_epi8
8919  // CHECK: @llvm.x86.avx512.mask.pmov.db.256
8920  return _mm256_maskz_cvtepi32_epi8(__M, __A); 
8921}
8922
8923void test_mm256_mask_cvtepi32_storeu_epi8(void * __P, __mmask8 __M, __m256i __A) {
8924  // CHECK-LABEL: @test_mm256_mask_cvtepi32_storeu_epi8
8925  // CHECK: @llvm.x86.avx512.mask.pmov.db.mem.256
8926  return _mm256_mask_cvtepi32_storeu_epi8(__P, __M, __A); 
8927}
8928
8929__m128i test_mm_cvtepi32_epi16(__m128i __A) {
8930  // CHECK-LABEL: @test_mm_cvtepi32_epi16
8931  // CHECK: trunc <4 x i32> %{{.*}} to <4 x i16>
8932  // CHECK: shufflevector <4 x i16> %{{.*}}, <4 x i16> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
8933  return _mm_cvtepi32_epi16(__A); 
8934}
8935
8936__m128i test_mm_mask_cvtepi32_epi16(__m128i __O, __mmask8 __M, __m128i __A) {
8937  // CHECK-LABEL: @test_mm_mask_cvtepi32_epi16
8938  // CHECK: @llvm.x86.avx512.mask.pmov.dw.128
8939  return _mm_mask_cvtepi32_epi16(__O, __M, __A); 
8940}
8941
8942__m128i test_mm_maskz_cvtepi32_epi16(__mmask8 __M, __m128i __A) {
8943  // CHECK-LABEL: @test_mm_maskz_cvtepi32_epi16
8944  // CHECK: @llvm.x86.avx512.mask.pmov.dw.128
8945  return _mm_maskz_cvtepi32_epi16(__M, __A); 
8946}
8947
8948void test_mm_mask_cvtepi32_storeu_epi16(void * __P, __mmask8 __M, __m128i __A) {
8949  // CHECK-LABEL: @test_mm_mask_cvtepi32_storeu_epi16
8950  // CHECK: @llvm.x86.avx512.mask.pmov.dw.mem.128
8951  return _mm_mask_cvtepi32_storeu_epi16(__P, __M, __A); 
8952}
8953
8954__m128i test_mm256_cvtepi32_epi16(__m256i __A) {
8955  // CHECK-LABEL: @test_mm256_cvtepi32_epi16
8956  // CHECK: trunc <8 x i32> %{{.*}} to <8 x i16>
8957  return _mm256_cvtepi32_epi16(__A); 
8958}
8959
8960__m128i test_mm256_mask_cvtepi32_epi16(__m128i __O, __mmask8 __M, __m256i __A) {
8961  // CHECK-LABEL: @test_mm256_mask_cvtepi32_epi16
8962  // CHECK: @llvm.x86.avx512.mask.pmov.dw.256
8963  return _mm256_mask_cvtepi32_epi16(__O, __M, __A); 
8964}
8965
8966__m128i test_mm256_maskz_cvtepi32_epi16(__mmask8 __M, __m256i __A) {
8967  // CHECK-LABEL: @test_mm256_maskz_cvtepi32_epi16
8968  // CHECK: @llvm.x86.avx512.mask.pmov.dw.256
8969  return _mm256_maskz_cvtepi32_epi16(__M, __A); 
8970}
8971
8972void test_mm256_mask_cvtepi32_storeu_epi16(void *  __P, __mmask8 __M, __m256i __A) {
8973  // CHECK-LABEL: @test_mm256_mask_cvtepi32_storeu_epi16
8974  // CHECK: @llvm.x86.avx512.mask.pmov.dw.mem.256
8975  return _mm256_mask_cvtepi32_storeu_epi16(__P, __M, __A); 
8976}
8977
8978__m128i test_mm_cvtepi64_epi8(__m128i __A) {
8979  // CHECK-LABEL: @test_mm_cvtepi64_epi8
8980  // CHECK: trunc <2 x i64> %{{.*}} to <2 x i8>
8981  // CHECK: shufflevector <2 x i8> %{{.*}}, <2 x i8> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3>
8982  return _mm_cvtepi64_epi8(__A); 
8983}
8984
8985__m128i test_mm_mask_cvtepi64_epi8(__m128i __O, __mmask8 __M, __m128i __A) {
8986  // CHECK-LABEL: @test_mm_mask_cvtepi64_epi8
8987  // CHECK: @llvm.x86.avx512.mask.pmov.qb.128
8988  return _mm_mask_cvtepi64_epi8(__O, __M, __A); 
8989}
8990
8991__m128i test_mm_maskz_cvtepi64_epi8(__mmask8 __M, __m128i __A) {
8992  // CHECK-LABEL: @test_mm_maskz_cvtepi64_epi8
8993  // CHECK: @llvm.x86.avx512.mask.pmov.qb.128
8994  return _mm_maskz_cvtepi64_epi8(__M, __A); 
8995}
8996
8997void test_mm_mask_cvtepi64_storeu_epi8(void * __P, __mmask8 __M, __m128i __A) {
8998  // CHECK-LABEL: @test_mm_mask_cvtepi64_storeu_epi8
8999  // CHECK: @llvm.x86.avx512.mask.pmov.qb.mem.128
9000  return _mm_mask_cvtepi64_storeu_epi8(__P, __M, __A); 
9001}
9002
9003__m128i test_mm256_cvtepi64_epi8(__m256i __A) {
9004  // CHECK-LABEL: @test_mm256_cvtepi64_epi8
9005  // CHECK: trunc <4 x i64> %{{.*}} to <4 x i8>
9006  // CHECK: shufflevector <4 x i8> %{{.*}}, <4 x i8> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7>
9007  return _mm256_cvtepi64_epi8(__A); 
9008}
9009
9010__m128i test_mm256_mask_cvtepi64_epi8(__m128i __O, __mmask8 __M, __m256i __A) {
9011  // CHECK-LABEL: @test_mm256_mask_cvtepi64_epi8
9012  // CHECK: @llvm.x86.avx512.mask.pmov.qb.256
9013  return _mm256_mask_cvtepi64_epi8(__O, __M, __A); 
9014}
9015
9016__m128i test_mm256_maskz_cvtepi64_epi8(__mmask8 __M, __m256i __A) {
9017  // CHECK-LABEL: @test_mm256_maskz_cvtepi64_epi8
9018  // CHECK: @llvm.x86.avx512.mask.pmov.qb.256
9019  return _mm256_maskz_cvtepi64_epi8(__M, __A); 
9020}
9021
9022void test_mm256_mask_cvtepi64_storeu_epi8(void * __P, __mmask8 __M, __m256i __A) {
9023  // CHECK-LABEL: @test_mm256_mask_cvtepi64_storeu_epi8
9024  // CHECK: @llvm.x86.avx512.mask.pmov.qb.mem.256
9025  return _mm256_mask_cvtepi64_storeu_epi8(__P, __M, __A); 
9026}
9027
9028__m128i test_mm_cvtepi64_epi32(__m128i __A) {
9029  // CHECK-LABEL: @test_mm_cvtepi64_epi32
9030  // CHECK: trunc <2 x i64> %{{.*}} to <2 x i32>
9031  // CHECK: shufflevector <2 x i32> %{{.*}}, <2 x i32> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9032  return _mm_cvtepi64_epi32(__A); 
9033}
9034
9035__m128i test_mm_mask_cvtepi64_epi32(__m128i __O, __mmask8 __M, __m128i __A) {
9036  // CHECK-LABEL: @test_mm_mask_cvtepi64_epi32
9037  // CHECK: @llvm.x86.avx512.mask.pmov.qd.128
9038  return _mm_mask_cvtepi64_epi32(__O, __M, __A); 
9039}
9040
9041__m128i test_mm_maskz_cvtepi64_epi32(__mmask8 __M, __m128i __A) {
9042  // CHECK-LABEL: @test_mm_maskz_cvtepi64_epi32
9043  // CHECK: @llvm.x86.avx512.mask.pmov.qd.128
9044  return _mm_maskz_cvtepi64_epi32(__M, __A); 
9045}
9046
9047void test_mm_mask_cvtepi64_storeu_epi32(void * __P, __mmask8 __M, __m128i __A) {
9048  // CHECK-LABEL: @test_mm_mask_cvtepi64_storeu_epi32
9049  // CHECK: @llvm.x86.avx512.mask.pmov.qd.mem.128
9050  return _mm_mask_cvtepi64_storeu_epi32(__P, __M, __A); 
9051}
9052
9053__m128i test_mm256_cvtepi64_epi32(__m256i __A) {
9054  // CHECK-LABEL: @test_mm256_cvtepi64_epi32
9055  // CHECK: trunc <4 x i64> %{{.*}} to <4 x i32>
9056  return _mm256_cvtepi64_epi32(__A); 
9057}
9058
9059__m128i test_mm256_mask_cvtepi64_epi32(__m128i __O, __mmask8 __M, __m256i __A) {
9060  // CHECK-LABEL: @test_mm256_mask_cvtepi64_epi32
9061  // CHECK: trunc <4 x i64> %{{.*}} to <4 x i32>
9062  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
9063  return _mm256_mask_cvtepi64_epi32(__O, __M, __A); 
9064}
9065
9066__m128i test_mm256_maskz_cvtepi64_epi32(__mmask8 __M, __m256i __A) {
9067  // CHECK-LABEL: @test_mm256_maskz_cvtepi64_epi32
9068  // CHECK: trunc <4 x i64> %{{.*}} to <4 x i32>
9069  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
9070  return _mm256_maskz_cvtepi64_epi32(__M, __A); 
9071}
9072
9073void test_mm256_mask_cvtepi64_storeu_epi32(void * __P, __mmask8 __M, __m256i __A) {
9074  // CHECK-LABEL: @test_mm256_mask_cvtepi64_storeu_epi32
9075  // CHECK: @llvm.x86.avx512.mask.pmov.qd.mem.256
9076  return _mm256_mask_cvtepi64_storeu_epi32(__P, __M, __A); 
9077}
9078
9079__m128i test_mm_cvtepi64_epi16(__m128i __A) {
9080  // CHECK-LABEL: @test_mm_cvtepi64_epi16
9081  // CHECK: trunc <2 x i64> %{{.*}} to <2 x i16>
9082  // CHECK: shufflevector <2 x i16> %{{.*}}, <2 x i16> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 3, i32 3, i32 3, i32 3>
9083  return _mm_cvtepi64_epi16(__A); 
9084}
9085
9086__m128i test_mm_mask_cvtepi64_epi16(__m128i __O, __mmask8 __M, __m128i __A) {
9087  // CHECK-LABEL: @test_mm_mask_cvtepi64_epi16
9088  // CHECK: @llvm.x86.avx512.mask.pmov.qw.128
9089  return _mm_mask_cvtepi64_epi16(__O, __M, __A); 
9090}
9091
9092__m128i test_mm_maskz_cvtepi64_epi16(__mmask8 __M, __m128i __A) {
9093  // CHECK-LABEL: @test_mm_maskz_cvtepi64_epi16
9094  // CHECK: @llvm.x86.avx512.mask.pmov.qw.128
9095  return _mm_maskz_cvtepi64_epi16(__M, __A); 
9096}
9097
9098void test_mm_mask_cvtepi64_storeu_epi16(void * __P, __mmask8 __M, __m128i __A) {
9099  // CHECK-LABEL: @test_mm_mask_cvtepi64_storeu_epi16
9100  // CHECK: @llvm.x86.avx512.mask.pmov.qw.mem.128
9101  return _mm_mask_cvtepi64_storeu_epi16(__P, __M, __A); 
9102}
9103
9104__m128i test_mm256_cvtepi64_epi16(__m256i __A) {
9105  // CHECK-LABEL: @test_mm256_cvtepi64_epi16
9106  // CHECK: trunc <4 x i64> %{{.*}} to <4 x i16>
9107  // CHECK: shufflevector <4 x i16> %{{.*}}, <4 x i16> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
9108  return _mm256_cvtepi64_epi16(__A); 
9109}
9110
9111__m128i test_mm256_mask_cvtepi64_epi16(__m128i __O, __mmask8 __M, __m256i __A) {
9112  // CHECK-LABEL: @test_mm256_mask_cvtepi64_epi16
9113  // CHECK: @llvm.x86.avx512.mask.pmov.qw.256
9114  return _mm256_mask_cvtepi64_epi16(__O, __M, __A); 
9115}
9116
9117__m128i test_mm256_maskz_cvtepi64_epi16(__mmask8 __M, __m256i __A) {
9118  // CHECK-LABEL: @test_mm256_maskz_cvtepi64_epi16
9119  // CHECK: @llvm.x86.avx512.mask.pmov.qw.256
9120  return _mm256_maskz_cvtepi64_epi16(__M, __A); 
9121}
9122
9123void test_mm256_mask_cvtepi64_storeu_epi16(void * __P, __mmask8 __M, __m256i __A) {
9124  // CHECK-LABEL: @test_mm256_mask_cvtepi64_storeu_epi16
9125  // CHECK: @llvm.x86.avx512.mask.pmov.qw.mem.256
9126  return _mm256_mask_cvtepi64_storeu_epi16(__P, __M, __A); 
9127}
9128
9129__m128 test_mm256_extractf32x4_ps(__m256 __A) {
9130  // CHECK-LABEL: @test_mm256_extractf32x4_ps
9131  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
9132  return _mm256_extractf32x4_ps(__A, 1); 
9133}
9134
9135__m128 test_mm256_mask_extractf32x4_ps(__m128 __W, __mmask8 __U, __m256 __A) {
9136  // CHECK-LABEL: @test_mm256_mask_extractf32x4_ps
9137  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
9138  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
9139  return _mm256_mask_extractf32x4_ps(__W, __U, __A, 1); 
9140}
9141
9142__m128 test_mm256_maskz_extractf32x4_ps(__mmask8 __U, __m256 __A) {
9143  // CHECK-LABEL: @test_mm256_maskz_extractf32x4_ps
9144  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
9145  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
9146  return _mm256_maskz_extractf32x4_ps(__U, __A, 1); 
9147}
9148
9149__m128i test_mm256_extracti32x4_epi32(__m256i __A) {
9150  // CHECK-LABEL: @test_mm256_extracti32x4_epi32
9151  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
9152  return _mm256_extracti32x4_epi32(__A, 1); 
9153}
9154
9155__m128i test_mm256_mask_extracti32x4_epi32(__m128i __W, __mmask8 __U, __m256i __A) {
9156  // CHECK-LABEL: @test_mm256_mask_extracti32x4_epi32
9157  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
9158  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
9159  return _mm256_mask_extracti32x4_epi32(__W, __U, __A, 1); 
9160}
9161
9162__m128i test_mm256_maskz_extracti32x4_epi32(__mmask8 __U, __m256i __A) {
9163  // CHECK-LABEL: @test_mm256_maskz_extracti32x4_epi32
9164  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
9165  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
9166  return _mm256_maskz_extracti32x4_epi32(__U, __A, 1); 
9167}
9168
9169__m256 test_mm256_insertf32x4(__m256 __A, __m128 __B) {
9170  // CHECK-LABEL: @test_mm256_insertf32x4
9171  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
9172  return _mm256_insertf32x4(__A, __B, 1); 
9173}
9174
9175__m256 test_mm256_mask_insertf32x4(__m256 __W, __mmask8 __U, __m256 __A, __m128 __B) {
9176  // CHECK-LABEL: @test_mm256_mask_insertf32x4
9177  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
9178  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
9179  return _mm256_mask_insertf32x4(__W, __U, __A, __B, 1); 
9180}
9181
9182__m256 test_mm256_maskz_insertf32x4(__mmask8 __U, __m256 __A, __m128 __B) {
9183  // CHECK-LABEL: @test_mm256_maskz_insertf32x4
9184  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
9185  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
9186  return _mm256_maskz_insertf32x4(__U, __A, __B, 1); 
9187}
9188
9189__m256i test_mm256_inserti32x4(__m256i __A, __m128i __B) {
9190  // CHECK-LABEL: @test_mm256_inserti32x4
9191  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
9192  return _mm256_inserti32x4(__A, __B, 1); 
9193}
9194
9195__m256i test_mm256_mask_inserti32x4(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B) {
9196  // CHECK-LABEL: @test_mm256_mask_inserti32x4
9197  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
9198  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
9199  return _mm256_mask_inserti32x4(__W, __U, __A, __B, 1); 
9200}
9201
9202__m256i test_mm256_maskz_inserti32x4(__mmask8 __U, __m256i __A, __m128i __B) {
9203  // CHECK-LABEL: @test_mm256_maskz_inserti32x4
9204  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
9205  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
9206  return _mm256_maskz_inserti32x4(__U, __A, __B, 1); 
9207}
9208
9209__m128d test_mm_getmant_pd(__m128d __A) {
9210  // CHECK-LABEL: @test_mm_getmant_pd
9211  // CHECK: @llvm.x86.avx512.mask.getmant.pd.128
9212  return _mm_getmant_pd(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 
9213}
9214
9215__m128d test_mm_mask_getmant_pd(__m128d __W, __mmask8 __U, __m128d __A) {
9216  // CHECK-LABEL: @test_mm_mask_getmant_pd
9217  // CHECK: @llvm.x86.avx512.mask.getmant.pd.128
9218  return _mm_mask_getmant_pd(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 
9219}
9220
9221__m128d test_mm_maskz_getmant_pd(__mmask8 __U, __m128d __A) {
9222  // CHECK-LABEL: @test_mm_maskz_getmant_pd
9223  // CHECK: @llvm.x86.avx512.mask.getmant.pd.128
9224  return _mm_maskz_getmant_pd(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 
9225}
9226
9227__m256d test_mm256_getmant_pd(__m256d __A) {
9228  // CHECK-LABEL: @test_mm256_getmant_pd
9229  // CHECK: @llvm.x86.avx512.mask.getmant.pd.256
9230  return _mm256_getmant_pd(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 
9231}
9232
9233__m256d test_mm256_mask_getmant_pd(__m256d __W, __mmask8 __U, __m256d __A) {
9234  // CHECK-LABEL: @test_mm256_mask_getmant_pd
9235  // CHECK: @llvm.x86.avx512.mask.getmant.pd.256
9236  return _mm256_mask_getmant_pd(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 
9237}
9238
9239__m256d test_mm256_maskz_getmant_pd(__mmask8 __U, __m256d __A) {
9240  // CHECK-LABEL: @test_mm256_maskz_getmant_pd
9241  // CHECK: @llvm.x86.avx512.mask.getmant.pd.256
9242  return _mm256_maskz_getmant_pd(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 
9243}
9244
9245__m128 test_mm_getmant_ps(__m128 __A) {
9246  // CHECK-LABEL: @test_mm_getmant_ps
9247  // CHECK: @llvm.x86.avx512.mask.getmant.ps.128
9248  return _mm_getmant_ps(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 
9249}
9250
9251__m128 test_mm_mask_getmant_ps(__m128 __W, __mmask8 __U, __m128 __A) {
9252  // CHECK-LABEL: @test_mm_mask_getmant_ps
9253  // CHECK: @llvm.x86.avx512.mask.getmant.ps.128
9254  return _mm_mask_getmant_ps(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 
9255}
9256
9257__m128 test_mm_maskz_getmant_ps(__mmask8 __U, __m128 __A) {
9258  // CHECK-LABEL: @test_mm_maskz_getmant_ps
9259  // CHECK: @llvm.x86.avx512.mask.getmant.ps.128
9260  return _mm_maskz_getmant_ps(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 
9261}
9262
9263__m256 test_mm256_getmant_ps(__m256 __A) {
9264  // CHECK-LABEL: @test_mm256_getmant_ps
9265  // CHECK: @llvm.x86.avx512.mask.getmant.ps.256
9266  return _mm256_getmant_ps(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 
9267}
9268
9269__m256 test_mm256_mask_getmant_ps(__m256 __W, __mmask8 __U, __m256 __A) {
9270  // CHECK-LABEL: @test_mm256_mask_getmant_ps
9271  // CHECK: @llvm.x86.avx512.mask.getmant.ps.256
9272  return _mm256_mask_getmant_ps(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 
9273}
9274
9275__m256 test_mm256_maskz_getmant_ps(__mmask8 __U, __m256 __A) {
9276  // CHECK-LABEL: @test_mm256_maskz_getmant_ps
9277  // CHECK: @llvm.x86.avx512.mask.getmant.ps.256
9278  return _mm256_maskz_getmant_ps(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 
9279}
9280
9281__m128d test_mm_mmask_i64gather_pd(__m128d __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
9282  // CHECK-LABEL: @test_mm_mmask_i64gather_pd
9283  // CHECK: @llvm.x86.avx512.mask.gather3div2.df
9284  return _mm_mmask_i64gather_pd(__v1_old, __mask, __index, __addr, 2); 
9285}
9286
9287__m128i test_mm_mmask_i64gather_epi64(__m128i __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
9288  // CHECK-LABEL: @test_mm_mmask_i64gather_epi64
9289  // CHECK: @llvm.x86.avx512.mask.gather3div2.di
9290  return _mm_mmask_i64gather_epi64(__v1_old, __mask, __index, __addr, 2); 
9291}
9292
9293__m256d test_mm256_mmask_i64gather_pd(__m256d __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
9294  // CHECK-LABEL: @test_mm256_mmask_i64gather_pd
9295  // CHECK: @llvm.x86.avx512.mask.gather3div4.df
9296  return _mm256_mmask_i64gather_pd(__v1_old, __mask, __index, __addr, 2); 
9297}
9298
9299__m256i test_mm256_mmask_i64gather_epi64(__m256i __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
9300  // CHECK-LABEL: @test_mm256_mmask_i64gather_epi64
9301  // CHECK: @llvm.x86.avx512.mask.gather3div4.di
9302  return _mm256_mmask_i64gather_epi64(__v1_old, __mask, __index, __addr, 2); 
9303}
9304
9305__m128 test_mm_mmask_i64gather_ps(__m128 __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
9306  // CHECK-LABEL: @test_mm_mmask_i64gather_ps
9307  // CHECK: @llvm.x86.avx512.mask.gather3div4.sf
9308  return _mm_mmask_i64gather_ps(__v1_old, __mask, __index, __addr, 2); 
9309}
9310
9311__m128i test_mm_mmask_i64gather_epi32(__m128i __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
9312  // CHECK-LABEL: @test_mm_mmask_i64gather_epi32
9313  // CHECK: @llvm.x86.avx512.mask.gather3div4.si
9314  return _mm_mmask_i64gather_epi32(__v1_old, __mask, __index, __addr, 2); 
9315}
9316
9317__m128 test_mm256_mmask_i64gather_ps(__m128 __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
9318  // CHECK-LABEL: @test_mm256_mmask_i64gather_ps
9319  // CHECK: @llvm.x86.avx512.mask.gather3div8.sf
9320  return _mm256_mmask_i64gather_ps(__v1_old, __mask, __index, __addr, 2); 
9321}
9322
9323__m128i test_mm256_mmask_i64gather_epi32(__m128i __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
9324  // CHECK-LABEL: @test_mm256_mmask_i64gather_epi32
9325  // CHECK: @llvm.x86.avx512.mask.gather3div8.si
9326  return _mm256_mmask_i64gather_epi32(__v1_old, __mask, __index, __addr, 2); 
9327}
9328
9329__m128d test_mm_mask_i32gather_pd(__m128d __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
9330  // CHECK-LABEL: @test_mm_mask_i32gather_pd
9331  // CHECK: @llvm.x86.avx512.mask.gather3siv2.df
9332  return _mm_mmask_i32gather_pd(__v1_old, __mask, __index, __addr, 2); 
9333}
9334
9335__m128i test_mm_mask_i32gather_epi64(__m128i __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
9336  // CHECK-LABEL: @test_mm_mask_i32gather_epi64
9337  // CHECK: @llvm.x86.avx512.mask.gather3siv2.di
9338  return _mm_mmask_i32gather_epi64(__v1_old, __mask, __index, __addr, 2); 
9339}
9340
9341__m256d test_mm256_mask_i32gather_pd(__m256d __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
9342  // CHECK-LABEL: @test_mm256_mask_i32gather_pd
9343  // CHECK: @llvm.x86.avx512.mask.gather3siv4.df
9344  return _mm256_mmask_i32gather_pd(__v1_old, __mask, __index, __addr, 2); 
9345}
9346
9347__m256i test_mm256_mask_i32gather_epi64(__m256i __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
9348  // CHECK-LABEL: @test_mm256_mask_i32gather_epi64
9349  // CHECK: @llvm.x86.avx512.mask.gather3siv4.di
9350  return _mm256_mmask_i32gather_epi64(__v1_old, __mask, __index, __addr, 2); 
9351}
9352
9353__m128 test_mm_mask_i32gather_ps(__m128 __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
9354  // CHECK-LABEL: @test_mm_mask_i32gather_ps
9355  // CHECK: @llvm.x86.avx512.mask.gather3siv4.sf
9356  return _mm_mmask_i32gather_ps(__v1_old, __mask, __index, __addr, 2); 
9357}
9358
9359__m128i test_mm_mask_i32gather_epi32(__m128i __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
9360  // CHECK-LABEL: @test_mm_mask_i32gather_epi32
9361  // CHECK: @llvm.x86.avx512.mask.gather3siv4.si
9362  return _mm_mmask_i32gather_epi32(__v1_old, __mask, __index, __addr, 2); 
9363}
9364
9365__m256 test_mm256_mask_i32gather_ps(__m256 __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
9366  // CHECK-LABEL: @test_mm256_mask_i32gather_ps
9367  // CHECK: @llvm.x86.avx512.mask.gather3siv8.sf
9368  return _mm256_mmask_i32gather_ps(__v1_old, __mask, __index, __addr, 2); 
9369}
9370
9371__m256i test_mm256_mask_i32gather_epi32(__m256i __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
9372  // CHECK-LABEL: @test_mm256_mask_i32gather_epi32
9373  // CHECK: @llvm.x86.avx512.mask.gather3siv8.si
9374  return _mm256_mmask_i32gather_epi32(__v1_old, __mask, __index, __addr, 2); 
9375}
9376
9377__m256d test_mm256_permutex_pd(__m256d __X) {
9378  // CHECK-LABEL: @test_mm256_permutex_pd
9379  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> undef, <4 x i32> <i32 3, i32 0, i32 0, i32 0>
9380  return _mm256_permutex_pd(__X, 3);
9381}
9382
9383__m256d test_mm256_mask_permutex_pd(__m256d __W, __mmask8 __U, __m256d __X) {
9384  // CHECK-LABEL: @test_mm256_mask_permutex_pd
9385  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> undef, <4 x i32> <i32 1, i32 0, i32 0, i32 0>
9386  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
9387  return _mm256_mask_permutex_pd(__W, __U, __X, 1);
9388}
9389
9390__m256d test_mm256_maskz_permutex_pd(__mmask8 __U, __m256d __X) {
9391  // CHECK-LABEL: @test_mm256_maskz_permutex_pd
9392  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> undef, <4 x i32> <i32 1, i32 0, i32 0, i32 0>
9393  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
9394  return _mm256_maskz_permutex_pd(__U, __X, 1);
9395}
9396
9397__m256i test_mm256_permutex_epi64(__m256i __X) {
9398  // CHECK-LABEL: @test_mm256_permutex_epi64
9399  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> undef, <4 x i32> <i32 3, i32 0, i32 0, i32 0>
9400  return _mm256_permutex_epi64(__X, 3);
9401}
9402
9403__m256i test_mm256_mask_permutex_epi64(__m256i __W, __mmask8 __M, __m256i __X) {
9404  // CHECK-LABEL: @test_mm256_mask_permutex_epi64
9405  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> undef, <4 x i32> <i32 3, i32 0, i32 0, i32 0>
9406  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
9407  return _mm256_mask_permutex_epi64(__W, __M, __X, 3);
9408}
9409
9410__m256i test_mm256_maskz_permutex_epi64(__mmask8 __M, __m256i __X) {
9411  // CHECK-LABEL: @test_mm256_maskz_permutex_epi64
9412  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> undef, <4 x i32> <i32 3, i32 0, i32 0, i32 0>
9413  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
9414  return _mm256_maskz_permutex_epi64(__M, __X, 3);
9415}
9416
9417__m256d test_mm256_permutexvar_pd(__m256i __X, __m256d __Y) {
9418  // CHECK-LABEL: @test_mm256_permutexvar_pd
9419  // CHECK: @llvm.x86.avx512.permvar.df.256
9420  return _mm256_permutexvar_pd(__X, __Y);
9421}
9422
9423__m256d test_mm256_mask_permutexvar_pd(__m256d __W, __mmask8 __U, __m256i __X, __m256d __Y) {
9424  // CHECK-LABEL: @test_mm256_mask_permutexvar_pd
9425  // CHECK: @llvm.x86.avx512.permvar.df.256
9426  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
9427  return _mm256_mask_permutexvar_pd(__W, __U, __X, __Y);
9428}
9429
9430__m256d test_mm256_maskz_permutexvar_pd(__mmask8 __U, __m256i __X, __m256d __Y) {
9431  // CHECK-LABEL: @test_mm256_maskz_permutexvar_pd
9432  // CHECK: @llvm.x86.avx512.permvar.df.256
9433  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
9434  return _mm256_maskz_permutexvar_pd(__U, __X, __Y);
9435}
9436
9437__m256i test_mm256_maskz_permutexvar_epi64(__mmask8 __M, __m256i __X, __m256i __Y) {
9438  // CHECK-LABEL: @test_mm256_maskz_permutexvar_epi64
9439  // CHECK: @llvm.x86.avx512.permvar.di.256
9440  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
9441  return _mm256_maskz_permutexvar_epi64(__M, __X, __Y);
9442}
9443
9444__m256i test_mm256_mask_permutexvar_epi64(__m256i __W, __mmask8 __M, __m256i __X, __m256i __Y) {
9445  // CHECK-LABEL: @test_mm256_mask_permutexvar_epi64
9446  // CHECK: @llvm.x86.avx512.permvar.di.256
9447  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
9448  return _mm256_mask_permutexvar_epi64(__W, __M, __X, __Y);
9449}
9450
9451__m256 test_mm256_mask_permutexvar_ps(__m256 __W, __mmask8 __U, __m256i __X, __m256 __Y) {
9452  // CHECK-LABEL: @test_mm256_mask_permutexvar_ps
9453  // CHECK: @llvm.x86.avx2.permps
9454  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
9455  return _mm256_mask_permutexvar_ps(__W, __U, __X, __Y);
9456}
9457
9458__m256 test_mm256_maskz_permutexvar_ps(__mmask8 __U, __m256i __X, __m256 __Y) {
9459  // CHECK-LABEL: @test_mm256_maskz_permutexvar_ps
9460  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
9461  return _mm256_maskz_permutexvar_ps(__U, __X, __Y);
9462}
9463
9464__m256 test_mm256_permutexvar_ps(__m256i __X, __m256 __Y) {
9465  // CHECK-LABEL: @test_mm256_permutexvar_ps
9466  // CHECK: @llvm.x86.avx2.permps
9467  return _mm256_permutexvar_ps( __X, __Y);
9468}
9469
9470__m256i test_mm256_maskz_permutexvar_epi32(__mmask8 __M, __m256i __X, __m256i __Y) {
9471  // CHECK-LABEL: @test_mm256_maskz_permutexvar_epi32
9472  // CHECK: @llvm.x86.avx2.permd
9473  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
9474  return _mm256_maskz_permutexvar_epi32(__M, __X, __Y);
9475}
9476
9477__m256i test_mm256_permutexvar_epi32(__m256i __X, __m256i __Y) {
9478  // CHECK-LABEL: @test_mm256_permutexvar_epi32
9479  // CHECK: @llvm.x86.avx2.permd
9480  return _mm256_permutexvar_epi32(__X, __Y);
9481}
9482
9483__m256i test_mm256_mask_permutexvar_epi32(__m256i __W, __mmask8 __M, __m256i __X, __m256i __Y) {
9484  // CHECK-LABEL: @test_mm256_mask_permutexvar_epi32
9485  // CHECK: @llvm.x86.avx2.permd
9486  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
9487  return _mm256_mask_permutexvar_epi32(__W, __M, __X, __Y);
9488}
9489
9490__m128i test_mm_alignr_epi32(__m128i __A, __m128i __B) {
9491  // CHECK-LABEL: @test_mm_alignr_epi32
9492  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 1, i32 2, i32 3, i32 4>
9493  return _mm_alignr_epi32(__A, __B, 1);
9494}
9495
9496__m128i test_mm_mask_alignr_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
9497  // CHECK-LABEL: @test_mm_mask_alignr_epi32
9498  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 1, i32 2, i32 3, i32 4>
9499  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
9500  return _mm_mask_alignr_epi32(__W, __U, __A, __B, 1);
9501}
9502
9503__m128i test_mm_maskz_alignr_epi32(__mmask8 __U, __m128i __A, __m128i __B) {
9504  // CHECK-LABEL: @test_mm_maskz_alignr_epi32
9505  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 1, i32 2, i32 3, i32 4>
9506  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
9507  return _mm_maskz_alignr_epi32(__U, __A, __B, 1);
9508}
9509
9510__m256i test_mm256_alignr_epi32(__m256i __A, __m256i __B) {
9511  // CHECK-LABEL: @test_mm256_alignr_epi32
9512  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8>
9513  return _mm256_alignr_epi32(__A, __B, 1);
9514}
9515
9516__m256i test_mm256_mask_alignr_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
9517  // CHECK-LABEL: @test_mm256_mask_alignr_epi32
9518  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8>
9519  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
9520  return _mm256_mask_alignr_epi32(__W, __U, __A, __B, 1);
9521}
9522
9523__m256i test_mm256_maskz_alignr_epi32(__mmask8 __U, __m256i __A, __m256i __B) {
9524  // CHECK-LABEL: @test_mm256_maskz_alignr_epi32
9525  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8>
9526  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
9527  return _mm256_maskz_alignr_epi32(__U, __A, __B, 1);
9528}
9529
9530__m128i test_mm_alignr_epi64(__m128i __A, __m128i __B) {
9531  // CHECK-LABEL: @test_mm_alignr_epi64
9532  // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 1, i32 2>
9533  return _mm_alignr_epi64(__A, __B, 1);
9534}
9535
9536__m128i test_mm_mask_alignr_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
9537  // CHECK-LABEL: @test_mm_mask_alignr_epi64
9538  // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 1, i32 2>
9539  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
9540  return _mm_mask_alignr_epi64(__W, __U, __A, __B, 1);
9541}
9542
9543__m128i test_mm_maskz_alignr_epi64(__mmask8 __U, __m128i __A, __m128i __B) {
9544  // CHECK-LABEL: @test_mm_maskz_alignr_epi64
9545  // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 1, i32 2>
9546  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
9547  return _mm_maskz_alignr_epi64(__U, __A, __B, 1);
9548}
9549
9550__m256i test_mm256_alignr_epi64(__m256i __A, __m256i __B) {
9551  // CHECK-LABEL: @test_mm256_alignr_epi64
9552  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 1, i32 2, i32 3, i32 4>
9553  return _mm256_alignr_epi64(__A, __B, 1);
9554}
9555
9556__m256i test_mm256_mask_alignr_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
9557  // CHECK-LABEL: @test_mm256_mask_alignr_epi64
9558  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 1, i32 2, i32 3, i32 4>
9559  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
9560  return _mm256_mask_alignr_epi64(__W, __U, __A, __B, 1);
9561}
9562
9563__m256i test_mm256_maskz_alignr_epi64(__mmask8 __U, __m256i __A, __m256i __B) {
9564  // CHECK-LABEL: @test_mm256_maskz_alignr_epi64
9565  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 1, i32 2, i32 3, i32 4>
9566  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
9567  return _mm256_maskz_alignr_epi64(__U, __A, __B, 1);
9568}
9569
9570__m128 test_mm_mask_movehdup_ps(__m128 __W, __mmask8 __U, __m128 __A) {
9571  // CHECK-LABEL: @test_mm_mask_movehdup_ps
9572  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 1, i32 1, i32 3, i32 3>
9573  // CHECK: select <4 x i1> %{{.*}} <4 x float> %{{.*}}, <4 x float> %{{.*}}
9574  return _mm_mask_movehdup_ps(__W, __U, __A);
9575}
9576
9577__m128 test_mm_maskz_movehdup_ps(__mmask8 __U, __m128 __A) {
9578  // CHECK-LABEL: @test_mm_maskz_movehdup_ps
9579  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 1, i32 1, i32 3, i32 3>
9580  // CHECK: select <4 x i1> %{{.*}} <4 x float> %{{.*}}, <4 x float> %{{.*}}
9581  return _mm_maskz_movehdup_ps(__U, __A);
9582}
9583
9584__m256 test_mm256_mask_movehdup_ps(__m256 __W, __mmask8 __U, __m256 __A) {
9585  // CHECK-LABEL: @test_mm256_mask_movehdup_ps
9586  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7>
9587  // CHECK: select <8 x i1> %{{.*}} <8 x float> %{{.*}}, <8 x float> %{{.*}}
9588  return _mm256_mask_movehdup_ps(__W, __U, __A);
9589}
9590
9591__m256 test_mm256_maskz_movehdup_ps(__mmask8 __U, __m256 __A) {
9592  // CHECK-LABEL: @test_mm256_maskz_movehdup_ps
9593  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7>
9594  // CHECK: select <8 x i1> %{{.*}} <8 x float> %{{.*}}, <8 x float> %{{.*}}
9595  return _mm256_maskz_movehdup_ps(__U, __A);
9596}
9597
9598__m128 test_mm_mask_moveldup_ps(__m128 __W, __mmask8 __U, __m128 __A) {
9599  // CHECK-LABEL: @test_mm_mask_moveldup_ps
9600  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 0, i32 0, i32 2, i32 2>
9601  // CHECK: select <4 x i1> %{{.*}} <4 x float> %{{.*}}, <4 x float> %{{.*}}
9602  return _mm_mask_moveldup_ps(__W, __U, __A);
9603}
9604
9605__m128 test_mm_maskz_moveldup_ps(__mmask8 __U, __m128 __A) {
9606  // CHECK-LABEL: @test_mm_maskz_moveldup_ps
9607  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 0, i32 0, i32 2, i32 2>
9608  // CHECK: select <4 x i1> %{{.*}} <4 x float> %{{.*}}, <4 x float> %{{.*}}
9609  return _mm_maskz_moveldup_ps(__U, __A);
9610}
9611
9612__m256 test_mm256_mask_moveldup_ps(__m256 __W, __mmask8 __U, __m256 __A) {
9613  // CHECK-LABEL: @test_mm256_mask_moveldup_ps
9614  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
9615  // CHECK: select <8 x i1> %{{.*}} <8 x float> %{{.*}}, <8 x float> %{{.*}}
9616  return _mm256_mask_moveldup_ps(__W, __U, __A);
9617}
9618
9619__m256 test_mm256_maskz_moveldup_ps(__mmask8 __U, __m256 __A) {
9620  // CHECK-LABEL: @test_mm256_maskz_moveldup_ps
9621  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
9622  // CHECK: select <8 x i1> %{{.*}} <8 x float> %{{.*}}, <8 x float> %{{.*}}
9623  return _mm256_maskz_moveldup_ps(__U, __A);
9624}
9625
9626__m128i test_mm_mask_shuffle_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
9627  // CHECK-LABEL: @test_mm_mask_shuffle_epi32
9628  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <4 x i32> <i32 1, i32 0, i32 0, i32 0>
9629  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
9630  return _mm_mask_shuffle_epi32(__W, __U, __A, 1);
9631}
9632
9633__m128i test_mm_maskz_shuffle_epi32(__mmask8 __U, __m128i __A) {
9634  // CHECK-LABEL: @test_mm_maskz_shuffle_epi32
9635  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <4 x i32> <i32 2, i32 0, i32 0, i32 0>
9636  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
9637  return _mm_maskz_shuffle_epi32(__U, __A, 2);
9638}
9639
9640__m256i test_mm256_mask_shuffle_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
9641  // CHECK-LABEL: @test_mm256_mask_shuffle_epi32
9642  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> undef, <8 x i32> <i32 2, i32 0, i32 0, i32 0, i32 6, i32 4, i32 4, i32 4>
9643  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
9644  return _mm256_mask_shuffle_epi32(__W, __U, __A, 2);
9645}
9646
9647__m256i test_mm256_maskz_shuffle_epi32(__mmask8 __U, __m256i __A) {
9648  // CHECK-LABEL: @test_mm256_maskz_shuffle_epi32
9649  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> undef, <8 x i32> <i32 2, i32 0, i32 0, i32 0, i32 6, i32 4, i32 4, i32 4>
9650  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
9651  return _mm256_maskz_shuffle_epi32(__U, __A, 2);
9652}
9653
9654__m128d test_mm_mask_mov_pd(__m128d __W, __mmask8 __U, __m128d __A) {
9655  // CHECK-LABEL: @test_mm_mask_mov_pd
9656  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
9657  return _mm_mask_mov_pd(__W, __U, __A);
9658}
9659
9660__m128d test_mm_maskz_mov_pd(__mmask8 __U, __m128d __A) {
9661  // CHECK-LABEL: @test_mm_maskz_mov_pd
9662  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
9663  return _mm_maskz_mov_pd(__U, __A);
9664}
9665
9666__m256d test_mm256_mask_mov_pd(__m256d __W, __mmask8 __U, __m256d __A) {
9667  // CHECK-LABEL: @test_mm256_mask_mov_pd
9668  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
9669  return _mm256_mask_mov_pd(__W, __U, __A);
9670}
9671
9672__m256d test_mm256_maskz_mov_pd(__mmask8 __U, __m256d __A) {
9673  // CHECK-LABEL: @test_mm256_maskz_mov_pd
9674  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
9675  return _mm256_maskz_mov_pd(__U, __A);
9676}
9677
9678__m128 test_mm_mask_mov_ps(__m128 __W, __mmask8 __U, __m128 __A) {
9679  // CHECK-LABEL: @test_mm_mask_mov_ps
9680  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
9681  return _mm_mask_mov_ps(__W, __U, __A);
9682}
9683
9684__m128 test_mm_maskz_mov_ps(__mmask8 __U, __m128 __A) {
9685  // CHECK-LABEL: @test_mm_maskz_mov_ps
9686  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
9687  return _mm_maskz_mov_ps(__U, __A);
9688}
9689
9690__m256 test_mm256_mask_mov_ps(__m256 __W, __mmask8 __U, __m256 __A) {
9691  // CHECK-LABEL: @test_mm256_mask_mov_ps
9692  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
9693  return _mm256_mask_mov_ps(__W, __U, __A);
9694}
9695
9696__m256 test_mm256_maskz_mov_ps(__mmask8 __U, __m256 __A) {
9697  // CHECK-LABEL: @test_mm256_maskz_mov_ps
9698  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
9699  return _mm256_maskz_mov_ps(__U, __A);
9700}
9701
9702__m128 test_mm_mask_cvtph_ps(__m128 __W, __mmask8 __U, __m128i __A) {
9703  // CHECK-LABEL: @test_mm_mask_cvtph_ps
9704  // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.128
9705  return _mm_mask_cvtph_ps(__W, __U, __A);
9706}
9707
9708__m128 test_mm_maskz_cvtph_ps(__mmask8 __U, __m128i __A) {
9709  // CHECK-LABEL: @test_mm_maskz_cvtph_ps
9710  // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.128
9711  return _mm_maskz_cvtph_ps(__U, __A);
9712}
9713
9714__m256 test_mm256_mask_cvtph_ps(__m256 __W, __mmask8 __U, __m128i __A) {
9715  // CHECK-LABEL: @test_mm256_mask_cvtph_ps
9716  // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.256
9717  return _mm256_mask_cvtph_ps(__W, __U, __A);
9718}
9719
9720__m256 test_mm256_maskz_cvtph_ps(__mmask8 __U, __m128i __A) {
9721  // CHECK-LABEL: @test_mm256_maskz_cvtph_ps
9722  // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.256
9723  return _mm256_maskz_cvtph_ps(__U, __A);
9724}
9725
9726__m128i test_mm_mask_cvtps_ph(__m128i __W, __mmask8 __U, __m128 __A) {
9727  // CHECK-LABEL: @test_mm_mask_cvtps_ph
9728  // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.128
9729  return _mm_mask_cvtps_ph(__W, __U, __A);
9730}
9731
9732__m128i test_mm_maskz_cvtps_ph(__mmask8 __U, __m128 __A) {
9733  // CHECK-LABEL: @test_mm_maskz_cvtps_ph
9734  // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.128
9735  return _mm_maskz_cvtps_ph(__U, __A);
9736}
9737
9738__m128i test_mm256_mask_cvtps_ph(__m128i __W, __mmask8 __U, __m256 __A) {
9739  // CHECK-LABEL: @test_mm256_mask_cvtps_ph
9740  // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.256
9741  return _mm256_mask_cvtps_ph(__W, __U, __A);
9742}
9743
9744__m128i test_mm256_maskz_cvtps_ph(__mmask8 __U, __m256 __A) {
9745  // CHECK-LABEL: @test_mm256_maskz_cvtps_ph
9746  // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.256
9747  return _mm256_maskz_cvtps_ph(__U, __A);
9748}
9749
9750__m128i test_mm_mask_cvt_roundps_ph(__m128i __W, __mmask8 __U, __m128 __A) {
9751  // CHECK-LABEL: @test_mm_mask_cvt_roundps_ph
9752  // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.128
9753  return _mm_mask_cvt_roundps_ph(__W, __U, __A, _MM_FROUND_CUR_DIRECTION);
9754}
9755
9756__m128i test_mm_maskz_cvt_roundps_ph(__mmask8 __U, __m128 __A) {
9757  // CHECK-LABEL: @test_mm_maskz_cvt_roundps_ph
9758  // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.128
9759  return _mm_maskz_cvt_roundps_ph(__U, __A, _MM_FROUND_CUR_DIRECTION);
9760}
9761
9762__m128i test_mm256_mask_cvt_roundps_ph(__m128i __W, __mmask8 __U, __m256 __A) {
9763  // CHECK-LABEL: @test_mm256_mask_cvt_roundps_ph
9764  // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.256
9765  return _mm256_mask_cvt_roundps_ph(__W, __U, __A, _MM_FROUND_CUR_DIRECTION);
9766}
9767
9768__m128i test_mm256_maskz_cvt_roundps_ph(__mmask8 __U, __m256 __A) {
9769  // CHECK-LABEL: @test_mm256_maskz_cvt_roundps_ph
9770  // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.256
9771  return _mm256_maskz_cvt_roundps_ph(__U, __A, _MM_FROUND_CUR_DIRECTION);
9772}
9773
9774__mmask8 test_mm_cmpeq_epi32_mask(__m128i __a, __m128i __b) {
9775  // CHECK-LABEL: @test_mm_cmpeq_epi32_mask
9776  // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}
9777  return (__mmask8)_mm_cmpeq_epi32_mask(__a, __b);
9778}
9779
9780__mmask8 test_mm_mask_cmpeq_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
9781  // CHECK-LABEL: @test_mm_mask_cmpeq_epi32_mask
9782  // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}
9783  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
9784  return (__mmask8)_mm_mask_cmpeq_epi32_mask(__u, __a, __b);
9785}
9786
9787__mmask8 test_mm_mask_cmpeq_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
9788  // CHECK-LABEL: @test_mm_mask_cmpeq_epi64_mask
9789  // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}
9790  // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
9791  return (__mmask8)_mm_mask_cmpeq_epi64_mask(__u, __a, __b);
9792}
9793
9794__mmask8 test_mm_cmpeq_epi64_mask(__m128i __a, __m128i __b) {
9795  // CHECK-LABEL: @test_mm_cmpeq_epi64_mask
9796  // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}
9797  return (__mmask8)_mm_cmpeq_epi64_mask(__a, __b);
9798}
9799
9800__mmask8 test_mm_cmpgt_epi32_mask(__m128i __a, __m128i __b) {
9801  // CHECK-LABEL: @test_mm_cmpgt_epi32_mask
9802  // CHECK: icmp sgt <4 x i32> %{{.*}}, %{{.*}}
9803  return (__mmask8)_mm_cmpgt_epi32_mask(__a, __b);
9804}
9805
9806__mmask8 test_mm_mask_cmpgt_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
9807  // CHECK-LABEL: @test_mm_mask_cmpgt_epi32_mask
9808  // CHECK: icmp sgt <4 x i32> %{{.*}}, %{{.*}}
9809  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
9810  return (__mmask8)_mm_mask_cmpgt_epi32_mask(__u, __a, __b);
9811}
9812
9813__mmask8 test_mm_mask_cmpgt_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
9814  // CHECK-LABEL: @test_mm_mask_cmpgt_epi64_mask
9815  // CHECK: icmp sgt <2 x i64> %{{.*}}, %{{.*}}
9816  // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
9817  return (__mmask8)_mm_mask_cmpgt_epi64_mask(__u, __a, __b);
9818}
9819
9820__mmask8 test_mm_cmpgt_epi64_mask(__m128i __a, __m128i __b) {
9821  // CHECK-LABEL: @test_mm_cmpgt_epi64_mask
9822  // CHECK: icmp sgt <2 x i64> %{{.*}}, %{{.*}}
9823  return (__mmask8)_mm_cmpgt_epi64_mask(__a, __b);
9824}
9825
9826__mmask8 test_mm256_cmpeq_epi32_mask(__m256i __a, __m256i __b) {
9827  // CHECK-LABEL: @test_mm256_cmpeq_epi32_mask
9828  // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}}
9829  return (__mmask8)_mm256_cmpeq_epi32_mask(__a, __b);
9830}
9831
9832__mmask8 test_mm256_mask_cmpeq_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
9833  // CHECK-LABEL: @test_mm256_mask_cmpeq_epi32_mask
9834  // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}}
9835  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
9836  return (__mmask8)_mm256_mask_cmpeq_epi32_mask(__u, __a, __b);
9837}
9838
9839__mmask8 test_mm256_mask_cmpeq_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
9840  // CHECK-LABEL: @test_mm256_mask_cmpeq_epi64_mask
9841  // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}}
9842  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
9843  return (__mmask8)_mm256_mask_cmpeq_epi64_mask(__u, __a, __b);
9844}
9845
9846__mmask8 test_mm256_cmpeq_epi64_mask(__m256i __a, __m256i __b) {
9847  // CHECK-LABEL: @test_mm256_cmpeq_epi64_mask
9848  // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}}
9849  return (__mmask8)_mm256_cmpeq_epi64_mask(__a, __b);
9850}
9851
9852__mmask8 test_mm256_cmpgt_epi32_mask(__m256i __a, __m256i __b) {
9853  // CHECK-LABEL: @test_mm256_cmpgt_epi32_mask
9854  // CHECK: icmp sgt <8 x i32> %{{.*}}, %{{.*}}
9855  return (__mmask8)_mm256_cmpgt_epi32_mask(__a, __b);
9856}
9857
9858__mmask8 test_mm256_mask_cmpgt_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
9859  // CHECK-LABEL: @test_mm256_mask_cmpgt_epi32_mask
9860  // CHECK: icmp sgt <8 x i32> %{{.*}}, %{{.*}}
9861  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
9862  return (__mmask8)_mm256_mask_cmpgt_epi32_mask(__u, __a, __b);
9863}
9864
9865__mmask8 test_mm256_mask_cmpgt_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
9866  // CHECK-LABEL: @test_mm256_mask_cmpgt_epi64_mask
9867  // CHECK: icmp sgt <4 x i64> %{{.*}}, %{{.*}}
9868  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
9869  return (__mmask8)_mm256_mask_cmpgt_epi64_mask(__u, __a, __b);
9870}
9871
9872__mmask8 test_mm256_cmpgt_epi64_mask(__m256i __a, __m256i __b) {
9873  // CHECK-LABEL: @test_mm256_cmpgt_epi64_mask
9874  // CHECK: icmp sgt <4 x i64> %{{.*}}, %{{.*}}
9875  return (__mmask8)_mm256_cmpgt_epi64_mask(__a, __b);
9876}
9877