]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CodeGen/avx512vl-builtins.c
Vendor import of clang trunk r338150:
[FreeBSD/FreeBSD.git] / 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_mask_and_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
843            __m256i __B) {
844   //CHECK-LABEL: @test_mm256_mask_and_epi32
845   //CHECK: and <4 x i64> %{{.*}}, %{{.*}}
846   return _mm256_mask_and_epi32(__W, __U, __A, __B);
847 }
848
849 __m256i test_mm256_maskz_and_epi32 (__mmask8 __U, __m256i __A, __m256i __B) {
850   //CHECK-LABEL: @test_mm256_maskz_and_epi32
851   //CHECK: and <4 x i64> %{{.*}}, %{{.*}}
852   //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
853   return _mm256_maskz_and_epi32(__U, __A, __B);
854 }
855
856 __m128i test_mm_mask_and_epi32 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
857   //CHECK-LABEL: @test_mm_mask_and_epi32
858   //CHECK: and <2 x i64> %{{.*}}, %{{.*}}
859   return _mm_mask_and_epi32(__W, __U, __A, __B);
860 }
861
862 __m128i test_mm_maskz_and_epi32 (__mmask8 __U, __m128i __A, __m128i __B) {
863   //CHECK-LABEL: @test_mm_maskz_and_epi32
864   //CHECK: and <2 x i64> %{{.*}}, %{{.*}}
865   //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
866   return _mm_maskz_and_epi32(__U, __A, __B);
867 }
868
869 __m256i test_mm256_mask_andnot_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
870         __m256i __B) {
871   //CHECK-LABEL: @test_mm256_mask_andnot_epi32
872   //CHECK: xor <4 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1>
873   //CHECK: and <4 x i64> %{{.*}}, %{{.*}}
874   //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
875   return _mm256_mask_andnot_epi32(__W, __U, __A, __B);
876 }
877
878 __m256i test_mm256_maskz_andnot_epi32 (__mmask8 __U, __m256i __A, __m256i __B) {
879   //CHECK-LABEL: @test_mm256_maskz_andnot_epi32
880   //CHECK: xor <4 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1>
881   //CHECK: and <4 x i64> %{{.*}}, %{{.*}}
882   //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
883   return _mm256_maskz_andnot_epi32(__U, __A, __B);
884 }
885
886 __m128i test_mm_mask_andnot_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
887            __m128i __B) {
888   //CHECK-LABEL: @test_mm_mask_andnot_epi32
889   //CHECK: xor <2 x i64> %{{.*}}, <i64 -1, i64 -1>
890   //CHECK: and <2 x i64> %{{.*}}, %{{.*}}
891   //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
892   return _mm_mask_andnot_epi32(__W, __U, __A, __B);
893 }
894
895 __m128i test_mm_maskz_andnot_epi32 (__mmask8 __U, __m128i __A, __m128i __B) {
896   //CHECK-LABEL: @test_mm_maskz_andnot_epi32
897   //CHECK: xor <2 x i64> %{{.*}}, <i64 -1, i64 -1>
898   //CHECK: and <2 x i64> %{{.*}}, %{{.*}}
899   //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
900   return _mm_maskz_andnot_epi32(__U, __A, __B);
901 }
902
903 __m256i test_mm256_mask_or_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
904           __m256i __B) {
905   //CHECK-LABEL: @test_mm256_mask_or_epi32
906   //CHECK: or <4 x i64> %{{.*}}, %{{.*}}
907   return _mm256_mask_or_epi32(__W, __U, __A, __B);
908 }
909
910  __m256i test_mm256_maskz_or_epi32 (__mmask8 __U, __m256i __A, __m256i __B) {
911   //CHECK-LABEL: @test_mm256_maskz_or_epi32
912   //CHECK: or <4 x i64> %{{.*}}, %{{.*}}
913   //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
914   return _mm256_maskz_or_epi32(__U, __A, __B);
915 }
916
917  __m128i test_mm_mask_or_epi32 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
918   //CHECK-LABEL: @test_mm_mask_or_epi32
919   //CHECK: or <2 x i64> %{{.*}}, %{{.*}}
920   return _mm_mask_or_epi32(__W, __U, __A, __B);
921 }
922
923 __m128i test_mm_maskz_or_epi32 (__mmask8 __U, __m128i __A, __m128i __B) {
924   //CHECK-LABEL: @test_mm_maskz_or_epi32
925   //CHECK: or <2 x i64> %{{.*}}, %{{.*}}
926   //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
927   return _mm_maskz_or_epi32(__U, __A, __B);
928 }
929
930 __m256i test_mm256_mask_xor_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
931            __m256i __B) {
932   //CHECK-LABEL: @test_mm256_mask_xor_epi32
933   //CHECK: xor <4 x i64> %{{.*}}, %{{.*}}
934   return _mm256_mask_xor_epi32(__W, __U, __A, __B);
935 }
936
937 __m256i test_mm256_maskz_xor_epi32 (__mmask8 __U, __m256i __A, __m256i __B) {
938   //CHECK-LABEL: @test_mm256_maskz_xor_epi32
939   //CHECK: xor <4 x i64> %{{.*}}, %{{.*}}
940   //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
941   return _mm256_maskz_xor_epi32(__U, __A, __B);
942 }
943
944 __m128i test_mm_mask_xor_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
945         __m128i __B) {
946   //CHECK-LABEL: @test_mm_mask_xor_epi32
947   //CHECK: xor <2 x i64> %{{.*}}, %{{.*}}
948   return _mm_mask_xor_epi32(__W, __U, __A, __B);
949 }
950
951 __m128i test_mm_maskz_xor_epi32 (__mmask8 __U, __m128i __A, __m128i __B) {
952   //CHECK-LABEL: @test_mm_maskz_xor_epi32
953   //CHECK: xor <2 x i64> %{{.*}}, %{{.*}}
954   //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
955   return _mm_maskz_xor_epi32(__U, __A, __B);
956 }
957
958 __m256i test_mm256_mask_and_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
959            __m256i __B) {
960   //CHECK-LABEL: @test_mm256_mask_and_epi64
961   //CHECK: and <4 x i64> %{{.*}}, %{{.*}}
962   return _mm256_mask_and_epi64(__W, __U, __A, __B);
963 }
964
965 __m256i test_mm256_maskz_and_epi64 (__mmask8 __U, __m256i __A, __m256i __B) {
966   //CHECK-LABEL: @test_mm256_maskz_and_epi64
967   //CHECK: and <4 x i64> %{{.*}}, %{{.*}}
968   //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
969   return _mm256_maskz_and_epi64(__U, __A, __B);
970 }
971
972 __m128i test_mm_mask_and_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
973         __m128i __B) {
974   //CHECK-LABEL: @test_mm_mask_and_epi64
975   //CHECK: and <2 x i64> %{{.*}}, %{{.*}}
976   return _mm_mask_and_epi64(__W,__U, __A, __B);
977 }
978
979 __m128i test_mm_maskz_and_epi64 (__mmask8 __U, __m128i __A, __m128i __B) {
980   //CHECK-LABEL: @test_mm_maskz_and_epi64
981   //CHECK: and <2 x i64> %{{.*}}, %{{.*}}
982   //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
983   return _mm_maskz_and_epi64(__U, __A, __B);
984 }
985
986 __m256i test_mm256_mask_andnot_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
987         __m256i __B) {
988   //CHECK-LABEL: @test_mm256_mask_andnot_epi64
989   //CHECK: xor <4 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1>
990   //CHECK: and <4 x i64> %{{.*}}, %{{.*}}
991   //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
992   return _mm256_mask_andnot_epi64(__W, __U, __A, __B);
993 }
994
995 __m256i test_mm256_maskz_andnot_epi64 (__mmask8 __U, __m256i __A, __m256i __B) {
996   //CHECK-LABEL: @test_mm256_maskz_andnot_epi64
997   //CHECK: xor <4 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1>
998   //CHECK: and <4 x i64> %{{.*}}, %{{.*}}
999   //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
1000   return _mm256_maskz_andnot_epi64(__U, __A, __B);
1001 }
1002
1003 __m128i test_mm_mask_andnot_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
1004            __m128i __B) {
1005   //CHECK-LABEL: @test_mm_mask_andnot_epi64
1006   //CHECK: xor <2 x i64> %{{.*}}, <i64 -1, i64 -1>
1007   //CHECK: and <2 x i64> %{{.*}}, %{{.*}}
1008   //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
1009   return _mm_mask_andnot_epi64(__W,__U, __A, __B);
1010 }
1011
1012 __m128i test_mm_maskz_andnot_epi64 (__mmask8 __U, __m128i __A, __m128i __B) {
1013   //CHECK-LABEL: @test_mm_maskz_andnot_epi64
1014   //CHECK: xor <2 x i64> %{{.*}}, <i64 -1, i64 -1>
1015   //CHECK: and <2 x i64> %{{.*}}, %{{.*}}
1016   //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
1017   return _mm_maskz_andnot_epi64(__U, __A, __B);
1018 }
1019
1020 __m256i test_mm256_mask_or_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
1021           __m256i __B) {
1022   //CHECK-LABEL: @test_mm256_mask_or_epi64
1023   //CHECK: or <4 x i64> %{{.*}}, %{{.*}}
1024   return _mm256_mask_or_epi64(__W,__U, __A, __B);
1025 }
1026
1027 __m256i test_mm256_maskz_or_epi64 (__mmask8 __U, __m256i __A, __m256i __B) {
1028   //CHECK-LABEL: @test_mm256_maskz_or_epi64
1029   //CHECK: or <4 x i64> %{{.*}}, %{{.*}}
1030   //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
1031   return _mm256_maskz_or_epi64(__U, __A, __B);
1032 }
1033
1034 __m128i test_mm_mask_or_epi64 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1035   //CHECK-LABEL: @test_mm_mask_or_epi64
1036   //CHECK: or <2 x i64> %{{.*}}, %{{.*}}
1037   return _mm_mask_or_epi64(__W, __U, __A, __B);
1038 }
1039
1040 __m128i test_mm_maskz_or_epi64 (__mmask8 __U, __m128i __A, __m128i __B) {
1041   //CHECK-LABEL: @test_mm_maskz_or_epi64
1042   //CHECK: or <2 x i64> %{{.*}}, %{{.*}}
1043   //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
1044   return _mm_maskz_or_epi64( __U, __A, __B);
1045 }
1046
1047 __m256i test_mm256_mask_xor_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
1048           __m256i __B) {
1049   //CHECK-LABEL: @test_mm256_mask_xor_epi64
1050   //CHECK: xor <4 x i64> %{{.*}}, %{{.*}}
1051   return _mm256_mask_xor_epi64(__W,__U, __A, __B);
1052 }
1053
1054 __m256i test_mm256_maskz_xor_epi64 (__mmask8 __U, __m256i __A, __m256i __B) {
1055   //CHECK-LABEL: @test_mm256_maskz_xor_epi64
1056   //CHECK: xor <4 x i64> %{{.*}}, %{{.*}}
1057   //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
1058   return _mm256_maskz_xor_epi64(__U, __A, __B);
1059 }
1060
1061 __m128i test_mm_mask_xor_epi64 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1062   //CHECK-LABEL: @test_mm_mask_xor_epi64
1063   //CHECK: xor <2 x i64> %{{.*}}, %{{.*}}
1064   return _mm_mask_xor_epi64(__W, __U, __A, __B);
1065 }
1066
1067 __m128i test_mm_maskz_xor_epi64 (__mmask8 __U, __m128i __A, __m128i __B) {
1068   //CHECK-LABEL: @test_mm_maskz_xor_epi64
1069   //CHECK: xor <2 x i64> %{{.*}}, %{{.*}}
1070   //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
1071   return _mm_maskz_xor_epi64( __U, __A, __B);
1072 }
1073
1074 __mmask8 test_mm256_cmp_ps_mask_eq_oq(__m256 a, __m256 b) {
1075   // CHECK-LABEL: @test_mm256_cmp_ps_mask_eq_oq
1076   // CHECK: fcmp oeq <8 x float> %{{.*}}, %{{.*}}
1077   return _mm256_cmp_ps_mask(a, b, _CMP_EQ_OQ);
1078 }
1079
1080 __mmask8 test_mm256_cmp_ps_mask_lt_os(__m256 a, __m256 b) {
1081   // CHECK-LABEL: test_mm256_cmp_ps_mask_lt_os
1082   // CHECK: fcmp olt <8 x float> %{{.*}}, %{{.*}}
1083   return _mm256_cmp_ps_mask(a, b, _CMP_LT_OS);
1084 }
1085
1086 __mmask8 test_mm256_cmp_ps_mask_le_os(__m256 a, __m256 b) {
1087   // CHECK-LABEL: test_mm256_cmp_ps_mask_le_os
1088   // CHECK: fcmp ole <8 x float> %{{.*}}, %{{.*}}
1089   return _mm256_cmp_ps_mask(a, b, _CMP_LE_OS);
1090 }
1091
1092 __mmask8 test_mm256_cmp_ps_mask_unord_q(__m256 a, __m256 b) {
1093   // CHECK-LABEL: test_mm256_cmp_ps_mask_unord_q
1094   // CHECK: fcmp uno <8 x float> %{{.*}}, %{{.*}}
1095   return _mm256_cmp_ps_mask(a, b, _CMP_UNORD_Q);
1096 }
1097
1098 __mmask8 test_mm256_cmp_ps_mask_neq_uq(__m256 a, __m256 b) {
1099   // CHECK-LABEL: test_mm256_cmp_ps_mask_neq_uq
1100   // CHECK: fcmp une <8 x float> %{{.*}}, %{{.*}}
1101   return _mm256_cmp_ps_mask(a, b, _CMP_NEQ_UQ);
1102 }
1103
1104 __mmask8 test_mm256_cmp_ps_mask_nlt_us(__m256 a, __m256 b) {
1105   // CHECK-LABEL: test_mm256_cmp_ps_mask_nlt_us
1106   // CHECK: fcmp uge <8 x float> %{{.*}}, %{{.*}}
1107   return _mm256_cmp_ps_mask(a, b, _CMP_NLT_US);
1108 }
1109
1110 __mmask8 test_mm256_cmp_ps_mask_nle_us(__m256 a, __m256 b) {
1111   // CHECK-LABEL: test_mm256_cmp_ps_mask_nle_us
1112   // CHECK: fcmp ugt <8 x float> %{{.*}}, %{{.*}}
1113   return _mm256_cmp_ps_mask(a, b, _CMP_NLE_US);
1114 }
1115
1116 __mmask8 test_mm256_cmp_ps_mask_ord_q(__m256 a, __m256 b) {
1117   // CHECK-LABEL: test_mm256_cmp_ps_mask_ord_q
1118   // CHECK: fcmp ord <8 x float> %{{.*}}, %{{.*}}
1119   return _mm256_cmp_ps_mask(a, b, _CMP_ORD_Q);
1120 }
1121
1122 __mmask8 test_mm256_cmp_ps_mask_eq_uq(__m256 a, __m256 b) {
1123   // CHECK-LABEL: test_mm256_cmp_ps_mask_eq_uq
1124   // CHECK: fcmp ueq <8 x float> %{{.*}}, %{{.*}}
1125   return _mm256_cmp_ps_mask(a, b, _CMP_EQ_UQ);
1126 }
1127
1128 __mmask8 test_mm256_cmp_ps_mask_nge_us(__m256 a, __m256 b) {
1129   // CHECK-LABEL: test_mm256_cmp_ps_mask_nge_us
1130   // CHECK: fcmp ult <8 x float> %{{.*}}, %{{.*}}
1131   return _mm256_cmp_ps_mask(a, b, _CMP_NGE_US);
1132 }
1133
1134 __mmask8 test_mm256_cmp_ps_mask_ngt_us(__m256 a, __m256 b) {
1135   // CHECK-LABEL: test_mm256_cmp_ps_mask_ngt_us
1136   // CHECK: fcmp ule <8 x float> %{{.*}}, %{{.*}}
1137   return _mm256_cmp_ps_mask(a, b, _CMP_NGT_US);
1138 }
1139
1140 __mmask8 test_mm256_cmp_ps_mask_false_oq(__m256 a, __m256 b) {
1141   // CHECK-LABEL: test_mm256_cmp_ps_mask_false_oq
1142   // CHECK: fcmp false <8 x float> %{{.*}}, %{{.*}}
1143   return _mm256_cmp_ps_mask(a, b, _CMP_FALSE_OQ);
1144 }
1145
1146 __mmask8 test_mm256_cmp_ps_mask_neq_oq(__m256 a, __m256 b) {
1147   // CHECK-LABEL: test_mm256_cmp_ps_mask_neq_oq
1148   // CHECK: fcmp one <8 x float> %{{.*}}, %{{.*}}
1149   return _mm256_cmp_ps_mask(a, b, _CMP_NEQ_OQ);
1150 }
1151
1152 __mmask8 test_mm256_cmp_ps_mask_ge_os(__m256 a, __m256 b) {
1153   // CHECK-LABEL: test_mm256_cmp_ps_mask_ge_os
1154   // CHECK: fcmp oge <8 x float> %{{.*}}, %{{.*}}
1155   return _mm256_cmp_ps_mask(a, b, _CMP_GE_OS);
1156 }
1157
1158 __mmask8 test_mm256_cmp_ps_mask_gt_os(__m256 a, __m256 b) {
1159   // CHECK-LABEL: test_mm256_cmp_ps_mask_gt_os
1160   // CHECK: fcmp ogt <8 x float> %{{.*}}, %{{.*}}
1161   return _mm256_cmp_ps_mask(a, b, _CMP_GT_OS);
1162 }
1163
1164 __mmask8 test_mm256_cmp_ps_mask_true_uq(__m256 a, __m256 b) {
1165   // CHECK-LABEL: test_mm256_cmp_ps_mask_true_uq
1166   // CHECK: fcmp true <8 x float> %{{.*}}, %{{.*}}
1167   return _mm256_cmp_ps_mask(a, b, _CMP_TRUE_UQ);
1168 }
1169
1170 __mmask8 test_mm256_cmp_ps_mask_eq_os(__m256 a, __m256 b) {
1171   // CHECK-LABEL: test_mm256_cmp_ps_mask_eq_os
1172   // CHECK: fcmp oeq <8 x float> %{{.*}}, %{{.*}}
1173   return _mm256_cmp_ps_mask(a, b, _CMP_EQ_OS);
1174 }
1175
1176 __mmask8 test_mm256_cmp_ps_mask_lt_oq(__m256 a, __m256 b) {
1177   // CHECK-LABEL: test_mm256_cmp_ps_mask_lt_oq
1178   // CHECK: fcmp olt <8 x float> %{{.*}}, %{{.*}}
1179   return _mm256_cmp_ps_mask(a, b, _CMP_LT_OQ);
1180 }
1181
1182 __mmask8 test_mm256_cmp_ps_mask_le_oq(__m256 a, __m256 b) {
1183   // CHECK-LABEL: test_mm256_cmp_ps_mask_le_oq
1184   // CHECK: fcmp ole <8 x float> %{{.*}}, %{{.*}}
1185   return _mm256_cmp_ps_mask(a, b, _CMP_LE_OQ);
1186 }
1187
1188 __mmask8 test_mm256_cmp_ps_mask_unord_s(__m256 a, __m256 b) {
1189   // CHECK-LABEL: test_mm256_cmp_ps_mask_unord_s
1190   // CHECK: fcmp uno <8 x float> %{{.*}}, %{{.*}}
1191   return _mm256_cmp_ps_mask(a, b, _CMP_UNORD_S);
1192 }
1193
1194 __mmask8 test_mm256_cmp_ps_mask_neq_us(__m256 a, __m256 b) {
1195   // CHECK-LABEL: test_mm256_cmp_ps_mask_neq_us
1196   // CHECK: fcmp une <8 x float> %{{.*}}, %{{.*}}
1197   return _mm256_cmp_ps_mask(a, b, _CMP_NEQ_US);
1198 }
1199
1200 __mmask8 test_mm256_cmp_ps_mask_nlt_uq(__m256 a, __m256 b) {
1201   // CHECK-LABEL: test_mm256_cmp_ps_mask_nlt_uq
1202   // CHECK: fcmp uge <8 x float> %{{.*}}, %{{.*}}
1203   return _mm256_cmp_ps_mask(a, b, _CMP_NLT_UQ);
1204 }
1205
1206 __mmask8 test_mm256_cmp_ps_mask_nle_uq(__m256 a, __m256 b) {
1207   // CHECK-LABEL: test_mm256_cmp_ps_mask_nle_uq
1208   // CHECK: fcmp ugt <8 x float> %{{.*}}, %{{.*}}
1209   return _mm256_cmp_ps_mask(a, b, _CMP_NLE_UQ);
1210 }
1211
1212 __mmask8 test_mm256_cmp_ps_mask_ord_s(__m256 a, __m256 b) {
1213   // CHECK-LABEL: test_mm256_cmp_ps_mask_ord_s
1214   // CHECK: fcmp ord <8 x float> %{{.*}}, %{{.*}}
1215   return _mm256_cmp_ps_mask(a, b, _CMP_ORD_S);
1216 }
1217
1218 __mmask8 test_mm256_cmp_ps_mask_eq_us(__m256 a, __m256 b) {
1219   // CHECK-LABEL: test_mm256_cmp_ps_mask_eq_us
1220   // CHECK: fcmp ueq <8 x float> %{{.*}}, %{{.*}}
1221   return _mm256_cmp_ps_mask(a, b, _CMP_EQ_US);
1222 }
1223
1224 __mmask8 test_mm256_cmp_ps_mask_nge_uq(__m256 a, __m256 b) {
1225   // CHECK-LABEL: test_mm256_cmp_ps_mask_nge_uq
1226   // CHECK: fcmp ult <8 x float> %{{.*}}, %{{.*}}
1227   return _mm256_cmp_ps_mask(a, b, _CMP_NGE_UQ);
1228 }
1229
1230 __mmask8 test_mm256_cmp_ps_mask_ngt_uq(__m256 a, __m256 b) {
1231   // CHECK-LABEL: test_mm256_cmp_ps_mask_ngt_uq
1232   // CHECK: fcmp ule <8 x float> %{{.*}}, %{{.*}}
1233   return _mm256_cmp_ps_mask(a, b, _CMP_NGT_UQ);
1234 }
1235
1236 __mmask8 test_mm256_cmp_ps_mask_false_os(__m256 a, __m256 b) {
1237   // CHECK-LABEL: test_mm256_cmp_ps_mask_false_os
1238   // CHECK: fcmp false <8 x float> %{{.*}}, %{{.*}}
1239   return _mm256_cmp_ps_mask(a, b, _CMP_FALSE_OS);
1240 }
1241
1242 __mmask8 test_mm256_cmp_ps_mask_neq_os(__m256 a, __m256 b) {
1243   // CHECK-LABEL: test_mm256_cmp_ps_mask_neq_os
1244   // CHECK: fcmp one <8 x float> %{{.*}}, %{{.*}}
1245   return _mm256_cmp_ps_mask(a, b, _CMP_NEQ_OS);
1246 }
1247
1248 __mmask8 test_mm256_cmp_ps_mask_ge_oq(__m256 a, __m256 b) {
1249   // CHECK-LABEL: test_mm256_cmp_ps_mask_ge_oq
1250   // CHECK: fcmp oge <8 x float> %{{.*}}, %{{.*}}
1251   return _mm256_cmp_ps_mask(a, b, _CMP_GE_OQ);
1252 }
1253
1254 __mmask8 test_mm256_cmp_ps_mask_gt_oq(__m256 a, __m256 b) {
1255   // CHECK-LABEL: test_mm256_cmp_ps_mask_gt_oq
1256   // CHECK: fcmp ogt <8 x float> %{{.*}}, %{{.*}}
1257   return _mm256_cmp_ps_mask(a, b, _CMP_GT_OQ);
1258 }
1259
1260 __mmask8 test_mm256_cmp_ps_mask_true_us(__m256 a, __m256 b) {
1261   // CHECK-LABEL: test_mm256_cmp_ps_mask_true_us
1262   // CHECK: fcmp true <8 x float> %{{.*}}, %{{.*}}
1263   return _mm256_cmp_ps_mask(a, b, _CMP_TRUE_US);
1264 }
1265
1266 __mmask8 test_mm256_mask_cmp_ps_mask_eq_oq(__mmask8 m, __m256 a, __m256 b) {
1267   // CHECK-LABEL: @test_mm256_mask_cmp_ps_mask_eq_oq
1268   // CHECK: [[CMP:%.*]] = fcmp oeq <8 x float> %{{.*}}, %{{.*}}
1269   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1270   return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_EQ_OQ);
1271 }
1272
1273 __mmask8 test_mm256_mask_cmp_ps_mask_lt_os(__mmask8 m, __m256 a, __m256 b) {
1274   // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_lt_os
1275   // CHECK: [[CMP:%.*]] = fcmp olt <8 x float> %{{.*}}, %{{.*}}
1276   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1277   return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_LT_OS);
1278 }
1279
1280 __mmask8 test_mm256_mask_cmp_ps_mask_le_os(__mmask8 m, __m256 a, __m256 b) {
1281   // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_le_os
1282   // CHECK: [[CMP:%.*]] = fcmp ole <8 x float> %{{.*}}, %{{.*}}
1283   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1284   return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_LE_OS);
1285 }
1286
1287 __mmask8 test_mm256_mask_cmp_ps_mask_unord_q(__mmask8 m, __m256 a, __m256 b) {
1288   // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_unord_q
1289   // CHECK: [[CMP:%.*]] = fcmp uno <8 x float> %{{.*}}, %{{.*}}
1290   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1291   return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_UNORD_Q);
1292 }
1293
1294 __mmask8 test_mm256_mask_cmp_ps_mask_neq_uq(__mmask8 m, __m256 a, __m256 b) {
1295   // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_neq_uq
1296   // CHECK: [[CMP:%.*]] = fcmp une <8 x float> %{{.*}}, %{{.*}}
1297   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1298   return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_UQ);
1299 }
1300
1301 __mmask8 test_mm256_mask_cmp_ps_mask_nlt_us(__mmask8 m, __m256 a, __m256 b) {
1302   // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_nlt_us
1303   // CHECK: [[CMP:%.*]] = fcmp uge <8 x float> %{{.*}}, %{{.*}}
1304   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1305   return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NLT_US);
1306 }
1307
1308 __mmask8 test_mm256_mask_cmp_ps_mask_nle_us(__mmask8 m, __m256 a, __m256 b) {
1309   // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_nle_us
1310   // CHECK: [[CMP:%.*]] = fcmp ugt <8 x float> %{{.*}}, %{{.*}}
1311   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1312   return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NLE_US);
1313 }
1314
1315 __mmask8 test_mm256_mask_cmp_ps_mask_ord_q(__mmask8 m, __m256 a, __m256 b) {
1316   // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_ord_q
1317   // CHECK: [[CMP:%.*]] = fcmp ord <8 x float> %{{.*}}, %{{.*}}
1318   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1319   return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_ORD_Q);
1320 }
1321
1322 __mmask8 test_mm256_mask_cmp_ps_mask_eq_uq(__mmask8 m, __m256 a, __m256 b) {
1323   // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_eq_uq
1324   // CHECK: [[CMP:%.*]] = fcmp ueq <8 x float> %{{.*}}, %{{.*}}
1325   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1326   return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_EQ_UQ);
1327 }
1328
1329 __mmask8 test_mm256_mask_cmp_ps_mask_nge_us(__mmask8 m, __m256 a, __m256 b) {
1330   // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_nge_us
1331   // CHECK: [[CMP:%.*]] = fcmp ult <8 x float> %{{.*}}, %{{.*}}
1332   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1333   return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NGE_US);
1334 }
1335
1336 __mmask8 test_mm256_mask_cmp_ps_mask_ngt_us(__mmask8 m, __m256 a, __m256 b) {
1337   // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_ngt_us
1338   // CHECK: [[CMP:%.*]] = fcmp ule <8 x float> %{{.*}}, %{{.*}}
1339   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1340   return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NGT_US);
1341 }
1342
1343 __mmask8 test_mm256_mask_cmp_ps_mask_false_oq(__mmask8 m, __m256 a, __m256 b) {
1344   // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_false_oq
1345   // CHECK: [[CMP:%.*]] = fcmp false <8 x float> %{{.*}}, %{{.*}}
1346   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1347   return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OQ);
1348 }
1349
1350 __mmask8 test_mm256_mask_cmp_ps_mask_neq_oq(__mmask8 m, __m256 a, __m256 b) {
1351   // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_neq_oq
1352   // CHECK: [[CMP:%.*]] = fcmp one <8 x float> %{{.*}}, %{{.*}}
1353   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1354   return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_OQ);
1355 }
1356
1357 __mmask8 test_mm256_mask_cmp_ps_mask_ge_os(__mmask8 m, __m256 a, __m256 b) {
1358   // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_ge_os
1359   // CHECK: [[CMP:%.*]] = fcmp oge <8 x float> %{{.*}}, %{{.*}}
1360   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1361   return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_GE_OS);
1362 }
1363
1364 __mmask8 test_mm256_mask_cmp_ps_mask_gt_os(__mmask8 m, __m256 a, __m256 b) {
1365   // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_gt_os
1366   // CHECK: [[CMP:%.*]] = fcmp ogt <8 x float> %{{.*}}, %{{.*}}
1367   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1368   return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_GT_OS);
1369 }
1370
1371 __mmask8 test_mm256_mask_cmp_ps_mask_true_uq(__mmask8 m, __m256 a, __m256 b) {
1372   // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_true_uq
1373   // CHECK: [[CMP:%.*]] = fcmp true <8 x float> %{{.*}}, %{{.*}}
1374   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1375   return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_UQ);
1376 }
1377
1378 __mmask8 test_mm256_mask_cmp_ps_mask_eq_os(__mmask8 m, __m256 a, __m256 b) {
1379   // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_eq_os
1380   // CHECK: [[CMP:%.*]] = fcmp oeq <8 x float> %{{.*}}, %{{.*}}
1381   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1382   return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_EQ_OS);
1383 }
1384
1385 __mmask8 test_mm256_mask_cmp_ps_mask_lt_oq(__mmask8 m, __m256 a, __m256 b) {
1386   // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_lt_oq
1387   // CHECK: [[CMP:%.*]] = fcmp olt <8 x float> %{{.*}}, %{{.*}}
1388   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1389   return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_LT_OQ);
1390 }
1391
1392 __mmask8 test_mm256_mask_cmp_ps_mask_le_oq(__mmask8 m, __m256 a, __m256 b) {
1393   // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_le_oq
1394   // CHECK: [[CMP:%.*]] = fcmp ole <8 x float> %{{.*}}, %{{.*}}
1395   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1396   return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_LE_OQ);
1397 }
1398
1399 __mmask8 test_mm256_mask_cmp_ps_mask_unord_s(__mmask8 m, __m256 a, __m256 b) {
1400   // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_unord_s
1401   // CHECK: [[CMP:%.*]] = fcmp uno <8 x float> %{{.*}}, %{{.*}}
1402   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1403   return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_UNORD_S);
1404 }
1405
1406 __mmask8 test_mm256_mask_cmp_ps_mask_neq_us(__mmask8 m, __m256 a, __m256 b) {
1407   // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_neq_us
1408   // CHECK: [[CMP:%.*]] = fcmp une <8 x float> %{{.*}}, %{{.*}}
1409   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1410   return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_US);
1411 }
1412
1413 __mmask8 test_mm256_mask_cmp_ps_mask_nlt_uq(__mmask8 m, __m256 a, __m256 b) {
1414   // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_nlt_uq
1415   // CHECK: [[CMP:%.*]] = fcmp uge <8 x float> %{{.*}}, %{{.*}}
1416   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1417   return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NLT_UQ);
1418 }
1419
1420 __mmask8 test_mm256_mask_cmp_ps_mask_nle_uq(__mmask8 m, __m256 a, __m256 b) {
1421   // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_nle_uq
1422   // CHECK: [[CMP:%.*]] = fcmp ugt <8 x float> %{{.*}}, %{{.*}}
1423   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1424   return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NLE_UQ);
1425 }
1426
1427 __mmask8 test_mm256_mask_cmp_ps_mask_ord_s(__mmask8 m, __m256 a, __m256 b) {
1428   // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_ord_s
1429   // CHECK: [[CMP:%.*]] = fcmp ord <8 x float> %{{.*}}, %{{.*}}
1430   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1431   return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_ORD_S);
1432 }
1433
1434 __mmask8 test_mm256_mask_cmp_ps_mask_eq_us(__mmask8 m, __m256 a, __m256 b) {
1435   // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_eq_us
1436   // CHECK: [[CMP:%.*]] = fcmp ueq <8 x float> %{{.*}}, %{{.*}}
1437   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1438   return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_EQ_US);
1439 }
1440
1441 __mmask8 test_mm256_mask_cmp_ps_mask_nge_uq(__mmask8 m, __m256 a, __m256 b) {
1442   // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_nge_uq
1443   // CHECK: [[CMP:%.*]] = fcmp ult <8 x float> %{{.*}}, %{{.*}}
1444   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1445   return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NGE_UQ);
1446 }
1447
1448 __mmask8 test_mm256_mask_cmp_ps_mask_ngt_uq(__mmask8 m, __m256 a, __m256 b) {
1449   // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_ngt_uq
1450   // CHECK: [[CMP:%.*]] = fcmp ule <8 x float> %{{.*}}, %{{.*}}
1451   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1452   return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NGT_UQ);
1453 }
1454
1455 __mmask8 test_mm256_mask_cmp_ps_mask_false_os(__mmask8 m, __m256 a, __m256 b) {
1456   // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_false_os
1457   // CHECK: [[CMP:%.*]] = fcmp false <8 x float> %{{.*}}, %{{.*}}
1458   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1459   return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OS);
1460 }
1461
1462 __mmask8 test_mm256_mask_cmp_ps_mask_neq_os(__mmask8 m, __m256 a, __m256 b) {
1463   // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_neq_os
1464   // CHECK: [[CMP:%.*]] = fcmp one <8 x float> %{{.*}}, %{{.*}}
1465   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1466   return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_OS);
1467 }
1468
1469 __mmask8 test_mm256_mask_cmp_ps_mask_ge_oq(__mmask8 m, __m256 a, __m256 b) {
1470   // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_ge_oq
1471   // CHECK: [[CMP:%.*]] = fcmp oge <8 x float> %{{.*}}, %{{.*}}
1472   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1473   return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_GE_OQ);
1474 }
1475
1476 __mmask8 test_mm256_mask_cmp_ps_mask_gt_oq(__mmask8 m, __m256 a, __m256 b) {
1477   // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_gt_oq
1478   // CHECK: [[CMP:%.*]] = fcmp ogt <8 x float> %{{.*}}, %{{.*}}
1479   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1480   return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_GT_OQ);
1481 }
1482
1483 __mmask8 test_mm256_mask_cmp_ps_mask_true_us(__mmask8 m, __m256 a, __m256 b) {
1484   // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_true_us
1485   // CHECK: [[CMP:%.*]] = fcmp true <8 x float> %{{.*}}, %{{.*}}
1486   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1487   return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_US);
1488 }
1489
1490 __mmask8 test_mm256_cmp_pd_mask_eq_oq(__m256d a, __m256d b) {
1491   // CHECK-LABEL: @test_mm256_cmp_pd_mask_eq_oq
1492   // CHECK: fcmp oeq <4 x double> %{{.*}}, %{{.*}}
1493   return _mm256_cmp_pd_mask(a, b, _CMP_EQ_OQ);
1494 }
1495
1496 __mmask8 test_mm256_cmp_pd_mask_lt_os(__m256d a, __m256d b) {
1497   // CHECK-LABEL: test_mm256_cmp_pd_mask_lt_os
1498   // CHECK: fcmp olt <4 x double> %{{.*}}, %{{.*}}
1499   return _mm256_cmp_pd_mask(a, b, _CMP_LT_OS);
1500 }
1501
1502 __mmask8 test_mm256_cmp_pd_mask_le_os(__m256d a, __m256d b) {
1503   // CHECK-LABEL: test_mm256_cmp_pd_mask_le_os
1504   // CHECK: fcmp ole <4 x double> %{{.*}}, %{{.*}}
1505   return _mm256_cmp_pd_mask(a, b, _CMP_LE_OS);
1506 }
1507
1508 __mmask8 test_mm256_cmp_pd_mask_unord_q(__m256d a, __m256d b) {
1509   // CHECK-LABEL: test_mm256_cmp_pd_mask_unord_q
1510   // CHECK: fcmp uno <4 x double> %{{.*}}, %{{.*}}
1511   return _mm256_cmp_pd_mask(a, b, _CMP_UNORD_Q);
1512 }
1513
1514 __mmask8 test_mm256_cmp_pd_mask_neq_uq(__m256d a, __m256d b) {
1515   // CHECK-LABEL: test_mm256_cmp_pd_mask_neq_uq
1516   // CHECK: fcmp une <4 x double> %{{.*}}, %{{.*}}
1517   return _mm256_cmp_pd_mask(a, b, _CMP_NEQ_UQ);
1518 }
1519
1520 __mmask8 test_mm256_cmp_pd_mask_nlt_us(__m256d a, __m256d b) {
1521   // CHECK-LABEL: test_mm256_cmp_pd_mask_nlt_us
1522   // CHECK: fcmp uge <4 x double> %{{.*}}, %{{.*}}
1523   return _mm256_cmp_pd_mask(a, b, _CMP_NLT_US);
1524 }
1525
1526 __mmask8 test_mm256_cmp_pd_mask_nle_us(__m256d a, __m256d b) {
1527   // CHECK-LABEL: test_mm256_cmp_pd_mask_nle_us
1528   // CHECK: fcmp ugt <4 x double> %{{.*}}, %{{.*}}
1529   return _mm256_cmp_pd_mask(a, b, _CMP_NLE_US);
1530 }
1531
1532 __mmask8 test_mm256_cmp_pd_mask_ord_q(__m256d a, __m256d b) {
1533   // CHECK-LABEL: test_mm256_cmp_pd_mask_ord_q
1534   // CHECK: fcmp ord <4 x double> %{{.*}}, %{{.*}}
1535   return _mm256_cmp_pd_mask(a, b, _CMP_ORD_Q);
1536 }
1537
1538 __mmask8 test_mm256_cmp_pd_mask_eq_uq(__m256d a, __m256d b) {
1539   // CHECK-LABEL: test_mm256_cmp_pd_mask_eq_uq
1540   // CHECK: fcmp ueq <4 x double> %{{.*}}, %{{.*}}
1541   return _mm256_cmp_pd_mask(a, b, _CMP_EQ_UQ);
1542 }
1543
1544 __mmask8 test_mm256_cmp_pd_mask_nge_us(__m256d a, __m256d b) {
1545   // CHECK-LABEL: test_mm256_cmp_pd_mask_nge_us
1546   // CHECK: fcmp ult <4 x double> %{{.*}}, %{{.*}}
1547   return _mm256_cmp_pd_mask(a, b, _CMP_NGE_US);
1548 }
1549
1550 __mmask8 test_mm256_cmp_pd_mask_ngt_us(__m256d a, __m256d b) {
1551   // CHECK-LABEL: test_mm256_cmp_pd_mask_ngt_us
1552   // CHECK: fcmp ule <4 x double> %{{.*}}, %{{.*}}
1553   return _mm256_cmp_pd_mask(a, b, _CMP_NGT_US);
1554 }
1555
1556 __mmask8 test_mm256_cmp_pd_mask_false_oq(__m256d a, __m256d b) {
1557   // CHECK-LABEL: test_mm256_cmp_pd_mask_false_oq
1558   // CHECK: fcmp false <4 x double> %{{.*}}, %{{.*}}
1559   return _mm256_cmp_pd_mask(a, b, _CMP_FALSE_OQ);
1560 }
1561
1562 __mmask8 test_mm256_cmp_pd_mask_neq_oq(__m256d a, __m256d b) {
1563   // CHECK-LABEL: test_mm256_cmp_pd_mask_neq_oq
1564   // CHECK: fcmp one <4 x double> %{{.*}}, %{{.*}}
1565   return _mm256_cmp_pd_mask(a, b, _CMP_NEQ_OQ);
1566 }
1567
1568 __mmask8 test_mm256_cmp_pd_mask_ge_os(__m256d a, __m256d b) {
1569   // CHECK-LABEL: test_mm256_cmp_pd_mask_ge_os
1570   // CHECK: fcmp oge <4 x double> %{{.*}}, %{{.*}}
1571   return _mm256_cmp_pd_mask(a, b, _CMP_GE_OS);
1572 }
1573
1574 __mmask8 test_mm256_cmp_pd_mask_gt_os(__m256d a, __m256d b) {
1575   // CHECK-LABEL: test_mm256_cmp_pd_mask_gt_os
1576   // CHECK: fcmp ogt <4 x double> %{{.*}}, %{{.*}}
1577   return _mm256_cmp_pd_mask(a, b, _CMP_GT_OS);
1578 }
1579
1580 __mmask8 test_mm256_cmp_pd_mask_true_uq(__m256d a, __m256d b) {
1581   // CHECK-LABEL: test_mm256_cmp_pd_mask_true_uq
1582   // CHECK: fcmp true <4 x double> %{{.*}}, %{{.*}}
1583   return _mm256_cmp_pd_mask(a, b, _CMP_TRUE_UQ);
1584 }
1585
1586 __mmask8 test_mm256_cmp_pd_mask_eq_os(__m256d a, __m256d b) {
1587   // CHECK-LABEL: test_mm256_cmp_pd_mask_eq_os
1588   // CHECK: fcmp oeq <4 x double> %{{.*}}, %{{.*}}
1589   return _mm256_cmp_pd_mask(a, b, _CMP_EQ_OS);
1590 }
1591
1592 __mmask8 test_mm256_cmp_pd_mask_lt_oq(__m256d a, __m256d b) {
1593   // CHECK-LABEL: test_mm256_cmp_pd_mask_lt_oq
1594   // CHECK: fcmp olt <4 x double> %{{.*}}, %{{.*}}
1595   return _mm256_cmp_pd_mask(a, b, _CMP_LT_OQ);
1596 }
1597
1598 __mmask8 test_mm256_cmp_pd_mask_le_oq(__m256d a, __m256d b) {
1599   // CHECK-LABEL: test_mm256_cmp_pd_mask_le_oq
1600   // CHECK: fcmp ole <4 x double> %{{.*}}, %{{.*}}
1601   return _mm256_cmp_pd_mask(a, b, _CMP_LE_OQ);
1602 }
1603
1604 __mmask8 test_mm256_cmp_pd_mask_unord_s(__m256d a, __m256d b) {
1605   // CHECK-LABEL: test_mm256_cmp_pd_mask_unord_s
1606   // CHECK: fcmp uno <4 x double> %{{.*}}, %{{.*}}
1607   return _mm256_cmp_pd_mask(a, b, _CMP_UNORD_S);
1608 }
1609
1610 __mmask8 test_mm256_cmp_pd_mask_neq_us(__m256d a, __m256d b) {
1611   // CHECK-LABEL: test_mm256_cmp_pd_mask_neq_us
1612   // CHECK: fcmp une <4 x double> %{{.*}}, %{{.*}}
1613   return _mm256_cmp_pd_mask(a, b, _CMP_NEQ_US);
1614 }
1615
1616 __mmask8 test_mm256_cmp_pd_mask_nlt_uq(__m256d a, __m256d b) {
1617   // CHECK-LABEL: test_mm256_cmp_pd_mask_nlt_uq
1618   // CHECK: fcmp uge <4 x double> %{{.*}}, %{{.*}}
1619   return _mm256_cmp_pd_mask(a, b, _CMP_NLT_UQ);
1620 }
1621
1622 __mmask8 test_mm256_cmp_pd_mask_nle_uq(__m256d a, __m256d b) {
1623   // CHECK-LABEL: test_mm256_cmp_pd_mask_nle_uq
1624   // CHECK: fcmp ugt <4 x double> %{{.*}}, %{{.*}}
1625   return _mm256_cmp_pd_mask(a, b, _CMP_NLE_UQ);
1626 }
1627
1628 __mmask8 test_mm256_cmp_pd_mask_ord_s(__m256d a, __m256d b) {
1629   // CHECK-LABEL: test_mm256_cmp_pd_mask_ord_s
1630   // CHECK: fcmp ord <4 x double> %{{.*}}, %{{.*}}
1631   return _mm256_cmp_pd_mask(a, b, _CMP_ORD_S);
1632 }
1633
1634 __mmask8 test_mm256_cmp_pd_mask_eq_us(__m256d a, __m256d b) {
1635   // CHECK-LABEL: test_mm256_cmp_pd_mask_eq_us
1636   // CHECK: fcmp ueq <4 x double> %{{.*}}, %{{.*}}
1637   return _mm256_cmp_pd_mask(a, b, _CMP_EQ_US);
1638 }
1639
1640 __mmask8 test_mm256_cmp_pd_mask_nge_uq(__m256d a, __m256d b) {
1641   // CHECK-LABEL: test_mm256_cmp_pd_mask_nge_uq
1642   // CHECK: fcmp ult <4 x double> %{{.*}}, %{{.*}}
1643   return _mm256_cmp_pd_mask(a, b, _CMP_NGE_UQ);
1644 }
1645
1646 __mmask8 test_mm256_cmp_pd_mask_ngt_uq(__m256d a, __m256d b) {
1647   // CHECK-LABEL: test_mm256_cmp_pd_mask_ngt_uq
1648   // CHECK: fcmp ule <4 x double> %{{.*}}, %{{.*}}
1649   return _mm256_cmp_pd_mask(a, b, _CMP_NGT_UQ);
1650 }
1651
1652 __mmask8 test_mm256_cmp_pd_mask_false_os(__m256d a, __m256d b) {
1653   // CHECK-LABEL: test_mm256_cmp_pd_mask_false_os
1654   // CHECK: fcmp false <4 x double> %{{.*}}, %{{.*}}
1655   return _mm256_cmp_pd_mask(a, b, _CMP_FALSE_OS);
1656 }
1657
1658 __mmask8 test_mm256_cmp_pd_mask_neq_os(__m256d a, __m256d b) {
1659   // CHECK-LABEL: test_mm256_cmp_pd_mask_neq_os
1660   // CHECK: fcmp one <4 x double> %{{.*}}, %{{.*}}
1661   return _mm256_cmp_pd_mask(a, b, _CMP_NEQ_OS);
1662 }
1663
1664 __mmask8 test_mm256_cmp_pd_mask_ge_oq(__m256d a, __m256d b) {
1665   // CHECK-LABEL: test_mm256_cmp_pd_mask_ge_oq
1666   // CHECK: fcmp oge <4 x double> %{{.*}}, %{{.*}}
1667   return _mm256_cmp_pd_mask(a, b, _CMP_GE_OQ);
1668 }
1669
1670 __mmask8 test_mm256_cmp_pd_mask_gt_oq(__m256d a, __m256d b) {
1671   // CHECK-LABEL: test_mm256_cmp_pd_mask_gt_oq
1672   // CHECK: fcmp ogt <4 x double> %{{.*}}, %{{.*}}
1673   return _mm256_cmp_pd_mask(a, b, _CMP_GT_OQ);
1674 }
1675
1676 __mmask8 test_mm256_cmp_pd_mask_true_us(__m256d a, __m256d b) {
1677   // CHECK-LABEL: test_mm256_cmp_pd_mask_true_us
1678   // CHECK: fcmp true <4 x double> %{{.*}}, %{{.*}}
1679   return _mm256_cmp_pd_mask(a, b, _CMP_TRUE_US);
1680 }
1681
1682 __mmask8 test_mm256_mask_cmp_pd_mask_eq_oq(__mmask8 m, __m256d a, __m256d b) {
1683   // CHECK-LABEL: @test_mm256_mask_cmp_pd_mask_eq_oq
1684   // CHECK: [[CMP:%.*]] = fcmp oeq <4 x double> %{{.*}}, %{{.*}}
1685   // CHECK: and <4 x i1> [[CMP]], {{.*}}
1686   return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_EQ_OQ);
1687 }
1688
1689 __mmask8 test_mm256_mask_cmp_pd_mask_lt_os(__mmask8 m, __m256d a, __m256d b) {
1690   // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_lt_os
1691   // CHECK: [[CMP:%.*]] = fcmp olt <4 x double> %{{.*}}, %{{.*}}
1692   // CHECK: and <4 x i1> [[CMP]], {{.*}}
1693   return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_LT_OS);
1694 }
1695
1696 __mmask8 test_mm256_mask_cmp_pd_mask_le_os(__mmask8 m, __m256d a, __m256d b) {
1697   // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_le_os
1698   // CHECK: [[CMP:%.*]] = fcmp ole <4 x double> %{{.*}}, %{{.*}}
1699   // CHECK: and <4 x i1> [[CMP]], {{.*}}
1700   return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_LE_OS);
1701 }
1702
1703 __mmask8 test_mm256_mask_cmp_pd_mask_unord_q(__mmask8 m, __m256d a, __m256d b) {
1704   // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_unord_q
1705   // CHECK: [[CMP:%.*]] = fcmp uno <4 x double> %{{.*}}, %{{.*}}
1706   // CHECK: and <4 x i1> [[CMP]], {{.*}}
1707   return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_UNORD_Q);
1708 }
1709
1710 __mmask8 test_mm256_mask_cmp_pd_mask_neq_uq(__mmask8 m, __m256d a, __m256d b) {
1711   // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_neq_uq
1712   // CHECK: [[CMP:%.*]] = fcmp une <4 x double> %{{.*}}, %{{.*}}
1713   // CHECK: and <4 x i1> [[CMP]], {{.*}}
1714   return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_UQ);
1715 }
1716
1717 __mmask8 test_mm256_mask_cmp_pd_mask_nlt_us(__mmask8 m, __m256d a, __m256d b) {
1718   // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_nlt_us
1719   // CHECK: [[CMP:%.*]] = fcmp uge <4 x double> %{{.*}}, %{{.*}}
1720   // CHECK: and <4 x i1> [[CMP]], {{.*}}
1721   return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NLT_US);
1722 }
1723
1724 __mmask8 test_mm256_mask_cmp_pd_mask_nle_us(__mmask8 m, __m256d a, __m256d b) {
1725   // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_nle_us
1726   // CHECK: [[CMP:%.*]] = fcmp ugt <4 x double> %{{.*}}, %{{.*}}
1727   // CHECK: and <4 x i1> [[CMP]], {{.*}}
1728   return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NLE_US);
1729 }
1730
1731 __mmask8 test_mm256_mask_cmp_pd_mask_ord_q(__mmask8 m, __m256d a, __m256d b) {
1732   // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_ord_q
1733   // CHECK: [[CMP:%.*]] = fcmp ord <4 x double> %{{.*}}, %{{.*}}
1734   // CHECK: and <4 x i1> [[CMP]], {{.*}}
1735   return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_ORD_Q);
1736 }
1737
1738 __mmask8 test_mm256_mask_cmp_pd_mask_eq_uq(__mmask8 m, __m256d a, __m256d b) {
1739   // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_eq_uq
1740   // CHECK: [[CMP:%.*]] = fcmp ueq <4 x double> %{{.*}}, %{{.*}}
1741   // CHECK: and <4 x i1> [[CMP]], {{.*}}
1742   return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_EQ_UQ);
1743 }
1744
1745 __mmask8 test_mm256_mask_cmp_pd_mask_nge_us(__mmask8 m, __m256d a, __m256d b) {
1746   // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_nge_us
1747   // CHECK: [[CMP:%.*]] = fcmp ult <4 x double> %{{.*}}, %{{.*}}
1748   // CHECK: and <4 x i1> [[CMP]], {{.*}}
1749   return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NGE_US);
1750 }
1751
1752 __mmask8 test_mm256_mask_cmp_pd_mask_ngt_us(__mmask8 m, __m256d a, __m256d b) {
1753   // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_ngt_us
1754   // CHECK: [[CMP:%.*]] = fcmp ule <4 x double> %{{.*}}, %{{.*}}
1755   // CHECK: and <4 x i1> [[CMP]], {{.*}}
1756   return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NGT_US);
1757 }
1758
1759 __mmask8 test_mm256_mask_cmp_pd_mask_false_oq(__mmask8 m, __m256d a, __m256d b) {
1760   // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_false_oq
1761   // CHECK: [[CMP:%.*]] = fcmp false <4 x double> %{{.*}}, %{{.*}}
1762   // CHECK: and <4 x i1> [[CMP]], {{.*}}
1763   return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OQ);
1764 }
1765
1766 __mmask8 test_mm256_mask_cmp_pd_mask_neq_oq(__mmask8 m, __m256d a, __m256d b) {
1767   // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_neq_oq
1768   // CHECK: [[CMP:%.*]] = fcmp one <4 x double> %{{.*}}, %{{.*}}
1769   // CHECK: and <4 x i1> [[CMP]], {{.*}}
1770   return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_OQ);
1771 }
1772
1773 __mmask8 test_mm256_mask_cmp_pd_mask_ge_os(__mmask8 m, __m256d a, __m256d b) {
1774   // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_ge_os
1775   // CHECK: [[CMP:%.*]] = fcmp oge <4 x double> %{{.*}}, %{{.*}}
1776   // CHECK: and <4 x i1> [[CMP]], {{.*}}
1777   return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_GE_OS);
1778 }
1779
1780 __mmask8 test_mm256_mask_cmp_pd_mask_gt_os(__mmask8 m, __m256d a, __m256d b) {
1781   // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_gt_os
1782   // CHECK: [[CMP:%.*]] = fcmp ogt <4 x double> %{{.*}}, %{{.*}}
1783   // CHECK: and <4 x i1> [[CMP]], {{.*}}
1784   return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_GT_OS);
1785 }
1786
1787 __mmask8 test_mm256_mask_cmp_pd_mask_true_uq(__mmask8 m, __m256d a, __m256d b) {
1788   // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_true_uq
1789   // CHECK: [[CMP:%.*]] = fcmp true <4 x double> %{{.*}}, %{{.*}}
1790   // CHECK: and <4 x i1> [[CMP]], {{.*}}
1791   return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_UQ);
1792 }
1793
1794 __mmask8 test_mm256_mask_cmp_pd_mask_eq_os(__mmask8 m, __m256d a, __m256d b) {
1795   // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_eq_os
1796   // CHECK: [[CMP:%.*]] = fcmp oeq <4 x double> %{{.*}}, %{{.*}}
1797   // CHECK: and <4 x i1> [[CMP]], {{.*}}
1798   return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_EQ_OS);
1799 }
1800
1801 __mmask8 test_mm256_mask_cmp_pd_mask_lt_oq(__mmask8 m, __m256d a, __m256d b) {
1802   // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_lt_oq
1803   // CHECK: [[CMP:%.*]] = fcmp olt <4 x double> %{{.*}}, %{{.*}}
1804   // CHECK: and <4 x i1> [[CMP]], {{.*}}
1805   return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_LT_OQ);
1806 }
1807
1808 __mmask8 test_mm256_mask_cmp_pd_mask_le_oq(__mmask8 m, __m256d a, __m256d b) {
1809   // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_le_oq
1810   // CHECK: [[CMP:%.*]] = fcmp ole <4 x double> %{{.*}}, %{{.*}}
1811   // CHECK: and <4 x i1> [[CMP]], {{.*}}
1812   return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_LE_OQ);
1813 }
1814
1815 __mmask8 test_mm256_mask_cmp_pd_mask_unord_s(__mmask8 m, __m256d a, __m256d b) {
1816   // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_unord_s
1817   // CHECK: [[CMP:%.*]] = fcmp uno <4 x double> %{{.*}}, %{{.*}}
1818   // CHECK: and <4 x i1> [[CMP]], {{.*}}
1819   return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_UNORD_S);
1820 }
1821
1822 __mmask8 test_mm256_mask_cmp_pd_mask_neq_us(__mmask8 m, __m256d a, __m256d b) {
1823   // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_neq_us
1824   // CHECK: [[CMP:%.*]] = fcmp une <4 x double> %{{.*}}, %{{.*}}
1825   // CHECK: and <4 x i1> [[CMP]], {{.*}}
1826   return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_US);
1827 }
1828
1829 __mmask8 test_mm256_mask_cmp_pd_mask_nlt_uq(__mmask8 m, __m256d a, __m256d b) {
1830   // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_nlt_uq
1831   // CHECK: [[CMP:%.*]] = fcmp uge <4 x double> %{{.*}}, %{{.*}}
1832   // CHECK: and <4 x i1> [[CMP]], {{.*}}
1833   return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NLT_UQ);
1834 }
1835
1836 __mmask8 test_mm256_mask_cmp_pd_mask_nle_uq(__mmask8 m, __m256d a, __m256d b) {
1837   // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_nle_uq
1838   // CHECK: [[CMP:%.*]] = fcmp ugt <4 x double> %{{.*}}, %{{.*}}
1839   // CHECK: and <4 x i1> [[CMP]], {{.*}}
1840   return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NLE_UQ);
1841 }
1842
1843 __mmask8 test_mm256_mask_cmp_pd_mask_ord_s(__mmask8 m, __m256d a, __m256d b) {
1844   // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_ord_s
1845   // CHECK: [[CMP:%.*]] = fcmp ord <4 x double> %{{.*}}, %{{.*}}
1846   // CHECK: and <4 x i1> [[CMP]], {{.*}}
1847   return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_ORD_S);
1848 }
1849
1850 __mmask8 test_mm256_mask_cmp_pd_mask_eq_us(__mmask8 m, __m256d a, __m256d b) {
1851   // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_eq_us
1852   // CHECK: [[CMP:%.*]] = fcmp ueq <4 x double> %{{.*}}, %{{.*}}
1853   // CHECK: and <4 x i1> [[CMP]], {{.*}}
1854   return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_EQ_US);
1855 }
1856
1857 __mmask8 test_mm256_mask_cmp_pd_mask_nge_uq(__mmask8 m, __m256d a, __m256d b) {
1858   // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_nge_uq
1859   // CHECK: [[CMP:%.*]] = fcmp ult <4 x double> %{{.*}}, %{{.*}}
1860   // CHECK: and <4 x i1> [[CMP]], {{.*}}
1861   return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NGE_UQ);
1862 }
1863
1864 __mmask8 test_mm256_mask_cmp_pd_mask_ngt_uq(__mmask8 m, __m256d a, __m256d b) {
1865   // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_ngt_uq
1866   // CHECK: [[CMP:%.*]] = fcmp ule <4 x double> %{{.*}}, %{{.*}}
1867   // CHECK: and <4 x i1> [[CMP]], {{.*}}
1868   return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NGT_UQ);
1869 }
1870
1871 __mmask8 test_mm256_mask_cmp_pd_mask_false_os(__mmask8 m, __m256d a, __m256d b) {
1872   // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_false_os
1873   // CHECK: [[CMP:%.*]] = fcmp false <4 x double> %{{.*}}, %{{.*}}
1874   // CHECK: and <4 x i1> [[CMP]], {{.*}}
1875   return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OS);
1876 }
1877
1878 __mmask8 test_mm256_mask_cmp_pd_mask_neq_os(__mmask8 m, __m256d a, __m256d b) {
1879   // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_neq_os
1880   // CHECK: [[CMP:%.*]] = fcmp one <4 x double> %{{.*}}, %{{.*}}
1881   // CHECK: and <4 x i1> [[CMP]], {{.*}}
1882   return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_OS);
1883 }
1884
1885 __mmask8 test_mm256_mask_cmp_pd_mask_ge_oq(__mmask8 m, __m256d a, __m256d b) {
1886   // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_ge_oq
1887   // CHECK: [[CMP:%.*]] = fcmp oge <4 x double> %{{.*}}, %{{.*}}
1888   // CHECK: and <4 x i1> [[CMP]], {{.*}}
1889   return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_GE_OQ);
1890 }
1891
1892 __mmask8 test_mm256_mask_cmp_pd_mask_gt_oq(__mmask8 m, __m256d a, __m256d b) {
1893   // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_gt_oq
1894   // CHECK: [[CMP:%.*]] = fcmp ogt <4 x double> %{{.*}}, %{{.*}}
1895   // CHECK: and <4 x i1> [[CMP]], {{.*}}
1896   return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_GT_OQ);
1897 }
1898
1899 __mmask8 test_mm256_mask_cmp_pd_mask_true_us(__mmask8 m, __m256d a, __m256d b) {
1900   // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_true_us
1901   // CHECK: [[CMP:%.*]] = fcmp true <4 x double> %{{.*}}, %{{.*}}
1902   // CHECK: and <4 x i1> [[CMP]], {{.*}}
1903   return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_US);
1904 }
1905
1906 __mmask8 test_mm_cmp_ps_mask_eq_oq(__m128 a, __m128 b) {
1907   // CHECK-LABEL: @test_mm_cmp_ps_mask_eq_oq
1908   // CHECK: fcmp oeq <4 x float> %{{.*}}, %{{.*}}
1909   return _mm_cmp_ps_mask(a, b, _CMP_EQ_OQ);
1910 }
1911
1912 __mmask8 test_mm_cmp_ps_mask_lt_os(__m128 a, __m128 b) {
1913   // CHECK-LABEL: test_mm_cmp_ps_mask_lt_os
1914   // CHECK: fcmp olt <4 x float> %{{.*}}, %{{.*}}
1915   return _mm_cmp_ps_mask(a, b, _CMP_LT_OS);
1916 }
1917
1918 __mmask8 test_mm_cmp_ps_mask_le_os(__m128 a, __m128 b) {
1919   // CHECK-LABEL: test_mm_cmp_ps_mask_le_os
1920   // CHECK: fcmp ole <4 x float> %{{.*}}, %{{.*}}
1921   return _mm_cmp_ps_mask(a, b, _CMP_LE_OS);
1922 }
1923
1924 __mmask8 test_mm_cmp_ps_mask_unord_q(__m128 a, __m128 b) {
1925   // CHECK-LABEL: test_mm_cmp_ps_mask_unord_q
1926   // CHECK: fcmp uno <4 x float> %{{.*}}, %{{.*}}
1927   return _mm_cmp_ps_mask(a, b, _CMP_UNORD_Q);
1928 }
1929
1930 __mmask8 test_mm_cmp_ps_mask_neq_uq(__m128 a, __m128 b) {
1931   // CHECK-LABEL: test_mm_cmp_ps_mask_neq_uq
1932   // CHECK: fcmp une <4 x float> %{{.*}}, %{{.*}}
1933   return _mm_cmp_ps_mask(a, b, _CMP_NEQ_UQ);
1934 }
1935
1936 __mmask8 test_mm_cmp_ps_mask_nlt_us(__m128 a, __m128 b) {
1937   // CHECK-LABEL: test_mm_cmp_ps_mask_nlt_us
1938   // CHECK: fcmp uge <4 x float> %{{.*}}, %{{.*}}
1939   return _mm_cmp_ps_mask(a, b, _CMP_NLT_US);
1940 }
1941
1942 __mmask8 test_mm_cmp_ps_mask_nle_us(__m128 a, __m128 b) {
1943   // CHECK-LABEL: test_mm_cmp_ps_mask_nle_us
1944   // CHECK: fcmp ugt <4 x float> %{{.*}}, %{{.*}}
1945   return _mm_cmp_ps_mask(a, b, _CMP_NLE_US);
1946 }
1947
1948 __mmask8 test_mm_cmp_ps_mask_ord_q(__m128 a, __m128 b) {
1949   // CHECK-LABEL: test_mm_cmp_ps_mask_ord_q
1950   // CHECK: fcmp ord <4 x float> %{{.*}}, %{{.*}}
1951   return _mm_cmp_ps_mask(a, b, _CMP_ORD_Q);
1952 }
1953
1954 __mmask8 test_mm_cmp_ps_mask_eq_uq(__m128 a, __m128 b) {
1955   // CHECK-LABEL: test_mm_cmp_ps_mask_eq_uq
1956   // CHECK: fcmp ueq <4 x float> %{{.*}}, %{{.*}}
1957   return _mm_cmp_ps_mask(a, b, _CMP_EQ_UQ);
1958 }
1959
1960 __mmask8 test_mm_cmp_ps_mask_nge_us(__m128 a, __m128 b) {
1961   // CHECK-LABEL: test_mm_cmp_ps_mask_nge_us
1962   // CHECK: fcmp ult <4 x float> %{{.*}}, %{{.*}}
1963   return _mm_cmp_ps_mask(a, b, _CMP_NGE_US);
1964 }
1965
1966 __mmask8 test_mm_cmp_ps_mask_ngt_us(__m128 a, __m128 b) {
1967   // CHECK-LABEL: test_mm_cmp_ps_mask_ngt_us
1968   // CHECK: fcmp ule <4 x float> %{{.*}}, %{{.*}}
1969   return _mm_cmp_ps_mask(a, b, _CMP_NGT_US);
1970 }
1971
1972 __mmask8 test_mm_cmp_ps_mask_false_oq(__m128 a, __m128 b) {
1973   // CHECK-LABEL: test_mm_cmp_ps_mask_false_oq
1974   // CHECK: fcmp false <4 x float> %{{.*}}, %{{.*}}
1975   return _mm_cmp_ps_mask(a, b, _CMP_FALSE_OQ);
1976 }
1977
1978 __mmask8 test_mm_cmp_ps_mask_neq_oq(__m128 a, __m128 b) {
1979   // CHECK-LABEL: test_mm_cmp_ps_mask_neq_oq
1980   // CHECK: fcmp one <4 x float> %{{.*}}, %{{.*}}
1981   return _mm_cmp_ps_mask(a, b, _CMP_NEQ_OQ);
1982 }
1983
1984 __mmask8 test_mm_cmp_ps_mask_ge_os(__m128 a, __m128 b) {
1985   // CHECK-LABEL: test_mm_cmp_ps_mask_ge_os
1986   // CHECK: fcmp oge <4 x float> %{{.*}}, %{{.*}}
1987   return _mm_cmp_ps_mask(a, b, _CMP_GE_OS);
1988 }
1989
1990 __mmask8 test_mm_cmp_ps_mask_gt_os(__m128 a, __m128 b) {
1991   // CHECK-LABEL: test_mm_cmp_ps_mask_gt_os
1992   // CHECK: fcmp ogt <4 x float> %{{.*}}, %{{.*}}
1993   return _mm_cmp_ps_mask(a, b, _CMP_GT_OS);
1994 }
1995
1996 __mmask8 test_mm_cmp_ps_mask_true_uq(__m128 a, __m128 b) {
1997   // CHECK-LABEL: test_mm_cmp_ps_mask_true_uq
1998   // CHECK: fcmp true <4 x float> %{{.*}}, %{{.*}}
1999   return _mm_cmp_ps_mask(a, b, _CMP_TRUE_UQ);
2000 }
2001
2002 __mmask8 test_mm_cmp_ps_mask_eq_os(__m128 a, __m128 b) {
2003   // CHECK-LABEL: test_mm_cmp_ps_mask_eq_os
2004   // CHECK: fcmp oeq <4 x float> %{{.*}}, %{{.*}}
2005   return _mm_cmp_ps_mask(a, b, _CMP_EQ_OS);
2006 }
2007
2008 __mmask8 test_mm_cmp_ps_mask_lt_oq(__m128 a, __m128 b) {
2009   // CHECK-LABEL: test_mm_cmp_ps_mask_lt_oq
2010   // CHECK: fcmp olt <4 x float> %{{.*}}, %{{.*}}
2011   return _mm_cmp_ps_mask(a, b, _CMP_LT_OQ);
2012 }
2013
2014 __mmask8 test_mm_cmp_ps_mask_le_oq(__m128 a, __m128 b) {
2015   // CHECK-LABEL: test_mm_cmp_ps_mask_le_oq
2016   // CHECK: fcmp ole <4 x float> %{{.*}}, %{{.*}}
2017   return _mm_cmp_ps_mask(a, b, _CMP_LE_OQ);
2018 }
2019
2020 __mmask8 test_mm_cmp_ps_mask_unord_s(__m128 a, __m128 b) {
2021   // CHECK-LABEL: test_mm_cmp_ps_mask_unord_s
2022   // CHECK: fcmp uno <4 x float> %{{.*}}, %{{.*}}
2023   return _mm_cmp_ps_mask(a, b, _CMP_UNORD_S);
2024 }
2025
2026 __mmask8 test_mm_cmp_ps_mask_neq_us(__m128 a, __m128 b) {
2027   // CHECK-LABEL: test_mm_cmp_ps_mask_neq_us
2028   // CHECK: fcmp une <4 x float> %{{.*}}, %{{.*}}
2029   return _mm_cmp_ps_mask(a, b, _CMP_NEQ_US);
2030 }
2031
2032 __mmask8 test_mm_cmp_ps_mask_nlt_uq(__m128 a, __m128 b) {
2033   // CHECK-LABEL: test_mm_cmp_ps_mask_nlt_uq
2034   // CHECK: fcmp uge <4 x float> %{{.*}}, %{{.*}}
2035   return _mm_cmp_ps_mask(a, b, _CMP_NLT_UQ);
2036 }
2037
2038 __mmask8 test_mm_cmp_ps_mask_nle_uq(__m128 a, __m128 b) {
2039   // CHECK-LABEL: test_mm_cmp_ps_mask_nle_uq
2040   // CHECK: fcmp ugt <4 x float> %{{.*}}, %{{.*}}
2041   return _mm_cmp_ps_mask(a, b, _CMP_NLE_UQ);
2042 }
2043
2044 __mmask8 test_mm_cmp_ps_mask_ord_s(__m128 a, __m128 b) {
2045   // CHECK-LABEL: test_mm_cmp_ps_mask_ord_s
2046   // CHECK: fcmp ord <4 x float> %{{.*}}, %{{.*}}
2047   return _mm_cmp_ps_mask(a, b, _CMP_ORD_S);
2048 }
2049
2050 __mmask8 test_mm_cmp_ps_mask_eq_us(__m128 a, __m128 b) {
2051   // CHECK-LABEL: test_mm_cmp_ps_mask_eq_us
2052   // CHECK: fcmp ueq <4 x float> %{{.*}}, %{{.*}}
2053   return _mm_cmp_ps_mask(a, b, _CMP_EQ_US);
2054 }
2055
2056 __mmask8 test_mm_cmp_ps_mask_nge_uq(__m128 a, __m128 b) {
2057   // CHECK-LABEL: test_mm_cmp_ps_mask_nge_uq
2058   // CHECK: fcmp ult <4 x float> %{{.*}}, %{{.*}}
2059   return _mm_cmp_ps_mask(a, b, _CMP_NGE_UQ);
2060 }
2061
2062 __mmask8 test_mm_cmp_ps_mask_ngt_uq(__m128 a, __m128 b) {
2063   // CHECK-LABEL: test_mm_cmp_ps_mask_ngt_uq
2064   // CHECK: fcmp ule <4 x float> %{{.*}}, %{{.*}}
2065   return _mm_cmp_ps_mask(a, b, _CMP_NGT_UQ);
2066 }
2067
2068 __mmask8 test_mm_cmp_ps_mask_false_os(__m128 a, __m128 b) {
2069   // CHECK-LABEL: test_mm_cmp_ps_mask_false_os
2070   // CHECK: fcmp false <4 x float> %{{.*}}, %{{.*}}
2071   return _mm_cmp_ps_mask(a, b, _CMP_FALSE_OS);
2072 }
2073
2074 __mmask8 test_mm_cmp_ps_mask_neq_os(__m128 a, __m128 b) {
2075   // CHECK-LABEL: test_mm_cmp_ps_mask_neq_os
2076   // CHECK: fcmp one <4 x float> %{{.*}}, %{{.*}}
2077   return _mm_cmp_ps_mask(a, b, _CMP_NEQ_OS);
2078 }
2079
2080 __mmask8 test_mm_cmp_ps_mask_ge_oq(__m128 a, __m128 b) {
2081   // CHECK-LABEL: test_mm_cmp_ps_mask_ge_oq
2082   // CHECK: fcmp oge <4 x float> %{{.*}}, %{{.*}}
2083   return _mm_cmp_ps_mask(a, b, _CMP_GE_OQ);
2084 }
2085
2086 __mmask8 test_mm_cmp_ps_mask_gt_oq(__m128 a, __m128 b) {
2087   // CHECK-LABEL: test_mm_cmp_ps_mask_gt_oq
2088   // CHECK: fcmp ogt <4 x float> %{{.*}}, %{{.*}}
2089   return _mm_cmp_ps_mask(a, b, _CMP_GT_OQ);
2090 }
2091
2092 __mmask8 test_mm_cmp_ps_mask_true_us(__m128 a, __m128 b) {
2093   // CHECK-LABEL: test_mm_cmp_ps_mask_true_us
2094   // CHECK: fcmp true <4 x float> %{{.*}}, %{{.*}}
2095   return _mm_cmp_ps_mask(a, b, _CMP_TRUE_US);
2096 }
2097
2098 __mmask8 test_mm_mask_cmp_ps_mask_eq_oq(__mmask8 m, __m128 a, __m128 b) {
2099   // CHECK-LABEL: @test_mm_mask_cmp_ps_mask_eq_oq
2100   // CHECK: [[CMP:%.*]] = fcmp oeq <4 x float> %{{.*}}, %{{.*}}
2101   // CHECK: and <4 x i1> [[CMP]], {{.*}}
2102   return _mm_mask_cmp_ps_mask(m, a, b, _CMP_EQ_OQ);
2103 }
2104
2105 __mmask8 test_mm_mask_cmp_ps_mask_lt_os(__mmask8 m, __m128 a, __m128 b) {
2106   // CHECK-LABEL: test_mm_mask_cmp_ps_mask_lt_os
2107   // CHECK: [[CMP:%.*]] = fcmp olt <4 x float> %{{.*}}, %{{.*}}
2108   // CHECK: and <4 x i1> [[CMP]], {{.*}}
2109   return _mm_mask_cmp_ps_mask(m, a, b, _CMP_LT_OS);
2110 }
2111
2112 __mmask8 test_mm_mask_cmp_ps_mask_le_os(__mmask8 m, __m128 a, __m128 b) {
2113   // CHECK-LABEL: test_mm_mask_cmp_ps_mask_le_os
2114   // CHECK: [[CMP:%.*]] = fcmp ole <4 x float> %{{.*}}, %{{.*}}
2115   // CHECK: and <4 x i1> [[CMP]], {{.*}}
2116   return _mm_mask_cmp_ps_mask(m, a, b, _CMP_LE_OS);
2117 }
2118
2119 __mmask8 test_mm_mask_cmp_ps_mask_unord_q(__mmask8 m, __m128 a, __m128 b) {
2120   // CHECK-LABEL: test_mm_mask_cmp_ps_mask_unord_q
2121   // CHECK: [[CMP:%.*]] = fcmp uno <4 x float> %{{.*}}, %{{.*}}
2122   // CHECK: and <4 x i1> [[CMP]], {{.*}}
2123   return _mm_mask_cmp_ps_mask(m, a, b, _CMP_UNORD_Q);
2124 }
2125
2126 __mmask8 test_mm_mask_cmp_ps_mask_neq_uq(__mmask8 m, __m128 a, __m128 b) {
2127   // CHECK-LABEL: test_mm_mask_cmp_ps_mask_neq_uq
2128   // CHECK: [[CMP:%.*]] = fcmp une <4 x float> %{{.*}}, %{{.*}}
2129   // CHECK: and <4 x i1> [[CMP]], {{.*}}
2130   return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_UQ);
2131 }
2132
2133 __mmask8 test_mm_mask_cmp_ps_mask_nlt_us(__mmask8 m, __m128 a, __m128 b) {
2134   // CHECK-LABEL: test_mm_mask_cmp_ps_mask_nlt_us
2135   // CHECK: [[CMP:%.*]] = fcmp uge <4 x float> %{{.*}}, %{{.*}}
2136   // CHECK: and <4 x i1> [[CMP]], {{.*}}
2137   return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NLT_US);
2138 }
2139
2140 __mmask8 test_mm_mask_cmp_ps_mask_nle_us(__mmask8 m, __m128 a, __m128 b) {
2141   // CHECK-LABEL: test_mm_mask_cmp_ps_mask_nle_us
2142   // CHECK: [[CMP:%.*]] = fcmp ugt <4 x float> %{{.*}}, %{{.*}}
2143   // CHECK: and <4 x i1> [[CMP]], {{.*}}
2144   return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NLE_US);
2145 }
2146
2147 __mmask8 test_mm_mask_cmp_ps_mask_ord_q(__mmask8 m, __m128 a, __m128 b) {
2148   // CHECK-LABEL: test_mm_mask_cmp_ps_mask_ord_q
2149   // CHECK: [[CMP:%.*]] = fcmp ord <4 x float> %{{.*}}, %{{.*}}
2150   // CHECK: and <4 x i1> [[CMP]], {{.*}}
2151   return _mm_mask_cmp_ps_mask(m, a, b, _CMP_ORD_Q);
2152 }
2153
2154 __mmask8 test_mm_mask_cmp_ps_mask_eq_uq(__mmask8 m, __m128 a, __m128 b) {
2155   // CHECK-LABEL: test_mm_mask_cmp_ps_mask_eq_uq
2156   // CHECK: [[CMP:%.*]] = fcmp ueq <4 x float> %{{.*}}, %{{.*}}
2157   // CHECK: and <4 x i1> [[CMP]], {{.*}}
2158   return _mm_mask_cmp_ps_mask(m, a, b, _CMP_EQ_UQ);
2159 }
2160
2161 __mmask8 test_mm_mask_cmp_ps_mask_nge_us(__mmask8 m, __m128 a, __m128 b) {
2162   // CHECK-LABEL: test_mm_mask_cmp_ps_mask_nge_us
2163   // CHECK: [[CMP:%.*]] = fcmp ult <4 x float> %{{.*}}, %{{.*}}
2164   // CHECK: and <4 x i1> [[CMP]], {{.*}}
2165   return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NGE_US);
2166 }
2167
2168 __mmask8 test_mm_mask_cmp_ps_mask_ngt_us(__mmask8 m, __m128 a, __m128 b) {
2169   // CHECK-LABEL: test_mm_mask_cmp_ps_mask_ngt_us
2170   // CHECK: [[CMP:%.*]] = fcmp ule <4 x float> %{{.*}}, %{{.*}}
2171   // CHECK: and <4 x i1> [[CMP]], {{.*}}
2172   return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NGT_US);
2173 }
2174
2175 __mmask8 test_mm_mask_cmp_ps_mask_false_oq(__mmask8 m, __m128 a, __m128 b) {
2176   // CHECK-LABEL: test_mm_mask_cmp_ps_mask_false_oq
2177   // CHECK: [[CMP:%.*]] = fcmp false <4 x float> %{{.*}}, %{{.*}}
2178   // CHECK: and <4 x i1> [[CMP]], {{.*}}
2179   return _mm_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OQ);
2180 }
2181
2182 __mmask8 test_mm_mask_cmp_ps_mask_neq_oq(__mmask8 m, __m128 a, __m128 b) {
2183   // CHECK-LABEL: test_mm_mask_cmp_ps_mask_neq_oq
2184   // CHECK: [[CMP:%.*]] = fcmp one <4 x float> %{{.*}}, %{{.*}}
2185   // CHECK: and <4 x i1> [[CMP]], {{.*}}
2186   return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_OQ);
2187 }
2188
2189 __mmask8 test_mm_mask_cmp_ps_mask_ge_os(__mmask8 m, __m128 a, __m128 b) {
2190   // CHECK-LABEL: test_mm_mask_cmp_ps_mask_ge_os
2191   // CHECK: [[CMP:%.*]] = fcmp oge <4 x float> %{{.*}}, %{{.*}}
2192   // CHECK: and <4 x i1> [[CMP]], {{.*}}
2193   return _mm_mask_cmp_ps_mask(m, a, b, _CMP_GE_OS);
2194 }
2195
2196 __mmask8 test_mm_mask_cmp_ps_mask_gt_os(__mmask8 m, __m128 a, __m128 b) {
2197   // CHECK-LABEL: test_mm_mask_cmp_ps_mask_gt_os
2198   // CHECK: [[CMP:%.*]] = fcmp ogt <4 x float> %{{.*}}, %{{.*}}
2199   // CHECK: and <4 x i1> [[CMP]], {{.*}}
2200   return _mm_mask_cmp_ps_mask(m, a, b, _CMP_GT_OS);
2201 }
2202
2203 __mmask8 test_mm_mask_cmp_ps_mask_true_uq(__mmask8 m, __m128 a, __m128 b) {
2204   // CHECK-LABEL: test_mm_mask_cmp_ps_mask_true_uq
2205   // CHECK: [[CMP:%.*]] = fcmp true <4 x float> %{{.*}}, %{{.*}}
2206   // CHECK: and <4 x i1> [[CMP]], {{.*}}
2207   return _mm_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_UQ);
2208 }
2209
2210 __mmask8 test_mm_mask_cmp_ps_mask_eq_os(__mmask8 m, __m128 a, __m128 b) {
2211   // CHECK-LABEL: test_mm_mask_cmp_ps_mask_eq_os
2212   // CHECK: [[CMP:%.*]] = fcmp oeq <4 x float> %{{.*}}, %{{.*}}
2213   // CHECK: and <4 x i1> [[CMP]], {{.*}}
2214   return _mm_mask_cmp_ps_mask(m, a, b, _CMP_EQ_OS);
2215 }
2216
2217 __mmask8 test_mm_mask_cmp_ps_mask_lt_oq(__mmask8 m, __m128 a, __m128 b) {
2218   // CHECK-LABEL: test_mm_mask_cmp_ps_mask_lt_oq
2219   // CHECK: [[CMP:%.*]] = fcmp olt <4 x float> %{{.*}}, %{{.*}}
2220   // CHECK: and <4 x i1> [[CMP]], {{.*}}
2221   return _mm_mask_cmp_ps_mask(m, a, b, _CMP_LT_OQ);
2222 }
2223
2224 __mmask8 test_mm_mask_cmp_ps_mask_le_oq(__mmask8 m, __m128 a, __m128 b) {
2225   // CHECK-LABEL: test_mm_mask_cmp_ps_mask_le_oq
2226   // CHECK: [[CMP:%.*]] = fcmp ole <4 x float> %{{.*}}, %{{.*}}
2227   // CHECK: and <4 x i1> [[CMP]], {{.*}}
2228   return _mm_mask_cmp_ps_mask(m, a, b, _CMP_LE_OQ);
2229 }
2230
2231 __mmask8 test_mm_mask_cmp_ps_mask_unord_s(__mmask8 m, __m128 a, __m128 b) {
2232   // CHECK-LABEL: test_mm_mask_cmp_ps_mask_unord_s
2233   // CHECK: [[CMP:%.*]] = fcmp uno <4 x float> %{{.*}}, %{{.*}}
2234   // CHECK: and <4 x i1> [[CMP]], {{.*}}
2235   return _mm_mask_cmp_ps_mask(m, a, b, _CMP_UNORD_S);
2236 }
2237
2238 __mmask8 test_mm_mask_cmp_ps_mask_neq_us(__mmask8 m, __m128 a, __m128 b) {
2239   // CHECK-LABEL: test_mm_mask_cmp_ps_mask_neq_us
2240   // CHECK: [[CMP:%.*]] = fcmp une <4 x float> %{{.*}}, %{{.*}}
2241   // CHECK: and <4 x i1> [[CMP]], {{.*}}
2242   return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_US);
2243 }
2244
2245 __mmask8 test_mm_mask_cmp_ps_mask_nlt_uq(__mmask8 m, __m128 a, __m128 b) {
2246   // CHECK-LABEL: test_mm_mask_cmp_ps_mask_nlt_uq
2247   // CHECK: [[CMP:%.*]] = fcmp uge <4 x float> %{{.*}}, %{{.*}}
2248   // CHECK: and <4 x i1> [[CMP]], {{.*}}
2249   return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NLT_UQ);
2250 }
2251
2252 __mmask8 test_mm_mask_cmp_ps_mask_nle_uq(__mmask8 m, __m128 a, __m128 b) {
2253   // CHECK-LABEL: test_mm_mask_cmp_ps_mask_nle_uq
2254   // CHECK: [[CMP:%.*]] = fcmp ugt <4 x float> %{{.*}}, %{{.*}}
2255   // CHECK: and <4 x i1> [[CMP]], {{.*}}
2256   return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NLE_UQ);
2257 }
2258
2259 __mmask8 test_mm_mask_cmp_ps_mask_ord_s(__mmask8 m, __m128 a, __m128 b) {
2260   // CHECK-LABEL: test_mm_mask_cmp_ps_mask_ord_s
2261   // CHECK: [[CMP:%.*]] = fcmp ord <4 x float> %{{.*}}, %{{.*}}
2262   // CHECK: and <4 x i1> [[CMP]], {{.*}}
2263   return _mm_mask_cmp_ps_mask(m, a, b, _CMP_ORD_S);
2264 }
2265
2266 __mmask8 test_mm_mask_cmp_ps_mask_eq_us(__mmask8 m, __m128 a, __m128 b) {
2267   // CHECK-LABEL: test_mm_mask_cmp_ps_mask_eq_us
2268   // CHECK: [[CMP:%.*]] = fcmp ueq <4 x float> %{{.*}}, %{{.*}}
2269   // CHECK: and <4 x i1> [[CMP]], {{.*}}
2270   return _mm_mask_cmp_ps_mask(m, a, b, _CMP_EQ_US);
2271 }
2272
2273 __mmask8 test_mm_mask_cmp_ps_mask_nge_uq(__mmask8 m, __m128 a, __m128 b) {
2274   // CHECK-LABEL: test_mm_mask_cmp_ps_mask_nge_uq
2275   // CHECK: [[CMP:%.*]] = fcmp ult <4 x float> %{{.*}}, %{{.*}}
2276   // CHECK: and <4 x i1> [[CMP]], {{.*}}
2277   return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NGE_UQ);
2278 }
2279
2280 __mmask8 test_mm_mask_cmp_ps_mask_ngt_uq(__mmask8 m, __m128 a, __m128 b) {
2281   // CHECK-LABEL: test_mm_mask_cmp_ps_mask_ngt_uq
2282   // CHECK: [[CMP:%.*]] = fcmp ule <4 x float> %{{.*}}, %{{.*}}
2283   // CHECK: and <4 x i1> [[CMP]], {{.*}}
2284   return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NGT_UQ);
2285 }
2286
2287 __mmask8 test_mm_mask_cmp_ps_mask_false_os(__mmask8 m, __m128 a, __m128 b) {
2288   // CHECK-LABEL: test_mm_mask_cmp_ps_mask_false_os
2289   // CHECK: [[CMP:%.*]] = fcmp false <4 x float> %{{.*}}, %{{.*}}
2290   // CHECK: and <4 x i1> [[CMP]], {{.*}}
2291   return _mm_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OS);
2292 }
2293
2294 __mmask8 test_mm_mask_cmp_ps_mask_neq_os(__mmask8 m, __m128 a, __m128 b) {
2295   // CHECK-LABEL: test_mm_mask_cmp_ps_mask_neq_os
2296   // CHECK: [[CMP:%.*]] = fcmp one <4 x float> %{{.*}}, %{{.*}}
2297   // CHECK: and <4 x i1> [[CMP]], {{.*}}
2298   return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_OS);
2299 }
2300
2301 __mmask8 test_mm_mask_cmp_ps_mask_ge_oq(__mmask8 m, __m128 a, __m128 b) {
2302   // CHECK-LABEL: test_mm_mask_cmp_ps_mask_ge_oq
2303   // CHECK: [[CMP:%.*]] = fcmp oge <4 x float> %{{.*}}, %{{.*}}
2304   // CHECK: and <4 x i1> [[CMP]], {{.*}}
2305   return _mm_mask_cmp_ps_mask(m, a, b, _CMP_GE_OQ);
2306 }
2307
2308 __mmask8 test_mm_mask_cmp_ps_mask_gt_oq(__mmask8 m, __m128 a, __m128 b) {
2309   // CHECK-LABEL: test_mm_mask_cmp_ps_mask_gt_oq
2310   // CHECK: [[CMP:%.*]] = fcmp ogt <4 x float> %{{.*}}, %{{.*}}
2311   // CHECK: and <4 x i1> [[CMP]], {{.*}}
2312   return _mm_mask_cmp_ps_mask(m, a, b, _CMP_GT_OQ);
2313 }
2314
2315 __mmask8 test_mm_mask_cmp_ps_mask_true_us(__mmask8 m, __m128 a, __m128 b) {
2316   // CHECK-LABEL: test_mm_mask_cmp_ps_mask_true_us
2317   // CHECK: [[CMP:%.*]] = fcmp true <4 x float> %{{.*}}, %{{.*}}
2318   // CHECK: and <4 x i1> [[CMP]], {{.*}}
2319   return _mm_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_US);
2320 }
2321
2322 __mmask8 test_mm_cmp_pd_mask_eq_oq(__m128d a, __m128d b) {
2323   // CHECK-LABEL: @test_mm_cmp_pd_mask_eq_oq
2324   // CHECK: fcmp oeq <2 x double> %{{.*}}, %{{.*}}
2325   return _mm_cmp_pd_mask(a, b, _CMP_EQ_OQ);
2326 }
2327
2328 __mmask8 test_mm_cmp_pd_mask_lt_os(__m128d a, __m128d b) {
2329   // CHECK-LABEL: test_mm_cmp_pd_mask_lt_os
2330   // CHECK: fcmp olt <2 x double> %{{.*}}, %{{.*}}
2331   return _mm_cmp_pd_mask(a, b, _CMP_LT_OS);
2332 }
2333
2334 __mmask8 test_mm_cmp_pd_mask_le_os(__m128d a, __m128d b) {
2335   // CHECK-LABEL: test_mm_cmp_pd_mask_le_os
2336   // CHECK: fcmp ole <2 x double> %{{.*}}, %{{.*}}
2337   return _mm_cmp_pd_mask(a, b, _CMP_LE_OS);
2338 }
2339
2340 __mmask8 test_mm_cmp_pd_mask_unord_q(__m128d a, __m128d b) {
2341   // CHECK-LABEL: test_mm_cmp_pd_mask_unord_q
2342   // CHECK: fcmp uno <2 x double> %{{.*}}, %{{.*}}
2343   return _mm_cmp_pd_mask(a, b, _CMP_UNORD_Q);
2344 }
2345
2346 __mmask8 test_mm_cmp_pd_mask_neq_uq(__m128d a, __m128d b) {
2347   // CHECK-LABEL: test_mm_cmp_pd_mask_neq_uq
2348   // CHECK: fcmp une <2 x double> %{{.*}}, %{{.*}}
2349   return _mm_cmp_pd_mask(a, b, _CMP_NEQ_UQ);
2350 }
2351
2352 __mmask8 test_mm_cmp_pd_mask_nlt_us(__m128d a, __m128d b) {
2353   // CHECK-LABEL: test_mm_cmp_pd_mask_nlt_us
2354   // CHECK: fcmp uge <2 x double> %{{.*}}, %{{.*}}
2355   return _mm_cmp_pd_mask(a, b, _CMP_NLT_US);
2356 }
2357
2358 __mmask8 test_mm_cmp_pd_mask_nle_us(__m128d a, __m128d b) {
2359   // CHECK-LABEL: test_mm_cmp_pd_mask_nle_us
2360   // CHECK: fcmp ugt <2 x double> %{{.*}}, %{{.*}}
2361   return _mm_cmp_pd_mask(a, b, _CMP_NLE_US);
2362 }
2363
2364 __mmask8 test_mm_cmp_pd_mask_ord_q(__m128d a, __m128d b) {
2365   // CHECK-LABEL: test_mm_cmp_pd_mask_ord_q
2366   // CHECK: fcmp ord <2 x double> %{{.*}}, %{{.*}}
2367   return _mm_cmp_pd_mask(a, b, _CMP_ORD_Q);
2368 }
2369
2370 __mmask8 test_mm_cmp_pd_mask_eq_uq(__m128d a, __m128d b) {
2371   // CHECK-LABEL: test_mm_cmp_pd_mask_eq_uq
2372   // CHECK: fcmp ueq <2 x double> %{{.*}}, %{{.*}}
2373   return _mm_cmp_pd_mask(a, b, _CMP_EQ_UQ);
2374 }
2375
2376 __mmask8 test_mm_cmp_pd_mask_nge_us(__m128d a, __m128d b) {
2377   // CHECK-LABEL: test_mm_cmp_pd_mask_nge_us
2378   // CHECK: fcmp ult <2 x double> %{{.*}}, %{{.*}}
2379   return _mm_cmp_pd_mask(a, b, _CMP_NGE_US);
2380 }
2381
2382 __mmask8 test_mm_cmp_pd_mask_ngt_us(__m128d a, __m128d b) {
2383   // CHECK-LABEL: test_mm_cmp_pd_mask_ngt_us
2384   // CHECK: fcmp ule <2 x double> %{{.*}}, %{{.*}}
2385   return _mm_cmp_pd_mask(a, b, _CMP_NGT_US);
2386 }
2387
2388 __mmask8 test_mm_cmp_pd_mask_false_oq(__m128d a, __m128d b) {
2389   // CHECK-LABEL: test_mm_cmp_pd_mask_false_oq
2390   // CHECK: fcmp false <2 x double> %{{.*}}, %{{.*}}
2391   return _mm_cmp_pd_mask(a, b, _CMP_FALSE_OQ);
2392 }
2393
2394 __mmask8 test_mm_cmp_pd_mask_neq_oq(__m128d a, __m128d b) {
2395   // CHECK-LABEL: test_mm_cmp_pd_mask_neq_oq
2396   // CHECK: fcmp one <2 x double> %{{.*}}, %{{.*}}
2397   return _mm_cmp_pd_mask(a, b, _CMP_NEQ_OQ);
2398 }
2399
2400 __mmask8 test_mm_cmp_pd_mask_ge_os(__m128d a, __m128d b) {
2401   // CHECK-LABEL: test_mm_cmp_pd_mask_ge_os
2402   // CHECK: fcmp oge <2 x double> %{{.*}}, %{{.*}}
2403   return _mm_cmp_pd_mask(a, b, _CMP_GE_OS);
2404 }
2405
2406 __mmask8 test_mm_cmp_pd_mask_gt_os(__m128d a, __m128d b) {
2407   // CHECK-LABEL: test_mm_cmp_pd_mask_gt_os
2408   // CHECK: fcmp ogt <2 x double> %{{.*}}, %{{.*}}
2409   return _mm_cmp_pd_mask(a, b, _CMP_GT_OS);
2410 }
2411
2412 __mmask8 test_mm_cmp_pd_mask_true_uq(__m128d a, __m128d b) {
2413   // CHECK-LABEL: test_mm_cmp_pd_mask_true_uq
2414   // CHECK: fcmp true <2 x double> %{{.*}}, %{{.*}}
2415   return _mm_cmp_pd_mask(a, b, _CMP_TRUE_UQ);
2416 }
2417
2418 __mmask8 test_mm_cmp_pd_mask_eq_os(__m128d a, __m128d b) {
2419   // CHECK-LABEL: test_mm_cmp_pd_mask_eq_os
2420   // CHECK: fcmp oeq <2 x double> %{{.*}}, %{{.*}}
2421   return _mm_cmp_pd_mask(a, b, _CMP_EQ_OS);
2422 }
2423
2424 __mmask8 test_mm_cmp_pd_mask_lt_oq(__m128d a, __m128d b) {
2425   // CHECK-LABEL: test_mm_cmp_pd_mask_lt_oq
2426   // CHECK: fcmp olt <2 x double> %{{.*}}, %{{.*}}
2427   return _mm_cmp_pd_mask(a, b, _CMP_LT_OQ);
2428 }
2429
2430 __mmask8 test_mm_cmp_pd_mask_le_oq(__m128d a, __m128d b) {
2431   // CHECK-LABEL: test_mm_cmp_pd_mask_le_oq
2432   // CHECK: fcmp ole <2 x double> %{{.*}}, %{{.*}}
2433   return _mm_cmp_pd_mask(a, b, _CMP_LE_OQ);
2434 }
2435
2436 __mmask8 test_mm_cmp_pd_mask_unord_s(__m128d a, __m128d b) {
2437   // CHECK-LABEL: test_mm_cmp_pd_mask_unord_s
2438   // CHECK: fcmp uno <2 x double> %{{.*}}, %{{.*}}
2439   return _mm_cmp_pd_mask(a, b, _CMP_UNORD_S);
2440 }
2441
2442 __mmask8 test_mm_cmp_pd_mask_neq_us(__m128d a, __m128d b) {
2443   // CHECK-LABEL: test_mm_cmp_pd_mask_neq_us
2444   // CHECK: fcmp une <2 x double> %{{.*}}, %{{.*}}
2445   return _mm_cmp_pd_mask(a, b, _CMP_NEQ_US);
2446 }
2447
2448 __mmask8 test_mm_cmp_pd_mask_nlt_uq(__m128d a, __m128d b) {
2449   // CHECK-LABEL: test_mm_cmp_pd_mask_nlt_uq
2450   // CHECK: fcmp uge <2 x double> %{{.*}}, %{{.*}}
2451   return _mm_cmp_pd_mask(a, b, _CMP_NLT_UQ);
2452 }
2453
2454 __mmask8 test_mm_cmp_pd_mask_nle_uq(__m128d a, __m128d b) {
2455   // CHECK-LABEL: test_mm_cmp_pd_mask_nle_uq
2456   // CHECK: fcmp ugt <2 x double> %{{.*}}, %{{.*}}
2457   return _mm_cmp_pd_mask(a, b, _CMP_NLE_UQ);
2458 }
2459
2460 __mmask8 test_mm_cmp_pd_mask_ord_s(__m128d a, __m128d b) {
2461   // CHECK-LABEL: test_mm_cmp_pd_mask_ord_s
2462   // CHECK: fcmp ord <2 x double> %{{.*}}, %{{.*}}
2463   return _mm_cmp_pd_mask(a, b, _CMP_ORD_S);
2464 }
2465
2466 __mmask8 test_mm_cmp_pd_mask_eq_us(__m128d a, __m128d b) {
2467   // CHECK-LABEL: test_mm_cmp_pd_mask_eq_us
2468   // CHECK: fcmp ueq <2 x double> %{{.*}}, %{{.*}}
2469   return _mm_cmp_pd_mask(a, b, _CMP_EQ_US);
2470 }
2471
2472 __mmask8 test_mm_cmp_pd_mask_nge_uq(__m128d a, __m128d b) {
2473   // CHECK-LABEL: test_mm_cmp_pd_mask_nge_uq
2474   // CHECK: fcmp ult <2 x double> %{{.*}}, %{{.*}}
2475   return _mm_cmp_pd_mask(a, b, _CMP_NGE_UQ);
2476 }
2477
2478 __mmask8 test_mm_cmp_pd_mask_ngt_uq(__m128d a, __m128d b) {
2479   // CHECK-LABEL: test_mm_cmp_pd_mask_ngt_uq
2480   // CHECK: fcmp ule <2 x double> %{{.*}}, %{{.*}}
2481   return _mm_cmp_pd_mask(a, b, _CMP_NGT_UQ);
2482 }
2483
2484 __mmask8 test_mm_cmp_pd_mask_false_os(__m128d a, __m128d b) {
2485   // CHECK-LABEL: test_mm_cmp_pd_mask_false_os
2486   // CHECK: fcmp false <2 x double> %{{.*}}, %{{.*}}
2487   return _mm_cmp_pd_mask(a, b, _CMP_FALSE_OS);
2488 }
2489
2490 __mmask8 test_mm_cmp_pd_mask_neq_os(__m128d a, __m128d b) {
2491   // CHECK-LABEL: test_mm_cmp_pd_mask_neq_os
2492   // CHECK: fcmp one <2 x double> %{{.*}}, %{{.*}}
2493   return _mm_cmp_pd_mask(a, b, _CMP_NEQ_OS);
2494 }
2495
2496 __mmask8 test_mm_cmp_pd_mask_ge_oq(__m128d a, __m128d b) {
2497   // CHECK-LABEL: test_mm_cmp_pd_mask_ge_oq
2498   // CHECK: fcmp oge <2 x double> %{{.*}}, %{{.*}}
2499   return _mm_cmp_pd_mask(a, b, _CMP_GE_OQ);
2500 }
2501
2502 __mmask8 test_mm_cmp_pd_mask_gt_oq(__m128d a, __m128d b) {
2503   // CHECK-LABEL: test_mm_cmp_pd_mask_gt_oq
2504   // CHECK: fcmp ogt <2 x double> %{{.*}}, %{{.*}}
2505   return _mm_cmp_pd_mask(a, b, _CMP_GT_OQ);
2506 }
2507
2508 __mmask8 test_mm_cmp_pd_mask_true_us(__m128d a, __m128d b) {
2509   // CHECK-LABEL: test_mm_cmp_pd_mask_true_us
2510   // CHECK: fcmp true <2 x double> %{{.*}}, %{{.*}}
2511   return _mm_cmp_pd_mask(a, b, _CMP_TRUE_US);
2512 }
2513
2514 __mmask8 test_mm_mask_cmp_pd_mask_eq_oq(__mmask8 m, __m128d a, __m128d b) {
2515   // CHECK-LABEL: @test_mm_mask_cmp_pd_mask_eq_oq
2516   // CHECK: [[CMP:%.*]] = fcmp oeq <2 x double> %{{.*}}, %{{.*}}
2517   // CHECK: and <2 x i1> [[CMP]], {{.*}}
2518   return _mm_mask_cmp_pd_mask(m, a, b, _CMP_EQ_OQ);
2519 }
2520
2521 __mmask8 test_mm_mask_cmp_pd_mask_lt_os(__mmask8 m, __m128d a, __m128d b) {
2522   // CHECK-LABEL: test_mm_mask_cmp_pd_mask_lt_os
2523   // CHECK: [[CMP:%.*]] = fcmp olt <2 x double> %{{.*}}, %{{.*}}
2524   // CHECK: and <2 x i1> [[CMP]], {{.*}}
2525   return _mm_mask_cmp_pd_mask(m, a, b, _CMP_LT_OS);
2526 }
2527
2528 __mmask8 test_mm_mask_cmp_pd_mask_le_os(__mmask8 m, __m128d a, __m128d b) {
2529   // CHECK-LABEL: test_mm_mask_cmp_pd_mask_le_os
2530   // CHECK: [[CMP:%.*]] = fcmp ole <2 x double> %{{.*}}, %{{.*}}
2531   // CHECK: and <2 x i1> [[CMP]], {{.*}}
2532   return _mm_mask_cmp_pd_mask(m, a, b, _CMP_LE_OS);
2533 }
2534
2535 __mmask8 test_mm_mask_cmp_pd_mask_unord_q(__mmask8 m, __m128d a, __m128d b) {
2536   // CHECK-LABEL: test_mm_mask_cmp_pd_mask_unord_q
2537   // CHECK: [[CMP:%.*]] = fcmp uno <2 x double> %{{.*}}, %{{.*}}
2538   // CHECK: and <2 x i1> [[CMP]], {{.*}}
2539   return _mm_mask_cmp_pd_mask(m, a, b, _CMP_UNORD_Q);
2540 }
2541
2542 __mmask8 test_mm_mask_cmp_pd_mask_neq_uq(__mmask8 m, __m128d a, __m128d b) {
2543   // CHECK-LABEL: test_mm_mask_cmp_pd_mask_neq_uq
2544   // CHECK: [[CMP:%.*]] = fcmp une <2 x double> %{{.*}}, %{{.*}}
2545   // CHECK: and <2 x i1> [[CMP]], {{.*}}
2546   return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_UQ);
2547 }
2548
2549 __mmask8 test_mm_mask_cmp_pd_mask_nlt_us(__mmask8 m, __m128d a, __m128d b) {
2550   // CHECK-LABEL: test_mm_mask_cmp_pd_mask_nlt_us
2551   // CHECK: [[CMP:%.*]] = fcmp uge <2 x double> %{{.*}}, %{{.*}}
2552   // CHECK: and <2 x i1> [[CMP]], {{.*}}
2553   return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NLT_US);
2554 }
2555
2556 __mmask8 test_mm_mask_cmp_pd_mask_nle_us(__mmask8 m, __m128d a, __m128d b) {
2557   // CHECK-LABEL: test_mm_mask_cmp_pd_mask_nle_us
2558   // CHECK: [[CMP:%.*]] = fcmp ugt <2 x double> %{{.*}}, %{{.*}}
2559   // CHECK: and <2 x i1> [[CMP]], {{.*}}
2560   return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NLE_US);
2561 }
2562
2563 __mmask8 test_mm_mask_cmp_pd_mask_ord_q(__mmask8 m, __m128d a, __m128d b) {
2564   // CHECK-LABEL: test_mm_mask_cmp_pd_mask_ord_q
2565   // CHECK: [[CMP:%.*]] = fcmp ord <2 x double> %{{.*}}, %{{.*}}
2566   // CHECK: and <2 x i1> [[CMP]], {{.*}}
2567   return _mm_mask_cmp_pd_mask(m, a, b, _CMP_ORD_Q);
2568 }
2569
2570 __mmask8 test_mm_mask_cmp_pd_mask_eq_uq(__mmask8 m, __m128d a, __m128d b) {
2571   // CHECK-LABEL: test_mm_mask_cmp_pd_mask_eq_uq
2572   // CHECK: [[CMP:%.*]] = fcmp ueq <2 x double> %{{.*}}, %{{.*}}
2573   // CHECK: and <2 x i1> [[CMP]], {{.*}}
2574   return _mm_mask_cmp_pd_mask(m, a, b, _CMP_EQ_UQ);
2575 }
2576
2577 __mmask8 test_mm_mask_cmp_pd_mask_nge_us(__mmask8 m, __m128d a, __m128d b) {
2578   // CHECK-LABEL: test_mm_mask_cmp_pd_mask_nge_us
2579   // CHECK: [[CMP:%.*]] = fcmp ult <2 x double> %{{.*}}, %{{.*}}
2580   // CHECK: and <2 x i1> [[CMP]], {{.*}}
2581   return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NGE_US);
2582 }
2583
2584 __mmask8 test_mm_mask_cmp_pd_mask_ngt_us(__mmask8 m, __m128d a, __m128d b) {
2585   // CHECK-LABEL: test_mm_mask_cmp_pd_mask_ngt_us
2586   // CHECK: [[CMP:%.*]] = fcmp ule <2 x double> %{{.*}}, %{{.*}}
2587   // CHECK: and <2 x i1> [[CMP]], {{.*}}
2588   return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NGT_US);
2589 }
2590
2591 __mmask8 test_mm_mask_cmp_pd_mask_false_oq(__mmask8 m, __m128d a, __m128d b) {
2592   // CHECK-LABEL: test_mm_mask_cmp_pd_mask_false_oq
2593   // CHECK: [[CMP:%.*]] = fcmp false <2 x double> %{{.*}}, %{{.*}}
2594   // CHECK: and <2 x i1> [[CMP]], {{.*}}
2595   return _mm_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OQ);
2596 }
2597
2598 __mmask8 test_mm_mask_cmp_pd_mask_neq_oq(__mmask8 m, __m128d a, __m128d b) {
2599   // CHECK-LABEL: test_mm_mask_cmp_pd_mask_neq_oq
2600   // CHECK: [[CMP:%.*]] = fcmp one <2 x double> %{{.*}}, %{{.*}}
2601   // CHECK: and <2 x i1> [[CMP]], {{.*}}
2602   return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_OQ);
2603 }
2604
2605 __mmask8 test_mm_mask_cmp_pd_mask_ge_os(__mmask8 m, __m128d a, __m128d b) {
2606   // CHECK-LABEL: test_mm_mask_cmp_pd_mask_ge_os
2607   // CHECK: [[CMP:%.*]] = fcmp oge <2 x double> %{{.*}}, %{{.*}}
2608   // CHECK: and <2 x i1> [[CMP]], {{.*}}
2609   return _mm_mask_cmp_pd_mask(m, a, b, _CMP_GE_OS);
2610 }
2611
2612 __mmask8 test_mm_mask_cmp_pd_mask_gt_os(__mmask8 m, __m128d a, __m128d b) {
2613   // CHECK-LABEL: test_mm_mask_cmp_pd_mask_gt_os
2614   // CHECK: [[CMP:%.*]] = fcmp ogt <2 x double> %{{.*}}, %{{.*}}
2615   // CHECK: and <2 x i1> [[CMP]], {{.*}}
2616   return _mm_mask_cmp_pd_mask(m, a, b, _CMP_GT_OS);
2617 }
2618
2619 __mmask8 test_mm_mask_cmp_pd_mask_true_uq(__mmask8 m, __m128d a, __m128d b) {
2620   // CHECK-LABEL: test_mm_mask_cmp_pd_mask_true_uq
2621   // CHECK: [[CMP:%.*]] = fcmp true <2 x double> %{{.*}}, %{{.*}}
2622   // CHECK: and <2 x i1> [[CMP]], {{.*}}
2623   return _mm_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_UQ);
2624 }
2625
2626 __mmask8 test_mm_mask_cmp_pd_mask_eq_os(__mmask8 m, __m128d a, __m128d b) {
2627   // CHECK-LABEL: test_mm_mask_cmp_pd_mask_eq_os
2628   // CHECK: [[CMP:%.*]] = fcmp oeq <2 x double> %{{.*}}, %{{.*}}
2629   // CHECK: and <2 x i1> [[CMP]], {{.*}}
2630   return _mm_mask_cmp_pd_mask(m, a, b, _CMP_EQ_OS);
2631 }
2632
2633 __mmask8 test_mm_mask_cmp_pd_mask_lt_oq(__mmask8 m, __m128d a, __m128d b) {
2634   // CHECK-LABEL: test_mm_mask_cmp_pd_mask_lt_oq
2635   // CHECK: [[CMP:%.*]] = fcmp olt <2 x double> %{{.*}}, %{{.*}}
2636   // CHECK: and <2 x i1> [[CMP]], {{.*}}
2637   return _mm_mask_cmp_pd_mask(m, a, b, _CMP_LT_OQ);
2638 }
2639
2640 __mmask8 test_mm_mask_cmp_pd_mask_le_oq(__mmask8 m, __m128d a, __m128d b) {
2641   // CHECK-LABEL: test_mm_mask_cmp_pd_mask_le_oq
2642   // CHECK: [[CMP:%.*]] = fcmp ole <2 x double> %{{.*}}, %{{.*}}
2643   // CHECK: and <2 x i1> [[CMP]], {{.*}}
2644   return _mm_mask_cmp_pd_mask(m, a, b, _CMP_LE_OQ);
2645 }
2646
2647 __mmask8 test_mm_mask_cmp_pd_mask_unord_s(__mmask8 m, __m128d a, __m128d b) {
2648   // CHECK-LABEL: test_mm_mask_cmp_pd_mask_unord_s
2649   // CHECK: [[CMP:%.*]] = fcmp uno <2 x double> %{{.*}}, %{{.*}}
2650   // CHECK: and <2 x i1> [[CMP]], {{.*}}
2651   return _mm_mask_cmp_pd_mask(m, a, b, _CMP_UNORD_S);
2652 }
2653
2654 __mmask8 test_mm_mask_cmp_pd_mask_neq_us(__mmask8 m, __m128d a, __m128d b) {
2655   // CHECK-LABEL: test_mm_mask_cmp_pd_mask_neq_us
2656   // CHECK: [[CMP:%.*]] = fcmp une <2 x double> %{{.*}}, %{{.*}}
2657   // CHECK: and <2 x i1> [[CMP]], {{.*}}
2658   return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_US);
2659 }
2660
2661 __mmask8 test_mm_mask_cmp_pd_mask_nlt_uq(__mmask8 m, __m128d a, __m128d b) {
2662   // CHECK-LABEL: test_mm_mask_cmp_pd_mask_nlt_uq
2663   // CHECK: [[CMP:%.*]] = fcmp uge <2 x double> %{{.*}}, %{{.*}}
2664   // CHECK: and <2 x i1> [[CMP]], {{.*}}
2665   return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NLT_UQ);
2666 }
2667
2668 __mmask8 test_mm_mask_cmp_pd_mask_nle_uq(__mmask8 m, __m128d a, __m128d b) {
2669   // CHECK-LABEL: test_mm_mask_cmp_pd_mask_nle_uq
2670   // CHECK: [[CMP:%.*]] = fcmp ugt <2 x double> %{{.*}}, %{{.*}}
2671   // CHECK: and <2 x i1> [[CMP]], {{.*}}
2672   return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NLE_UQ);
2673 }
2674
2675 __mmask8 test_mm_mask_cmp_pd_mask_ord_s(__mmask8 m, __m128d a, __m128d b) {
2676   // CHECK-LABEL: test_mm_mask_cmp_pd_mask_ord_s
2677   // CHECK: [[CMP:%.*]] = fcmp ord <2 x double> %{{.*}}, %{{.*}}
2678   // CHECK: and <2 x i1> [[CMP]], {{.*}}
2679   return _mm_mask_cmp_pd_mask(m, a, b, _CMP_ORD_S);
2680 }
2681
2682 __mmask8 test_mm_mask_cmp_pd_mask_eq_us(__mmask8 m, __m128d a, __m128d b) {
2683   // CHECK-LABEL: test_mm_mask_cmp_pd_mask_eq_us
2684   // CHECK: [[CMP:%.*]] = fcmp ueq <2 x double> %{{.*}}, %{{.*}}
2685   // CHECK: and <2 x i1> [[CMP]], {{.*}}
2686   return _mm_mask_cmp_pd_mask(m, a, b, _CMP_EQ_US);
2687 }
2688
2689 __mmask8 test_mm_mask_cmp_pd_mask_nge_uq(__mmask8 m, __m128d a, __m128d b) {
2690   // CHECK-LABEL: test_mm_mask_cmp_pd_mask_nge_uq
2691   // CHECK: [[CMP:%.*]] = fcmp ult <2 x double> %{{.*}}, %{{.*}}
2692   // CHECK: and <2 x i1> [[CMP]], {{.*}}
2693   return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NGE_UQ);
2694 }
2695
2696 __mmask8 test_mm_mask_cmp_pd_mask_ngt_uq(__mmask8 m, __m128d a, __m128d b) {
2697   // CHECK-LABEL: test_mm_mask_cmp_pd_mask_ngt_uq
2698   // CHECK: [[CMP:%.*]] = fcmp ule <2 x double> %{{.*}}, %{{.*}}
2699   // CHECK: and <2 x i1> [[CMP]], {{.*}}
2700   return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NGT_UQ);
2701 }
2702
2703 __mmask8 test_mm_mask_cmp_pd_mask_false_os(__mmask8 m, __m128d a, __m128d b) {
2704   // CHECK-LABEL: test_mm_mask_cmp_pd_mask_false_os
2705   // CHECK: [[CMP:%.*]] = fcmp false <2 x double> %{{.*}}, %{{.*}}
2706   // CHECK: and <2 x i1> [[CMP]], {{.*}}
2707   return _mm_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OS);
2708 }
2709
2710 __mmask8 test_mm_mask_cmp_pd_mask_neq_os(__mmask8 m, __m128d a, __m128d b) {
2711   // CHECK-LABEL: test_mm_mask_cmp_pd_mask_neq_os
2712   // CHECK: [[CMP:%.*]] = fcmp one <2 x double> %{{.*}}, %{{.*}}
2713   // CHECK: and <2 x i1> [[CMP]], {{.*}}
2714   return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_OS);
2715 }
2716
2717 __mmask8 test_mm_mask_cmp_pd_mask_ge_oq(__mmask8 m, __m128d a, __m128d b) {
2718   // CHECK-LABEL: test_mm_mask_cmp_pd_mask_ge_oq
2719   // CHECK: [[CMP:%.*]] = fcmp oge <2 x double> %{{.*}}, %{{.*}}
2720   // CHECK: and <2 x i1> [[CMP]], {{.*}}
2721   return _mm_mask_cmp_pd_mask(m, a, b, _CMP_GE_OQ);
2722 }
2723
2724 __mmask8 test_mm_mask_cmp_pd_mask_gt_oq(__mmask8 m, __m128d a, __m128d b) {
2725   // CHECK-LABEL: test_mm_mask_cmp_pd_mask_gt_oq
2726   // CHECK: [[CMP:%.*]] = fcmp ogt <2 x double> %{{.*}}, %{{.*}}
2727   // CHECK: and <2 x i1> [[CMP]], {{.*}}
2728   return _mm_mask_cmp_pd_mask(m, a, b, _CMP_GT_OQ);
2729 }
2730
2731 __mmask8 test_mm_mask_cmp_pd_mask_true_us(__mmask8 m, __m128d a, __m128d b) {
2732   // CHECK-LABEL: test_mm_mask_cmp_pd_mask_true_us
2733   // CHECK: [[CMP:%.*]] = fcmp true <2 x double> %{{.*}}, %{{.*}}
2734   // CHECK: and <2 x i1> [[CMP]], {{.*}}
2735   return _mm_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_US);
2736 }
2737
2738 __m128d test_mm_mask_fmadd_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C) {
2739   // CHECK-LABEL: @test_mm_mask_fmadd_pd
2740   // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
2741   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2742   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
2743   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
2744   return _mm_mask_fmadd_pd(__A, __U, __B, __C);
2745 }
2746
2747 __m128d test_mm_mask_fmsub_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C) {
2748   // CHECK-LABEL: @test_mm_mask_fmsub_pd
2749   // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2750   // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
2751   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2752   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
2753   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
2754   return _mm_mask_fmsub_pd(__A, __U, __B, __C);
2755 }
2756
2757 __m128d test_mm_mask3_fmadd_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U) {
2758   // CHECK-LABEL: @test_mm_mask3_fmadd_pd
2759   // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
2760   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2761   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
2762   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
2763   return _mm_mask3_fmadd_pd(__A, __B, __C, __U);
2764 }
2765
2766 __m128d test_mm_mask3_fnmadd_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U) {
2767   // CHECK-LABEL: @test_mm_mask3_fnmadd_pd
2768   // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2769   // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
2770   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2771   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
2772   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
2773   return _mm_mask3_fnmadd_pd(__A, __B, __C, __U);
2774 }
2775
2776 __m128d test_mm_maskz_fmadd_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C) {
2777   // CHECK-LABEL: @test_mm_maskz_fmadd_pd
2778   // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
2779   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2780   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
2781   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
2782   return _mm_maskz_fmadd_pd(__U, __A, __B, __C);
2783 }
2784
2785 __m128d test_mm_maskz_fmsub_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C) {
2786   // CHECK-LABEL: @test_mm_maskz_fmsub_pd
2787   // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2788   // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
2789   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2790   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
2791   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
2792   return _mm_maskz_fmsub_pd(__U, __A, __B, __C);
2793 }
2794
2795 __m128d test_mm_maskz_fnmadd_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C) {
2796   // CHECK-LABEL: @test_mm_maskz_fnmadd_pd
2797   // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2798   // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
2799   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2800   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
2801   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
2802   return _mm_maskz_fnmadd_pd(__U, __A, __B, __C);
2803 }
2804
2805 __m128d test_mm_maskz_fnmsub_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C) {
2806   // CHECK-LABEL: @test_mm_maskz_fnmsub_pd
2807   // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2808   // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2809   // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
2810   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2811   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
2812   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
2813   return _mm_maskz_fnmsub_pd(__U, __A, __B, __C);
2814 }
2815
2816 __m256d test_mm256_mask_fmadd_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C) {
2817   // CHECK-LABEL: @test_mm256_mask_fmadd_pd
2818   // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
2819   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2820   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2821   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2822   return _mm256_mask_fmadd_pd(__A, __U, __B, __C);
2823 }
2824
2825 __m256d test_mm256_mask_fmsub_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C) {
2826   // CHECK-LABEL: @test_mm256_mask_fmsub_pd
2827   // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2828   // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
2829   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2830   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2831   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2832   return _mm256_mask_fmsub_pd(__A, __U, __B, __C);
2833 }
2834
2835 __m256d test_mm256_mask3_fmadd_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U) {
2836   // CHECK-LABEL: @test_mm256_mask3_fmadd_pd
2837   // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
2838   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2839   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2840   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2841   return _mm256_mask3_fmadd_pd(__A, __B, __C, __U);
2842 }
2843
2844 __m256d test_mm256_mask3_fnmadd_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U) {
2845   // CHECK-LABEL: @test_mm256_mask3_fnmadd_pd
2846   // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2847   // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
2848   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2849   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2850   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2851   return _mm256_mask3_fnmadd_pd(__A, __B, __C, __U);
2852 }
2853
2854 __m256d test_mm256_maskz_fmadd_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C) {
2855   // CHECK-LABEL: @test_mm256_maskz_fmadd_pd
2856   // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
2857   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2858   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2859   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2860   return _mm256_maskz_fmadd_pd(__U, __A, __B, __C);
2861 }
2862
2863 __m256d test_mm256_maskz_fmsub_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C) {
2864   // CHECK-LABEL: @test_mm256_maskz_fmsub_pd
2865   // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2866   // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
2867   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2868   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2869   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2870   return _mm256_maskz_fmsub_pd(__U, __A, __B, __C);
2871 }
2872
2873 __m256d test_mm256_maskz_fnmadd_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C) {
2874   // CHECK-LABEL: @test_mm256_maskz_fnmadd_pd
2875   // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2876   // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
2877   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2878   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2879   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2880   return _mm256_maskz_fnmadd_pd(__U, __A, __B, __C);
2881 }
2882
2883 __m256d test_mm256_maskz_fnmsub_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C) {
2884   // CHECK-LABEL: @test_mm256_maskz_fnmsub_pd
2885   // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2886   // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2887   // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
2888   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2889   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2890   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2891   return _mm256_maskz_fnmsub_pd(__U, __A, __B, __C);
2892 }
2893
2894 __m128 test_mm_mask_fmadd_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C) {
2895   // CHECK-LABEL: @test_mm_mask_fmadd_ps
2896   // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
2897   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2898   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2899   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
2900   return _mm_mask_fmadd_ps(__A, __U, __B, __C);
2901 }
2902
2903 __m128 test_mm_mask_fmsub_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C) {
2904   // CHECK-LABEL: @test_mm_mask_fmsub_ps
2905   // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
2906   // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
2907   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2908   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2909   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
2910   return _mm_mask_fmsub_ps(__A, __U, __B, __C);
2911 }
2912
2913 __m128 test_mm_mask3_fmadd_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U) {
2914   // CHECK-LABEL: @test_mm_mask3_fmadd_ps
2915   // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
2916   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2917   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2918   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
2919   return _mm_mask3_fmadd_ps(__A, __B, __C, __U);
2920 }
2921
2922 __m128 test_mm_mask3_fnmadd_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U) {
2923   // CHECK-LABEL: @test_mm_mask3_fnmadd_ps
2924   // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
2925   // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
2926   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2927   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2928   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
2929   return _mm_mask3_fnmadd_ps(__A, __B, __C, __U);
2930 }
2931
2932 __m128 test_mm_maskz_fmadd_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C) {
2933   // CHECK-LABEL: @test_mm_maskz_fmadd_ps
2934   // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
2935   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2936   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2937   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
2938   return _mm_maskz_fmadd_ps(__U, __A, __B, __C);
2939 }
2940
2941 __m128 test_mm_maskz_fmsub_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C) {
2942   // CHECK-LABEL: @test_mm_maskz_fmsub_ps
2943   // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
2944   // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
2945   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2946   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2947   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
2948   return _mm_maskz_fmsub_ps(__U, __A, __B, __C);
2949 }
2950
2951 __m128 test_mm_maskz_fnmadd_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C) {
2952   // CHECK-LABEL: @test_mm_maskz_fnmadd_ps
2953   // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
2954   // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
2955   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2956   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2957   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
2958   return _mm_maskz_fnmadd_ps(__U, __A, __B, __C);
2959 }
2960
2961 __m128 test_mm_maskz_fnmsub_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C) {
2962   // CHECK-LABEL: @test_mm_maskz_fnmsub_ps
2963   // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
2964   // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
2965   // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
2966   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2967   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2968   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
2969   return _mm_maskz_fnmsub_ps(__U, __A, __B, __C);
2970 }
2971
2972 __m256 test_mm256_mask_fmadd_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C) {
2973   // CHECK-LABEL: @test_mm256_mask_fmadd_ps
2974   // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
2975   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2976   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
2977   return _mm256_mask_fmadd_ps(__A, __U, __B, __C);
2978 }
2979
2980 __m256 test_mm256_mask_fmsub_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C) {
2981   // CHECK-LABEL: @test_mm256_mask_fmsub_ps
2982   // 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>, %{{.*}}
2983   // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
2984   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2985   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
2986   return _mm256_mask_fmsub_ps(__A, __U, __B, __C);
2987 }
2988
2989 __m256 test_mm256_mask3_fmadd_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U) {
2990   // CHECK-LABEL: @test_mm256_mask3_fmadd_ps
2991   // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
2992   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2993   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
2994   return _mm256_mask3_fmadd_ps(__A, __B, __C, __U);
2995 }
2996
2997 __m256 test_mm256_mask3_fnmadd_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U) {
2998   // CHECK-LABEL: @test_mm256_mask3_fnmadd_ps
2999   // 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>, %{{.*}}
3000   // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3001   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3002   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3003   return _mm256_mask3_fnmadd_ps(__A, __B, __C, __U);
3004 }
3005
3006 __m256 test_mm256_maskz_fmadd_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C) {
3007   // CHECK-LABEL: @test_mm256_maskz_fmadd_ps
3008   // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3009   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3010   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3011   return _mm256_maskz_fmadd_ps(__U, __A, __B, __C);
3012 }
3013
3014 __m256 test_mm256_maskz_fmsub_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C) {
3015   // CHECK-LABEL: @test_mm256_maskz_fmsub_ps
3016   // 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>, %{{.*}}
3017   // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3018   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3019   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3020   return _mm256_maskz_fmsub_ps(__U, __A, __B, __C);
3021 }
3022
3023 __m256 test_mm256_maskz_fnmadd_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C) {
3024   // CHECK-LABEL: @test_mm256_maskz_fnmadd_ps
3025   // 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>, %{{.*}}
3026   // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3027   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3028   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3029   return _mm256_maskz_fnmadd_ps(__U, __A, __B, __C);
3030 }
3031
3032 __m256 test_mm256_maskz_fnmsub_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C) {
3033   // CHECK-LABEL: @test_mm256_maskz_fnmsub_ps
3034   // 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>, %{{.*}}
3035   // 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>, %{{.*}}
3036   // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3037   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3038   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3039   return _mm256_maskz_fnmsub_ps(__U, __A, __B, __C);
3040 }
3041
3042 __m128d test_mm_mask_fmaddsub_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C) {
3043   // CHECK-LABEL: @test_mm_mask_fmaddsub_pd
3044   // CHECK: [[ADD:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
3045   // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3046   // CHECK: [[SUB:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> [[NEG]]
3047   // CHECK: shufflevector <2 x double> [[SUB]], <2 x double> [[ADD]], <2 x i32> <i32 0, i32 3>
3048   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3049   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
3050   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3051   return _mm_mask_fmaddsub_pd(__A, __U, __B, __C);
3052 }
3053
3054 __m128d test_mm_mask_fmsubadd_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C) {
3055   // CHECK-LABEL: @test_mm_mask_fmsubadd_pd
3056   // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3057   // CHECK: [[SUB:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> [[NEG]]
3058   // CHECK: [[ADD:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
3059   // CHECK: shufflevector <2 x double> [[ADD]], <2 x double> [[SUB]], <2 x i32> <i32 0, i32 3>
3060   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3061   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
3062   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3063   return _mm_mask_fmsubadd_pd(__A, __U, __B, __C);
3064 }
3065
3066 __m128d test_mm_mask3_fmaddsub_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U) {
3067   // CHECK-LABEL: @test_mm_mask3_fmaddsub_pd
3068   // CHECK: [[ADD:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
3069   // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3070   // CHECK: [[SUB:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> [[NEG]]
3071   // CHECK: shufflevector <2 x double> [[SUB]], <2 x double> [[ADD]], <2 x i32> <i32 0, i32 3>
3072   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3073   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
3074   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3075   return _mm_mask3_fmaddsub_pd(__A, __B, __C, __U);
3076 }
3077
3078 __m128d test_mm_maskz_fmaddsub_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C) {
3079   // CHECK-LABEL: @test_mm_maskz_fmaddsub_pd
3080   // CHECK: [[ADD:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
3081   // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3082   // CHECK: [[SUB:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> [[NEG]]
3083   // CHECK: shufflevector <2 x double> [[SUB]], <2 x double> [[ADD]], <2 x i32> <i32 0, i32 3>
3084   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3085   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
3086   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3087   return _mm_maskz_fmaddsub_pd(__U, __A, __B, __C);
3088 }
3089
3090 __m128d test_mm_maskz_fmsubadd_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C) {
3091   // CHECK-LABEL: @test_mm_maskz_fmsubadd_pd
3092   // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3093   // CHECK: [[SUB:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> [[NEG]]
3094   // CHECK: [[ADD:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
3095   // CHECK: shufflevector <2 x double> [[ADD]], <2 x double> [[SUB]], <2 x i32> <i32 0, i32 3>
3096   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3097   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
3098   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3099   return _mm_maskz_fmsubadd_pd(__U, __A, __B, __C);
3100 }
3101
3102 __m256d test_mm256_mask_fmaddsub_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C) {
3103   // CHECK-LABEL: @test_mm256_mask_fmaddsub_pd
3104   // CHECK: [[ADD:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3105   // CHECK: [[NEG:%.+]] = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3106   // CHECK: [[SUB:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3107   // CHECK: shufflevector <4 x double> [[SUB]], <4 x double> [[ADD]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3108   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3109   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3110   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3111   return _mm256_mask_fmaddsub_pd(__A, __U, __B, __C);
3112 }
3113
3114 __m256d test_mm256_mask_fmsubadd_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C) {
3115   // CHECK-LABEL: @test_mm256_mask_fmsubadd_pd
3116   // CHECK: [[NEG:%.+]] = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3117   // CHECK: [[SUB:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> [[NEG]]
3118   // CHECK: [[ADD:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3119   // CHECK: shufflevector <4 x double> [[ADD]], <4 x double> [[SUB]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3120   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3121   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3122   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3123   return _mm256_mask_fmsubadd_pd(__A, __U, __B, __C);
3124 }
3125
3126 __m256d test_mm256_mask3_fmaddsub_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U) {
3127   // CHECK-LABEL: @test_mm256_mask3_fmaddsub_pd
3128   // CHECK: [[ADD:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3129   // CHECK: [[NEG:%.+]] = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3130   // CHECK: [[SUB:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3131   // CHECK: shufflevector <4 x double> [[SUB]], <4 x double> [[ADD]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3132   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3133   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3134   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3135   return _mm256_mask3_fmaddsub_pd(__A, __B, __C, __U);
3136 }
3137
3138 __m256d test_mm256_maskz_fmaddsub_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C) {
3139   // CHECK-LABEL: @test_mm256_maskz_fmaddsub_pd
3140   // CHECK: [[ADD:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3141   // CHECK: [[NEG:%.+]] = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3142   // CHECK: [[SUB:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3143   // CHECK: shufflevector <4 x double> [[SUB]], <4 x double> [[ADD]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3144   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3145   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3146   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3147   return _mm256_maskz_fmaddsub_pd(__U, __A, __B, __C);
3148 }
3149
3150 __m256d test_mm256_maskz_fmsubadd_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C) {
3151   // CHECK-LABEL: @test_mm256_maskz_fmsubadd_pd
3152   // CHECK: [[NEG:%.+]] = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3153   // CHECK: [[SUB:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> [[NEG]]
3154   // CHECK: [[ADD:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3155   // CHECK: shufflevector <4 x double> [[ADD]], <4 x double> [[SUB]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3156   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3157   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3158   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3159   return _mm256_maskz_fmsubadd_pd(__U, __A, __B, __C);
3160 }
3161
3162 __m128 test_mm_mask_fmaddsub_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C) {
3163   // CHECK-LABEL: @test_mm_mask_fmaddsub_ps
3164   // CHECK: [[ADD:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3165   // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.+}}
3166   // CHECK: [[SUB:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> [[NEG]]
3167   // CHECK: shufflevector <4 x float> [[SUB]], <4 x float> [[ADD]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3168   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3169   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3170   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3171   return _mm_mask_fmaddsub_ps(__A, __U, __B, __C);
3172 }
3173
3174 __m128 test_mm_mask_fmsubadd_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C) {
3175   // CHECK-LABEL: @test_mm_mask_fmsubadd_ps
3176   // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.+}}
3177   // CHECK: [[SUB:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> [[NEG]]
3178   // CHECK: [[ADD:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3179   // CHECK: shufflevector <4 x float> [[ADD]], <4 x float> [[SUB]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3180   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3181   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3182   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3183   return _mm_mask_fmsubadd_ps(__A, __U, __B, __C);
3184 }
3185
3186 __m128 test_mm_mask3_fmaddsub_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U) {
3187   // CHECK-LABEL: @test_mm_mask3_fmaddsub_ps
3188   // CHECK: [[ADD:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3189   // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.+}}
3190   // CHECK: [[SUB:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> [[NEG]]
3191   // CHECK: shufflevector <4 x float> [[SUB]], <4 x float> [[ADD]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3192   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3193   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3194   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3195   return _mm_mask3_fmaddsub_ps(__A, __B, __C, __U);
3196 }
3197
3198 __m128 test_mm_maskz_fmaddsub_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C) {
3199   // CHECK-LABEL: @test_mm_maskz_fmaddsub_ps
3200   // CHECK: [[ADD:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3201   // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.+}}
3202   // CHECK: [[SUB:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> [[NEG]]
3203   // CHECK: shufflevector <4 x float> [[SUB]], <4 x float> [[ADD]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3204   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3205   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3206   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3207   return _mm_maskz_fmaddsub_ps(__U, __A, __B, __C);
3208 }
3209
3210 __m128 test_mm_maskz_fmsubadd_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C) {
3211   // CHECK-LABEL: @test_mm_maskz_fmsubadd_ps
3212   // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.+}}
3213   // CHECK: [[SUB:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> [[NEG]]
3214   // CHECK: [[ADD:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3215   // CHECK: shufflevector <4 x float> [[ADD]], <4 x float> [[SUB]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3216   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3217   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3218   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3219   return _mm_maskz_fmsubadd_ps(__U, __A, __B, __C);
3220 }
3221
3222 __m256 test_mm256_mask_fmaddsub_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C) {
3223   // CHECK-LABEL: @test_mm256_mask_fmaddsub_ps
3224   // CHECK: [[ADD:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3225   // 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>, %{{.*}}
3226   // CHECK: [[SUB:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> [[NEG]]
3227   // 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>
3228   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3229   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3230   return _mm256_mask_fmaddsub_ps(__A, __U, __B, __C);
3231 }
3232
3233 __m256 test_mm256_mask_fmsubadd_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C) {
3234   // CHECK-LABEL: @test_mm256_mask_fmsubadd_ps
3235   // 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>, %{{.*}}
3236   // CHECK: [[SUB:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> [[NEG]]
3237   // CHECK: [[ADD:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3238   // 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>
3239   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3240   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3241   return _mm256_mask_fmsubadd_ps(__A, __U, __B, __C);
3242 }
3243
3244 __m256 test_mm256_mask3_fmaddsub_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U) {
3245   // CHECK-LABEL: @test_mm256_mask3_fmaddsub_ps
3246   // CHECK: [[ADD:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3247   // 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>, %{{.*}}
3248   // CHECK: [[SUB:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> [[NEG]]
3249   // 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>
3250   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3251   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3252   return _mm256_mask3_fmaddsub_ps(__A, __B, __C, __U);
3253 }
3254
3255 __m256 test_mm256_maskz_fmaddsub_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C) {
3256   // CHECK-LABEL: @test_mm256_maskz_fmaddsub_ps
3257   // CHECK: [[ADD:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3258   // 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>, %{{.*}}
3259   // CHECK: [[SUB:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> [[NEG]]
3260   // 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>
3261   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3262   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3263   return _mm256_maskz_fmaddsub_ps(__U, __A, __B, __C);
3264 }
3265
3266 __m256 test_mm256_maskz_fmsubadd_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C) {
3267   // CHECK-LABEL: @test_mm256_maskz_fmsubadd_ps
3268   // 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>, %{{.*}}
3269   // CHECK: [[SUB:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> [[NEG]]
3270   // CHECK: [[ADD:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3271   // 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>
3272   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3273   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3274   return _mm256_maskz_fmsubadd_ps(__U, __A, __B, __C);
3275 }
3276
3277 __m128d test_mm_mask3_fmsub_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U) {
3278   // CHECK-LABEL: @test_mm_mask3_fmsub_pd
3279   // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3280   // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
3281   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3282   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
3283   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3284   return _mm_mask3_fmsub_pd(__A, __B, __C, __U);
3285 }
3286
3287 __m256d test_mm256_mask3_fmsub_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U) {
3288   // CHECK-LABEL: @test_mm256_mask3_fmsub_pd
3289   // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3290   // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3291   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3292   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3293   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3294   return _mm256_mask3_fmsub_pd(__A, __B, __C, __U);
3295 }
3296
3297 __m128 test_mm_mask3_fmsub_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U) {
3298   // CHECK-LABEL: @test_mm_mask3_fmsub_ps
3299   // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3300   // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3301   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3302   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3303   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3304   return _mm_mask3_fmsub_ps(__A, __B, __C, __U);
3305 }
3306
3307 __m256 test_mm256_mask3_fmsub_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U) {
3308   // CHECK-LABEL: @test_mm256_mask3_fmsub_ps
3309   // 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>, %{{.*}}
3310   // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3311   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3312   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3313   return _mm256_mask3_fmsub_ps(__A, __B, __C, __U);
3314 }
3315
3316 __m128d test_mm_mask3_fmsubadd_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U) {
3317   // CHECK-LABEL: @test_mm_mask3_fmsubadd_pd
3318   // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3319   // CHECK: [[SUB:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> [[NEG]]
3320   // CHECK: [[ADD:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
3321   // CHECK: shufflevector <2 x double> [[ADD]], <2 x double> [[SUB]], <2 x i32> <i32 0, i32 3>
3322   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3323   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
3324   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3325   return _mm_mask3_fmsubadd_pd(__A, __B, __C, __U);
3326 }
3327
3328 __m256d test_mm256_mask3_fmsubadd_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U) {
3329   // CHECK-LABEL: @test_mm256_mask3_fmsubadd_pd
3330   // CHECK: [[NEG:%.+]] = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3331   // CHECK: [[SUB:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> [[NEG]]
3332   // CHECK: [[ADD:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3333   // CHECK: shufflevector <4 x double> [[ADD]], <4 x double> [[SUB]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3334   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3335   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3336   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3337   return _mm256_mask3_fmsubadd_pd(__A, __B, __C, __U);
3338 }
3339
3340 __m128 test_mm_mask3_fmsubadd_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U) {
3341   // CHECK-LABEL: @test_mm_mask3_fmsubadd_ps
3342   // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.+}}
3343   // CHECK: [[SUB:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> [[NEG]]
3344   // CHECK: [[ADD:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3345   // CHECK: shufflevector <4 x float> [[ADD]], <4 x float> [[SUB]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3346   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3347   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3348   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3349   return _mm_mask3_fmsubadd_ps(__A, __B, __C, __U);
3350 }
3351
3352 __m256 test_mm256_mask3_fmsubadd_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U) {
3353   // CHECK-LABEL: @test_mm256_mask3_fmsubadd_ps
3354   // 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>, %{{.*}}
3355   // CHECK: [[SUB:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> [[NEG]]
3356   // CHECK: [[ADD:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3357   // 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>
3358   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3359   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3360   return _mm256_mask3_fmsubadd_ps(__A, __B, __C, __U);
3361 }
3362
3363 __m128d test_mm_mask_fnmadd_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C) {
3364   // CHECK-LABEL: @test_mm_mask_fnmadd_pd
3365   // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3366   // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
3367   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3368   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
3369   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3370   return _mm_mask_fnmadd_pd(__A, __U, __B, __C);
3371 }
3372
3373 __m256d test_mm256_mask_fnmadd_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C) {
3374   // CHECK-LABEL: @test_mm256_mask_fnmadd_pd
3375   // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3376   // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3377   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3378   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3379   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3380   return _mm256_mask_fnmadd_pd(__A, __U, __B, __C);
3381 }
3382
3383 __m128 test_mm_mask_fnmadd_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C) {
3384   // CHECK-LABEL: @test_mm_mask_fnmadd_ps
3385   // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3386   // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3387   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3388   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3389   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3390   return _mm_mask_fnmadd_ps(__A, __U, __B, __C);
3391 }
3392
3393 __m256 test_mm256_mask_fnmadd_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C) {
3394   // CHECK-LABEL: @test_mm256_mask_fnmadd_ps
3395   // 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>, %{{.*}}
3396   // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3397   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3398   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3399   return _mm256_mask_fnmadd_ps(__A, __U, __B, __C);
3400 }
3401
3402 __m128d test_mm_mask_fnmsub_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C) {
3403   // CHECK-LABEL: @test_mm_mask_fnmsub_pd
3404   // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3405   // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3406   // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
3407   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3408   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
3409   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3410   return _mm_mask_fnmsub_pd(__A, __U, __B, __C);
3411 }
3412
3413 __m128d test_mm_mask3_fnmsub_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U) {
3414   // CHECK-LABEL: @test_mm_mask3_fnmsub_pd
3415   // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3416   // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3417   // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
3418   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3419   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
3420   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3421   return _mm_mask3_fnmsub_pd(__A, __B, __C, __U);
3422 }
3423
3424 __m256d test_mm256_mask_fnmsub_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C) {
3425   // CHECK-LABEL: @test_mm256_mask_fnmsub_pd
3426   // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3427   // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3428   // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3429   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3430   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3431   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3432   return _mm256_mask_fnmsub_pd(__A, __U, __B, __C);
3433 }
3434
3435 __m256d test_mm256_mask3_fnmsub_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U) {
3436   // CHECK-LABEL: @test_mm256_mask3_fnmsub_pd
3437   // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3438   // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3439   // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3440   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3441   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3442   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3443   return _mm256_mask3_fnmsub_pd(__A, __B, __C, __U);
3444 }
3445
3446 __m128 test_mm_mask_fnmsub_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C) {
3447   // CHECK-LABEL: @test_mm_mask_fnmsub_ps
3448   // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3449   // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3450   // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3451   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3452   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3453   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3454   return _mm_mask_fnmsub_ps(__A, __U, __B, __C);
3455 }
3456
3457 __m128 test_mm_mask3_fnmsub_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U) {
3458   // CHECK-LABEL: @test_mm_mask3_fnmsub_ps
3459   // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3460   // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3461   // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3462   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3463   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3464   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3465   return _mm_mask3_fnmsub_ps(__A, __B, __C, __U);
3466 }
3467
3468 __m256 test_mm256_mask_fnmsub_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C) {
3469   // CHECK-LABEL: @test_mm256_mask_fnmsub_ps
3470   // 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>, %{{.*}}
3471   // 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>, %{{.*}}
3472   // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3473   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3474   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3475   return _mm256_mask_fnmsub_ps(__A, __U, __B, __C);
3476 }
3477
3478 __m256 test_mm256_mask3_fnmsub_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U) {
3479   // CHECK-LABEL: @test_mm256_mask3_fnmsub_ps
3480   // 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>, %{{.*}}
3481   // 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>, %{{.*}}
3482   // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3483   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3484   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3485   return _mm256_mask3_fnmsub_ps(__A, __B, __C, __U);
3486 }
3487
3488 __m128d test_mm_mask_add_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3489   // CHECK-LABEL: @test_mm_mask_add_pd
3490   // CHECK: fadd <2 x double> %{{.*}}, %{{.*}}
3491   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3492   return _mm_mask_add_pd(__W,__U,__A,__B); 
3493 }
3494 __m128d test_mm_maskz_add_pd(__mmask8 __U, __m128d __A, __m128d __B) {
3495   // CHECK-LABEL: @test_mm_maskz_add_pd
3496   // CHECK: fadd <2 x double> %{{.*}}, %{{.*}}
3497   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3498   return _mm_maskz_add_pd(__U,__A,__B); 
3499 }
3500 __m256d test_mm256_mask_add_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
3501   // CHECK-LABEL: @test_mm256_mask_add_pd
3502   // CHECK: fadd <4 x double> %{{.*}}, %{{.*}}
3503   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3504   return _mm256_mask_add_pd(__W,__U,__A,__B); 
3505 }
3506 __m256d test_mm256_maskz_add_pd(__mmask8 __U, __m256d __A, __m256d __B) {
3507   // CHECK-LABEL: @test_mm256_maskz_add_pd
3508   // CHECK: fadd <4 x double> %{{.*}}, %{{.*}}
3509   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3510   return _mm256_maskz_add_pd(__U,__A,__B); 
3511 }
3512 __m128 test_mm_mask_add_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3513   // CHECK-LABEL: @test_mm_mask_add_ps
3514   // CHECK: fadd <4 x float> %{{.*}}, %{{.*}}
3515   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3516   return _mm_mask_add_ps(__W,__U,__A,__B); 
3517 }
3518 __m128 test_mm_maskz_add_ps(__mmask8 __U, __m128 __A, __m128 __B) {
3519   // CHECK-LABEL: @test_mm_maskz_add_ps
3520   // CHECK: fadd <4 x float> %{{.*}}, %{{.*}}
3521   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3522   return _mm_maskz_add_ps(__U,__A,__B); 
3523 }
3524 __m256 test_mm256_mask_add_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
3525   // CHECK-LABEL: @test_mm256_mask_add_ps
3526   // CHECK: fadd <8 x float> %{{.*}}, %{{.*}}
3527   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3528   return _mm256_mask_add_ps(__W,__U,__A,__B); 
3529 }
3530 __m256 test_mm256_maskz_add_ps(__mmask8 __U, __m256 __A, __m256 __B) {
3531   // CHECK-LABEL: @test_mm256_maskz_add_ps
3532   // CHECK: fadd <8 x float> %{{.*}}, %{{.*}}
3533   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3534   return _mm256_maskz_add_ps(__U,__A,__B); 
3535 }
3536 __m128i test_mm_mask_blend_epi32(__mmask8 __U, __m128i __A, __m128i __W) {
3537   // CHECK-LABEL: @test_mm_mask_blend_epi32
3538   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
3539   return _mm_mask_blend_epi32(__U,__A,__W); 
3540 }
3541 __m256i test_mm256_mask_blend_epi32(__mmask8 __U, __m256i __A, __m256i __W) {
3542   // CHECK-LABEL: @test_mm256_mask_blend_epi32
3543   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
3544   return _mm256_mask_blend_epi32(__U,__A,__W); 
3545 }
3546 __m128d test_mm_mask_blend_pd(__mmask8 __U, __m128d __A, __m128d __W) {
3547   // CHECK-LABEL: @test_mm_mask_blend_pd
3548   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3549   return _mm_mask_blend_pd(__U,__A,__W); 
3550 }
3551 __m256d test_mm256_mask_blend_pd(__mmask8 __U, __m256d __A, __m256d __W) {
3552   // CHECK-LABEL: @test_mm256_mask_blend_pd
3553   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3554   return _mm256_mask_blend_pd(__U,__A,__W); 
3555 }
3556 __m128 test_mm_mask_blend_ps(__mmask8 __U, __m128 __A, __m128 __W) {
3557   // CHECK-LABEL: @test_mm_mask_blend_ps
3558   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3559   return _mm_mask_blend_ps(__U,__A,__W); 
3560 }
3561 __m256 test_mm256_mask_blend_ps(__mmask8 __U, __m256 __A, __m256 __W) {
3562   // CHECK-LABEL: @test_mm256_mask_blend_ps
3563   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3564   return _mm256_mask_blend_ps(__U,__A,__W); 
3565 }
3566 __m128i test_mm_mask_blend_epi64(__mmask8 __U, __m128i __A, __m128i __W) {
3567   // CHECK-LABEL: @test_mm_mask_blend_epi64
3568   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
3569   return _mm_mask_blend_epi64(__U,__A,__W); 
3570 }
3571 __m256i test_mm256_mask_blend_epi64(__mmask8 __U, __m256i __A, __m256i __W) {
3572   // CHECK-LABEL: @test_mm256_mask_blend_epi64
3573   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
3574   return _mm256_mask_blend_epi64(__U,__A,__W); 
3575 }
3576 __m128d test_mm_mask_compress_pd(__m128d __W, __mmask8 __U, __m128d __A) {
3577   // CHECK-LABEL: @test_mm_mask_compress_pd
3578   // CHECK: @llvm.x86.avx512.mask.compress.pd.128
3579   return _mm_mask_compress_pd(__W,__U,__A); 
3580 }
3581 __m128d test_mm_maskz_compress_pd(__mmask8 __U, __m128d __A) {
3582   // CHECK-LABEL: @test_mm_maskz_compress_pd
3583   // CHECK: @llvm.x86.avx512.mask.compress.pd.128
3584   return _mm_maskz_compress_pd(__U,__A); 
3585 }
3586 __m256d test_mm256_mask_compress_pd(__m256d __W, __mmask8 __U, __m256d __A) {
3587   // CHECK-LABEL: @test_mm256_mask_compress_pd
3588   // CHECK: @llvm.x86.avx512.mask.compress.pd.256
3589   return _mm256_mask_compress_pd(__W,__U,__A); 
3590 }
3591 __m256d test_mm256_maskz_compress_pd(__mmask8 __U, __m256d __A) {
3592   // CHECK-LABEL: @test_mm256_maskz_compress_pd
3593   // CHECK: @llvm.x86.avx512.mask.compress.pd.256
3594   return _mm256_maskz_compress_pd(__U,__A); 
3595 }
3596 __m128i test_mm_mask_compress_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
3597   // CHECK-LABEL: @test_mm_mask_compress_epi64
3598   // CHECK: @llvm.x86.avx512.mask.compress.q.128
3599   return _mm_mask_compress_epi64(__W,__U,__A); 
3600 }
3601 __m128i test_mm_maskz_compress_epi64(__mmask8 __U, __m128i __A) {
3602   // CHECK-LABEL: @test_mm_maskz_compress_epi64
3603   // CHECK: @llvm.x86.avx512.mask.compress.q.128
3604   return _mm_maskz_compress_epi64(__U,__A); 
3605 }
3606 __m256i test_mm256_mask_compress_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
3607   // CHECK-LABEL: @test_mm256_mask_compress_epi64
3608   // CHECK: @llvm.x86.avx512.mask.compress.q.256
3609   return _mm256_mask_compress_epi64(__W,__U,__A); 
3610 }
3611 __m256i test_mm256_maskz_compress_epi64(__mmask8 __U, __m256i __A) {
3612   // CHECK-LABEL: @test_mm256_maskz_compress_epi64
3613   // CHECK: @llvm.x86.avx512.mask.compress.q.256
3614   return _mm256_maskz_compress_epi64(__U,__A); 
3615 }
3616 __m128 test_mm_mask_compress_ps(__m128 __W, __mmask8 __U, __m128 __A) {
3617   // CHECK-LABEL: @test_mm_mask_compress_ps
3618   // CHECK: @llvm.x86.avx512.mask.compress.ps.128
3619   return _mm_mask_compress_ps(__W,__U,__A); 
3620 }
3621 __m128 test_mm_maskz_compress_ps(__mmask8 __U, __m128 __A) {
3622   // CHECK-LABEL: @test_mm_maskz_compress_ps
3623   // CHECK: @llvm.x86.avx512.mask.compress.ps.128
3624   return _mm_maskz_compress_ps(__U,__A); 
3625 }
3626 __m256 test_mm256_mask_compress_ps(__m256 __W, __mmask8 __U, __m256 __A) {
3627   // CHECK-LABEL: @test_mm256_mask_compress_ps
3628   // CHECK: @llvm.x86.avx512.mask.compress.ps.256
3629   return _mm256_mask_compress_ps(__W,__U,__A); 
3630 }
3631 __m256 test_mm256_maskz_compress_ps(__mmask8 __U, __m256 __A) {
3632   // CHECK-LABEL: @test_mm256_maskz_compress_ps
3633   // CHECK: @llvm.x86.avx512.mask.compress.ps.256
3634   return _mm256_maskz_compress_ps(__U,__A); 
3635 }
3636 __m128i test_mm_mask_compress_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
3637   // CHECK-LABEL: @test_mm_mask_compress_epi32
3638   // CHECK: @llvm.x86.avx512.mask.compress.d.128
3639   return _mm_mask_compress_epi32(__W,__U,__A); 
3640 }
3641 __m128i test_mm_maskz_compress_epi32(__mmask8 __U, __m128i __A) {
3642   // CHECK-LABEL: @test_mm_maskz_compress_epi32
3643   // CHECK: @llvm.x86.avx512.mask.compress.d.128
3644   return _mm_maskz_compress_epi32(__U,__A); 
3645 }
3646 __m256i test_mm256_mask_compress_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
3647   // CHECK-LABEL: @test_mm256_mask_compress_epi32
3648   // CHECK: @llvm.x86.avx512.mask.compress.d.256
3649   return _mm256_mask_compress_epi32(__W,__U,__A); 
3650 }
3651 __m256i test_mm256_maskz_compress_epi32(__mmask8 __U, __m256i __A) {
3652   // CHECK-LABEL: @test_mm256_maskz_compress_epi32
3653   // CHECK: @llvm.x86.avx512.mask.compress.d.256
3654   return _mm256_maskz_compress_epi32(__U,__A); 
3655 }
3656 void test_mm_mask_compressstoreu_pd(void *__P, __mmask8 __U, __m128d __A) {
3657   // CHECK-LABEL: @test_mm_mask_compressstoreu_pd
3658   // CHECK: @llvm.masked.compressstore.v2f64(<2 x double> %{{.*}}, double* %{{.*}}, <2 x i1> %{{.*}})
3659   return _mm_mask_compressstoreu_pd(__P,__U,__A); 
3660 }
3661 void test_mm256_mask_compressstoreu_pd(void *__P, __mmask8 __U, __m256d __A) {
3662   // CHECK-LABEL: @test_mm256_mask_compressstoreu_pd
3663   // CHECK: @llvm.masked.compressstore.v4f64(<4 x double> %{{.*}}, double* %{{.*}}, <4 x i1> %{{.*}})
3664   return _mm256_mask_compressstoreu_pd(__P,__U,__A); 
3665 }
3666 void test_mm_mask_compressstoreu_epi64(void *__P, __mmask8 __U, __m128i __A) {
3667   // CHECK-LABEL: @test_mm_mask_compressstoreu_epi64
3668   // CHECK: @llvm.masked.compressstore.v2i64(<2 x i64> %{{.*}}, i64* %{{.*}}, <2 x i1> %{{.*}})
3669   return _mm_mask_compressstoreu_epi64(__P,__U,__A); 
3670 }
3671 void test_mm256_mask_compressstoreu_epi64(void *__P, __mmask8 __U, __m256i __A) {
3672   // CHECK-LABEL: @test_mm256_mask_compressstoreu_epi64
3673   // CHECK: @llvm.masked.compressstore.v4i64(<4 x i64> %{{.*}}, i64* %{{.*}}, <4 x i1> %{{.*}})
3674   return _mm256_mask_compressstoreu_epi64(__P,__U,__A); 
3675 }
3676 void test_mm_mask_compressstoreu_ps(void *__P, __mmask8 __U, __m128 __A) {
3677   // CHECK-LABEL: @test_mm_mask_compressstoreu_ps
3678   // CHECK: @llvm.masked.compressstore.v4f32(<4 x float> %{{.*}}, float* %{{.*}}, <4 x i1> %{{.*}})
3679   return _mm_mask_compressstoreu_ps(__P,__U,__A); 
3680 }
3681 void test_mm256_mask_compressstoreu_ps(void *__P, __mmask8 __U, __m256 __A) {
3682   // CHECK-LABEL: @test_mm256_mask_compressstoreu_ps
3683   // CHECK: @llvm.masked.compressstore.v8f32(<8 x float> %{{.*}}, float* %{{.*}}, <8 x i1> %{{.*}})
3684   return _mm256_mask_compressstoreu_ps(__P,__U,__A); 
3685 }
3686 void test_mm_mask_compressstoreu_epi32(void *__P, __mmask8 __U, __m128i __A) {
3687   // CHECK-LABEL: @test_mm_mask_compressstoreu_epi32
3688   // CHECK: @llvm.masked.compressstore.v4i32(<4 x i32> %{{.*}}, i32* %{{.*}}, <4 x i1> %{{.*}})
3689   return _mm_mask_compressstoreu_epi32(__P,__U,__A); 
3690 }
3691 void test_mm256_mask_compressstoreu_epi32(void *__P, __mmask8 __U, __m256i __A) {
3692   // CHECK-LABEL: @test_mm256_mask_compressstoreu_epi32
3693   // CHECK: @llvm.masked.compressstore.v8i32(<8 x i32> %{{.*}}, i32* %{{.*}}, <8 x i1> %{{.*}})
3694   return _mm256_mask_compressstoreu_epi32(__P,__U,__A); 
3695 }
3696 __m128d test_mm_mask_cvtepi32_pd(__m128d __W, __mmask8 __U, __m128i __A) {
3697   // CHECK-LABEL: @test_mm_mask_cvtepi32_pd
3698   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i32> <i32 0, i32 1>
3699   // CHECK: sitofp <2 x i32> %{{.*}} to <2 x double>
3700   // CHECK: select <2 x i1> {{.*}}, <2 x double> {{.*}}, <2 x double> {{.*}}
3701   return _mm_mask_cvtepi32_pd(__W,__U,__A);
3702 }
3703 __m128d test_mm_maskz_cvtepi32_pd(__mmask8 __U, __m128i __A) {
3704   // CHECK-LABEL: @test_mm_maskz_cvtepi32_pd
3705   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i32> <i32 0, i32 1>
3706   // CHECK: sitofp <2 x i32> %{{.*}} to <2 x double>
3707   // CHECK: select <2 x i1> {{.*}}, <2 x double> {{.*}}, <2 x double> {{.*}}
3708   return _mm_maskz_cvtepi32_pd(__U,__A);
3709 }
3710 __m256d test_mm256_mask_cvtepi32_pd(__m256d __W, __mmask8 __U, __m128i __A) {
3711   // CHECK-LABEL: @test_mm256_mask_cvtepi32_pd
3712   // CHECK: sitofp <4 x i32> %{{.*}} to <4 x double>
3713   // CHECK: select <4 x i1> {{.*}}, <4 x double> {{.*}}, <4 x double> {{.*}}
3714   return _mm256_mask_cvtepi32_pd(__W,__U,__A);
3715 }
3716 __m256d test_mm256_maskz_cvtepi32_pd(__mmask8 __U, __m128i __A) {
3717   // CHECK-LABEL: @test_mm256_maskz_cvtepi32_pd
3718   // CHECK: sitofp <4 x i32> %{{.*}} to <4 x double>
3719   // CHECK: select <4 x i1> {{.*}}, <4 x double> {{.*}}, <4 x double> {{.*}}
3720   return _mm256_maskz_cvtepi32_pd(__U,__A);
3721 }
3722 __m128 test_mm_mask_cvtepi32_ps(__m128 __W, __mmask8 __U, __m128i __A) {
3723   // CHECK-LABEL: @test_mm_mask_cvtepi32_ps
3724   // CHECK: sitofp <4 x i32> %{{.*}} to <4 x float>
3725   // CHECK: select <4 x i1> {{.*}}, <4 x float> {{.*}}, <4 x float> {{.*}}
3726   return _mm_mask_cvtepi32_ps(__W,__U,__A); 
3727 }
3728 __m128 test_mm_maskz_cvtepi32_ps(__mmask8 __U, __m128i __A) {
3729   // CHECK-LABEL: @test_mm_maskz_cvtepi32_ps
3730   // CHECK: sitofp <4 x i32> %{{.*}} to <4 x float>
3731   // CHECK: select <4 x i1> {{.*}}, <4 x float> {{.*}}, <4 x float> {{.*}}
3732   return _mm_maskz_cvtepi32_ps(__U,__A); 
3733 }
3734 __m256 test_mm256_mask_cvtepi32_ps(__m256 __W, __mmask8 __U, __m256i __A) {
3735   // CHECK-LABEL: @test_mm256_mask_cvtepi32_ps
3736   // CHECK: sitofp <8 x i32> %{{.*}} to <8 x float>
3737   // CHECK: select <8 x i1> {{.*}}, <8 x float> {{.*}}, <8 x float> {{.*}}
3738   return _mm256_mask_cvtepi32_ps(__W,__U,__A); 
3739 }
3740 __m256 test_mm256_maskz_cvtepi32_ps(__mmask8 __U, __m256i __A) {
3741   // CHECK-LABEL: @test_mm256_maskz_cvtepi32_ps
3742   // CHECK: sitofp <8 x i32> %{{.*}} to <8 x float>
3743   // CHECK: select <8 x i1> {{.*}}, <8 x float> {{.*}}, <8 x float> {{.*}}
3744   return _mm256_maskz_cvtepi32_ps(__U,__A); 
3745 }
3746 __m128i test_mm_mask_cvtpd_epi32(__m128i __W, __mmask8 __U, __m128d __A) {
3747   // CHECK-LABEL: @test_mm_mask_cvtpd_epi32
3748   // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.128
3749   return _mm_mask_cvtpd_epi32(__W,__U,__A); 
3750 }
3751 __m128i test_mm_maskz_cvtpd_epi32(__mmask8 __U, __m128d __A) {
3752   // CHECK-LABEL: @test_mm_maskz_cvtpd_epi32
3753   // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.128
3754   return _mm_maskz_cvtpd_epi32(__U,__A); 
3755 }
3756 __m128i test_mm256_mask_cvtpd_epi32(__m128i __W, __mmask8 __U, __m256d __A) {
3757   // CHECK-LABEL: @test_mm256_mask_cvtpd_epi32
3758   // CHECK: @llvm.x86.avx.cvt.pd2dq.256
3759   // CHECK: select <4 x i1> {{.*}}, <4 x i32> {{.*}}, <4 x i32> {{.*}}
3760   return _mm256_mask_cvtpd_epi32(__W,__U,__A); 
3761 }
3762 __m128i test_mm256_maskz_cvtpd_epi32(__mmask8 __U, __m256d __A) {
3763   // CHECK-LABEL: @test_mm256_maskz_cvtpd_epi32
3764   // CHECK: @llvm.x86.avx.cvt.pd2dq.256
3765   // CHECK: select <4 x i1> {{.*}}, <4 x i32> {{.*}}, <4 x i32> {{.*}}
3766   return _mm256_maskz_cvtpd_epi32(__U,__A); 
3767 }
3768 __m128 test_mm_mask_cvtpd_ps(__m128 __W, __mmask8 __U, __m128d __A) {
3769   // CHECK-LABEL: @test_mm_mask_cvtpd_ps
3770   // CHECK: @llvm.x86.avx512.mask.cvtpd2ps
3771   return _mm_mask_cvtpd_ps(__W,__U,__A); 
3772 }
3773 __m128 test_mm_maskz_cvtpd_ps(__mmask8 __U, __m128d __A) {
3774   // CHECK-LABEL: @test_mm_maskz_cvtpd_ps
3775   // CHECK: @llvm.x86.avx512.mask.cvtpd2ps
3776   return _mm_maskz_cvtpd_ps(__U,__A); 
3777 }
3778 __m128 test_mm256_mask_cvtpd_ps(__m128 __W, __mmask8 __U, __m256d __A) {
3779   // CHECK-LABEL: @test_mm256_mask_cvtpd_ps
3780   // CHECK: @llvm.x86.avx.cvt.pd2.ps.256
3781   // CHECK: select <4 x i1> {{.*}}, <4 x float> {{.*}}, <4 x float> {{.*}}
3782   return _mm256_mask_cvtpd_ps(__W,__U,__A); 
3783 }
3784 __m128 test_mm256_maskz_cvtpd_ps(__mmask8 __U, __m256d __A) {
3785   // CHECK-LABEL: @test_mm256_maskz_cvtpd_ps
3786   // CHECK: @llvm.x86.avx.cvt.pd2.ps.256
3787   // CHECK: select <4 x i1> {{.*}}, <4 x float> {{.*}}, <4 x float> {{.*}}
3788   return _mm256_maskz_cvtpd_ps(__U,__A); 
3789 }
3790 __m128i test_mm_cvtpd_epu32(__m128d __A) {
3791   // CHECK-LABEL: @test_mm_cvtpd_epu32
3792   // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.128
3793   return _mm_cvtpd_epu32(__A); 
3794 }
3795 __m128i test_mm_mask_cvtpd_epu32(__m128i __W, __mmask8 __U, __m128d __A) {
3796   // CHECK-LABEL: @test_mm_mask_cvtpd_epu32
3797   // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.128
3798   return _mm_mask_cvtpd_epu32(__W,__U,__A); 
3799 }
3800 __m128i test_mm_maskz_cvtpd_epu32(__mmask8 __U, __m128d __A) {
3801   // CHECK-LABEL: @test_mm_maskz_cvtpd_epu32
3802   // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.128
3803   return _mm_maskz_cvtpd_epu32(__U,__A); 
3804 }
3805 __m128i test_mm256_cvtpd_epu32(__m256d __A) {
3806   // CHECK-LABEL: @test_mm256_cvtpd_epu32
3807   // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.256
3808   return _mm256_cvtpd_epu32(__A); 
3809 }
3810 __m128i test_mm256_mask_cvtpd_epu32(__m128i __W, __mmask8 __U, __m256d __A) {
3811   // CHECK-LABEL: @test_mm256_mask_cvtpd_epu32
3812   // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.256
3813   return _mm256_mask_cvtpd_epu32(__W,__U,__A); 
3814 }
3815 __m128i test_mm256_maskz_cvtpd_epu32(__mmask8 __U, __m256d __A) {
3816   // CHECK-LABEL: @test_mm256_maskz_cvtpd_epu32
3817   // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.256
3818   return _mm256_maskz_cvtpd_epu32(__U,__A); 
3819 }
3820 __m128i test_mm_mask_cvtps_epi32(__m128i __W, __mmask8 __U, __m128 __A) {
3821   // CHECK-LABEL: @test_mm_mask_cvtps_epi32
3822   // CHECK: @llvm.x86.sse2.cvtps2dq
3823   // CHECK: select <4 x i1> {{.*}}, <4 x i32> {{.*}}, <4 x i32> {{.*}}
3824   return _mm_mask_cvtps_epi32(__W,__U,__A); 
3825 }
3826 __m128i test_mm_maskz_cvtps_epi32(__mmask8 __U, __m128 __A) {
3827   // CHECK-LABEL: @test_mm_maskz_cvtps_epi32
3828   // CHECK: @llvm.x86.sse2.cvtps2dq
3829   // CHECK: select <4 x i1> {{.*}}, <4 x i32> {{.*}}, <4 x i32> {{.*}}
3830   return _mm_maskz_cvtps_epi32(__U,__A); 
3831 }
3832 __m256i test_mm256_mask_cvtps_epi32(__m256i __W, __mmask8 __U, __m256 __A) {
3833   // CHECK-LABEL: @test_mm256_mask_cvtps_epi32
3834   // CHECK: @llvm.x86.avx.cvt.ps2dq.256
3835   // CHECK: select <8 x i1> {{.*}}, <8 x i32> {{.*}}, <8 x i32> {{.*}}
3836   return _mm256_mask_cvtps_epi32(__W,__U,__A); 
3837 }
3838 __m256i test_mm256_maskz_cvtps_epi32(__mmask8 __U, __m256 __A) {
3839   // CHECK-LABEL: @test_mm256_maskz_cvtps_epi32
3840   // CHECK: @llvm.x86.avx.cvt.ps2dq.256
3841   // CHECK: select <8 x i1> {{.*}}, <8 x i32> {{.*}}, <8 x i32> {{.*}}
3842   return _mm256_maskz_cvtps_epi32(__U,__A); 
3843 }
3844 __m128d test_mm_mask_cvtps_pd(__m128d __W, __mmask8 __U, __m128 __A) {
3845   // CHECK-LABEL: @test_mm_mask_cvtps_pd
3846   // CHECK: fpext <2 x float> %{{.*}} to <2 x double>
3847   // CHECK: select <2 x i1> {{.*}}, <2 x double> {{.*}}, <2 x double> {{.*}}
3848   return _mm_mask_cvtps_pd(__W,__U,__A); 
3849 }
3850 __m128d test_mm_maskz_cvtps_pd(__mmask8 __U, __m128 __A) {
3851   // CHECK-LABEL: @test_mm_maskz_cvtps_pd
3852   // CHECK: fpext <2 x float> %{{.*}} to <2 x double>
3853   // CHECK: select <2 x i1> {{.*}}, <2 x double> {{.*}}, <2 x double> {{.*}}
3854   return _mm_maskz_cvtps_pd(__U,__A); 
3855 }
3856 __m256d test_mm256_mask_cvtps_pd(__m256d __W, __mmask8 __U, __m128 __A) {
3857   // CHECK-LABEL: @test_mm256_mask_cvtps_pd
3858   // CHECK: fpext <4 x float> %{{.*}} to <4 x double>
3859   // CHECK: select <4 x i1> {{.*}}, <4 x double> {{.*}}, <4 x double> {{.*}}
3860   return _mm256_mask_cvtps_pd(__W,__U,__A); 
3861 }
3862 __m256d test_mm256_maskz_cvtps_pd(__mmask8 __U, __m128 __A) {
3863   // CHECK-LABEL: @test_mm256_maskz_cvtps_pd
3864   // CHECK: fpext <4 x float> %{{.*}} to <4 x double>
3865   // CHECK: select <4 x i1> {{.*}}, <4 x double> {{.*}}, <4 x double> {{.*}}
3866   return _mm256_maskz_cvtps_pd(__U,__A); 
3867 }
3868 __m128i test_mm_cvtps_epu32(__m128 __A) {
3869   // CHECK-LABEL: @test_mm_cvtps_epu32
3870   // CHECK: @llvm.x86.avx512.mask.cvtps2udq.128
3871   return _mm_cvtps_epu32(__A); 
3872 }
3873 __m128i test_mm_mask_cvtps_epu32(__m128i __W, __mmask8 __U, __m128 __A) {
3874   // CHECK-LABEL: @test_mm_mask_cvtps_epu32
3875   // CHECK: @llvm.x86.avx512.mask.cvtps2udq.128
3876   return _mm_mask_cvtps_epu32(__W,__U,__A); 
3877 }
3878 __m128i test_mm_maskz_cvtps_epu32(__mmask8 __U, __m128 __A) {
3879   // CHECK-LABEL: @test_mm_maskz_cvtps_epu32
3880   // CHECK: @llvm.x86.avx512.mask.cvtps2udq.128
3881   return _mm_maskz_cvtps_epu32(__U,__A); 
3882 }
3883 __m256i test_mm256_cvtps_epu32(__m256 __A) {
3884   // CHECK-LABEL: @test_mm256_cvtps_epu32
3885   // CHECK: @llvm.x86.avx512.mask.cvtps2udq.256
3886   return _mm256_cvtps_epu32(__A); 
3887 }
3888 __m256i test_mm256_mask_cvtps_epu32(__m256i __W, __mmask8 __U, __m256 __A) {
3889   // CHECK-LABEL: @test_mm256_mask_cvtps_epu32
3890   // CHECK: @llvm.x86.avx512.mask.cvtps2udq.256
3891   return _mm256_mask_cvtps_epu32(__W,__U,__A); 
3892 }
3893 __m256i test_mm256_maskz_cvtps_epu32(__mmask8 __U, __m256 __A) {
3894   // CHECK-LABEL: @test_mm256_maskz_cvtps_epu32
3895   // CHECK: @llvm.x86.avx512.mask.cvtps2udq.256
3896   return _mm256_maskz_cvtps_epu32(__U,__A); 
3897 }
3898 __m128i test_mm_mask_cvttpd_epi32(__m128i __W, __mmask8 __U, __m128d __A) {
3899   // CHECK-LABEL: @test_mm_mask_cvttpd_epi32
3900   // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.128
3901   return _mm_mask_cvttpd_epi32(__W,__U,__A); 
3902 }
3903 __m128i test_mm_maskz_cvttpd_epi32(__mmask8 __U, __m128d __A) {
3904   // CHECK-LABEL: @test_mm_maskz_cvttpd_epi32
3905   // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.128
3906   return _mm_maskz_cvttpd_epi32(__U,__A); 
3907 }
3908 __m128i test_mm256_mask_cvttpd_epi32(__m128i __W, __mmask8 __U, __m256d __A) {
3909   // CHECK-LABEL: @test_mm256_mask_cvttpd_epi32
3910   // CHECK: @llvm.x86.avx.cvtt.pd2dq.256
3911   // CHECK: select <4 x i1> {{.*}}, <4 x i32> {{.*}}, <4 x i32> {{.*}}
3912   return _mm256_mask_cvttpd_epi32(__W,__U,__A); 
3913 }
3914 __m128i test_mm256_maskz_cvttpd_epi32(__mmask8 __U, __m256d __A) {
3915   // CHECK-LABEL: @test_mm256_maskz_cvttpd_epi32
3916   // CHECK: @llvm.x86.avx.cvtt.pd2dq.256
3917   // CHECK: select <4 x i1> {{.*}}, <4 x i32> {{.*}}, <4 x i32> {{.*}}
3918   return _mm256_maskz_cvttpd_epi32(__U,__A); 
3919 }
3920 __m128i test_mm_cvttpd_epu32(__m128d __A) {
3921   // CHECK-LABEL: @test_mm_cvttpd_epu32
3922   // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.128
3923   return _mm_cvttpd_epu32(__A); 
3924 }
3925 __m128i test_mm_mask_cvttpd_epu32(__m128i __W, __mmask8 __U, __m128d __A) {
3926   // CHECK-LABEL: @test_mm_mask_cvttpd_epu32
3927   // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.128
3928   return _mm_mask_cvttpd_epu32(__W,__U,__A); 
3929 }
3930 __m128i test_mm_maskz_cvttpd_epu32(__mmask8 __U, __m128d __A) {
3931   // CHECK-LABEL: @test_mm_maskz_cvttpd_epu32
3932   // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.128
3933   return _mm_maskz_cvttpd_epu32(__U,__A); 
3934 }
3935 __m128i test_mm256_cvttpd_epu32(__m256d __A) {
3936   // CHECK-LABEL: @test_mm256_cvttpd_epu32
3937   // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.256
3938   return _mm256_cvttpd_epu32(__A); 
3939 }
3940 __m128i test_mm256_mask_cvttpd_epu32(__m128i __W, __mmask8 __U, __m256d __A) {
3941   // CHECK-LABEL: @test_mm256_mask_cvttpd_epu32
3942   // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.256
3943   return _mm256_mask_cvttpd_epu32(__W,__U,__A); 
3944 }
3945 __m128i test_mm256_maskz_cvttpd_epu32(__mmask8 __U, __m256d __A) {
3946   // CHECK-LABEL: @test_mm256_maskz_cvttpd_epu32
3947   // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.256
3948   return _mm256_maskz_cvttpd_epu32(__U,__A); 
3949 }
3950 __m128i test_mm_mask_cvttps_epi32(__m128i __W, __mmask8 __U, __m128 __A) {
3951   // CHECK-LABEL: @test_mm_mask_cvttps_epi32
3952   // CHECK: @llvm.x86.sse2.cvttps2dq
3953   // CHECK: select <4 x i1> {{.*}}, <4 x i32> {{.*}}, <4 x i32> {{.*}}
3954   return _mm_mask_cvttps_epi32(__W,__U,__A); 
3955 }
3956 __m128i test_mm_maskz_cvttps_epi32(__mmask8 __U, __m128 __A) {
3957   // CHECK-LABEL: @test_mm_maskz_cvttps_epi32
3958   // CHECK: @llvm.x86.sse2.cvttps2dq
3959   // CHECK: select <4 x i1> {{.*}}, <4 x i32> {{.*}}, <4 x i32> {{.*}}
3960   return _mm_maskz_cvttps_epi32(__U,__A); 
3961 }
3962 __m256i test_mm256_mask_cvttps_epi32(__m256i __W, __mmask8 __U, __m256 __A) {
3963   // CHECK-LABEL: @test_mm256_mask_cvttps_epi32
3964   // CHECK: @llvm.x86.avx.cvtt.ps2dq.256
3965   // CHECK: select <8 x i1> {{.*}}, <8 x i32> {{.*}}, <8 x i32> {{.*}}
3966   return _mm256_mask_cvttps_epi32(__W,__U,__A); 
3967 }
3968 __m256i test_mm256_maskz_cvttps_epi32(__mmask8 __U, __m256 __A) {
3969   // CHECK-LABEL: @test_mm256_maskz_cvttps_epi32
3970   // CHECK: @llvm.x86.avx.cvtt.ps2dq.256
3971   // CHECK: select <8 x i1> {{.*}}, <8 x i32> {{.*}}, <8 x i32> {{.*}}
3972   return _mm256_maskz_cvttps_epi32(__U,__A); 
3973 }
3974 __m128i test_mm_cvttps_epu32(__m128 __A) {
3975   // CHECK-LABEL: @test_mm_cvttps_epu32
3976   // CHECK: @llvm.x86.avx512.mask.cvttps2udq.128
3977   return _mm_cvttps_epu32(__A); 
3978 }
3979 __m128i test_mm_mask_cvttps_epu32(__m128i __W, __mmask8 __U, __m128 __A) {
3980   // CHECK-LABEL: @test_mm_mask_cvttps_epu32
3981   // CHECK: @llvm.x86.avx512.mask.cvttps2udq.128
3982   return _mm_mask_cvttps_epu32(__W,__U,__A); 
3983 }
3984 __m128i test_mm_maskz_cvttps_epu32(__mmask8 __U, __m128 __A) {
3985   // CHECK-LABEL: @test_mm_maskz_cvttps_epu32
3986   // CHECK: @llvm.x86.avx512.mask.cvttps2udq.128
3987   return _mm_maskz_cvttps_epu32(__U,__A); 
3988 }
3989 __m256i test_mm256_cvttps_epu32(__m256 __A) {
3990   // CHECK-LABEL: @test_mm256_cvttps_epu32
3991   // CHECK: @llvm.x86.avx512.mask.cvttps2udq.256
3992   return _mm256_cvttps_epu32(__A); 
3993 }
3994 __m256i test_mm256_mask_cvttps_epu32(__m256i __W, __mmask8 __U, __m256 __A) {
3995   // CHECK-LABEL: @test_mm256_mask_cvttps_epu32
3996   // CHECK: @llvm.x86.avx512.mask.cvttps2udq.256
3997   return _mm256_mask_cvttps_epu32(__W,__U,__A); 
3998 }
3999 __m256i test_mm256_maskz_cvttps_epu32(__mmask8 __U, __m256 __A) {
4000   // CHECK-LABEL: @test_mm256_maskz_cvttps_epu32
4001   // CHECK: @llvm.x86.avx512.mask.cvttps2udq.256
4002   return _mm256_maskz_cvttps_epu32(__U,__A); 
4003 }
4004 __m128d test_mm_cvtepu32_pd(__m128i __A) {
4005   // CHECK-LABEL: @test_mm_cvtepu32_pd
4006   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i32> <i32 0, i32 1>
4007   // CHECK: uitofp <2 x i32> %{{.*}} to <2 x double>
4008   return _mm_cvtepu32_pd(__A);
4009 }
4010 __m128d test_mm_mask_cvtepu32_pd(__m128d __W, __mmask8 __U, __m128i __A) {
4011   // CHECK-LABEL: @test_mm_mask_cvtepu32_pd
4012   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i32> <i32 0, i32 1>
4013   // CHECK: uitofp <2 x i32> %{{.*}} to <2 x double>
4014   // CHECK: select <2 x i1> {{.*}}, <2 x double> {{.*}}, <2 x double> {{.*}}
4015   return _mm_mask_cvtepu32_pd(__W,__U,__A);
4016 }
4017 __m128d test_mm_maskz_cvtepu32_pd(__mmask8 __U, __m128i __A) {
4018   // CHECK-LABEL: @test_mm_maskz_cvtepu32_pd
4019   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i32> <i32 0, i32 1>
4020   // CHECK: uitofp <2 x i32> %{{.*}} to <2 x double>
4021   // CHECK: select <2 x i1> {{.*}}, <2 x double> {{.*}}, <2 x double> {{.*}}
4022   return _mm_maskz_cvtepu32_pd(__U,__A);
4023 }
4024 __m256d test_mm256_cvtepu32_pd(__m128i __A) {
4025   // CHECK-LABEL: @test_mm256_cvtepu32_pd
4026   // CHECK: uitofp <4 x i32> %{{.*}} to <4 x double>
4027   return _mm256_cvtepu32_pd(__A);
4028 }
4029 __m256d test_mm256_mask_cvtepu32_pd(__m256d __W, __mmask8 __U, __m128i __A) {
4030   // CHECK-LABEL: @test_mm256_mask_cvtepu32_pd
4031   // CHECK: uitofp <4 x i32> %{{.*}} to <4 x double>
4032   // CHECK: select <4 x i1> {{.*}}, <4 x double> {{.*}}, <4 x double> {{.*}}
4033   return _mm256_mask_cvtepu32_pd(__W,__U,__A);
4034 }
4035 __m256d test_mm256_maskz_cvtepu32_pd(__mmask8 __U, __m128i __A) {
4036   // CHECK-LABEL: @test_mm256_maskz_cvtepu32_pd
4037   // CHECK: uitofp <4 x i32> %{{.*}} to <4 x double>
4038   // CHECK: select <4 x i1> {{.*}}, <4 x double> {{.*}}, <4 x double> {{.*}}
4039   return _mm256_maskz_cvtepu32_pd(__U,__A);
4040 }
4041 __m128 test_mm_cvtepu32_ps(__m128i __A) {
4042   // CHECK-LABEL: @test_mm_cvtepu32_ps
4043   // CHECK: uitofp <4 x i32> %{{.*}} to <4 x float>
4044   return _mm_cvtepu32_ps(__A); 
4045 }
4046 __m128 test_mm_mask_cvtepu32_ps(__m128 __W, __mmask8 __U, __m128i __A) {
4047   // CHECK-LABEL: @test_mm_mask_cvtepu32_ps
4048   // CHECK: uitofp <4 x i32> %{{.*}} to <4 x float>
4049   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
4050   return _mm_mask_cvtepu32_ps(__W,__U,__A); 
4051 }
4052 __m128 test_mm_maskz_cvtepu32_ps(__mmask8 __U, __m128i __A) {
4053   // CHECK-LABEL: @test_mm_maskz_cvtepu32_ps
4054   // CHECK: uitofp <4 x i32> %{{.*}} to <4 x float>
4055   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
4056   return _mm_maskz_cvtepu32_ps(__U,__A); 
4057 }
4058 __m256 test_mm256_cvtepu32_ps(__m256i __A) {
4059   // CHECK-LABEL: @test_mm256_cvtepu32_ps
4060   // CHECK: uitofp <8 x i32> %{{.*}} to <8 x float>
4061   return _mm256_cvtepu32_ps(__A); 
4062 }
4063 __m256 test_mm256_mask_cvtepu32_ps(__m256 __W, __mmask8 __U, __m256i __A) {
4064   // CHECK-LABEL: @test_mm256_mask_cvtepu32_ps
4065   // CHECK: uitofp <8 x i32> %{{.*}} to <8 x float>
4066   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
4067   return _mm256_mask_cvtepu32_ps(__W,__U,__A); 
4068 }
4069 __m256 test_mm256_maskz_cvtepu32_ps(__mmask8 __U, __m256i __A) {
4070   // CHECK-LABEL: @test_mm256_maskz_cvtepu32_ps
4071   // CHECK: uitofp <8 x i32> %{{.*}} to <8 x float>
4072   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
4073   return _mm256_maskz_cvtepu32_ps(__U,__A); 
4074 }
4075 __m128d test_mm_mask_div_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
4076   // CHECK-LABEL: @test_mm_mask_div_pd
4077   // CHECK: fdiv <2 x double> %{{.*}}, %{{.*}}
4078   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
4079   return _mm_mask_div_pd(__W,__U,__A,__B); 
4080 }
4081 __m128d test_mm_maskz_div_pd(__mmask8 __U, __m128d __A, __m128d __B) {
4082   // CHECK-LABEL: @test_mm_maskz_div_pd
4083   // CHECK: fdiv <2 x double> %{{.*}}, %{{.*}}
4084   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
4085   return _mm_maskz_div_pd(__U,__A,__B); 
4086 }
4087 __m256d test_mm256_mask_div_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
4088   // CHECK-LABEL: @test_mm256_mask_div_pd
4089   // CHECK: fdiv <4 x double> %{{.*}}, %{{.*}}
4090   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
4091   return _mm256_mask_div_pd(__W,__U,__A,__B); 
4092 }
4093 __m256d test_mm256_maskz_div_pd(__mmask8 __U, __m256d __A, __m256d __B) {
4094   // CHECK-LABEL: @test_mm256_maskz_div_pd
4095   // CHECK: fdiv <4 x double> %{{.*}}, %{{.*}}
4096   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
4097   return _mm256_maskz_div_pd(__U,__A,__B); 
4098 }
4099 __m128 test_mm_mask_div_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
4100   // CHECK-LABEL: @test_mm_mask_div_ps
4101   // CHECK: fdiv <4 x float> %{{.*}}, %{{.*}}
4102   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
4103   return _mm_mask_div_ps(__W,__U,__A,__B); 
4104 }
4105 __m128 test_mm_maskz_div_ps(__mmask8 __U, __m128 __A, __m128 __B) {
4106   // CHECK-LABEL: @test_mm_maskz_div_ps
4107   // CHECK: fdiv <4 x float> %{{.*}}, %{{.*}}
4108   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
4109   return _mm_maskz_div_ps(__U,__A,__B); 
4110 }
4111 __m256 test_mm256_mask_div_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
4112   // CHECK-LABEL: @test_mm256_mask_div_ps
4113   // CHECK: fdiv <8 x float> %{{.*}}, %{{.*}}
4114   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
4115   return _mm256_mask_div_ps(__W,__U,__A,__B); 
4116 }
4117 __m256 test_mm256_maskz_div_ps(__mmask8 __U, __m256 __A, __m256 __B) {
4118   // CHECK-LABEL: @test_mm256_maskz_div_ps
4119   // CHECK: fdiv <8 x float> %{{.*}}, %{{.*}}
4120   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
4121   return _mm256_maskz_div_ps(__U,__A,__B); 
4122 }
4123 __m128d test_mm_mask_expand_pd(__m128d __W, __mmask8 __U, __m128d __A) {
4124   // CHECK-LABEL: @test_mm_mask_expand_pd
4125   // CHECK: @llvm.x86.avx512.mask.expand.pd.128
4126   return _mm_mask_expand_pd(__W,__U,__A); 
4127 }
4128 __m128d test_mm_maskz_expand_pd(__mmask8 __U, __m128d __A) {
4129   // CHECK-LABEL: @test_mm_maskz_expand_pd
4130   // CHECK: @llvm.x86.avx512.mask.expand.pd.128
4131   return _mm_maskz_expand_pd(__U,__A); 
4132 }
4133 __m256d test_mm256_mask_expand_pd(__m256d __W, __mmask8 __U, __m256d __A) {
4134   // CHECK-LABEL: @test_mm256_mask_expand_pd
4135   // CHECK: @llvm.x86.avx512.mask.expand.pd.256
4136   return _mm256_mask_expand_pd(__W,__U,__A); 
4137 }
4138 __m256d test_mm256_maskz_expand_pd(__mmask8 __U, __m256d __A) {
4139   // CHECK-LABEL: @test_mm256_maskz_expand_pd
4140   // CHECK: @llvm.x86.avx512.mask.expand.pd.256
4141   return _mm256_maskz_expand_pd(__U,__A); 
4142 }
4143 __m128i test_mm_mask_expand_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
4144   // CHECK-LABEL: @test_mm_mask_expand_epi64
4145   // CHECK: @llvm.x86.avx512.mask.expand.q.128
4146   return _mm_mask_expand_epi64(__W,__U,__A); 
4147 }
4148 __m128i test_mm_maskz_expand_epi64(__mmask8 __U, __m128i __A) {
4149   // CHECK-LABEL: @test_mm_maskz_expand_epi64
4150   // CHECK: @llvm.x86.avx512.mask.expand.q.128
4151   return _mm_maskz_expand_epi64(__U,__A); 
4152 }
4153 __m256i test_mm256_mask_expand_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
4154   // CHECK-LABEL: @test_mm256_mask_expand_epi64
4155   // CHECK: @llvm.x86.avx512.mask.expand.q.256
4156   return _mm256_mask_expand_epi64(__W,__U,__A); 
4157 }
4158 __m256i test_mm256_maskz_expand_epi64(__mmask8 __U, __m256i __A) {
4159   // CHECK-LABEL: @test_mm256_maskz_expand_epi64
4160   // CHECK: @llvm.x86.avx512.mask.expand.q.256
4161   return _mm256_maskz_expand_epi64(__U,__A); 
4162 }
4163 __m128d test_mm_mask_expandloadu_pd(__m128d __W, __mmask8 __U, void const *__P) {
4164   // CHECK-LABEL: @test_mm_mask_expandloadu_pd
4165   // CHECK: @llvm.masked.expandload.v2f64(double* %{{.*}}, <2 x i1> %{{.*}}, <2 x double> %{{.*}})
4166   return _mm_mask_expandloadu_pd(__W,__U,__P); 
4167 }
4168 __m128d test_mm_maskz_expandloadu_pd(__mmask8 __U, void const *__P) {
4169   // CHECK-LABEL: @test_mm_maskz_expandloadu_pd
4170   // CHECK: @llvm.masked.expandload.v2f64(double* %{{.*}}, <2 x i1> %{{.*}}, <2 x double> %{{.*}})
4171   return _mm_maskz_expandloadu_pd(__U,__P); 
4172 }
4173 __m256d test_mm256_mask_expandloadu_pd(__m256d __W, __mmask8 __U, void const *__P) {
4174   // CHECK-LABEL: @test_mm256_mask_expandloadu_pd
4175   // CHECK: @llvm.masked.expandload.v4f64(double* %{{.*}}, <4 x i1> %{{.*}}, <4 x double> %{{.*}})
4176   return _mm256_mask_expandloadu_pd(__W,__U,__P); 
4177 }
4178 __m256d test_mm256_maskz_expandloadu_pd(__mmask8 __U, void const *__P) {
4179   // CHECK-LABEL: @test_mm256_maskz_expandloadu_pd
4180   // CHECK: @llvm.masked.expandload.v4f64(double* %{{.*}}, <4 x i1> %{{.*}}, <4 x double> %{{.*}})
4181   return _mm256_maskz_expandloadu_pd(__U,__P); 
4182 }
4183 __m128i test_mm_mask_expandloadu_epi64(__m128i __W, __mmask8 __U, void const *__P) {
4184   // CHECK-LABEL: @test_mm_mask_expandloadu_epi64
4185   // CHECK: @llvm.masked.expandload.v2i64(i64* %{{.*}}, <2 x i1> %{{.*}}, <2 x i64> %{{.*}})
4186   return _mm_mask_expandloadu_epi64(__W,__U,__P); 
4187 }
4188 __m128i test_mm_maskz_expandloadu_epi64(__mmask8 __U, void const *__P) {
4189   // CHECK-LABEL: @test_mm_maskz_expandloadu_epi64
4190   // CHECK: @llvm.masked.expandload.v2i64(i64* %{{.*}}, <2 x i1> %{{.*}}, <2 x i64> %{{.*}})
4191   return _mm_maskz_expandloadu_epi64(__U,__P); 
4192 }
4193 __m256i test_mm256_mask_expandloadu_epi64(__m256i __W, __mmask8 __U,   void const *__P) {
4194   // CHECK-LABEL: @test_mm256_mask_expandloadu_epi64
4195   // CHECK: @llvm.masked.expandload.v4i64(i64* %{{.*}}, <4 x i1> %{{.*}}, <4 x i64> %{{.*}})
4196   return _mm256_mask_expandloadu_epi64(__W,__U,__P); 
4197 }
4198 __m256i test_mm256_maskz_expandloadu_epi64(__mmask8 __U, void const *__P) {
4199   // CHECK-LABEL: @test_mm256_maskz_expandloadu_epi64
4200   // CHECK: @llvm.masked.expandload.v4i64(i64* %{{.*}}, <4 x i1> %{{.*}}, <4 x i64> %{{.*}})
4201   return _mm256_maskz_expandloadu_epi64(__U,__P); 
4202 }
4203 __m128 test_mm_mask_expandloadu_ps(__m128 __W, __mmask8 __U, void const *__P) {
4204   // CHECK-LABEL: @test_mm_mask_expandloadu_ps
4205   // CHECK: @llvm.masked.expandload.v4f32(float* %{{.*}}, <4 x i1> %{{.*}}, <4 x float> %{{.*}})
4206   return _mm_mask_expandloadu_ps(__W,__U,__P); 
4207 }
4208 __m128 test_mm_maskz_expandloadu_ps(__mmask8 __U, void const *__P) {
4209   // CHECK-LABEL: @test_mm_maskz_expandloadu_ps
4210   // CHECK: @llvm.masked.expandload.v4f32(float* %{{.*}}, <4 x i1> %{{.*}}, <4 x float> %{{.*}})
4211   return _mm_maskz_expandloadu_ps(__U,__P); 
4212 }
4213 __m256 test_mm256_mask_expandloadu_ps(__m256 __W, __mmask8 __U, void const *__P) {
4214   // CHECK-LABEL: @test_mm256_mask_expandloadu_ps
4215   // CHECK: @llvm.masked.expandload.v8f32(float* %{{.*}}, <8 x i1> %{{.*}}, <8 x float> %{{.*}})
4216   return _mm256_mask_expandloadu_ps(__W,__U,__P); 
4217 }
4218 __m256 test_mm256_maskz_expandloadu_ps(__mmask8 __U, void const *__P) {
4219   // CHECK-LABEL: @test_mm256_maskz_expandloadu_ps
4220   // CHECK: @llvm.masked.expandload.v8f32(float* %{{.*}}, <8 x i1> %{{.*}}, <8 x float> %{{.*}})
4221   return _mm256_maskz_expandloadu_ps(__U,__P); 
4222 }
4223 __m128i test_mm_mask_expandloadu_epi32(__m128i __W, __mmask8 __U, void const *__P) {
4224   // CHECK-LABEL: @test_mm_mask_expandloadu_epi32
4225   // CHECK: @llvm.masked.expandload.v4i32(i32* %{{.*}}, <4 x i1> %{{.*}}, <4 x i32> %{{.*}})
4226   return _mm_mask_expandloadu_epi32(__W,__U,__P); 
4227 }
4228 __m128i test_mm_maskz_expandloadu_epi32(__mmask8 __U, void const *__P) {
4229   // CHECK-LABEL: @test_mm_maskz_expandloadu_epi32
4230   // CHECK: @llvm.masked.expandload.v4i32(i32* %{{.*}}, <4 x i1> %{{.*}}, <4 x i32> %{{.*}})
4231   return _mm_maskz_expandloadu_epi32(__U,__P); 
4232 }
4233 __m256i test_mm256_mask_expandloadu_epi32(__m256i __W, __mmask8 __U,   void const *__P) {
4234   // CHECK-LABEL: @test_mm256_mask_expandloadu_epi32
4235   // CHECK: @llvm.masked.expandload.v8i32(i32* %{{.*}}, <8 x i1> %{{.*}}, <8 x i32> %{{.*}})
4236   return _mm256_mask_expandloadu_epi32(__W,__U,__P); 
4237 }
4238 __m256i test_mm256_maskz_expandloadu_epi32(__mmask8 __U, void const *__P) {
4239   // CHECK-LABEL: @test_mm256_maskz_expandloadu_epi32
4240   // CHECK: @llvm.masked.expandload.v8i32(i32* %{{.*}}, <8 x i1> %{{.*}}, <8 x i32> %{{.*}})
4241   return _mm256_maskz_expandloadu_epi32(__U,__P); 
4242 }
4243 __m128 test_mm_mask_expand_ps(__m128 __W, __mmask8 __U, __m128 __A) {
4244   // CHECK-LABEL: @test_mm_mask_expand_ps
4245   // CHECK: @llvm.x86.avx512.mask.expand.ps.128
4246   return _mm_mask_expand_ps(__W,__U,__A); 
4247 }
4248 __m128 test_mm_maskz_expand_ps(__mmask8 __U, __m128 __A) {
4249   // CHECK-LABEL: @test_mm_maskz_expand_ps
4250   // CHECK: @llvm.x86.avx512.mask.expand.ps.128
4251   return _mm_maskz_expand_ps(__U,__A); 
4252 }
4253 __m256 test_mm256_mask_expand_ps(__m256 __W, __mmask8 __U, __m256 __A) {
4254   // CHECK-LABEL: @test_mm256_mask_expand_ps
4255   // CHECK: @llvm.x86.avx512.mask.expand.ps.256
4256   return _mm256_mask_expand_ps(__W,__U,__A); 
4257 }
4258 __m256 test_mm256_maskz_expand_ps(__mmask8 __U, __m256 __A) {
4259   // CHECK-LABEL: @test_mm256_maskz_expand_ps
4260   // CHECK: @llvm.x86.avx512.mask.expand.ps.256
4261   return _mm256_maskz_expand_ps(__U,__A); 
4262 }
4263 __m128i test_mm_mask_expand_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
4264   // CHECK-LABEL: @test_mm_mask_expand_epi32
4265   // CHECK: @llvm.x86.avx512.mask.expand.d.128
4266   return _mm_mask_expand_epi32(__W,__U,__A); 
4267 }
4268 __m128i test_mm_maskz_expand_epi32(__mmask8 __U, __m128i __A) {
4269   // CHECK-LABEL: @test_mm_maskz_expand_epi32
4270   // CHECK: @llvm.x86.avx512.mask.expand.d.128
4271   return _mm_maskz_expand_epi32(__U,__A); 
4272 }
4273 __m256i test_mm256_mask_expand_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
4274   // CHECK-LABEL: @test_mm256_mask_expand_epi32
4275   // CHECK: @llvm.x86.avx512.mask.expand.d.256
4276   return _mm256_mask_expand_epi32(__W,__U,__A); 
4277 }
4278 __m256i test_mm256_maskz_expand_epi32(__mmask8 __U, __m256i __A) {
4279   // CHECK-LABEL: @test_mm256_maskz_expand_epi32
4280   // CHECK: @llvm.x86.avx512.mask.expand.d.256
4281   return _mm256_maskz_expand_epi32(__U,__A); 
4282 }
4283 __m128d test_mm_getexp_pd(__m128d __A) {
4284   // CHECK-LABEL: @test_mm_getexp_pd
4285   // CHECK: @llvm.x86.avx512.mask.getexp.pd.128
4286   return _mm_getexp_pd(__A); 
4287 }
4288 __m128d test_mm_mask_getexp_pd(__m128d __W, __mmask8 __U, __m128d __A) {
4289   // CHECK-LABEL: @test_mm_mask_getexp_pd
4290   // CHECK: @llvm.x86.avx512.mask.getexp.pd.128
4291   return _mm_mask_getexp_pd(__W,__U,__A); 
4292 }
4293 __m128d test_mm_maskz_getexp_pd(__mmask8 __U, __m128d __A) {
4294   // CHECK-LABEL: @test_mm_maskz_getexp_pd
4295   // CHECK: @llvm.x86.avx512.mask.getexp.pd.128
4296   return _mm_maskz_getexp_pd(__U,__A); 
4297 }
4298 __m256d test_mm256_getexp_pd(__m256d __A) {
4299   // CHECK-LABEL: @test_mm256_getexp_pd
4300   // CHECK: @llvm.x86.avx512.mask.getexp.pd.256
4301   return _mm256_getexp_pd(__A); 
4302 }
4303 __m256d test_mm256_mask_getexp_pd(__m256d __W, __mmask8 __U, __m256d __A) {
4304   // CHECK-LABEL: @test_mm256_mask_getexp_pd
4305   // CHECK: @llvm.x86.avx512.mask.getexp.pd.256
4306   return _mm256_mask_getexp_pd(__W,__U,__A); 
4307 }
4308 __m256d test_mm256_maskz_getexp_pd(__mmask8 __U, __m256d __A) {
4309   // CHECK-LABEL: @test_mm256_maskz_getexp_pd
4310   // CHECK: @llvm.x86.avx512.mask.getexp.pd.256
4311   return _mm256_maskz_getexp_pd(__U,__A); 
4312 }
4313 __m128 test_mm_getexp_ps(__m128 __A) {
4314   // CHECK-LABEL: @test_mm_getexp_ps
4315   // CHECK: @llvm.x86.avx512.mask.getexp.ps.128
4316   return _mm_getexp_ps(__A); 
4317 }
4318 __m128 test_mm_mask_getexp_ps(__m128 __W, __mmask8 __U, __m128 __A) {
4319   // CHECK-LABEL: @test_mm_mask_getexp_ps
4320   // CHECK: @llvm.x86.avx512.mask.getexp.ps.128
4321   return _mm_mask_getexp_ps(__W,__U,__A); 
4322 }
4323 __m128 test_mm_maskz_getexp_ps(__mmask8 __U, __m128 __A) {
4324   // CHECK-LABEL: @test_mm_maskz_getexp_ps
4325   // CHECK: @llvm.x86.avx512.mask.getexp.ps.128
4326   return _mm_maskz_getexp_ps(__U,__A); 
4327 }
4328 __m256 test_mm256_getexp_ps(__m256 __A) {
4329   // CHECK-LABEL: @test_mm256_getexp_ps
4330   // CHECK: @llvm.x86.avx512.mask.getexp.ps.256
4331   return _mm256_getexp_ps(__A); 
4332 }
4333 __m256 test_mm256_mask_getexp_ps(__m256 __W, __mmask8 __U, __m256 __A) {
4334   // CHECK-LABEL: @test_mm256_mask_getexp_ps
4335   // CHECK: @llvm.x86.avx512.mask.getexp.ps.256
4336   return _mm256_mask_getexp_ps(__W,__U,__A); 
4337 }
4338 __m256 test_mm256_maskz_getexp_ps(__mmask8 __U, __m256 __A) {
4339   // CHECK-LABEL: @test_mm256_maskz_getexp_ps
4340   // CHECK: @llvm.x86.avx512.mask.getexp.ps.256
4341   return _mm256_maskz_getexp_ps(__U,__A); 
4342 }
4343 __m128d test_mm_mask_max_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
4344   // CHECK-LABEL: @test_mm_mask_max_pd
4345   // CHECK: @llvm.x86.sse2.max.pd
4346   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
4347   return _mm_mask_max_pd(__W,__U,__A,__B); 
4348 }
4349 __m128d test_mm_maskz_max_pd(__mmask8 __U, __m128d __A, __m128d __B) {
4350   // CHECK-LABEL: @test_mm_maskz_max_pd
4351   // CHECK: @llvm.x86.sse2.max.pd
4352   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
4353   return _mm_maskz_max_pd(__U,__A,__B); 
4354 }
4355 __m256d test_mm256_mask_max_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
4356   // CHECK-LABEL: @test_mm256_mask_max_pd
4357   // CHECK: @llvm.x86.avx.max.pd.256
4358   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
4359   return _mm256_mask_max_pd(__W,__U,__A,__B); 
4360 }
4361 __m256d test_mm256_maskz_max_pd(__mmask8 __U, __m256d __A, __m256d __B) {
4362   // CHECK-LABEL: @test_mm256_maskz_max_pd
4363   // CHECK: @llvm.x86.avx.max.pd.256
4364   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
4365   return _mm256_maskz_max_pd(__U,__A,__B); 
4366 }
4367 __m128 test_mm_mask_max_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
4368   // CHECK-LABEL: @test_mm_mask_max_ps
4369   // CHECK: @llvm.x86.sse.max.ps
4370   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
4371   return _mm_mask_max_ps(__W,__U,__A,__B); 
4372 }
4373 __m128 test_mm_maskz_max_ps(__mmask8 __U, __m128 __A, __m128 __B) {
4374   // CHECK-LABEL: @test_mm_maskz_max_ps
4375   // CHECK: @llvm.x86.sse.max.ps
4376   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
4377   return _mm_maskz_max_ps(__U,__A,__B); 
4378 }
4379 __m256 test_mm256_mask_max_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
4380   // CHECK-LABEL: @test_mm256_mask_max_ps
4381   // CHECK: @llvm.x86.avx.max.ps.256
4382   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
4383   return _mm256_mask_max_ps(__W,__U,__A,__B); 
4384 }
4385 __m256 test_mm256_maskz_max_ps(__mmask8 __U, __m256 __A, __m256 __B) {
4386   // CHECK-LABEL: @test_mm256_maskz_max_ps
4387   // CHECK: @llvm.x86.avx.max.ps.256
4388   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
4389   return _mm256_maskz_max_ps(__U,__A,__B); 
4390 }
4391 __m128d test_mm_mask_min_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
4392   // CHECK-LABEL: @test_mm_mask_min_pd
4393   // CHECK: @llvm.x86.sse2.min.pd
4394   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
4395   return _mm_mask_min_pd(__W,__U,__A,__B); 
4396 }
4397 __m128d test_mm_maskz_min_pd(__mmask8 __U, __m128d __A, __m128d __B) {
4398   // CHECK-LABEL: @test_mm_maskz_min_pd
4399   // CHECK: @llvm.x86.sse2.min.pd
4400   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
4401   return _mm_maskz_min_pd(__U,__A,__B); 
4402 }
4403 __m256d test_mm256_mask_min_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
4404   // CHECK-LABEL: @test_mm256_mask_min_pd
4405   // CHECK: @llvm.x86.avx.min.pd.256
4406   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
4407   return _mm256_mask_min_pd(__W,__U,__A,__B); 
4408 }
4409 __m256d test_mm256_maskz_min_pd(__mmask8 __U, __m256d __A, __m256d __B) {
4410   // CHECK-LABEL: @test_mm256_maskz_min_pd
4411   // CHECK: @llvm.x86.avx.min.pd.256
4412   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
4413   return _mm256_maskz_min_pd(__U,__A,__B); 
4414 }
4415 __m128 test_mm_mask_min_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
4416   // CHECK-LABEL: @test_mm_mask_min_ps
4417   // CHECK: @llvm.x86.sse.min.ps
4418   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
4419   return _mm_mask_min_ps(__W,__U,__A,__B); 
4420 }
4421 __m128 test_mm_maskz_min_ps(__mmask8 __U, __m128 __A, __m128 __B) {
4422   // CHECK-LABEL: @test_mm_maskz_min_ps
4423   // CHECK: @llvm.x86.sse.min.ps
4424   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
4425   return _mm_maskz_min_ps(__U,__A,__B); 
4426 }
4427 __m256 test_mm256_mask_min_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
4428   // CHECK-LABEL: @test_mm256_mask_min_ps
4429   // CHECK: @llvm.x86.avx.min.ps.256
4430   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
4431   return _mm256_mask_min_ps(__W,__U,__A,__B); 
4432 }
4433 __m256 test_mm256_maskz_min_ps(__mmask8 __U, __m256 __A, __m256 __B) {
4434   // CHECK-LABEL: @test_mm256_maskz_min_ps
4435   // CHECK: @llvm.x86.avx.min.ps.256
4436   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
4437   return _mm256_maskz_min_ps(__U,__A,__B); 
4438 }
4439 __m128d test_mm_mask_mul_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
4440   // CHECK-LABEL: @test_mm_mask_mul_pd
4441   // CHECK: fmul <2 x double> %{{.*}}, %{{.*}}
4442   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
4443   return _mm_mask_mul_pd(__W,__U,__A,__B); 
4444 }
4445 __m128d test_mm_maskz_mul_pd(__mmask8 __U, __m128d __A, __m128d __B) {
4446   // CHECK-LABEL: @test_mm_maskz_mul_pd
4447   // CHECK: fmul <2 x double> %{{.*}}, %{{.*}}
4448   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
4449   return _mm_maskz_mul_pd(__U,__A,__B); 
4450 }
4451 __m256d test_mm256_mask_mul_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
4452   // CHECK-LABEL: @test_mm256_mask_mul_pd
4453   // CHECK: fmul <4 x double> %{{.*}}, %{{.*}}
4454   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
4455   return _mm256_mask_mul_pd(__W,__U,__A,__B); 
4456 }
4457 __m256d test_mm256_maskz_mul_pd(__mmask8 __U, __m256d __A, __m256d __B) {
4458   // CHECK-LABEL: @test_mm256_maskz_mul_pd
4459   // CHECK: fmul <4 x double> %{{.*}}, %{{.*}}
4460   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
4461   return _mm256_maskz_mul_pd(__U,__A,__B); 
4462 }
4463 __m128 test_mm_mask_mul_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
4464   // CHECK-LABEL: @test_mm_mask_mul_ps
4465   // CHECK: fmul <4 x float> %{{.*}}, %{{.*}}
4466   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
4467   return _mm_mask_mul_ps(__W,__U,__A,__B); 
4468 }
4469 __m128 test_mm_maskz_mul_ps(__mmask8 __U, __m128 __A, __m128 __B) {
4470   // CHECK-LABEL: @test_mm_maskz_mul_ps
4471   // CHECK: fmul <4 x float> %{{.*}}, %{{.*}}
4472   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
4473   return _mm_maskz_mul_ps(__U,__A,__B); 
4474 }
4475 __m256 test_mm256_mask_mul_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
4476   // CHECK-LABEL: @test_mm256_mask_mul_ps
4477   // CHECK: fmul <8 x float> %{{.*}}, %{{.*}}
4478   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
4479   return _mm256_mask_mul_ps(__W,__U,__A,__B); 
4480 }
4481 __m256 test_mm256_maskz_mul_ps(__mmask8 __U, __m256 __A, __m256 __B) {
4482   // CHECK-LABEL: @test_mm256_maskz_mul_ps
4483   // CHECK: fmul <8 x float> %{{.*}}, %{{.*}}
4484   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
4485   return _mm256_maskz_mul_ps(__U,__A,__B); 
4486 }
4487 __m128i test_mm_mask_abs_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
4488   // CHECK-LABEL: @test_mm_mask_abs_epi32
4489   // CHECK: [[SUB:%.*]] = sub <4 x i32> zeroinitializer, [[A:%.*]]
4490   // CHECK: [[CMP:%.*]] = icmp sgt <4 x i32> [[A]], zeroinitializer
4491   // CHECK: [[SEL:%.*]] = select <4 x i1> [[CMP]], <4 x i32> [[A]], <4 x i32> [[SUB]]
4492   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> [[SEL]], <4 x i32> %{{.*}}
4493   return _mm_mask_abs_epi32(__W,__U,__A); 
4494 }
4495 __m128i test_mm_maskz_abs_epi32(__mmask8 __U, __m128i __A) {
4496   // CHECK-LABEL: @test_mm_maskz_abs_epi32
4497   // CHECK: [[SUB:%.*]] = sub <4 x i32> zeroinitializer, [[A:%.*]]
4498   // CHECK: [[CMP:%.*]] = icmp sgt <4 x i32> [[A]], zeroinitializer
4499   // CHECK: [[SEL:%.*]] = select <4 x i1> [[CMP]], <4 x i32> [[A]], <4 x i32> [[SUB]]
4500   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> [[SEL]], <4 x i32> %{{.*}}
4501   return _mm_maskz_abs_epi32(__U,__A); 
4502 }
4503 __m256i test_mm256_mask_abs_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
4504   // CHECK-LABEL: @test_mm256_mask_abs_epi32
4505   // CHECK: [[SUB:%.*]] = sub <8 x i32> zeroinitializer, [[A:%.*]]
4506   // CHECK: [[CMP:%.*]] = icmp sgt <8 x i32> [[A]], zeroinitializer
4507   // CHECK: [[SEL:%.*]] = select <8 x i1> [[CMP]], <8 x i32> [[A]], <8 x i32> [[SUB]]
4508   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> [[SEL]], <8 x i32> %{{.*}}
4509   return _mm256_mask_abs_epi32(__W,__U,__A); 
4510 }
4511 __m256i test_mm256_maskz_abs_epi32(__mmask8 __U, __m256i __A) {
4512   // CHECK-LABEL: @test_mm256_maskz_abs_epi32
4513   // CHECK: [[SUB:%.*]] = sub <8 x i32> zeroinitializer, [[A:%.*]]
4514   // CHECK: [[CMP:%.*]] = icmp sgt <8 x i32> [[A]], zeroinitializer
4515   // CHECK: [[SEL:%.*]] = select <8 x i1> [[CMP]], <8 x i32> [[A]], <8 x i32> [[SUB]]
4516   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> [[SEL]], <8 x i32> %{{.*}}
4517   return _mm256_maskz_abs_epi32(__U,__A); 
4518 }
4519 __m128i test_mm_abs_epi64(__m128i __A) {
4520   // CHECK-LABEL: @test_mm_abs_epi64
4521   // CHECK: [[SUB:%.*]] = sub <2 x i64> zeroinitializer, [[A:%.*]]
4522   // CHECK: [[CMP:%.*]] = icmp sgt <2 x i64> [[A]], zeroinitializer
4523   // CHECK: select <2 x i1> [[CMP]], <2 x i64> [[A]], <2 x i64> [[SUB]]
4524
4525   return _mm_abs_epi64(__A); 
4526 }
4527 __m128i test_mm_mask_abs_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
4528   // CHECK-LABEL: @test_mm_mask_abs_epi64
4529   // CHECK: [[SUB:%.*]] = sub <2 x i64> zeroinitializer, [[A:%.*]]
4530   // CHECK: [[CMP:%.*]] = icmp sgt <2 x i64> [[A]], zeroinitializer
4531   // CHECK: [[SEL:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[A]], <2 x i64> [[SUB]]
4532   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> [[SEL]], <2 x i64> %{{.*}}
4533
4534   return _mm_mask_abs_epi64(__W,__U,__A); 
4535 }
4536 __m128i test_mm_maskz_abs_epi64(__mmask8 __U, __m128i __A) {
4537   // CHECK-LABEL: @test_mm_maskz_abs_epi64
4538   // CHECK: [[SUB:%.*]] = sub <2 x i64> zeroinitializer, [[A:%.*]]
4539   // CHECK: [[CMP:%.*]] = icmp sgt <2 x i64> [[A]], zeroinitializer
4540   // CHECK: [[SEL:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[A]], <2 x i64> [[SUB]]
4541   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> [[SEL]], <2 x i64> %{{.*}}
4542   return _mm_maskz_abs_epi64(__U,__A); 
4543 }
4544 __m256i test_mm256_abs_epi64(__m256i __A) {
4545   // CHECK-LABEL: @test_mm256_abs_epi64
4546   // CHECK: [[SUB:%.*]] = sub <4 x i64> zeroinitializer, [[A:%.*]]
4547   // CHECK: [[CMP:%.*]] = icmp sgt <4 x i64> [[A]], zeroinitializer
4548   // CHECK: select <4 x i1> [[CMP]], <4 x i64> [[A]], <4 x i64> [[SUB]]
4549   return _mm256_abs_epi64(__A); 
4550 }
4551 __m256i test_mm256_mask_abs_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
4552   // CHECK-LABEL: @test_mm256_mask_abs_epi64
4553   // CHECK: [[SUB:%.*]] = sub <4 x i64> zeroinitializer, [[A:%.*]]
4554   // CHECK: [[CMP:%.*]] = icmp sgt <4 x i64> [[A]], zeroinitializer
4555   // CHECK: [[SEL:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[A]], <4 x i64> [[SUB]]
4556   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> [[SEL]], <4 x i64> %{{.*}}
4557   return _mm256_mask_abs_epi64(__W,__U,__A); 
4558 }
4559 __m256i test_mm256_maskz_abs_epi64(__mmask8 __U, __m256i __A) {
4560   // CHECK-LABEL: @test_mm256_maskz_abs_epi64
4561   // CHECK: [[SUB:%.*]] = sub <4 x i64> zeroinitializer, [[A:%.*]]
4562   // CHECK: [[CMP:%.*]] = icmp sgt <4 x i64> [[A]], zeroinitializer
4563   // CHECK: [[SEL:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[A]], <4 x i64> [[SUB]]
4564   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> [[SEL]], <4 x i64> %{{.*}}
4565   return _mm256_maskz_abs_epi64(__U,__A); 
4566 }
4567 __m128i test_mm_maskz_max_epi32(__mmask8 __M, __m128i __A, __m128i __B) {
4568   // CHECK-LABEL: @test_mm_maskz_max_epi32
4569   // CHECK:       [[CMP:%.*]] = icmp sgt <4 x i32> [[X:%.*]], [[Y:%.*]]
4570   // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i32> [[X]], <4 x i32> [[Y]]
4571   // CHECK:       select <4 x i1> {{.*}}, <4 x i32> [[RES]], <4 x i32> {{.*}}
4572   return _mm_maskz_max_epi32(__M,__A,__B); 
4573 }
4574 __m128i test_mm_mask_max_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
4575   // CHECK-LABEL: @test_mm_mask_max_epi32
4576   // CHECK:       [[CMP:%.*]] = icmp sgt <4 x i32> [[X:%.*]], [[Y:%.*]]
4577   // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i32> [[X]], <4 x i32> [[Y]]
4578   // CHECK:       select <4 x i1> {{.*}}, <4 x i32> [[RES]], <4 x i32> {{.*}}
4579   return _mm_mask_max_epi32(__W,__M,__A,__B); 
4580 }
4581 __m256i test_mm256_maskz_max_epi32(__mmask8 __M, __m256i __A, __m256i __B) {
4582   // CHECK-LABEL: @test_mm256_maskz_max_epi32
4583   // CHECK:       [[CMP:%.*]] = icmp sgt <8 x i32> [[X:%.*]], [[Y:%.*]]
4584   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i32> [[X]], <8 x i32> [[Y]]
4585   // CHECK:       select <8 x i1> {{.*}}, <8 x i32> [[RES]], <8 x i32> {{.*}}
4586   return _mm256_maskz_max_epi32(__M,__A,__B); 
4587 }
4588 __m256i test_mm256_mask_max_epi32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
4589   // CHECK-LABEL: @test_mm256_mask_max_epi32
4590   // CHECK:       [[CMP:%.*]] = icmp sgt <8 x i32> [[X:%.*]], [[Y:%.*]]
4591   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i32> [[X]], <8 x i32> [[Y]]
4592   // CHECK:       select <8 x i1> {{.*}}, <8 x i32> [[RES]], <8 x i32> {{.*}}
4593   return _mm256_mask_max_epi32(__W,__M,__A,__B); 
4594 }
4595 __m128i test_mm_maskz_max_epi64(__mmask8 __M, __m128i __A, __m128i __B) {
4596   // CHECK-LABEL: @test_mm_maskz_max_epi64
4597   // CHECK:       [[CMP:%.*]] = icmp sgt <2 x i64> [[X:%.*]], [[Y:%.*]]
4598   // CHECK-NEXT:  [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4599   // CHECK:       select <2 x i1> {{.*}}, <2 x i64> [[RES]], <2 x i64> {{.*}}
4600   return _mm_maskz_max_epi64(__M,__A,__B); 
4601 }
4602 __m128i test_mm_mask_max_epi64(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
4603   // CHECK-LABEL: @test_mm_mask_max_epi64
4604   // CHECK:       [[CMP:%.*]] = icmp sgt <2 x i64> [[X:%.*]], [[Y:%.*]]
4605   // CHECK-NEXT:  [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4606   // CHECK:       select <2 x i1> {{.*}}, <2 x i64> [[RES]], <2 x i64> {{.*}}
4607   return _mm_mask_max_epi64(__W,__M,__A,__B); 
4608 }
4609 __m128i test_mm_max_epi64(__m128i __A, __m128i __B) {
4610   // CHECK-LABEL: @test_mm_max_epi64
4611   // CHECK:       [[CMP:%.*]] = icmp sgt <2 x i64> [[X:%.*]], [[Y:%.*]]
4612   // CHECK-NEXT:  [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4613   return _mm_max_epi64(__A,__B); 
4614 }
4615 __m256i test_mm256_maskz_max_epi64(__mmask8 __M, __m256i __A, __m256i __B) {
4616   // CHECK-LABEL: @test_mm256_maskz_max_epi64
4617   // CHECK:       [[CMP:%.*]] = icmp sgt <4 x i64> [[X:%.*]], [[Y:%.*]]
4618   // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4619   // CHECK:       select <4 x i1> {{.*}}, <4 x i64> [[RES]], <4 x i64> {{.*}}
4620   return _mm256_maskz_max_epi64(__M,__A,__B); 
4621 }
4622 __m256i test_mm256_mask_max_epi64(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
4623   // CHECK-LABEL: @test_mm256_mask_max_epi64
4624   // CHECK:       [[CMP:%.*]] = icmp sgt <4 x i64> [[X:%.*]], [[Y:%.*]]
4625   // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4626   // CHECK:       select <4 x i1> {{.*}}, <4 x i64> [[RES]], <4 x i64> {{.*}}
4627   return _mm256_mask_max_epi64(__W,__M,__A,__B); 
4628 }
4629 __m256i test_mm256_max_epi64(__m256i __A, __m256i __B) {
4630   // CHECK-LABEL: @test_mm256_max_epi64
4631   // CHECK:       [[CMP:%.*]] = icmp sgt <4 x i64> [[X:%.*]], [[Y:%.*]]
4632   // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4633   return _mm256_max_epi64(__A,__B); 
4634 }
4635 __m128i test_mm_maskz_max_epu32(__mmask8 __M, __m128i __A, __m128i __B) {
4636   // CHECK-LABEL: @test_mm_maskz_max_epu32
4637   // CHECK:       [[CMP:%.*]] = icmp ugt <4 x i32> [[X:%.*]], [[Y:%.*]]
4638   // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i32> [[X]], <4 x i32> [[Y]]
4639   // CHECK:       select <4 x i1> {{.*}}, <4 x i32> [[RES]], <4 x i32> {{.*}}
4640   return _mm_maskz_max_epu32(__M,__A,__B); 
4641 }
4642 __m128i test_mm_mask_max_epu32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
4643   // CHECK-LABEL: @test_mm_mask_max_epu32
4644   // CHECK:       [[CMP:%.*]] = icmp ugt <4 x i32> [[X:%.*]], [[Y:%.*]]
4645   // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i32> [[X]], <4 x i32> [[Y]]
4646   // CHECK:       select <4 x i1> {{.*}}, <4 x i32> [[RES]], <4 x i32> {{.*}}
4647   return _mm_mask_max_epu32(__W,__M,__A,__B); 
4648 }
4649 __m256i test_mm256_maskz_max_epu32(__mmask8 __M, __m256i __A, __m256i __B) {
4650   // CHECK-LABEL: @test_mm256_maskz_max_epu32
4651   // CHECK:       [[CMP:%.*]] = icmp ugt <8 x i32> [[X:%.*]], [[Y:%.*]]
4652   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i32> [[X]], <8 x i32> [[Y]]
4653   // CHECK:       select <8 x i1> {{.*}}, <8 x i32> [[RES]], <8 x i32> {{.*}}
4654   return _mm256_maskz_max_epu32(__M,__A,__B); 
4655 }
4656 __m256i test_mm256_mask_max_epu32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
4657   // CHECK-LABEL: @test_mm256_mask_max_epu32
4658   // CHECK:       [[CMP:%.*]] = icmp ugt <8 x i32> [[X:%.*]], [[Y:%.*]]
4659   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i32> [[X]], <8 x i32> [[Y]]
4660   // CHECK:       select <8 x i1> {{.*}}, <8 x i32> [[RES]], <8 x i32> {{.*}}
4661   return _mm256_mask_max_epu32(__W,__M,__A,__B); 
4662 }
4663 __m128i test_mm_maskz_max_epu64(__mmask8 __M, __m128i __A, __m128i __B) {
4664   // CHECK-LABEL: @test_mm_maskz_max_epu64
4665   // CHECK:       [[CMP:%.*]] = icmp ugt <2 x i64> [[X:%.*]], [[Y:%.*]]
4666   // CHECK-NEXT:  [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4667   // CHECK:       select <2 x i1> {{.*}}, <2 x i64> [[RES]], <2 x i64> {{.*}}
4668   return _mm_maskz_max_epu64(__M,__A,__B); 
4669 }
4670 __m128i test_mm_max_epu64(__m128i __A, __m128i __B) {
4671   // CHECK-LABEL: @test_mm_max_epu64
4672   // CHECK:       [[CMP:%.*]] = icmp ugt <2 x i64> [[X:%.*]], [[Y:%.*]]
4673   // CHECK-NEXT:  [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4674   return _mm_max_epu64(__A,__B); 
4675 }
4676 __m128i test_mm_mask_max_epu64(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
4677   // CHECK-LABEL: @test_mm_mask_max_epu64
4678   // CHECK:       [[CMP:%.*]] = icmp ugt <2 x i64> [[X:%.*]], [[Y:%.*]]
4679   // CHECK-NEXT:  [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4680   // CHECK:       select <2 x i1> {{.*}}, <2 x i64> [[RES]], <2 x i64> {{.*}}
4681   return _mm_mask_max_epu64(__W,__M,__A,__B); 
4682 }
4683 __m256i test_mm256_maskz_max_epu64(__mmask8 __M, __m256i __A, __m256i __B) {
4684   // CHECK-LABEL: @test_mm256_maskz_max_epu64
4685   // CHECK:       [[CMP:%.*]] = icmp ugt <4 x i64> [[X:%.*]], [[Y:%.*]]
4686   // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4687   // CHECK:       select <4 x i1> {{.*}}, <4 x i64> [[RES]], <4 x i64> {{.*}}
4688   return _mm256_maskz_max_epu64(__M,__A,__B); 
4689 }
4690 __m256i test_mm256_max_epu64(__m256i __A, __m256i __B) {
4691   // CHECK-LABEL: @test_mm256_max_epu64
4692   // CHECK:       [[CMP:%.*]] = icmp ugt <4 x i64> [[X:%.*]], [[Y:%.*]]
4693   // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4694   return _mm256_max_epu64(__A,__B); 
4695 }
4696 __m256i test_mm256_mask_max_epu64(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
4697   // CHECK-LABEL: @test_mm256_mask_max_epu64
4698   // CHECK:       [[CMP:%.*]] = icmp ugt <4 x i64> [[X:%.*]], [[Y:%.*]]
4699   // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4700   // CHECK:       select <4 x i1> {{.*}}, <4 x i64> [[RES]], <4 x i64> {{.*}}
4701   return _mm256_mask_max_epu64(__W,__M,__A,__B); 
4702 }
4703 __m128i test_mm_maskz_min_epi32(__mmask8 __M, __m128i __A, __m128i __B) {
4704   // CHECK-LABEL: @test_mm_maskz_min_epi32
4705   // CHECK:       [[CMP:%.*]] = icmp slt <4 x i32> [[X:%.*]], [[Y:%.*]]
4706   // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i32> [[X]], <4 x i32> [[Y]]
4707   // CHECK:       select <4 x i1> {{.*}}, <4 x i32> [[RES]], <4 x i32> {{.*}}
4708   return _mm_maskz_min_epi32(__M,__A,__B); 
4709 }
4710 __m128i test_mm_mask_min_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
4711   // CHECK-LABEL: @test_mm_mask_min_epi32
4712   // CHECK:       [[CMP:%.*]] = icmp slt <4 x i32> [[X:%.*]], [[Y:%.*]]
4713   // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i32> [[X]], <4 x i32> [[Y]]
4714   // CHECK:       select <4 x i1> {{.*}}, <4 x i32> [[RES]], <4 x i32> {{.*}}
4715   return _mm_mask_min_epi32(__W,__M,__A,__B); 
4716 }
4717 __m256i test_mm256_maskz_min_epi32(__mmask8 __M, __m256i __A, __m256i __B) {
4718   // CHECK-LABEL: @test_mm256_maskz_min_epi32
4719   // CHECK:       [[CMP:%.*]] = icmp slt <8 x i32> [[X:%.*]], [[Y:%.*]]
4720   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i32> [[X]], <8 x i32> [[Y]]
4721   // CHECK:       select <8 x i1> {{.*}}, <8 x i32> [[RES]], <8 x i32> {{.*}}
4722   return _mm256_maskz_min_epi32(__M,__A,__B); 
4723 }
4724 __m256i test_mm256_mask_min_epi32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
4725   // CHECK-LABEL: @test_mm256_mask_min_epi32
4726   // CHECK:       [[CMP:%.*]] = icmp slt <8 x i32> [[X:%.*]], [[Y:%.*]]
4727   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i32> [[X]], <8 x i32> [[Y]]
4728   // CHECK:       select <8 x i1> {{.*}}, <8 x i32> [[RES]], <8 x i32> {{.*}}
4729   return _mm256_mask_min_epi32(__W,__M,__A,__B); 
4730 }
4731 __m128i test_mm_min_epi64(__m128i __A, __m128i __B) {
4732   // CHECK-LABEL: @test_mm_min_epi64
4733   // CHECK:       [[CMP:%.*]] = icmp slt <2 x i64> [[X:%.*]], [[Y:%.*]]
4734   // CHECK-NEXT:  [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4735   return _mm_min_epi64(__A,__B); 
4736 }
4737 __m128i test_mm_mask_min_epi64(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
4738   // CHECK-LABEL: @test_mm_mask_min_epi64
4739   // CHECK:       [[CMP:%.*]] = icmp slt <2 x i64> [[X:%.*]], [[Y:%.*]]
4740   // CHECK-NEXT:  [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4741   // CHECK:       select <2 x i1> {{.*}}, <2 x i64> [[RES]], <2 x i64> {{.*}}
4742   return _mm_mask_min_epi64(__W,__M,__A,__B); 
4743 }
4744 __m128i test_mm_maskz_min_epi64(__mmask8 __M, __m128i __A, __m128i __B) {
4745   // CHECK-LABEL: @test_mm_maskz_min_epi64
4746   // CHECK:       [[CMP:%.*]] = icmp slt <2 x i64> [[X:%.*]], [[Y:%.*]]
4747   // CHECK-NEXT:  [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4748   // CHECK:       select <2 x i1> {{.*}}, <2 x i64> [[RES]], <2 x i64> {{.*}}
4749   return _mm_maskz_min_epi64(__M,__A,__B); 
4750 }
4751 __m256i test_mm256_min_epi64(__m256i __A, __m256i __B) {
4752   // CHECK-LABEL: @test_mm256_min_epi64
4753   // CHECK:       [[CMP:%.*]] = icmp slt <4 x i64> [[X:%.*]], [[Y:%.*]]
4754   // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4755   return _mm256_min_epi64(__A,__B); 
4756 }
4757 __m256i test_mm256_mask_min_epi64(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
4758   // CHECK-LABEL: @test_mm256_mask_min_epi64
4759   // CHECK:       [[CMP:%.*]] = icmp slt <4 x i64> [[X:%.*]], [[Y:%.*]]
4760   // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4761   // CHECK:       select <4 x i1> {{.*}}, <4 x i64> [[RES]], <4 x i64> {{.*}}
4762   return _mm256_mask_min_epi64(__W,__M,__A,__B); 
4763 }
4764 __m256i test_mm256_maskz_min_epi64(__mmask8 __M, __m256i __A, __m256i __B) {
4765   // CHECK-LABEL: @test_mm256_maskz_min_epi64
4766   // CHECK:       [[CMP:%.*]] = icmp slt <4 x i64> [[X:%.*]], [[Y:%.*]]
4767   // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4768   // CHECK:       select <4 x i1> {{.*}}, <4 x i64> [[RES]], <4 x i64> {{.*}}
4769   return _mm256_maskz_min_epi64(__M,__A,__B); 
4770 }
4771 __m128i test_mm_maskz_min_epu32(__mmask8 __M, __m128i __A, __m128i __B) {
4772   // CHECK-LABEL: @test_mm_maskz_min_epu32
4773   // CHECK:       [[CMP:%.*]] = icmp ult <4 x i32> [[X:%.*]], [[Y:%.*]]
4774   // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i32> [[X]], <4 x i32> [[Y]]
4775   // CHECK:       select <4 x i1> {{.*}}, <4 x i32> [[RES]], <4 x i32> {{.*}}
4776   return _mm_maskz_min_epu32(__M,__A,__B); 
4777 }
4778 __m128i test_mm_mask_min_epu32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
4779   // CHECK-LABEL: @test_mm_mask_min_epu32
4780   // CHECK:       [[CMP:%.*]] = icmp ult <4 x i32> [[X:%.*]], [[Y:%.*]]
4781   // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i32> [[X]], <4 x i32> [[Y]]
4782   // CHECK:       select <4 x i1> {{.*}}, <4 x i32> [[RES]], <4 x i32> {{.*}}
4783   return _mm_mask_min_epu32(__W,__M,__A,__B); 
4784 }
4785 __m256i test_mm256_maskz_min_epu32(__mmask8 __M, __m256i __A, __m256i __B) {
4786   // CHECK-LABEL: @test_mm256_maskz_min_epu32
4787   // CHECK:       [[CMP:%.*]] = icmp ult <8 x i32> [[X:%.*]], [[Y:%.*]]
4788   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i32> [[X]], <8 x i32> [[Y]]
4789   // CHECK:       select <8 x i1> {{.*}}, <8 x i32> [[RES]], <8 x i32> {{.*}}
4790   return _mm256_maskz_min_epu32(__M,__A,__B); 
4791 }
4792 __m256i test_mm256_mask_min_epu32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
4793   // CHECK-LABEL: @test_mm256_mask_min_epu32
4794   // CHECK:       [[CMP:%.*]] = icmp ult <8 x i32> [[X:%.*]], [[Y:%.*]]
4795   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i32> [[X]], <8 x i32> [[Y]]
4796   // CHECK:       select <8 x i1> {{.*}}, <8 x i32> [[RES]], <8 x i32> {{.*}}
4797   return _mm256_mask_min_epu32(__W,__M,__A,__B); 
4798 }
4799 __m128i test_mm_min_epu64(__m128i __A, __m128i __B) {
4800   // CHECK-LABEL: @test_mm_min_epu64
4801   // CHECK:       [[CMP:%.*]] = icmp ult <2 x i64> [[X:%.*]], [[Y:%.*]]
4802   // CHECK-NEXT:  [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4803   return _mm_min_epu64(__A,__B); 
4804 }
4805 __m128i test_mm_mask_min_epu64(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
4806   // CHECK-LABEL: @test_mm_mask_min_epu64
4807   // CHECK:       [[CMP:%.*]] = icmp ult <2 x i64> [[X:%.*]], [[Y:%.*]]
4808   // CHECK-NEXT:  [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4809   // CHECK:       select <2 x i1> {{.*}}, <2 x i64> [[RES]], <2 x i64> {{.*}}
4810   return _mm_mask_min_epu64(__W,__M,__A,__B); 
4811 }
4812 __m128i test_mm_maskz_min_epu64(__mmask8 __M, __m128i __A, __m128i __B) {
4813   // CHECK-LABEL: @test_mm_maskz_min_epu64
4814   // CHECK:       [[CMP:%.*]] = icmp ult <2 x i64> [[X:%.*]], [[Y:%.*]]
4815   // CHECK-NEXT:  [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4816   // CHECK:       select <2 x i1> {{.*}}, <2 x i64> [[RES]], <2 x i64> {{.*}}
4817   return _mm_maskz_min_epu64(__M,__A,__B); 
4818 }
4819 __m256i test_mm256_min_epu64(__m256i __A, __m256i __B) {
4820   // CHECK-LABEL: @test_mm256_min_epu64
4821   // CHECK:       [[CMP:%.*]] = icmp ult <4 x i64> [[X:%.*]], [[Y:%.*]]
4822   // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4823   return _mm256_min_epu64(__A,__B); 
4824 }
4825 __m256i test_mm256_mask_min_epu64(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
4826   // CHECK-LABEL: @test_mm256_mask_min_epu64
4827   // CHECK:       [[CMP:%.*]] = icmp ult <4 x i64> [[X:%.*]], [[Y:%.*]]
4828   // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4829   // CHECK:       select <4 x i1> {{.*}}, <4 x i64> [[RES]], <4 x i64> {{.*}}
4830   return _mm256_mask_min_epu64(__W,__M,__A,__B); 
4831 }
4832 __m256i test_mm256_maskz_min_epu64(__mmask8 __M, __m256i __A, __m256i __B) {
4833   // CHECK-LABEL: @test_mm256_maskz_min_epu64
4834   // CHECK:       [[CMP:%.*]] = icmp ult <4 x i64> [[X:%.*]], [[Y:%.*]]
4835   // CHECK-NEXT:  [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4836   // CHECK:       select <4 x i1> {{.*}}, <4 x i64> [[RES]], <4 x i64> {{.*}}
4837   return _mm256_maskz_min_epu64(__M,__A,__B); 
4838 }
4839 __m128d test_mm_roundscale_pd(__m128d __A) {
4840   // CHECK-LABEL: @test_mm_roundscale_pd
4841   // CHECK: @llvm.x86.avx512.mask.rndscale.pd.128
4842   return _mm_roundscale_pd(__A,4); 
4843 }
4844 __m128d test_mm_mask_roundscale_pd(__m128d __W, __mmask8 __U, __m128d __A) {
4845   // CHECK-LABEL: @test_mm_mask_roundscale_pd
4846   // CHECK: @llvm.x86.avx512.mask.rndscale.pd.128
4847   return _mm_mask_roundscale_pd(__W,__U,__A,4); 
4848 }
4849 __m128d test_mm_maskz_roundscale_pd(__mmask8 __U, __m128d __A) {
4850   // CHECK-LABEL: @test_mm_maskz_roundscale_pd
4851   // CHECK: @llvm.x86.avx512.mask.rndscale.pd.128
4852   return _mm_maskz_roundscale_pd(__U,__A,4); 
4853 }
4854 __m256d test_mm256_roundscale_pd(__m256d __A) {
4855   // CHECK-LABEL: @test_mm256_roundscale_pd
4856   // CHECK: @llvm.x86.avx512.mask.rndscale.pd.256
4857   return _mm256_roundscale_pd(__A,4); 
4858 }
4859 __m256d test_mm256_mask_roundscale_pd(__m256d __W, __mmask8 __U, __m256d __A) {
4860   // CHECK-LABEL: @test_mm256_mask_roundscale_pd
4861   // CHECK: @llvm.x86.avx512.mask.rndscale.pd.256
4862   return _mm256_mask_roundscale_pd(__W,__U,__A,4); 
4863 }
4864 __m256d test_mm256_maskz_roundscale_pd(__mmask8 __U, __m256d __A) {
4865   // CHECK-LABEL: @test_mm256_maskz_roundscale_pd
4866   // CHECK: @llvm.x86.avx512.mask.rndscale.pd.256
4867   return _mm256_maskz_roundscale_pd(__U,__A,4); 
4868 }
4869 __m128 test_mm_roundscale_ps(__m128 __A) {
4870   // CHECK-LABEL: @test_mm_roundscale_ps
4871   // CHECK: @llvm.x86.avx512.mask.rndscale.ps.128
4872   return _mm_roundscale_ps(__A,4); 
4873 }
4874 __m128 test_mm_mask_roundscale_ps(__m128 __W, __mmask8 __U, __m128 __A) {
4875   // CHECK-LABEL: @test_mm_mask_roundscale_ps
4876   // CHECK: @llvm.x86.avx512.mask.rndscale.ps.128
4877   return _mm_mask_roundscale_ps(__W,__U,__A,4); 
4878 }
4879 __m128 test_mm_maskz_roundscale_ps(__mmask8 __U, __m128 __A) {
4880   // CHECK-LABEL: @test_mm_maskz_roundscale_ps
4881   // CHECK: @llvm.x86.avx512.mask.rndscale.ps.128
4882   return _mm_maskz_roundscale_ps(__U,__A, 4); 
4883 }
4884 __m256 test_mm256_roundscale_ps(__m256 __A) {
4885   // CHECK-LABEL: @test_mm256_roundscale_ps
4886   // CHECK: @llvm.x86.avx512.mask.rndscale.ps.256
4887   return _mm256_roundscale_ps(__A,4); 
4888 }
4889 __m256 test_mm256_mask_roundscale_ps(__m256 __W, __mmask8 __U, __m256 __A) {
4890   // CHECK-LABEL: @test_mm256_mask_roundscale_ps
4891   // CHECK: @llvm.x86.avx512.mask.rndscale.ps.256
4892   return _mm256_mask_roundscale_ps(__W,__U,__A,4); 
4893 }
4894 __m256 test_mm256_maskz_roundscale_ps(__mmask8 __U, __m256 __A) {
4895   // CHECK-LABEL: @test_mm256_maskz_roundscale_ps
4896   // CHECK: @llvm.x86.avx512.mask.rndscale.ps.256
4897   return _mm256_maskz_roundscale_ps(__U,__A,4); 
4898 }
4899 __m128d test_mm_scalef_pd(__m128d __A, __m128d __B) {
4900   // CHECK-LABEL: @test_mm_scalef_pd
4901   // CHECK: @llvm.x86.avx512.mask.scalef.pd.128
4902   return _mm_scalef_pd(__A,__B); 
4903 }
4904 __m128d test_mm_mask_scalef_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
4905   // CHECK-LABEL: @test_mm_mask_scalef_pd
4906   // CHECK: @llvm.x86.avx512.mask.scalef.pd.128
4907   return _mm_mask_scalef_pd(__W,__U,__A,__B); 
4908 }
4909 __m128d test_mm_maskz_scalef_pd(__mmask8 __U, __m128d __A, __m128d __B) {
4910   // CHECK-LABEL: @test_mm_maskz_scalef_pd
4911   // CHECK: @llvm.x86.avx512.mask.scalef.pd.128
4912   return _mm_maskz_scalef_pd(__U,__A,__B); 
4913 }
4914 __m256d test_mm256_scalef_pd(__m256d __A, __m256d __B) {
4915   // CHECK-LABEL: @test_mm256_scalef_pd
4916   // CHECK: @llvm.x86.avx512.mask.scalef.pd.256
4917   return _mm256_scalef_pd(__A,__B); 
4918 }
4919 __m256d test_mm256_mask_scalef_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
4920   // CHECK-LABEL: @test_mm256_mask_scalef_pd
4921   // CHECK: @llvm.x86.avx512.mask.scalef.pd.256
4922   return _mm256_mask_scalef_pd(__W,__U,__A,__B); 
4923 }
4924 __m256d test_mm256_maskz_scalef_pd(__mmask8 __U, __m256d __A, __m256d __B) {
4925   // CHECK-LABEL: @test_mm256_maskz_scalef_pd
4926   // CHECK: @llvm.x86.avx512.mask.scalef.pd.256
4927   return _mm256_maskz_scalef_pd(__U,__A,__B); 
4928 }
4929 __m128 test_mm_scalef_ps(__m128 __A, __m128 __B) {
4930   // CHECK-LABEL: @test_mm_scalef_ps
4931   // CHECK: @llvm.x86.avx512.mask.scalef.ps.128
4932   return _mm_scalef_ps(__A,__B); 
4933 }
4934 __m128 test_mm_mask_scalef_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
4935   // CHECK-LABEL: @test_mm_mask_scalef_ps
4936   // CHECK: @llvm.x86.avx512.mask.scalef.ps.128
4937   return _mm_mask_scalef_ps(__W,__U,__A,__B); 
4938 }
4939 __m128 test_mm_maskz_scalef_ps(__mmask8 __U, __m128 __A, __m128 __B) {
4940   // CHECK-LABEL: @test_mm_maskz_scalef_ps
4941   // CHECK: @llvm.x86.avx512.mask.scalef.ps.128
4942   return _mm_maskz_scalef_ps(__U,__A,__B); 
4943 }
4944 __m256 test_mm256_scalef_ps(__m256 __A, __m256 __B) {
4945   // CHECK-LABEL: @test_mm256_scalef_ps
4946   // CHECK: @llvm.x86.avx512.mask.scalef.ps.256
4947   return _mm256_scalef_ps(__A,__B); 
4948 }
4949 __m256 test_mm256_mask_scalef_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
4950   // CHECK-LABEL: @test_mm256_mask_scalef_ps
4951   // CHECK: @llvm.x86.avx512.mask.scalef.ps.256
4952   return _mm256_mask_scalef_ps(__W,__U,__A,__B); 
4953 }
4954 __m256 test_mm256_maskz_scalef_ps(__mmask8 __U, __m256 __A, __m256 __B) {
4955   // CHECK-LABEL: @test_mm256_maskz_scalef_ps
4956   // CHECK: @llvm.x86.avx512.mask.scalef.ps.256
4957   return _mm256_maskz_scalef_ps(__U,__A,__B); 
4958 }
4959 void test_mm_i64scatter_pd(double *__addr, __m128i __index,  __m128d __v1) {
4960   // CHECK-LABEL: @test_mm_i64scatter_pd
4961   // CHECK: @llvm.x86.avx512.scatterdiv2.df
4962   return _mm_i64scatter_pd(__addr,__index,__v1,2); 
4963 }
4964 void test_mm_mask_i64scatter_pd(double *__addr, __mmask8 __mask, __m128i __index, __m128d __v1) {
4965   // CHECK-LABEL: @test_mm_mask_i64scatter_pd
4966   // CHECK: @llvm.x86.avx512.scatterdiv2.df
4967   return _mm_mask_i64scatter_pd(__addr,__mask,__index,__v1,2); 
4968 }
4969 void test_mm_i64scatter_epi64(long long *__addr, __m128i __index,  __m128i __v1) {
4970   // CHECK-LABEL: @test_mm_i64scatter_epi64
4971   // CHECK: @llvm.x86.avx512.scatterdiv2.di
4972   return _mm_i64scatter_epi64(__addr,__index,__v1,2); 
4973 }
4974 void test_mm_mask_i64scatter_epi64(long long *__addr, __mmask8 __mask, __m128i __index, __m128i __v1) {
4975   // CHECK-LABEL: @test_mm_mask_i64scatter_epi64
4976   // CHECK: @llvm.x86.avx512.scatterdiv2.di
4977   return _mm_mask_i64scatter_epi64(__addr,__mask,__index,__v1,2); 
4978 }
4979 void test_mm256_i64scatter_pd(double *__addr, __m256i __index,  __m256d __v1) {
4980   // CHECK-LABEL: @test_mm256_i64scatter_pd
4981   // CHECK: @llvm.x86.avx512.scatterdiv4.df
4982   return _mm256_i64scatter_pd(__addr,__index,__v1,2); 
4983 }
4984 void test_mm256_mask_i64scatter_pd(double *__addr, __mmask8 __mask, __m256i __index, __m256d __v1) {
4985   // CHECK-LABEL: @test_mm256_mask_i64scatter_pd
4986   // CHECK: @llvm.x86.avx512.scatterdiv4.df
4987   return _mm256_mask_i64scatter_pd(__addr,__mask,__index,__v1,2); 
4988 }
4989 void test_mm256_i64scatter_epi64(long long *__addr, __m256i __index,  __m256i __v1) {
4990   // CHECK-LABEL: @test_mm256_i64scatter_epi64
4991   // CHECK: @llvm.x86.avx512.scatterdiv4.di
4992   return _mm256_i64scatter_epi64(__addr,__index,__v1,2); 
4993 }
4994 void test_mm256_mask_i64scatter_epi64(long long *__addr, __mmask8 __mask,  __m256i __index, __m256i __v1) {
4995   // CHECK-LABEL: @test_mm256_mask_i64scatter_epi64
4996   // CHECK: @llvm.x86.avx512.scatterdiv4.di
4997   return _mm256_mask_i64scatter_epi64(__addr,__mask,__index,__v1,2); 
4998 }
4999 void test_mm_i64scatter_ps(float *__addr, __m128i __index, __m128 __v1) {
5000   // CHECK-LABEL: @test_mm_i64scatter_ps
5001   // CHECK: @llvm.x86.avx512.scatterdiv4.sf
5002   return _mm_i64scatter_ps(__addr,__index,__v1,2); 
5003 }
5004 void test_mm_mask_i64scatter_ps(float *__addr, __mmask8 __mask, __m128i __index, __m128 __v1) {
5005   // CHECK-LABEL: @test_mm_mask_i64scatter_ps
5006   // CHECK: @llvm.x86.avx512.scatterdiv4.sf
5007   return _mm_mask_i64scatter_ps(__addr,__mask,__index,__v1,2); 
5008 }
5009 void test_mm_i64scatter_epi32(int *__addr, __m128i __index,  __m128i __v1) {
5010   // CHECK-LABEL: @test_mm_i64scatter_epi32
5011   // CHECK: @llvm.x86.avx512.scatterdiv4.si
5012   return _mm_i64scatter_epi32(__addr,__index,__v1,2); 
5013 }
5014 void test_mm_mask_i64scatter_epi32(int *__addr, __mmask8 __mask, __m128i __index, __m128i __v1) {
5015   // CHECK-LABEL: @test_mm_mask_i64scatter_epi32
5016   // CHECK: @llvm.x86.avx512.scatterdiv4.si
5017   return _mm_mask_i64scatter_epi32(__addr,__mask,__index,__v1,2); 
5018 }
5019 void test_mm256_i64scatter_ps(float *__addr, __m256i __index,  __m128 __v1) {
5020   // CHECK-LABEL: @test_mm256_i64scatter_ps
5021   // CHECK: @llvm.x86.avx512.scatterdiv8.sf
5022   return _mm256_i64scatter_ps(__addr,__index,__v1,2); 
5023 }
5024 void test_mm256_mask_i64scatter_ps(float *__addr, __mmask8 __mask, __m256i __index, __m128 __v1) {
5025   // CHECK-LABEL: @test_mm256_mask_i64scatter_ps
5026   // CHECK: @llvm.x86.avx512.scatterdiv8.sf
5027   return _mm256_mask_i64scatter_ps(__addr,__mask,__index,__v1,2); 
5028 }
5029 void test_mm256_i64scatter_epi32(int *__addr, __m256i __index,  __m128i __v1) {
5030   // CHECK-LABEL: @test_mm256_i64scatter_epi32
5031   // CHECK: @llvm.x86.avx512.scatterdiv8.si
5032   return _mm256_i64scatter_epi32(__addr,__index,__v1,2); 
5033 }
5034 void test_mm256_mask_i64scatter_epi32(int *__addr, __mmask8 __mask,  __m256i __index, __m128i __v1) {
5035   // CHECK-LABEL: @test_mm256_mask_i64scatter_epi32
5036   // CHECK: @llvm.x86.avx512.scatterdiv8.si
5037   return _mm256_mask_i64scatter_epi32(__addr,__mask,__index,__v1,2); 
5038 }
5039 void test_mm_i32scatter_pd(double *__addr, __m128i __index,  __m128d __v1) {
5040   // CHECK-LABEL: @test_mm_i32scatter_pd
5041   // CHECK: @llvm.x86.avx512.scattersiv2.df
5042   return _mm_i32scatter_pd(__addr,__index,__v1,2); 
5043 }
5044 void test_mm_mask_i32scatter_pd(double *__addr, __mmask8 __mask, __m128i __index, __m128d __v1) {
5045   // CHECK-LABEL: @test_mm_mask_i32scatter_pd
5046   // CHECK: @llvm.x86.avx512.scattersiv2.df
5047   return _mm_mask_i32scatter_pd(__addr,__mask,__index,__v1,2); 
5048 }
5049 void test_mm_i32scatter_epi64(long long *__addr, __m128i __index,  __m128i __v1) {
5050   // CHECK-LABEL: @test_mm_i32scatter_epi64
5051   // CHECK: @llvm.x86.avx512.scattersiv2.di
5052   return _mm_i32scatter_epi64(__addr,__index,__v1,2); 
5053 }
5054 void test_mm_mask_i32scatter_epi64(long long *__addr, __mmask8 __mask, __m128i __index, __m128i __v1) {
5055   // CHECK-LABEL: @test_mm_mask_i32scatter_epi64
5056   // CHECK: @llvm.x86.avx512.scattersiv2.di
5057   return _mm_mask_i32scatter_epi64(__addr,__mask,__index,__v1,2); 
5058 }
5059 void test_mm256_i32scatter_pd(double *__addr, __m128i __index,  __m256d __v1) {
5060   // CHECK-LABEL: @test_mm256_i32scatter_pd
5061   // CHECK: @llvm.x86.avx512.scattersiv4.df
5062   return _mm256_i32scatter_pd(__addr,__index,__v1,2); 
5063 }
5064 void test_mm256_mask_i32scatter_pd(double *__addr, __mmask8 __mask, __m128i __index, __m256d __v1) {
5065   // CHECK-LABEL: @test_mm256_mask_i32scatter_pd
5066   // CHECK: @llvm.x86.avx512.scattersiv4.df
5067   return _mm256_mask_i32scatter_pd(__addr,__mask,__index,__v1,2); 
5068 }
5069 void test_mm256_i32scatter_epi64(long long *__addr, __m128i __index,  __m256i __v1) {
5070   // CHECK-LABEL: @test_mm256_i32scatter_epi64
5071   // CHECK: @llvm.x86.avx512.scattersiv4.di
5072   return _mm256_i32scatter_epi64(__addr,__index,__v1,2); 
5073 }
5074 void test_mm256_mask_i32scatter_epi64(long long *__addr, __mmask8 __mask,  __m128i __index, __m256i __v1) {
5075   // CHECK-LABEL: @test_mm256_mask_i32scatter_epi64
5076   // CHECK: @llvm.x86.avx512.scattersiv4.di
5077   return _mm256_mask_i32scatter_epi64(__addr,__mask,__index,__v1,2); 
5078 }
5079 void test_mm_i32scatter_ps(float *__addr, __m128i __index, __m128 __v1) {
5080   // CHECK-LABEL: @test_mm_i32scatter_ps
5081   // CHECK: @llvm.x86.avx512.scattersiv4.sf
5082   return _mm_i32scatter_ps(__addr,__index,__v1,2); 
5083 }
5084 void test_mm_mask_i32scatter_ps(float *__addr, __mmask8 __mask, __m128i __index, __m128 __v1) {
5085   // CHECK-LABEL: @test_mm_mask_i32scatter_ps
5086   // CHECK: @llvm.x86.avx512.scattersiv4.sf
5087   return _mm_mask_i32scatter_ps(__addr,__mask,__index,__v1,2); 
5088 }
5089 void test_mm_i32scatter_epi32(int *__addr, __m128i __index,  __m128i __v1) {
5090   // CHECK-LABEL: @test_mm_i32scatter_epi32
5091   // CHECK: @llvm.x86.avx512.scattersiv4.si
5092   return _mm_i32scatter_epi32(__addr,__index,__v1,2); 
5093 }
5094 void test_mm_mask_i32scatter_epi32(int *__addr, __mmask8 __mask, __m128i __index, __m128i __v1) {
5095   // CHECK-LABEL: @test_mm_mask_i32scatter_epi32
5096   // CHECK: @llvm.x86.avx512.scattersiv4.si
5097   return _mm_mask_i32scatter_epi32(__addr,__mask,__index,__v1,2); 
5098 }
5099 void test_mm256_i32scatter_ps(float *__addr, __m256i __index,  __m256 __v1) {
5100   // CHECK-LABEL: @test_mm256_i32scatter_ps
5101   // CHECK: @llvm.x86.avx512.scattersiv8.sf
5102   return _mm256_i32scatter_ps(__addr,__index,__v1,2); 
5103 }
5104 void test_mm256_mask_i32scatter_ps(float *__addr, __mmask8 __mask, __m256i __index, __m256 __v1) {
5105   // CHECK-LABEL: @test_mm256_mask_i32scatter_ps
5106   // CHECK: @llvm.x86.avx512.scattersiv8.sf
5107   return _mm256_mask_i32scatter_ps(__addr,__mask,__index,__v1,2); 
5108 }
5109 void test_mm256_i32scatter_epi32(int *__addr, __m256i __index,  __m256i __v1) {
5110   // CHECK-LABEL: @test_mm256_i32scatter_epi32
5111   // CHECK: @llvm.x86.avx512.scattersiv8.si
5112   return _mm256_i32scatter_epi32(__addr,__index,__v1,2); 
5113 }
5114 void test_mm256_mask_i32scatter_epi32(int *__addr, __mmask8 __mask,  __m256i __index, __m256i __v1) {
5115   // CHECK-LABEL: @test_mm256_mask_i32scatter_epi32
5116   // CHECK: @llvm.x86.avx512.scattersiv8.si
5117   return _mm256_mask_i32scatter_epi32(__addr,__mask,__index,__v1,2); 
5118 }
5119 __m128d test_mm_mask_sqrt_pd(__m128d __W, __mmask8 __U, __m128d __A) {
5120   // CHECK-LABEL: @test_mm_mask_sqrt_pd
5121   // CHECK: @llvm.sqrt.v2f64
5122   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
5123   return _mm_mask_sqrt_pd(__W,__U,__A); 
5124 }
5125 __m128d test_mm_maskz_sqrt_pd(__mmask8 __U, __m128d __A) {
5126   // CHECK-LABEL: @test_mm_maskz_sqrt_pd
5127   // CHECK: @llvm.sqrt.v2f64
5128   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
5129   return _mm_maskz_sqrt_pd(__U,__A); 
5130 }
5131 __m256d test_mm256_mask_sqrt_pd(__m256d __W, __mmask8 __U, __m256d __A) {
5132   // CHECK-LABEL: @test_mm256_mask_sqrt_pd
5133   // CHECK: @llvm.sqrt.v4f64
5134   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
5135   return _mm256_mask_sqrt_pd(__W,__U,__A); 
5136 }
5137 __m256d test_mm256_maskz_sqrt_pd(__mmask8 __U, __m256d __A) {
5138   // CHECK-LABEL: @test_mm256_maskz_sqrt_pd
5139   // CHECK: @llvm.sqrt.v4f64
5140   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
5141   return _mm256_maskz_sqrt_pd(__U,__A); 
5142 }
5143 __m128 test_mm_mask_sqrt_ps(__m128 __W, __mmask8 __U, __m128 __A) {
5144   // CHECK-LABEL: @test_mm_mask_sqrt_ps
5145   // CHECK: @llvm.sqrt.v4f32
5146   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
5147   return _mm_mask_sqrt_ps(__W,__U,__A); 
5148 }
5149 __m128 test_mm_maskz_sqrt_ps(__mmask8 __U, __m128 __A) {
5150   // CHECK-LABEL: @test_mm_maskz_sqrt_ps
5151   // CHECK: @llvm.sqrt.v4f32
5152   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
5153   return _mm_maskz_sqrt_ps(__U,__A); 
5154 }
5155 __m256 test_mm256_mask_sqrt_ps(__m256 __W, __mmask8 __U, __m256 __A) {
5156   // CHECK-LABEL: @test_mm256_mask_sqrt_ps
5157   // CHECK: @llvm.sqrt.v8f32
5158   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
5159   return _mm256_mask_sqrt_ps(__W,__U,__A); 
5160 }
5161 __m256 test_mm256_maskz_sqrt_ps(__mmask8 __U, __m256 __A) {
5162   // CHECK-LABEL: @test_mm256_maskz_sqrt_ps
5163   // CHECK: @llvm.sqrt.v8f32
5164   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
5165   return _mm256_maskz_sqrt_ps(__U,__A); 
5166 }
5167 __m128d test_mm_mask_sub_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
5168   // CHECK-LABEL: @test_mm_mask_sub_pd
5169   // CHECK: fsub <2 x double> %{{.*}}, %{{.*}}
5170   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
5171   return _mm_mask_sub_pd(__W,__U,__A,__B); 
5172 }
5173 __m128d test_mm_maskz_sub_pd(__mmask8 __U, __m128d __A, __m128d __B) {
5174   // CHECK-LABEL: @test_mm_maskz_sub_pd
5175   // CHECK: fsub <2 x double> %{{.*}}, %{{.*}}
5176   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
5177   return _mm_maskz_sub_pd(__U,__A,__B); 
5178 }
5179 __m256d test_mm256_mask_sub_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
5180   // CHECK-LABEL: @test_mm256_mask_sub_pd
5181   // CHECK: fsub <4 x double> %{{.*}}, %{{.*}}
5182   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
5183   return _mm256_mask_sub_pd(__W,__U,__A,__B); 
5184 }
5185 __m256d test_mm256_maskz_sub_pd(__mmask8 __U, __m256d __A, __m256d __B) {
5186   // CHECK-LABEL: @test_mm256_maskz_sub_pd
5187   // CHECK: fsub <4 x double> %{{.*}}, %{{.*}}
5188   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
5189   return _mm256_maskz_sub_pd(__U,__A,__B); 
5190 }
5191 __m128 test_mm_mask_sub_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
5192   // CHECK-LABEL: @test_mm_mask_sub_ps
5193   // CHECK: fsub <4 x float> %{{.*}}, %{{.*}}
5194   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
5195   return _mm_mask_sub_ps(__W,__U,__A,__B); 
5196 }
5197 __m128 test_mm_maskz_sub_ps(__mmask8 __U, __m128 __A, __m128 __B) {
5198   // CHECK-LABEL: @test_mm_maskz_sub_ps
5199   // CHECK: fsub <4 x float> %{{.*}}, %{{.*}}
5200   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
5201   return _mm_maskz_sub_ps(__U,__A,__B); 
5202 }
5203 __m256 test_mm256_mask_sub_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
5204   // CHECK-LABEL: @test_mm256_mask_sub_ps
5205   // CHECK: fsub <8 x float> %{{.*}}, %{{.*}}
5206   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
5207   return _mm256_mask_sub_ps(__W,__U,__A,__B); 
5208 }
5209 __m256 test_mm256_maskz_sub_ps(__mmask8 __U, __m256 __A, __m256 __B) {
5210   // CHECK-LABEL: @test_mm256_maskz_sub_ps
5211   // CHECK: fsub <8 x float> %{{.*}}, %{{.*}}
5212   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
5213   return _mm256_maskz_sub_ps(__U,__A,__B); 
5214 }
5215 __m128i test_mm_mask2_permutex2var_epi32(__m128i __A, __m128i __I, __mmask8 __U,  __m128i __B) {
5216   // CHECK-LABEL: @test_mm_mask2_permutex2var_epi32
5217   // CHECK: @llvm.x86.avx512.vpermi2var.d.128
5218   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5219   return _mm_mask2_permutex2var_epi32(__A,__I,__U,__B); 
5220 }
5221 __m256i test_mm256_mask2_permutex2var_epi32(__m256i __A, __m256i __I, __mmask8 __U, __m256i __B) {
5222   // CHECK-LABEL: @test_mm256_mask2_permutex2var_epi32
5223   // CHECK: @llvm.x86.avx512.vpermi2var.d.256
5224   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5225   return _mm256_mask2_permutex2var_epi32(__A,__I,__U,__B); 
5226 }
5227 __m128d test_mm_mask2_permutex2var_pd(__m128d __A, __m128i __I, __mmask8 __U, __m128d __B) {
5228   // CHECK-LABEL: @test_mm_mask2_permutex2var_pd
5229   // CHECK: @llvm.x86.avx512.vpermi2var.pd.128
5230   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
5231   return _mm_mask2_permutex2var_pd(__A,__I,__U,__B); 
5232 }
5233 __m256d test_mm256_mask2_permutex2var_pd(__m256d __A, __m256i __I, __mmask8 __U,  __m256d __B) {
5234   // CHECK-LABEL: @test_mm256_mask2_permutex2var_pd
5235   // CHECK: @llvm.x86.avx512.vpermi2var.pd.256
5236   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
5237   return _mm256_mask2_permutex2var_pd(__A,__I,__U,__B); 
5238 }
5239 __m128 test_mm_mask2_permutex2var_ps(__m128 __A, __m128i __I, __mmask8 __U, __m128 __B) {
5240   // CHECK-LABEL: @test_mm_mask2_permutex2var_ps
5241   // CHECK: @llvm.x86.avx512.vpermi2var.ps.128
5242   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
5243   return _mm_mask2_permutex2var_ps(__A,__I,__U,__B); 
5244 }
5245 __m256 test_mm256_mask2_permutex2var_ps(__m256 __A, __m256i __I, __mmask8 __U,  __m256 __B) {
5246   // CHECK-LABEL: @test_mm256_mask2_permutex2var_ps
5247   // CHECK: @llvm.x86.avx512.vpermi2var.ps.256
5248   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
5249   return _mm256_mask2_permutex2var_ps(__A,__I,__U,__B); 
5250 }
5251 __m128i test_mm_mask2_permutex2var_epi64(__m128i __A, __m128i __I, __mmask8 __U,  __m128i __B) {
5252   // CHECK-LABEL: @test_mm_mask2_permutex2var_epi64
5253   // CHECK: @llvm.x86.avx512.vpermi2var.q.128
5254   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5255   return _mm_mask2_permutex2var_epi64(__A,__I,__U,__B); 
5256 }
5257 __m256i test_mm256_mask2_permutex2var_epi64(__m256i __A, __m256i __I, __mmask8 __U, __m256i __B) {
5258   // CHECK-LABEL: @test_mm256_mask2_permutex2var_epi64
5259   // CHECK: @llvm.x86.avx512.vpermi2var.q.256
5260   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5261   return _mm256_mask2_permutex2var_epi64(__A,__I,__U,__B); 
5262 }
5263 __m128i test_mm_permutex2var_epi32(__m128i __A, __m128i __I, __m128i __B) {
5264   // CHECK-LABEL: @test_mm_permutex2var_epi32
5265   // CHECK: @llvm.x86.avx512.vpermi2var.d.128
5266   return _mm_permutex2var_epi32(__A,__I,__B); 
5267 }
5268 __m128i test_mm_mask_permutex2var_epi32(__m128i __A, __mmask8 __U, __m128i __I, __m128i __B) {
5269   // CHECK-LABEL: @test_mm_mask_permutex2var_epi32
5270   // CHECK: @llvm.x86.avx512.vpermi2var.d.128
5271   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5272   return _mm_mask_permutex2var_epi32(__A,__U,__I,__B); 
5273 }
5274 __m128i test_mm_maskz_permutex2var_epi32(__mmask8 __U, __m128i __A, __m128i __I,  __m128i __B) {
5275   // CHECK-LABEL: @test_mm_maskz_permutex2var_epi32
5276   // CHECK: @llvm.x86.avx512.vpermi2var.d.128
5277   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5278   return _mm_maskz_permutex2var_epi32(__U,__A,__I,__B); 
5279 }
5280 __m256i test_mm256_permutex2var_epi32(__m256i __A, __m256i __I, __m256i __B) {
5281   // CHECK-LABEL: @test_mm256_permutex2var_epi32
5282   // CHECK: @llvm.x86.avx512.vpermi2var.d.256
5283   return _mm256_permutex2var_epi32(__A,__I,__B); 
5284 }
5285 __m256i test_mm256_mask_permutex2var_epi32(__m256i __A, __mmask8 __U, __m256i __I, __m256i __B) {
5286   // CHECK-LABEL: @test_mm256_mask_permutex2var_epi32
5287   // CHECK: @llvm.x86.avx512.vpermi2var.d.256
5288   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5289   return _mm256_mask_permutex2var_epi32(__A,__U,__I,__B); 
5290 }
5291 __m256i test_mm256_maskz_permutex2var_epi32(__mmask8 __U, __m256i __A, __m256i __I, __m256i __B) {
5292   // CHECK-LABEL: @test_mm256_maskz_permutex2var_epi32
5293   // CHECK: @llvm.x86.avx512.vpermi2var.d.256
5294   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5295   return _mm256_maskz_permutex2var_epi32(__U,__A,__I,__B); 
5296 }
5297 __m128d test_mm_permutex2var_pd(__m128d __A, __m128i __I, __m128d __B) {
5298   // CHECK-LABEL: @test_mm_permutex2var_pd
5299   // CHECK: @llvm.x86.avx512.vpermi2var.pd.128
5300   return _mm_permutex2var_pd(__A,__I,__B); 
5301 }
5302 __m128d test_mm_mask_permutex2var_pd(__m128d __A, __mmask8 __U, __m128i __I, __m128d __B) {
5303   // CHECK-LABEL: @test_mm_mask_permutex2var_pd
5304   // CHECK: @llvm.x86.avx512.vpermi2var.pd.128
5305   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
5306   return _mm_mask_permutex2var_pd(__A,__U,__I,__B); 
5307 }
5308 __m128d test_mm_maskz_permutex2var_pd(__mmask8 __U, __m128d __A, __m128i __I, __m128d __B) {
5309   // CHECK-LABEL: @test_mm_maskz_permutex2var_pd
5310   // CHECK: @llvm.x86.avx512.vpermi2var.pd.128
5311   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
5312   return _mm_maskz_permutex2var_pd(__U,__A,__I,__B); 
5313 }
5314 __m256d test_mm256_permutex2var_pd(__m256d __A, __m256i __I, __m256d __B) {
5315   // CHECK-LABEL: @test_mm256_permutex2var_pd
5316   // CHECK: @llvm.x86.avx512.vpermi2var.pd.256
5317   return _mm256_permutex2var_pd(__A,__I,__B); 
5318 }
5319 __m256d test_mm256_mask_permutex2var_pd(__m256d __A, __mmask8 __U, __m256i __I, __m256d __B) {
5320   // CHECK-LABEL: @test_mm256_mask_permutex2var_pd
5321   // CHECK: @llvm.x86.avx512.vpermi2var.pd.256
5322   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
5323   return _mm256_mask_permutex2var_pd(__A,__U,__I,__B); 
5324 }
5325 __m256d test_mm256_maskz_permutex2var_pd(__mmask8 __U, __m256d __A, __m256i __I,  __m256d __B) {
5326   // CHECK-LABEL: @test_mm256_maskz_permutex2var_pd
5327   // CHECK: @llvm.x86.avx512.vpermi2var.pd.256
5328   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
5329   return _mm256_maskz_permutex2var_pd(__U,__A,__I,__B); 
5330 }
5331 __m128 test_mm_permutex2var_ps(__m128 __A, __m128i __I, __m128 __B) {
5332   // CHECK-LABEL: @test_mm_permutex2var_ps
5333   // CHECK: @llvm.x86.avx512.vpermi2var.ps.128
5334   return _mm_permutex2var_ps(__A,__I,__B); 
5335 }
5336 __m128 test_mm_mask_permutex2var_ps(__m128 __A, __mmask8 __U, __m128i __I, __m128 __B) {
5337   // CHECK-LABEL: @test_mm_mask_permutex2var_ps
5338   // CHECK: @llvm.x86.avx512.vpermi2var.ps.128
5339   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
5340   return _mm_mask_permutex2var_ps(__A,__U,__I,__B); 
5341 }
5342 __m128 test_mm_maskz_permutex2var_ps(__mmask8 __U, __m128 __A, __m128i __I, __m128 __B) {
5343   // CHECK-LABEL: @test_mm_maskz_permutex2var_ps
5344   // CHECK: @llvm.x86.avx512.vpermi2var.ps.128
5345   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
5346   return _mm_maskz_permutex2var_ps(__U,__A,__I,__B); 
5347 }
5348 __m256 test_mm256_permutex2var_ps(__m256 __A, __m256i __I, __m256 __B) {
5349   // CHECK-LABEL: @test_mm256_permutex2var_ps
5350   // CHECK: @llvm.x86.avx512.vpermi2var.ps.256
5351   return _mm256_permutex2var_ps(__A,__I,__B); 
5352 }
5353 __m256 test_mm256_mask_permutex2var_ps(__m256 __A, __mmask8 __U, __m256i __I, __m256 __B) {
5354   // CHECK-LABEL: @test_mm256_mask_permutex2var_ps
5355   // CHECK: @llvm.x86.avx512.vpermi2var.ps.256
5356   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
5357   return _mm256_mask_permutex2var_ps(__A,__U,__I,__B); 
5358 }
5359 __m256 test_mm256_maskz_permutex2var_ps(__mmask8 __U, __m256 __A, __m256i __I, __m256 __B) {
5360   // CHECK-LABEL: @test_mm256_maskz_permutex2var_ps
5361   // CHECK: @llvm.x86.avx512.vpermi2var.ps.256
5362   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
5363   return _mm256_maskz_permutex2var_ps(__U,__A,__I,__B); 
5364 }
5365 __m128i test_mm_permutex2var_epi64(__m128i __A, __m128i __I, __m128i __B) {
5366   // CHECK-LABEL: @test_mm_permutex2var_epi64
5367   // CHECK: @llvm.x86.avx512.vpermi2var.q.128
5368   return _mm_permutex2var_epi64(__A,__I,__B); 
5369 }
5370 __m128i test_mm_mask_permutex2var_epi64(__m128i __A, __mmask8 __U, __m128i __I, __m128i __B) {
5371   // CHECK-LABEL: @test_mm_mask_permutex2var_epi64
5372   // CHECK: @llvm.x86.avx512.vpermi2var.q.128
5373   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5374   return _mm_mask_permutex2var_epi64(__A,__U,__I,__B); 
5375 }
5376 __m128i test_mm_maskz_permutex2var_epi64(__mmask8 __U, __m128i __A, __m128i __I, __m128i __B) {
5377   // CHECK-LABEL: @test_mm_maskz_permutex2var_epi64
5378   // CHECK: @llvm.x86.avx512.vpermi2var.q.128
5379   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5380   return _mm_maskz_permutex2var_epi64(__U,__A,__I,__B); 
5381 }
5382 __m256i test_mm256_permutex2var_epi64(__m256i __A, __m256i __I, __m256i __B) {
5383   // CHECK-LABEL: @test_mm256_permutex2var_epi64
5384   // CHECK: @llvm.x86.avx512.vpermi2var.q.256
5385   return _mm256_permutex2var_epi64(__A,__I,__B); 
5386 }
5387 __m256i test_mm256_mask_permutex2var_epi64(__m256i __A, __mmask8 __U, __m256i __I, __m256i __B) {
5388   // CHECK-LABEL: @test_mm256_mask_permutex2var_epi64
5389   // CHECK: @llvm.x86.avx512.vpermi2var.q.256
5390   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5391   return _mm256_mask_permutex2var_epi64(__A,__U,__I,__B); 
5392 }
5393 __m256i test_mm256_maskz_permutex2var_epi64(__mmask8 __U, __m256i __A, __m256i __I, __m256i __B) {
5394   // CHECK-LABEL: @test_mm256_maskz_permutex2var_epi64
5395   // CHECK: @llvm.x86.avx512.vpermi2var.q.256
5396   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5397   return _mm256_maskz_permutex2var_epi64(__U,__A,__I,__B); 
5398 }
5399
5400 __m128i test_mm_mask_cvtepi8_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
5401   // CHECK-LABEL: @test_mm_mask_cvtepi8_epi32
5402   // CHECK: sext <4 x i8> %{{.*}} to <4 x i32>
5403   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5404   return _mm_mask_cvtepi8_epi32(__W, __U, __A); 
5405 }
5406
5407 __m128i test_mm_maskz_cvtepi8_epi32(__mmask8 __U, __m128i __A) {
5408   // CHECK-LABEL: @test_mm_maskz_cvtepi8_epi32
5409   // CHECK: sext <4 x i8> %{{.*}} to <4 x i32>
5410   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5411   return _mm_maskz_cvtepi8_epi32(__U, __A); 
5412 }
5413
5414 __m256i test_mm256_mask_cvtepi8_epi32(__m256i __W, __mmask8 __U, __m128i __A) {
5415   // CHECK-LABEL: @test_mm256_mask_cvtepi8_epi32
5416   // CHECK: sext <8 x i8> %{{.*}} to <8 x i32>
5417   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5418   return _mm256_mask_cvtepi8_epi32(__W, __U, __A); 
5419 }
5420
5421 __m256i test_mm256_maskz_cvtepi8_epi32(__mmask8 __U, __m128i __A) {
5422   // CHECK-LABEL: @test_mm256_maskz_cvtepi8_epi32
5423   // CHECK: sext <8 x i8> %{{.*}} to <8 x i32>
5424   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5425   return _mm256_maskz_cvtepi8_epi32(__U, __A); 
5426 }
5427
5428 __m128i test_mm_mask_cvtepi8_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
5429   // CHECK-LABEL: @test_mm_mask_cvtepi8_epi64
5430   // CHECK: sext <2 x i8> %{{.*}} to <2 x i64>
5431   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5432   return _mm_mask_cvtepi8_epi64(__W, __U, __A); 
5433 }
5434
5435 __m128i test_mm_maskz_cvtepi8_epi64(__mmask8 __U, __m128i __A) {
5436   // CHECK-LABEL: @test_mm_maskz_cvtepi8_epi64
5437   // CHECK: sext <2 x i8> %{{.*}} to <2 x i64>
5438   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5439   return _mm_maskz_cvtepi8_epi64(__U, __A); 
5440 }
5441
5442 __m256i test_mm256_mask_cvtepi8_epi64(__m256i __W, __mmask8 __U, __m128i __A) {
5443   // CHECK-LABEL: @test_mm256_mask_cvtepi8_epi64
5444   // CHECK: sext <4 x i8> %{{.*}} to <4 x i64>
5445   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5446   return _mm256_mask_cvtepi8_epi64(__W, __U, __A); 
5447 }
5448
5449 __m256i test_mm256_maskz_cvtepi8_epi64(__mmask8 __U, __m128i __A) {
5450   // CHECK-LABEL: @test_mm256_maskz_cvtepi8_epi64
5451   // CHECK: sext <4 x i8> %{{.*}} to <4 x i64>
5452   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5453   return _mm256_maskz_cvtepi8_epi64(__U, __A); 
5454 }
5455
5456 __m128i test_mm_mask_cvtepi32_epi64(__m128i __W, __mmask8 __U, __m128i __X) {
5457   // CHECK-LABEL: @test_mm_mask_cvtepi32_epi64
5458   // CHECK: sext <2 x i32> %{{.*}} to <2 x i64>
5459   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5460   return _mm_mask_cvtepi32_epi64(__W, __U, __X); 
5461 }
5462
5463 __m128i test_mm_maskz_cvtepi32_epi64(__mmask8 __U, __m128i __X) {
5464   // CHECK-LABEL: @test_mm_maskz_cvtepi32_epi64
5465   // CHECK: sext <2 x i32> %{{.*}} to <2 x i64>
5466   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5467   return _mm_maskz_cvtepi32_epi64(__U, __X); 
5468 }
5469
5470 __m256i test_mm256_mask_cvtepi32_epi64(__m256i __W, __mmask8 __U, __m128i __X) {
5471   // CHECK-LABEL: @test_mm256_mask_cvtepi32_epi64
5472   // CHECK: sext <4 x i32> %{{.*}} to <4 x i64>
5473   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5474   return _mm256_mask_cvtepi32_epi64(__W, __U, __X); 
5475 }
5476
5477 __m256i test_mm256_maskz_cvtepi32_epi64(__mmask8 __U, __m128i __X) {
5478   // CHECK-LABEL: @test_mm256_maskz_cvtepi32_epi64
5479   // CHECK: sext <4 x i32> %{{.*}} to <4 x i64>
5480   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5481   return _mm256_maskz_cvtepi32_epi64(__U, __X); 
5482 }
5483
5484 __m128i test_mm_mask_cvtepi16_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
5485   // CHECK-LABEL: @test_mm_mask_cvtepi16_epi32
5486   // CHECK: sext <4 x i16> %{{.*}} to <4 x i32>
5487   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5488   return _mm_mask_cvtepi16_epi32(__W, __U, __A); 
5489 }
5490
5491 __m128i test_mm_maskz_cvtepi16_epi32(__mmask8 __U, __m128i __A) {
5492   // CHECK-LABEL: @test_mm_maskz_cvtepi16_epi32
5493   // CHECK: sext <4 x i16> %{{.*}} to <4 x i32>
5494   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5495   return _mm_maskz_cvtepi16_epi32(__U, __A); 
5496 }
5497
5498 __m256i test_mm256_mask_cvtepi16_epi32(__m256i __W, __mmask8 __U, __m128i __A) {
5499   // CHECK-LABEL: @test_mm256_mask_cvtepi16_epi32
5500   // CHECK: sext <8 x i16> %{{.*}} to <8 x i32>
5501   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5502   return _mm256_mask_cvtepi16_epi32(__W, __U, __A); 
5503 }
5504
5505 __m256i test_mm256_maskz_cvtepi16_epi32(__mmask8 __U, __m128i __A) {
5506   // CHECK-LABEL: @test_mm256_maskz_cvtepi16_epi32
5507   // CHECK: sext <8 x i16> %{{.*}} to <8 x i32>
5508   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5509   return _mm256_maskz_cvtepi16_epi32(__U, __A); 
5510 }
5511
5512 __m128i test_mm_mask_cvtepi16_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
5513   // CHECK-LABEL: @test_mm_mask_cvtepi16_epi64
5514   // CHECK: sext <2 x i16> %{{.*}} to <2 x i64>
5515   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5516   return _mm_mask_cvtepi16_epi64(__W, __U, __A); 
5517 }
5518
5519 __m128i test_mm_maskz_cvtepi16_epi64(__mmask8 __U, __m128i __A) {
5520   // CHECK-LABEL: @test_mm_maskz_cvtepi16_epi64
5521   // CHECK: sext <2 x i16> %{{.*}} to <2 x i64>
5522   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5523   return _mm_maskz_cvtepi16_epi64(__U, __A); 
5524 }
5525
5526 __m256i test_mm256_mask_cvtepi16_epi64(__m256i __W, __mmask8 __U, __m128i __A) {
5527   // CHECK-LABEL: @test_mm256_mask_cvtepi16_epi64
5528   // CHECK: sext <4 x i16> %{{.*}} to <4 x i64>
5529   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5530   return _mm256_mask_cvtepi16_epi64(__W, __U, __A); 
5531 }
5532
5533 __m256i test_mm256_maskz_cvtepi16_epi64(__mmask8 __U, __m128i __A) {
5534   // CHECK-LABEL: @test_mm256_maskz_cvtepi16_epi64
5535   // CHECK: sext <4 x i16> %{{.*}} to <4 x i64>
5536   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5537   return _mm256_maskz_cvtepi16_epi64(__U, __A); 
5538 }
5539
5540 __m128i test_mm_mask_cvtepu8_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
5541   // CHECK-LABEL: @test_mm_mask_cvtepu8_epi32
5542   // CHECK: zext <4 x i8> %{{.*}} to <4 x i32>
5543   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5544   return _mm_mask_cvtepu8_epi32(__W, __U, __A); 
5545 }
5546
5547 __m128i test_mm_maskz_cvtepu8_epi32(__mmask8 __U, __m128i __A) {
5548   // CHECK-LABEL: @test_mm_maskz_cvtepu8_epi32
5549   // CHECK: zext <4 x i8> %{{.*}} to <4 x i32>
5550   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5551   return _mm_maskz_cvtepu8_epi32(__U, __A);
5552 }
5553
5554 __m256i test_mm256_mask_cvtepu8_epi32(__m256i __W, __mmask8 __U, __m128i __A) {
5555   // CHECK-LABEL: @test_mm256_mask_cvtepu8_epi32
5556   // CHECK: zext <8 x i8> %{{.*}} to <8 x i32>
5557   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5558   return _mm256_mask_cvtepu8_epi32(__W, __U, __A); 
5559 }
5560
5561 __m256i test_mm256_maskz_cvtepu8_epi32(__mmask8 __U, __m128i __A) {
5562   // CHECK-LABEL: @test_mm256_maskz_cvtepu8_epi32
5563   // CHECK: zext <8 x i8> %{{.*}} to <8 x i32>
5564   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5565   return _mm256_maskz_cvtepu8_epi32(__U, __A); 
5566 }
5567
5568 __m128i test_mm_mask_cvtepu8_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
5569   // CHECK-LABEL: @test_mm_mask_cvtepu8_epi64
5570   // CHECK: zext <2 x i8> %{{.*}} to <2 x i64>
5571   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5572   return _mm_mask_cvtepu8_epi64(__W, __U, __A); 
5573 }
5574
5575 __m128i test_mm_maskz_cvtepu8_epi64(__mmask8 __U, __m128i __A) {
5576   // CHECK-LABEL: @test_mm_maskz_cvtepu8_epi64
5577   // CHECK: zext <2 x i8> %{{.*}} to <2 x i64>
5578   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5579   return _mm_maskz_cvtepu8_epi64(__U, __A); 
5580 }
5581
5582 __m256i test_mm256_mask_cvtepu8_epi64(__m256i __W, __mmask8 __U, __m128i __A) {
5583   // CHECK-LABEL: @test_mm256_mask_cvtepu8_epi64
5584   // CHECK: zext <4 x i8> %{{.*}} to <4 x i64>
5585   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5586   return _mm256_mask_cvtepu8_epi64(__W, __U, __A); 
5587 }
5588
5589 __m256i test_mm256_maskz_cvtepu8_epi64(__mmask8 __U, __m128i __A) {
5590   // CHECK-LABEL: @test_mm256_maskz_cvtepu8_epi64
5591   // CHECK: zext <4 x i8> %{{.*}} to <4 x i64>
5592   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5593   return _mm256_maskz_cvtepu8_epi64(__U, __A); 
5594 }
5595
5596 __m128i test_mm_mask_cvtepu32_epi64(__m128i __W, __mmask8 __U, __m128i __X) {
5597   // CHECK-LABEL: @test_mm_mask_cvtepu32_epi64
5598   // CHECK: zext <2 x i32> %{{.*}} to <2 x i64>
5599   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5600   return _mm_mask_cvtepu32_epi64(__W, __U, __X); 
5601 }
5602
5603 __m128i test_mm_maskz_cvtepu32_epi64(__mmask8 __U, __m128i __X) {
5604   // CHECK-LABEL: @test_mm_maskz_cvtepu32_epi64
5605   // CHECK: zext <2 x i32> %{{.*}} to <2 x i64>
5606   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5607   return _mm_maskz_cvtepu32_epi64(__U, __X); 
5608 }
5609
5610 __m256i test_mm256_mask_cvtepu32_epi64(__m256i __W, __mmask8 __U, __m128i __X) {
5611   // CHECK-LABEL: @test_mm256_mask_cvtepu32_epi64
5612   // CHECK: zext <4 x i32> %{{.*}} to <4 x i64>
5613   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5614   return _mm256_mask_cvtepu32_epi64(__W, __U, __X); 
5615 }
5616
5617 __m256i test_mm256_maskz_cvtepu32_epi64(__mmask8 __U, __m128i __X) {
5618   // CHECK-LABEL: @test_mm256_maskz_cvtepu32_epi64
5619   // CHECK: zext <4 x i32> %{{.*}} to <4 x i64>
5620   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5621   return _mm256_maskz_cvtepu32_epi64(__U, __X); 
5622 }
5623
5624 __m128i test_mm_mask_cvtepu16_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
5625   // CHECK-LABEL: @test_mm_mask_cvtepu16_epi32
5626   // CHECK: zext <4 x i16> %{{.*}} to <4 x i32>
5627   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5628   return _mm_mask_cvtepu16_epi32(__W, __U, __A); 
5629 }
5630
5631 __m128i test_mm_maskz_cvtepu16_epi32(__mmask8 __U, __m128i __A) {
5632   // CHECK-LABEL: @test_mm_maskz_cvtepu16_epi32
5633   // CHECK: zext <4 x i16> %{{.*}} to <4 x i32>
5634   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5635   return _mm_maskz_cvtepu16_epi32(__U, __A); 
5636 }
5637
5638 __m256i test_mm256_mask_cvtepu16_epi32(__m256i __W, __mmask8 __U, __m128i __A) {
5639   // CHECK-LABEL: @test_mm256_mask_cvtepu16_epi32
5640   // CHECK: zext <8 x i16> %{{.*}} to <8 x i32>
5641   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5642   return _mm256_mask_cvtepu16_epi32(__W, __U, __A); 
5643 }
5644
5645 __m256i test_mm256_maskz_cvtepu16_epi32(__mmask8 __U, __m128i __A) {
5646   // CHECK-LABEL: @test_mm256_maskz_cvtepu16_epi32
5647   // CHECK: zext <8 x i16> %{{.*}} to <8 x i32>
5648   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5649   return _mm256_maskz_cvtepu16_epi32(__U, __A); 
5650 }
5651
5652 __m128i test_mm_mask_cvtepu16_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
5653   // CHECK-LABEL: @test_mm_mask_cvtepu16_epi64
5654   // CHECK: zext <2 x i16> %{{.*}} to <2 x i64>
5655   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5656   return _mm_mask_cvtepu16_epi64(__W, __U, __A); 
5657 }
5658
5659 __m128i test_mm_maskz_cvtepu16_epi64(__mmask8 __U, __m128i __A) {
5660   // CHECK-LABEL: @test_mm_maskz_cvtepu16_epi64
5661   // CHECK: zext <2 x i16> %{{.*}} to <2 x i64>
5662   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5663   return _mm_maskz_cvtepu16_epi64(__U, __A); 
5664 }
5665
5666 __m256i test_mm256_mask_cvtepu16_epi64(__m256i __W, __mmask8 __U, __m128i __A) {
5667   // CHECK-LABEL: @test_mm256_mask_cvtepu16_epi64
5668   // CHECK: zext <4 x i16> %{{.*}} to <4 x i64>
5669   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5670   return _mm256_mask_cvtepu16_epi64(__W, __U, __A); 
5671 }
5672
5673 __m256i test_mm256_maskz_cvtepu16_epi64(__mmask8 __U, __m128i __A) {
5674   // CHECK-LABEL: @test_mm256_maskz_cvtepu16_epi64
5675   // CHECK: zext <4 x i16> %{{.*}} to <4 x i64>
5676   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5677   return _mm256_maskz_cvtepu16_epi64(__U, __A); 
5678 }
5679
5680 __m128i test_mm_rol_epi32(__m128i __A) {
5681   // CHECK-LABEL: @test_mm_rol_epi32
5682   // CHECK: @llvm.x86.avx512.prol.d.128
5683   return _mm_rol_epi32(__A, 5); 
5684 }
5685
5686 __m128i test_mm_mask_rol_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
5687   // CHECK-LABEL: @test_mm_mask_rol_epi32
5688   // CHECK: @llvm.x86.avx512.prol.d.128
5689   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5690   return _mm_mask_rol_epi32(__W, __U, __A, 5); 
5691 }
5692
5693 __m128i test_mm_maskz_rol_epi32(__mmask8 __U, __m128i __A) {
5694   // CHECK-LABEL: @test_mm_maskz_rol_epi32
5695   // CHECK: @llvm.x86.avx512.prol.d.128
5696   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5697   return _mm_maskz_rol_epi32(__U, __A, 5); 
5698 }
5699
5700 __m256i test_mm256_rol_epi32(__m256i __A) {
5701   // CHECK-LABEL: @test_mm256_rol_epi32
5702   // CHECK: @llvm.x86.avx512.prol.d.256
5703   return _mm256_rol_epi32(__A, 5); 
5704 }
5705
5706 __m256i test_mm256_mask_rol_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
5707   // CHECK-LABEL: @test_mm256_mask_rol_epi32
5708   // CHECK: @llvm.x86.avx512.prol.d.256
5709   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5710   return _mm256_mask_rol_epi32(__W, __U, __A, 5); 
5711 }
5712
5713 __m256i test_mm256_maskz_rol_epi32(__mmask8 __U, __m256i __A) {
5714   // CHECK-LABEL: @test_mm256_maskz_rol_epi32
5715   // CHECK: @llvm.x86.avx512.prol.d.256
5716   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5717   return _mm256_maskz_rol_epi32(__U, __A, 5); 
5718 }
5719
5720 __m128i test_mm_rol_epi64(__m128i __A) {
5721   // CHECK-LABEL: @test_mm_rol_epi64
5722   // CHECK: @llvm.x86.avx512.prol.q.128
5723   return _mm_rol_epi64(__A, 5); 
5724 }
5725
5726 __m128i test_mm_mask_rol_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
5727   // CHECK-LABEL: @test_mm_mask_rol_epi64
5728   // CHECK: @llvm.x86.avx512.prol.q.128
5729   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5730   return _mm_mask_rol_epi64(__W, __U, __A, 5); 
5731 }
5732
5733 __m128i test_mm_maskz_rol_epi64(__mmask8 __U, __m128i __A) {
5734   // CHECK-LABEL: @test_mm_maskz_rol_epi64
5735   // CHECK: @llvm.x86.avx512.prol.q.128
5736   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5737   return _mm_maskz_rol_epi64(__U, __A, 5); 
5738 }
5739
5740 __m256i test_mm256_rol_epi64(__m256i __A) {
5741   // CHECK-LABEL: @test_mm256_rol_epi64
5742   // CHECK: @llvm.x86.avx512.prol.q.256
5743   return _mm256_rol_epi64(__A, 5); 
5744 }
5745
5746 __m256i test_mm256_mask_rol_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
5747   // CHECK-LABEL: @test_mm256_mask_rol_epi64
5748   // CHECK: @llvm.x86.avx512.prol.q.256
5749   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5750   return _mm256_mask_rol_epi64(__W, __U, __A, 5); 
5751 }
5752
5753 __m256i test_mm256_maskz_rol_epi64(__mmask8 __U, __m256i __A) {
5754   // CHECK-LABEL: @test_mm256_maskz_rol_epi64
5755   // CHECK: @llvm.x86.avx512.prol.q.256
5756   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5757   return _mm256_maskz_rol_epi64(__U, __A, 5); 
5758 }
5759
5760 __m128i test_mm_rolv_epi32(__m128i __A, __m128i __B) {
5761   // CHECK-LABEL: @test_mm_rolv_epi32
5762   // CHECK: @llvm.x86.avx512.prolv.d.128
5763   return _mm_rolv_epi32(__A, __B); 
5764 }
5765
5766 __m128i test_mm_mask_rolv_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
5767   // CHECK-LABEL: @test_mm_mask_rolv_epi32
5768   // CHECK: @llvm.x86.avx512.prolv.d.128
5769   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5770   return _mm_mask_rolv_epi32(__W, __U, __A, __B); 
5771 }
5772
5773 __m128i test_mm_maskz_rolv_epi32(__mmask8 __U, __m128i __A, __m128i __B) {
5774   // CHECK-LABEL: @test_mm_maskz_rolv_epi32
5775   // CHECK: @llvm.x86.avx512.prolv.d.128
5776   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5777   return _mm_maskz_rolv_epi32(__U, __A, __B); 
5778 }
5779
5780 __m256i test_mm256_rolv_epi32(__m256i __A, __m256i __B) {
5781   // CHECK-LABEL: @test_mm256_rolv_epi32
5782   // CHECK: @llvm.x86.avx512.prolv.d.256
5783   return _mm256_rolv_epi32(__A, __B); 
5784 }
5785
5786 __m256i test_mm256_mask_rolv_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
5787   // CHECK-LABEL: @test_mm256_mask_rolv_epi32
5788   // CHECK: @llvm.x86.avx512.prolv.d.256
5789   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5790   return _mm256_mask_rolv_epi32(__W, __U, __A, __B); 
5791 }
5792
5793 __m256i test_mm256_maskz_rolv_epi32(__mmask8 __U, __m256i __A, __m256i __B) {
5794   // CHECK-LABEL: @test_mm256_maskz_rolv_epi32
5795   // CHECK: @llvm.x86.avx512.prolv.d.256
5796   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5797   return _mm256_maskz_rolv_epi32(__U, __A, __B); 
5798 }
5799
5800 __m128i test_mm_rolv_epi64(__m128i __A, __m128i __B) {
5801   // CHECK-LABEL: @test_mm_rolv_epi64
5802   // CHECK: @llvm.x86.avx512.prolv.q.128
5803   return _mm_rolv_epi64(__A, __B); 
5804 }
5805
5806 __m128i test_mm_mask_rolv_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
5807   // CHECK-LABEL: @test_mm_mask_rolv_epi64
5808   // CHECK: @llvm.x86.avx512.prolv.q.128
5809   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5810   return _mm_mask_rolv_epi64(__W, __U, __A, __B); 
5811 }
5812
5813 __m128i test_mm_maskz_rolv_epi64(__mmask8 __U, __m128i __A, __m128i __B) {
5814   // CHECK-LABEL: @test_mm_maskz_rolv_epi64
5815   // CHECK: @llvm.x86.avx512.prolv.q.128
5816   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5817   return _mm_maskz_rolv_epi64(__U, __A, __B); 
5818 }
5819
5820 __m256i test_mm256_rolv_epi64(__m256i __A, __m256i __B) {
5821   // CHECK-LABEL: @test_mm256_rolv_epi64
5822   // CHECK: @llvm.x86.avx512.prolv.q.256
5823   return _mm256_rolv_epi64(__A, __B); 
5824 }
5825
5826 __m256i test_mm256_mask_rolv_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
5827   // CHECK-LABEL: @test_mm256_mask_rolv_epi64
5828   // CHECK: @llvm.x86.avx512.prolv.q.256
5829   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5830   return _mm256_mask_rolv_epi64(__W, __U, __A, __B); 
5831 }
5832
5833 __m256i test_mm256_maskz_rolv_epi64(__mmask8 __U, __m256i __A, __m256i __B) {
5834   // CHECK-LABEL: @test_mm256_maskz_rolv_epi64
5835   // CHECK: @llvm.x86.avx512.prolv.q.256
5836   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5837   return _mm256_maskz_rolv_epi64(__U, __A, __B); 
5838 }
5839
5840 __m128i test_mm_ror_epi32(__m128i __A) {
5841   // CHECK-LABEL: @test_mm_ror_epi32
5842   // CHECK: @llvm.x86.avx512.pror.d.128
5843   return _mm_ror_epi32(__A, 5); 
5844 }
5845
5846 __m128i test_mm_mask_ror_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
5847   // CHECK-LABEL: @test_mm_mask_ror_epi32
5848   // CHECK: @llvm.x86.avx512.pror.d.128
5849   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5850   return _mm_mask_ror_epi32(__W, __U, __A, 5); 
5851 }
5852
5853 __m128i test_mm_maskz_ror_epi32(__mmask8 __U, __m128i __A) {
5854   // CHECK-LABEL: @test_mm_maskz_ror_epi32
5855   // CHECK: @llvm.x86.avx512.pror.d.128
5856   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5857   return _mm_maskz_ror_epi32(__U, __A, 5); 
5858 }
5859
5860 __m256i test_mm256_ror_epi32(__m256i __A) {
5861   // CHECK-LABEL: @test_mm256_ror_epi32
5862   // CHECK: @llvm.x86.avx512.pror.d.256
5863   return _mm256_ror_epi32(__A, 5); 
5864 }
5865
5866 __m256i test_mm256_mask_ror_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
5867   // CHECK-LABEL: @test_mm256_mask_ror_epi32
5868   // CHECK: @llvm.x86.avx512.pror.d.256
5869   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5870   return _mm256_mask_ror_epi32(__W, __U, __A, 5); 
5871 }
5872
5873 __m256i test_mm256_maskz_ror_epi32(__mmask8 __U, __m256i __A) {
5874   // CHECK-LABEL: @test_mm256_maskz_ror_epi32
5875   // CHECK: @llvm.x86.avx512.pror.d.256
5876   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5877   return _mm256_maskz_ror_epi32(__U, __A, 5); 
5878 }
5879
5880 __m128i test_mm_ror_epi64(__m128i __A) {
5881   // CHECK-LABEL: @test_mm_ror_epi64
5882   // CHECK: @llvm.x86.avx512.pror.q.128
5883   return _mm_ror_epi64(__A, 5); 
5884 }
5885
5886 __m128i test_mm_mask_ror_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
5887   // CHECK-LABEL: @test_mm_mask_ror_epi64
5888   // CHECK: @llvm.x86.avx512.pror.q.128
5889   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5890   return _mm_mask_ror_epi64(__W, __U, __A, 5); 
5891 }
5892
5893 __m128i test_mm_maskz_ror_epi64(__mmask8 __U, __m128i __A) {
5894   // CHECK-LABEL: @test_mm_maskz_ror_epi64
5895   // CHECK: @llvm.x86.avx512.pror.q.128
5896   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5897   return _mm_maskz_ror_epi64(__U, __A, 5); 
5898 }
5899
5900 __m256i test_mm256_ror_epi64(__m256i __A) {
5901   // CHECK-LABEL: @test_mm256_ror_epi64
5902   // CHECK: @llvm.x86.avx512.pror.q.256
5903   return _mm256_ror_epi64(__A, 5); 
5904 }
5905
5906 __m256i test_mm256_mask_ror_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
5907   // CHECK-LABEL: @test_mm256_mask_ror_epi64
5908   // CHECK: @llvm.x86.avx512.pror.q.256
5909   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5910   return _mm256_mask_ror_epi64(__W, __U, __A,5); 
5911 }
5912
5913 __m256i test_mm256_maskz_ror_epi64(__mmask8 __U, __m256i __A) {
5914   // CHECK-LABEL: @test_mm256_maskz_ror_epi64
5915   // CHECK: @llvm.x86.avx512.pror.q.256
5916   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5917   return _mm256_maskz_ror_epi64(__U, __A, 5); 
5918 }
5919
5920
5921 __m128i test_mm_rorv_epi32(__m128i __A, __m128i __B) {
5922   // CHECK-LABEL: @test_mm_rorv_epi32
5923   // CHECK: @llvm.x86.avx512.prorv.d.128
5924   return _mm_rorv_epi32(__A, __B); 
5925 }
5926
5927 __m128i test_mm_mask_rorv_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
5928   // CHECK-LABEL: @test_mm_mask_rorv_epi32
5929   // CHECK: @llvm.x86.avx512.prorv.d.128
5930   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5931   return _mm_mask_rorv_epi32(__W, __U, __A, __B); 
5932 }
5933
5934 __m128i test_mm_maskz_rorv_epi32(__mmask8 __U, __m128i __A, __m128i __B) {
5935   // CHECK-LABEL: @test_mm_maskz_rorv_epi32
5936   // CHECK: @llvm.x86.avx512.prorv.d.128
5937   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5938   return _mm_maskz_rorv_epi32(__U, __A, __B); 
5939 }
5940
5941 __m256i test_mm256_rorv_epi32(__m256i __A, __m256i __B) {
5942   // CHECK-LABEL: @test_mm256_rorv_epi32
5943   // CHECK: @llvm.x86.avx512.prorv.d.256
5944   return _mm256_rorv_epi32(__A, __B); 
5945 }
5946
5947 __m256i test_mm256_mask_rorv_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
5948   // CHECK-LABEL: @test_mm256_mask_rorv_epi32
5949   // CHECK: @llvm.x86.avx512.prorv.d.256
5950   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5951   return _mm256_mask_rorv_epi32(__W, __U, __A, __B); 
5952 }
5953
5954 __m256i test_mm256_maskz_rorv_epi32(__mmask8 __U, __m256i __A, __m256i __B) {
5955   // CHECK-LABEL: @test_mm256_maskz_rorv_epi32
5956   // CHECK: @llvm.x86.avx512.prorv.d.256
5957   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5958   return _mm256_maskz_rorv_epi32(__U, __A, __B); 
5959 }
5960
5961 __m128i test_mm_rorv_epi64(__m128i __A, __m128i __B) {
5962   // CHECK-LABEL: @test_mm_rorv_epi64
5963   // CHECK: @llvm.x86.avx512.prorv.q.128
5964   return _mm_rorv_epi64(__A, __B); 
5965 }
5966
5967 __m128i test_mm_mask_rorv_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
5968   // CHECK-LABEL: @test_mm_mask_rorv_epi64
5969   // CHECK: @llvm.x86.avx512.prorv.q.128
5970   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5971   return _mm_mask_rorv_epi64(__W, __U, __A, __B); 
5972 }
5973
5974 __m128i test_mm_maskz_rorv_epi64(__mmask8 __U, __m128i __A, __m128i __B) {
5975   // CHECK-LABEL: @test_mm_maskz_rorv_epi64
5976   // CHECK: @llvm.x86.avx512.prorv.q.128
5977   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5978   return _mm_maskz_rorv_epi64(__U, __A, __B); 
5979 }
5980
5981 __m256i test_mm256_rorv_epi64(__m256i __A, __m256i __B) {
5982   // CHECK-LABEL: @test_mm256_rorv_epi64
5983   // CHECK: @llvm.x86.avx512.prorv.q.256
5984   return _mm256_rorv_epi64(__A, __B); 
5985 }
5986
5987 __m256i test_mm256_mask_rorv_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
5988   // CHECK-LABEL: @test_mm256_mask_rorv_epi64
5989   // CHECK: @llvm.x86.avx512.prorv.q.256
5990   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5991   return _mm256_mask_rorv_epi64(__W, __U, __A, __B); 
5992 }
5993
5994 __m256i test_mm256_maskz_rorv_epi64(__mmask8 __U, __m256i __A, __m256i __B) {
5995   // CHECK-LABEL: @test_mm256_maskz_rorv_epi64
5996   // CHECK: @llvm.x86.avx512.prorv.q.256
5997   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5998   return _mm256_maskz_rorv_epi64(__U, __A, __B); 
5999 }
6000
6001 __m128i test_mm_mask_sllv_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
6002   // CHECK-LABEL: @test_mm_mask_sllv_epi64
6003   // CHECK: @llvm.x86.avx2.psllv.q
6004   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6005   return _mm_mask_sllv_epi64(__W, __U, __X, __Y); 
6006 }
6007
6008 __m128i test_mm_maskz_sllv_epi64(__mmask8 __U, __m128i __X, __m128i __Y) {
6009   // CHECK-LABEL: @test_mm_maskz_sllv_epi64
6010   // CHECK: @llvm.x86.avx2.psllv.q
6011   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6012   return _mm_maskz_sllv_epi64(__U, __X, __Y); 
6013 }
6014
6015 __m256i test_mm256_mask_sllv_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y) {
6016   // CHECK-LABEL: @test_mm256_mask_sllv_epi64
6017   // CHECK: @llvm.x86.avx2.psllv.q.256
6018   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6019   return _mm256_mask_sllv_epi64(__W, __U, __X, __Y); 
6020 }
6021
6022 __m256i test_mm256_maskz_sllv_epi64(__mmask8 __U, __m256i __X, __m256i __Y) {
6023   // CHECK-LABEL: @test_mm256_maskz_sllv_epi64
6024   // CHECK: @llvm.x86.avx2.psllv.q.256
6025   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6026   return _mm256_maskz_sllv_epi64(__U, __X, __Y); 
6027 }
6028
6029 __m128i test_mm_mask_sllv_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
6030   // CHECK-LABEL: @test_mm_mask_sllv_epi32
6031   // CHECK: @llvm.x86.avx2.psllv.d
6032   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6033   return _mm_mask_sllv_epi32(__W, __U, __X, __Y); 
6034 }
6035
6036 __m128i test_mm_maskz_sllv_epi32(__mmask8 __U, __m128i __X, __m128i __Y) {
6037   // CHECK-LABEL: @test_mm_maskz_sllv_epi32
6038   // CHECK: @llvm.x86.avx2.psllv.d
6039   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6040   return _mm_maskz_sllv_epi32(__U, __X, __Y); 
6041 }
6042
6043 __m256i test_mm256_mask_sllv_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y) {
6044   // CHECK-LABEL: @test_mm256_mask_sllv_epi32
6045   // CHECK: @llvm.x86.avx2.psllv.d.256
6046   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6047   return _mm256_mask_sllv_epi32(__W, __U, __X, __Y); 
6048 }
6049
6050 __m256i test_mm256_maskz_sllv_epi32(__mmask8 __U, __m256i __X, __m256i __Y) {
6051   // CHECK-LABEL: @test_mm256_maskz_sllv_epi32
6052   // CHECK: @llvm.x86.avx2.psllv.d.256
6053   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6054   return _mm256_maskz_sllv_epi32(__U, __X, __Y); 
6055 }
6056
6057 __m128i test_mm_mask_srlv_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
6058   // CHECK-LABEL: @test_mm_mask_srlv_epi64
6059   // CHECK: @llvm.x86.avx2.psrlv.q
6060   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6061   return _mm_mask_srlv_epi64(__W, __U, __X, __Y); 
6062 }
6063
6064 __m128i test_mm_maskz_srlv_epi64(__mmask8 __U, __m128i __X, __m128i __Y) {
6065   // CHECK-LABEL: @test_mm_maskz_srlv_epi64
6066   // CHECK: @llvm.x86.avx2.psrlv.q
6067   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6068   return _mm_maskz_srlv_epi64(__U, __X, __Y); 
6069 }
6070
6071 __m256i test_mm256_mask_srlv_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y) {
6072   // CHECK-LABEL: @test_mm256_mask_srlv_epi64
6073   // CHECK: @llvm.x86.avx2.psrlv.q.256
6074   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6075   return _mm256_mask_srlv_epi64(__W, __U, __X, __Y); 
6076 }
6077
6078 __m256i test_mm256_maskz_srlv_epi64(__mmask8 __U, __m256i __X, __m256i __Y) {
6079   // CHECK-LABEL: @test_mm256_maskz_srlv_epi64
6080   // CHECK: @llvm.x86.avx2.psrlv.q.256
6081   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6082   return _mm256_maskz_srlv_epi64(__U, __X, __Y); 
6083 }
6084
6085 __m128i test_mm_mask_srlv_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
6086   // CHECK-LABEL: @test_mm_mask_srlv_epi32
6087   // CHECK: @llvm.x86.avx2.psrlv.d
6088   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6089   return _mm_mask_srlv_epi32(__W, __U, __X, __Y); 
6090 }
6091
6092 __m128i test_mm_maskz_srlv_epi32(__mmask8 __U, __m128i __X, __m128i __Y) {
6093   // CHECK-LABEL: @test_mm_maskz_srlv_epi32
6094   // CHECK: @llvm.x86.avx2.psrlv.d
6095   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6096   return _mm_maskz_srlv_epi32(__U, __X, __Y); 
6097 }
6098
6099 __m256i test_mm256_mask_srlv_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y) {
6100   // CHECK-LABEL: @test_mm256_mask_srlv_epi32
6101   // CHECK: @llvm.x86.avx2.psrlv.d.256
6102   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6103   return _mm256_mask_srlv_epi32(__W, __U, __X, __Y); 
6104 }
6105
6106 __m256i test_mm256_maskz_srlv_epi32(__mmask8 __U, __m256i __X, __m256i __Y) {
6107   // CHECK-LABEL: @test_mm256_maskz_srlv_epi32
6108   // CHECK: @llvm.x86.avx2.psrlv.d.256
6109   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6110   return _mm256_maskz_srlv_epi32(__U, __X, __Y); 
6111 }
6112
6113 __m128i test_mm_mask_srl_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
6114   // CHECK-LABEL: @test_mm_mask_srl_epi32
6115   // CHECK: @llvm.x86.sse2.psrl.d
6116   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6117   return _mm_mask_srl_epi32(__W, __U, __A, __B); 
6118 }
6119
6120 __m128i test_mm_maskz_srl_epi32(__mmask8 __U, __m128i __A, __m128i __B) {
6121   // CHECK-LABEL: @test_mm_maskz_srl_epi32
6122   // CHECK: @llvm.x86.sse2.psrl.d
6123   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6124   return _mm_maskz_srl_epi32(__U, __A, __B); 
6125 }
6126
6127 __m256i test_mm256_mask_srl_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B) {
6128   // CHECK-LABEL: @test_mm256_mask_srl_epi32
6129   // CHECK: @llvm.x86.avx2.psrl.d
6130   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6131   return _mm256_mask_srl_epi32(__W, __U, __A, __B); 
6132 }
6133
6134 __m256i test_mm256_maskz_srl_epi32(__mmask8 __U, __m256i __A, __m128i __B) {
6135   // CHECK-LABEL: @test_mm256_maskz_srl_epi32
6136   // CHECK: @llvm.x86.avx2.psrl.d
6137   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6138   return _mm256_maskz_srl_epi32(__U, __A, __B); 
6139 }
6140
6141 __m128i test_mm_mask_srli_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
6142   // CHECK-LABEL: @test_mm_mask_srli_epi32
6143   // CHECK: @llvm.x86.sse2.psrli.d
6144   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6145   return _mm_mask_srli_epi32(__W, __U, __A, 5); 
6146 }
6147
6148 __m128i test_mm_maskz_srli_epi32(__mmask8 __U, __m128i __A) {
6149   // CHECK-LABEL: @test_mm_maskz_srli_epi32
6150   // CHECK: @llvm.x86.sse2.psrli.d
6151   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6152   return _mm_maskz_srli_epi32(__U, __A, 5); 
6153 }
6154
6155 __m256i test_mm256_mask_srli_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
6156   // CHECK-LABEL: @test_mm256_mask_srli_epi32
6157   // CHECK: @llvm.x86.avx2.psrli.d
6158   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6159   return _mm256_mask_srli_epi32(__W, __U, __A, 5); 
6160 }
6161
6162 __m256i test_mm256_maskz_srli_epi32(__mmask8 __U, __m256i __A) {
6163   // CHECK-LABEL: @test_mm256_maskz_srli_epi32
6164   // CHECK: @llvm.x86.avx2.psrli.d
6165   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6166   return _mm256_maskz_srli_epi32(__U, __A, 5); 
6167 }
6168
6169 __m128i test_mm_mask_srl_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
6170   // CHECK-LABEL: @test_mm_mask_srl_epi64
6171   // CHECK: @llvm.x86.sse2.psrl.q
6172   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6173   return _mm_mask_srl_epi64(__W, __U, __A, __B); 
6174 }
6175
6176 __m128i test_mm_maskz_srl_epi64(__mmask8 __U, __m128i __A, __m128i __B) {
6177   // CHECK-LABEL: @test_mm_maskz_srl_epi64
6178   // CHECK: @llvm.x86.sse2.psrl.q
6179   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6180   return _mm_maskz_srl_epi64(__U, __A, __B); 
6181 }
6182
6183 __m256i test_mm256_mask_srl_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B) {
6184   // CHECK-LABEL: @test_mm256_mask_srl_epi64
6185   // CHECK: @llvm.x86.avx2.psrl.q
6186   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6187   return _mm256_mask_srl_epi64(__W, __U, __A, __B); 
6188 }
6189
6190 __m256i test_mm256_maskz_srl_epi64(__mmask8 __U, __m256i __A, __m128i __B) {
6191   // CHECK-LABEL: @test_mm256_maskz_srl_epi64
6192   // CHECK: @llvm.x86.avx2.psrl.q
6193   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6194   return _mm256_maskz_srl_epi64(__U, __A, __B); 
6195 }
6196
6197 __m128i test_mm_mask_srli_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
6198   // CHECK-LABEL: @test_mm_mask_srli_epi64
6199   // CHECK: @llvm.x86.sse2.psrli.q
6200   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6201   return _mm_mask_srli_epi64(__W, __U, __A, 5); 
6202 }
6203
6204 __m128i test_mm_maskz_srli_epi64(__mmask8 __U, __m128i __A) {
6205   // CHECK-LABEL: @test_mm_maskz_srli_epi64
6206   // CHECK: @llvm.x86.sse2.psrli.q
6207   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6208   return _mm_maskz_srli_epi64(__U, __A, 5); 
6209 }
6210
6211 __m256i test_mm256_mask_srli_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
6212   // CHECK-LABEL: @test_mm256_mask_srli_epi64
6213   // CHECK: @llvm.x86.avx2.psrli.q
6214   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6215   return _mm256_mask_srli_epi64(__W, __U, __A, 5); 
6216 }
6217
6218 __m256i test_mm256_maskz_srli_epi64(__mmask8 __U, __m256i __A) {
6219   // CHECK-LABEL: @test_mm256_maskz_srli_epi64
6220   // CHECK: @llvm.x86.avx2.psrli.q
6221   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6222   return _mm256_maskz_srli_epi64(__U, __A, 5); 
6223 }
6224
6225 __m128i test_mm_mask_sll_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
6226   // CHECK-LABEL: @test_mm_mask_sll_epi32
6227   // CHECK: @llvm.x86.sse2.psll.d
6228   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6229   return _mm_mask_sll_epi32(__W, __U, __A, __B); 
6230 }
6231
6232 __m128i test_mm_maskz_sll_epi32(__mmask8 __U, __m128i __A, __m128i __B) {
6233   // CHECK-LABEL: @test_mm_maskz_sll_epi32
6234   // CHECK: @llvm.x86.sse2.psll.d
6235   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6236   return _mm_maskz_sll_epi32(__U, __A, __B); 
6237 }
6238
6239 __m256i test_mm256_mask_sll_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B) {
6240   // CHECK-LABEL: @test_mm256_mask_sll_epi32
6241   // CHECK: @llvm.x86.avx2.psll.d
6242   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6243   return _mm256_mask_sll_epi32(__W, __U, __A, __B); 
6244 }
6245
6246 __m256i test_mm256_maskz_sll_epi32(__mmask8 __U, __m256i __A, __m128i __B) {
6247   // CHECK-LABEL: @test_mm256_maskz_sll_epi32
6248   // CHECK: @llvm.x86.avx2.psll.d
6249   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6250   return _mm256_maskz_sll_epi32(__U, __A, __B); 
6251 }
6252
6253 __m128i test_mm_mask_slli_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
6254   // CHECK-LABEL: @test_mm_mask_slli_epi32
6255   // CHECK: @llvm.x86.sse2.pslli.d
6256   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6257   return _mm_mask_slli_epi32(__W, __U, __A, 5); 
6258 }
6259
6260 __m128i test_mm_maskz_slli_epi32(__mmask8 __U, __m128i __A) {
6261   // CHECK-LABEL: @test_mm_maskz_slli_epi32
6262   // CHECK: @llvm.x86.sse2.pslli.d
6263   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6264   return _mm_maskz_slli_epi32(__U, __A, 5); 
6265 }
6266
6267 __m256i test_mm256_mask_slli_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
6268   // CHECK-LABEL: @test_mm256_mask_slli_epi32
6269   // CHECK: @llvm.x86.avx2.pslli.d
6270   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6271   return _mm256_mask_slli_epi32(__W, __U, __A, 5); 
6272 }
6273
6274 __m256i test_mm256_maskz_slli_epi32(__mmask8 __U, __m256i __A) {
6275   // CHECK-LABEL: @test_mm256_maskz_slli_epi32
6276   // CHECK: @llvm.x86.avx2.pslli.d
6277   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6278   return _mm256_maskz_slli_epi32(__U, __A, 5); 
6279 }
6280
6281 __m128i test_mm_mask_sll_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
6282   // CHECK-LABEL: @test_mm_mask_sll_epi64
6283   // CHECK: @llvm.x86.sse2.psll.q
6284   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6285   return _mm_mask_sll_epi64(__W, __U, __A, __B); 
6286 }
6287
6288 __m128i test_mm_maskz_sll_epi64(__mmask8 __U, __m128i __A, __m128i __B) {
6289   // CHECK-LABEL: @test_mm_maskz_sll_epi64
6290   // CHECK: @llvm.x86.sse2.psll.q
6291   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6292   return _mm_maskz_sll_epi64(__U, __A, __B); 
6293 }
6294
6295 __m256i test_mm256_mask_sll_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B) {
6296   // CHECK-LABEL: @test_mm256_mask_sll_epi64
6297   // CHECK: @llvm.x86.avx2.psll.q
6298   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6299   return _mm256_mask_sll_epi64(__W, __U, __A, __B); 
6300 }
6301
6302 __m256i test_mm256_maskz_sll_epi64(__mmask8 __U, __m256i __A, __m128i __B) {
6303   // CHECK-LABEL: @test_mm256_maskz_sll_epi64
6304   // CHECK: @llvm.x86.avx2.psll.q
6305   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6306   return _mm256_maskz_sll_epi64(__U, __A, __B); 
6307 }
6308
6309 __m128i test_mm_mask_slli_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
6310   // CHECK-LABEL: @test_mm_mask_slli_epi64
6311   // CHECK: @llvm.x86.sse2.pslli.q
6312   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6313   return _mm_mask_slli_epi64(__W, __U, __A, 5); 
6314 }
6315
6316 __m128i test_mm_maskz_slli_epi64(__mmask8 __U, __m128i __A) {
6317   // CHECK-LABEL: @test_mm_maskz_slli_epi64
6318   // CHECK: @llvm.x86.sse2.pslli.q
6319   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6320   return _mm_maskz_slli_epi64(__U, __A, 5); 
6321 }
6322
6323 __m256i test_mm256_mask_slli_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
6324   // CHECK-LABEL: @test_mm256_mask_slli_epi64
6325   // CHECK: @llvm.x86.avx2.pslli.q
6326   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6327   return _mm256_mask_slli_epi64(__W, __U, __A, 5); 
6328 }
6329
6330 __m256i test_mm256_maskz_slli_epi64(__mmask8 __U, __m256i __A) {
6331   // CHECK-LABEL: @test_mm256_maskz_slli_epi64
6332   // CHECK: @llvm.x86.avx2.pslli.q
6333   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6334   return _mm256_maskz_slli_epi64(__U, __A, 5); 
6335 }
6336
6337 __m128i test_mm_mask_srav_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
6338   // CHECK-LABEL: @test_mm_mask_srav_epi32
6339   // CHECK: @llvm.x86.avx2.psrav.d
6340   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6341   return _mm_mask_srav_epi32(__W, __U, __X, __Y); 
6342 }
6343
6344 __m128i test_mm_maskz_srav_epi32(__mmask8 __U, __m128i __X, __m128i __Y) {
6345   // CHECK-LABEL: @test_mm_maskz_srav_epi32
6346   // CHECK: @llvm.x86.avx2.psrav.d
6347   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6348   return _mm_maskz_srav_epi32(__U, __X, __Y); 
6349 }
6350
6351 __m256i test_mm256_mask_srav_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y) {
6352   // CHECK-LABEL: @test_mm256_mask_srav_epi32
6353   // CHECK: @llvm.x86.avx2.psrav.d.256
6354   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6355   return _mm256_mask_srav_epi32(__W, __U, __X, __Y); 
6356 }
6357
6358 __m256i test_mm256_maskz_srav_epi32(__mmask8 __U, __m256i __X, __m256i __Y) {
6359   // CHECK-LABEL: @test_mm256_maskz_srav_epi32
6360   // CHECK: @llvm.x86.avx2.psrav.d.256
6361   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6362   return _mm256_maskz_srav_epi32(__U, __X, __Y); 
6363 }
6364
6365 __m128i test_mm_srav_epi64(__m128i __X, __m128i __Y) {
6366   // CHECK-LABEL: @test_mm_srav_epi64
6367   // CHECK: @llvm.x86.avx512.psrav.q.128
6368   return _mm_srav_epi64(__X, __Y); 
6369 }
6370
6371 __m128i test_mm_mask_srav_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
6372   // CHECK-LABEL: @test_mm_mask_srav_epi64
6373   // CHECK: @llvm.x86.avx512.psrav.q.128
6374   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6375   return _mm_mask_srav_epi64(__W, __U, __X, __Y); 
6376 }
6377
6378 __m128i test_mm_maskz_srav_epi64(__mmask8 __U, __m128i __X, __m128i __Y) {
6379   // CHECK-LABEL: @test_mm_maskz_srav_epi64
6380   // CHECK: @llvm.x86.avx512.psrav.q.128
6381   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6382   return _mm_maskz_srav_epi64(__U, __X, __Y); 
6383 }
6384
6385 __m256i test_mm256_srav_epi64(__m256i __X, __m256i __Y) {
6386   // CHECK-LABEL: @test_mm256_srav_epi64
6387   // CHECK: @llvm.x86.avx512.psrav.q.256
6388   return _mm256_srav_epi64(__X, __Y); 
6389 }
6390
6391 __m256i test_mm256_mask_srav_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y) {
6392   // CHECK-LABEL: @test_mm256_mask_srav_epi64
6393   // CHECK: @llvm.x86.avx512.psrav.q.256
6394   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6395   return _mm256_mask_srav_epi64(__W, __U, __X, __Y); 
6396 }
6397
6398 __m256i test_mm256_maskz_srav_epi64(__mmask8 __U, __m256i __X, __m256i __Y) {
6399   // CHECK-LABEL: @test_mm256_maskz_srav_epi64
6400   // CHECK: @llvm.x86.avx512.psrav.q.256
6401   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6402   return _mm256_maskz_srav_epi64(__U, __X, __Y); 
6403 }
6404
6405 void test_mm_mask_store_epi32(void *__P, __mmask8 __U, __m128i __A) {
6406   // CHECK-LABEL: @test_mm_mask_store_epi32
6407   // CHECK: @llvm.masked.store.v4i32.p0v4i32(<4 x i32> %{{.*}}, <4 x i32>* %{{.}}, i32 16, <4 x i1> %{{.*}})
6408   return _mm_mask_store_epi32(__P, __U, __A); 
6409 }
6410
6411 void test_mm256_mask_store_epi32(void *__P, __mmask8 __U, __m256i __A) {
6412   // CHECK-LABEL: @test_mm256_mask_store_epi32
6413   // CHECK: @llvm.masked.store.v8i32.p0v8i32(<8 x i32> %{{.*}}, <8 x i32>* %{{.}}, i32 32, <8 x i1> %{{.*}})
6414   return _mm256_mask_store_epi32(__P, __U, __A); 
6415 }
6416
6417 __m128i test_mm_mask_mov_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
6418   // CHECK-LABEL: @test_mm_mask_mov_epi32
6419   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6420   return _mm_mask_mov_epi32(__W, __U, __A); 
6421 }
6422
6423 __m128i test_mm_maskz_mov_epi32(__mmask8 __U, __m128i __A) {
6424   // CHECK-LABEL: @test_mm_maskz_mov_epi32
6425   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6426   return _mm_maskz_mov_epi32(__U, __A); 
6427 }
6428
6429 __m256i test_mm256_mask_mov_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
6430   // CHECK-LABEL: @test_mm256_mask_mov_epi32
6431   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6432   return _mm256_mask_mov_epi32(__W, __U, __A); 
6433 }
6434
6435 __m256i test_mm256_maskz_mov_epi32(__mmask8 __U, __m256i __A) {
6436   // CHECK-LABEL: @test_mm256_maskz_mov_epi32
6437   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6438   return _mm256_maskz_mov_epi32(__U, __A); 
6439 }
6440
6441 __m128i test_mm_mask_mov_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
6442   // CHECK-LABEL: @test_mm_mask_mov_epi64
6443   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6444   return _mm_mask_mov_epi64(__W, __U, __A); 
6445 }
6446
6447 __m128i test_mm_maskz_mov_epi64(__mmask8 __U, __m128i __A) {
6448   // CHECK-LABEL: @test_mm_maskz_mov_epi64
6449   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6450   return _mm_maskz_mov_epi64(__U, __A); 
6451 }
6452
6453 __m256i test_mm256_mask_mov_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
6454   // CHECK-LABEL: @test_mm256_mask_mov_epi64
6455   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6456   return _mm256_mask_mov_epi64(__W, __U, __A); 
6457 }
6458
6459 __m256i test_mm256_maskz_mov_epi64(__mmask8 __U, __m256i __A) {
6460   // CHECK-LABEL: @test_mm256_maskz_mov_epi64
6461   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6462   return _mm256_maskz_mov_epi64(__U, __A); 
6463 }
6464
6465 __m128i test_mm_mask_load_epi32(__m128i __W, __mmask8 __U, void const *__P) {
6466   // CHECK-LABEL: @test_mm_mask_load_epi32
6467   // CHECK: @llvm.masked.load.v4i32.p0v4i32(<4 x i32>* %{{.*}}, i32 16, <4 x i1> %{{.*}}, <4 x i32> %{{.*}})
6468   return _mm_mask_load_epi32(__W, __U, __P); 
6469 }
6470
6471 __m128i test_mm_maskz_load_epi32(__mmask8 __U, void const *__P) {
6472   // CHECK-LABEL: @test_mm_maskz_load_epi32
6473   // CHECK: @llvm.masked.load.v4i32.p0v4i32(<4 x i32>* %{{.*}}, i32 16, <4 x i1> %{{.*}}, <4 x i32> %{{.*}})
6474   return _mm_maskz_load_epi32(__U, __P); 
6475 }
6476
6477 __m256i test_mm256_mask_load_epi32(__m256i __W, __mmask8 __U, void const *__P) {
6478   // CHECK-LABEL: @test_mm256_mask_load_epi32
6479   // CHECK: @llvm.masked.load.v8i32.p0v8i32(<8 x i32>* %{{.*}}, i32 32, <8 x i1> %{{.*}}, <8 x i32> %{{.*}})
6480   return _mm256_mask_load_epi32(__W, __U, __P); 
6481 }
6482
6483 __m256i test_mm256_maskz_load_epi32(__mmask8 __U, void const *__P) {
6484   // CHECK-LABEL: @test_mm256_maskz_load_epi32
6485   // CHECK: @llvm.masked.load.v8i32.p0v8i32(<8 x i32>* %{{.*}}, i32 32, <8 x i1> %{{.*}}, <8 x i32> %{{.*}})
6486   return _mm256_maskz_load_epi32(__U, __P); 
6487 }
6488
6489 __m128i test_mm_mask_load_epi64(__m128i __W, __mmask8 __U, void const *__P) {
6490   // CHECK-LABEL: @test_mm_mask_load_epi64
6491   // CHECK: @llvm.masked.load.v2i64.p0v2i64(<2 x i64>* %{{.*}}, i32 16, <2 x i1> %{{.*}}, <2 x i64> %{{.*}})
6492   return _mm_mask_load_epi64(__W, __U, __P); 
6493 }
6494
6495 __m128i test_mm_maskz_load_epi64(__mmask8 __U, void const *__P) {
6496   // CHECK-LABEL: @test_mm_maskz_load_epi64
6497   // CHECK: @llvm.masked.load.v2i64.p0v2i64(<2 x i64>* %{{.*}}, i32 16, <2 x i1> %{{.*}}, <2 x i64> %{{.*}})
6498   return _mm_maskz_load_epi64(__U, __P); 
6499 }
6500
6501 __m256i test_mm256_mask_load_epi64(__m256i __W, __mmask8 __U, void const *__P) {
6502   // CHECK-LABEL: @test_mm256_mask_load_epi64
6503   // CHECK: @llvm.masked.load.v4i64.p0v4i64(<4 x i64>* %{{.*}}, i32 32, <4 x i1> %{{.*}}, <4 x i64> %{{.*}})
6504   return _mm256_mask_load_epi64(__W, __U, __P); 
6505 }
6506
6507 __m256i test_mm256_maskz_load_epi64(__mmask8 __U, void const *__P) {
6508   // CHECK-LABEL: @test_mm256_maskz_load_epi64
6509   // CHECK: @llvm.masked.load.v4i64.p0v4i64(<4 x i64>* %{{.*}}, i32 32, <4 x i1> %{{.*}}, <4 x i64> %{{.*}})
6510   return _mm256_maskz_load_epi64(__U, __P); 
6511 }
6512
6513 void test_mm_mask_store_epi64(void *__P, __mmask8 __U, __m128i __A) {
6514   // CHECK-LABEL: @test_mm_mask_store_epi64
6515   // CHECK: @llvm.masked.store.v2i64.p0v2i64(<2 x i64> %{{.*}}, <2 x i64>* %{{.*}}, i32 16, <2 x i1> %{{.*}})
6516   return _mm_mask_store_epi64(__P, __U, __A); 
6517 }
6518
6519 void test_mm256_mask_store_epi64(void *__P, __mmask8 __U, __m256i __A) {
6520   // CHECK-LABEL: @test_mm256_mask_store_epi64
6521   // CHECK: @llvm.masked.store.v4i64.p0v4i64(<4 x i64> %{{.*}}, <4 x i64>* %{{.*}}, i32 32, <4 x i1> %{{.*}})
6522   return _mm256_mask_store_epi64(__P, __U, __A); 
6523 }
6524
6525 __m128d test_mm_mask_movedup_pd(__m128d __W, __mmask8 __U, __m128d __A) {
6526   // CHECK-LABEL: @test_mm_mask_movedup_pd
6527   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> zeroinitializer
6528   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
6529   return _mm_mask_movedup_pd(__W, __U, __A); 
6530 }
6531
6532 __m128d test_mm_maskz_movedup_pd(__mmask8 __U, __m128d __A) {
6533   // CHECK-LABEL: @test_mm_maskz_movedup_pd
6534   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> zeroinitializer
6535   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
6536   return _mm_maskz_movedup_pd(__U, __A); 
6537 }
6538
6539 __m256d test_mm256_mask_movedup_pd(__m256d __W, __mmask8 __U, __m256d __A) {
6540   // CHECK-LABEL: @test_mm256_mask_movedup_pd
6541   // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 0, i32 0, i32 2, i32 2>
6542   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
6543   return _mm256_mask_movedup_pd(__W, __U, __A); 
6544 }
6545
6546 __m256d test_mm256_maskz_movedup_pd(__mmask8 __U, __m256d __A) {
6547   // CHECK-LABEL: @test_mm256_maskz_movedup_pd
6548   // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 0, i32 0, i32 2, i32 2>
6549   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
6550   return _mm256_maskz_movedup_pd(__U, __A); 
6551 }
6552
6553 __m128i test_mm_mask_set1_epi32(__m128i __O, __mmask8 __M) {
6554   // CHECK-LABEL: @test_mm_mask_set1_epi32
6555   // CHECK: insertelement <4 x i32> undef, i32 %{{.*}}, i32 0
6556   // CHECK: insertelement <4 x i32> %{{.*}}32 1
6557   // CHECK: insertelement <4 x i32> %{{.*}}32 2
6558   // CHECK: insertelement <4 x i32> %{{.*}}32 3
6559   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
6560   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}  
6561   return _mm_mask_set1_epi32(__O, __M, 5); 
6562 }
6563
6564 __m128i test_mm_maskz_set1_epi32(__mmask8 __M) {
6565   // CHECK-LABEL: @test_mm_maskz_set1_epi32
6566   // CHECK: insertelement <4 x i32> undef, i32 %{{.*}}, i32 0
6567   // CHECK: insertelement <4 x i32> %{{.*}}32 1
6568   // CHECK: insertelement <4 x i32> %{{.*}}32 2
6569   // CHECK: insertelement <4 x i32> %{{.*}}32 3
6570   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
6571   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}  
6572   return _mm_maskz_set1_epi32(__M, 5); 
6573 }
6574
6575 __m256i test_mm256_mask_set1_epi32(__m256i __O, __mmask8 __M) {
6576   // CHECK-LABEL: @test_mm256_mask_set1_epi32
6577   // CHECK:  insertelement <8 x i32> undef, i32 %{{.*}}, i32 0
6578   // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 1
6579   // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 2
6580   // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 3
6581   // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 4
6582   // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 5
6583   // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 6
6584   // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 7
6585   // CHECK:  select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6586   return _mm256_mask_set1_epi32(__O, __M, 5); 
6587 }
6588
6589 __m256i test_mm256_maskz_set1_epi32(__mmask8 __M) {
6590   // CHECK-LABEL: @test_mm256_maskz_set1_epi32
6591   // CHECK:  insertelement <8 x i32> undef, i32 %{{.*}}, i32 0
6592   // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 1
6593   // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 2
6594   // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 3
6595   // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 4
6596   // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 5
6597   // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 6
6598   // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 7
6599   // CHECK:  select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6600   return _mm256_maskz_set1_epi32(__M, 5); 
6601 }
6602
6603 __m128i test_mm_mask_set1_epi64(__m128i __O, __mmask8 __M, long long __A) {
6604   // CHECK-LABEL: @test_mm_mask_set1_epi64
6605   // CHECK: insertelement <2 x i64> undef, i64 %{{.*}}, i32 0
6606   // CHECK: insertelement <2 x i64> %{{.*}}, i64 %{{.*}}, i32 1
6607   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
6608   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6609   return _mm_mask_set1_epi64(__O, __M, __A); 
6610 }
6611
6612 __m128i test_mm_maskz_set1_epi64(__mmask8 __M, long long __A) {
6613   // CHECK-LABEL: @test_mm_maskz_set1_epi64
6614   // CHECK: insertelement <2 x i64> undef, i64 %{{.*}}, i32 0
6615   // CHECK: insertelement <2 x i64> %{{.*}}, i64 %{{.*}}, i32 1
6616   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
6617   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6618   return _mm_maskz_set1_epi64(__M, __A); 
6619 }
6620
6621 __m256i test_mm256_mask_set1_epi64(__m256i __O, __mmask8 __M, long long __A) {
6622   // CHECK-LABEL: @test_mm256_mask_set1_epi64
6623   // CHECK: insertelement <4 x i64> undef, i64 %{{.*}}, i32 0
6624   // CHECK: insertelement <4 x i64> %{{.*}}, i64 %{{.*}}, i32 1
6625   // CHECK: insertelement <4 x i64> %{{.*}}, i64 %{{.*}}, i32 2
6626   // CHECK: insertelement <4 x i64> %{{.*}}, i64 %{{.*}}, i32 3
6627   // CHECK:  shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
6628   // CHECK:  select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6629   return _mm256_mask_set1_epi64(__O, __M, __A); 
6630 }
6631
6632 __m256i test_mm256_maskz_set1_epi64(__mmask8 __M, long long __A) {
6633   // CHECK-LABEL: @test_mm256_maskz_set1_epi64
6634   // CHECK: insertelement <4 x i64> undef, i64 %{{.*}}, i32 0
6635   // CHECK: insertelement <4 x i64> %{{.*}}, i64 %{{.*}}, i32 1
6636   // CHECK: insertelement <4 x i64> %{{.*}}, i64 %{{.*}}, i32 2
6637   // CHECK: insertelement <4 x i64> %{{.*}}, i64 %{{.*}}, i32 3
6638   // CHECK:  shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
6639   // CHECK:  select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6640   return _mm256_maskz_set1_epi64(__M, __A); 
6641 }
6642
6643 __m128d test_mm_fixupimm_pd(__m128d __A, __m128d __B, __m128i __C) {
6644   // CHECK-LABEL: @test_mm_fixupimm_pd
6645   // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.128
6646   return _mm_fixupimm_pd(__A, __B, __C, 5); 
6647 }
6648
6649 __m128d test_mm_mask_fixupimm_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128i __C) {
6650   // CHECK-LABEL: @test_mm_mask_fixupimm_pd
6651   // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.128
6652   return _mm_mask_fixupimm_pd(__A, __U, __B, __C, 5); 
6653 }
6654
6655 __m128d test_mm_maskz_fixupimm_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128i __C) {
6656   // CHECK-LABEL: @test_mm_maskz_fixupimm_pd
6657   // CHECK: @llvm.x86.avx512.maskz.fixupimm.pd.128
6658   return _mm_maskz_fixupimm_pd(__U, __A, __B, __C, 5); 
6659 }
6660
6661 __m256d test_mm256_fixupimm_pd(__m256d __A, __m256d __B, __m256i __C) {
6662   // CHECK-LABEL: @test_mm256_fixupimm_pd
6663   // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.256
6664   return _mm256_fixupimm_pd(__A, __B, __C, 5); 
6665 }
6666
6667 __m256d test_mm256_mask_fixupimm_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256i __C) {
6668   // CHECK-LABEL: @test_mm256_mask_fixupimm_pd
6669   // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.256
6670   return _mm256_mask_fixupimm_pd(__A, __U, __B, __C, 5); 
6671 }
6672
6673 __m256d test_mm256_maskz_fixupimm_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256i __C) {
6674   // CHECK-LABEL: @test_mm256_maskz_fixupimm_pd
6675   // CHECK: @llvm.x86.avx512.maskz.fixupimm.pd.256
6676   return _mm256_maskz_fixupimm_pd(__U, __A, __B, __C, 5); 
6677 }
6678
6679 __m128 test_mm_fixupimm_ps(__m128 __A, __m128 __B, __m128i __C) {
6680   // CHECK-LABEL: @test_mm_fixupimm_ps
6681   // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.128
6682   return _mm_fixupimm_ps(__A, __B, __C, 5); 
6683 }
6684
6685 __m128 test_mm_mask_fixupimm_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128i __C) {
6686   // CHECK-LABEL: @test_mm_mask_fixupimm_ps
6687   // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.128
6688   return _mm_mask_fixupimm_ps(__A, __U, __B, __C, 5); 
6689 }
6690
6691 __m128 test_mm_maskz_fixupimm_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128i __C) {
6692   // CHECK-LABEL: @test_mm_maskz_fixupimm_ps
6693   // CHECK: @llvm.x86.avx512.maskz.fixupimm.ps.128
6694   return _mm_maskz_fixupimm_ps(__U, __A, __B, __C, 5); 
6695 }
6696
6697 __m256 test_mm256_fixupimm_ps(__m256 __A, __m256 __B, __m256i __C) {
6698   // CHECK-LABEL: @test_mm256_fixupimm_ps
6699   // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.256
6700   return _mm256_fixupimm_ps(__A, __B, __C, 5); 
6701 }
6702
6703 __m256 test_mm256_mask_fixupimm_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256i __C) {
6704   // CHECK-LABEL: @test_mm256_mask_fixupimm_ps
6705   // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.256
6706   return _mm256_mask_fixupimm_ps(__A, __U, __B, __C, 5); 
6707 }
6708
6709 __m256 test_mm256_maskz_fixupimm_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256i __C) {
6710   // CHECK-LABEL: @test_mm256_maskz_fixupimm_ps
6711   // CHECK: @llvm.x86.avx512.maskz.fixupimm.ps.256
6712   return _mm256_maskz_fixupimm_ps(__U, __A, __B, __C, 5); 
6713 }
6714
6715 __m128d test_mm_mask_load_pd(__m128d __W, __mmask8 __U, void const *__P) {
6716   // CHECK-LABEL: @test_mm_mask_load_pd
6717   // CHECK: @llvm.masked.load.v2f64.p0v2f64(<2 x double>* %{{.*}}, i32 16, <2 x i1> %{{.*}}, <2 x double> %{{.*}})
6718   return _mm_mask_load_pd(__W, __U, __P); 
6719 }
6720
6721 __m128d test_mm_maskz_load_pd(__mmask8 __U, void const *__P) {
6722   // CHECK-LABEL: @test_mm_maskz_load_pd
6723   // CHECK: @llvm.masked.load.v2f64.p0v2f64(<2 x double>* %{{.*}}, i32 16, <2 x i1> %{{.*}}, <2 x double> %{{.*}})
6724   return _mm_maskz_load_pd(__U, __P); 
6725 }
6726
6727 __m256d test_mm256_mask_load_pd(__m256d __W, __mmask8 __U, void const *__P) {
6728   // CHECK-LABEL: @test_mm256_mask_load_pd
6729   // CHECK: @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %{{.*}}, i32 32, <4 x i1> %{{.*}}, <4 x double> %{{.*}})
6730   return _mm256_mask_load_pd(__W, __U, __P); 
6731 }
6732
6733 __m256d test_mm256_maskz_load_pd(__mmask8 __U, void const *__P) {
6734   // CHECK-LABEL: @test_mm256_maskz_load_pd
6735   // CHECK: @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %{{.*}}, i32 32, <4 x i1> %{{.*}}, <4 x double> %{{.*}})
6736   return _mm256_maskz_load_pd(__U, __P); 
6737 }
6738
6739 __m128 test_mm_mask_load_ps(__m128 __W, __mmask8 __U, void const *__P) {
6740   // CHECK-LABEL: @test_mm_mask_load_ps
6741   // CHECK: @llvm.masked.load.v4f32.p0v4f32(<4 x float>* %{{.*}}, i32 16, <4 x i1> %{{.*}}, <4 x float> %{{.*}})
6742   return _mm_mask_load_ps(__W, __U, __P); 
6743 }
6744
6745 __m128 test_mm_maskz_load_ps(__mmask8 __U, void const *__P) {
6746   // CHECK-LABEL: @test_mm_maskz_load_ps
6747   // CHECK: @llvm.masked.load.v4f32.p0v4f32(<4 x float>* %{{.*}}, i32 16, <4 x i1> %{{.*}}, <4 x float> %{{.*}})
6748   return _mm_maskz_load_ps(__U, __P); 
6749 }
6750
6751 __m256 test_mm256_mask_load_ps(__m256 __W, __mmask8 __U, void const *__P) {
6752   // CHECK-LABEL: @test_mm256_mask_load_ps
6753   // CHECK: @llvm.masked.load.v8f32.p0v8f32(<8 x float>* %{{.*}}, i32 32, <8 x i1> %{{.*}}, <8 x float> %{{.*}})
6754   return _mm256_mask_load_ps(__W, __U, __P); 
6755 }
6756
6757 __m256 test_mm256_maskz_load_ps(__mmask8 __U, void const *__P) {
6758   // CHECK-LABEL: @test_mm256_maskz_load_ps
6759   // CHECK: @llvm.masked.load.v8f32.p0v8f32(<8 x float>* %{{.*}}, i32 32, <8 x i1> %{{.*}}, <8 x float> %{{.*}})
6760   return _mm256_maskz_load_ps(__U, __P); 
6761 }
6762
6763 __m128i test_mm_mask_loadu_epi64(__m128i __W, __mmask8 __U, void const *__P) {
6764   // CHECK-LABEL: @test_mm_mask_loadu_epi64
6765   // CHECK: @llvm.masked.load.v2i64.p0v2i64(<2 x i64>* %{{.*}}, i32 1, <2 x i1> %{{.*}}, <2 x i64> %{{.*}})
6766   return _mm_mask_loadu_epi64(__W, __U, __P); 
6767 }
6768
6769 __m128i test_mm_maskz_loadu_epi64(__mmask8 __U, void const *__P) {
6770   // CHECK-LABEL: @test_mm_maskz_loadu_epi64
6771   // CHECK: @llvm.masked.load.v2i64.p0v2i64(<2 x i64>* %{{.*}}, i32 1, <2 x i1> %{{.*}}, <2 x i64> %{{.*}})
6772   return _mm_maskz_loadu_epi64(__U, __P); 
6773 }
6774
6775 __m256i test_mm256_mask_loadu_epi64(__m256i __W, __mmask8 __U, void const *__P) {
6776   // CHECK-LABEL: @test_mm256_mask_loadu_epi64
6777   // CHECK: @llvm.masked.load.v4i64.p0v4i64(<4 x i64>* %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x i64> %{{.*}})
6778   return _mm256_mask_loadu_epi64(__W, __U, __P); 
6779 }
6780
6781 __m256i test_mm256_maskz_loadu_epi64(__mmask8 __U, void const *__P) {
6782   // CHECK-LABEL: @test_mm256_maskz_loadu_epi64
6783   // CHECK: @llvm.masked.load.v4i64.p0v4i64(<4 x i64>* %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x i64> %{{.*}})
6784   return _mm256_maskz_loadu_epi64(__U, __P); 
6785 }
6786
6787 __m128i test_mm_mask_loadu_epi32(__m128i __W, __mmask8 __U, void const *__P) {
6788   // CHECK-LABEL: @test_mm_mask_loadu_epi32
6789   // CHECK: @llvm.masked.load.v4i32.p0v4i32(<4 x i32>* %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x i32> %{{.*}})
6790   return _mm_mask_loadu_epi32(__W, __U, __P); 
6791 }
6792
6793 __m128i test_mm_maskz_loadu_epi32(__mmask8 __U, void const *__P) {
6794   // CHECK-LABEL: @test_mm_maskz_loadu_epi32
6795   // CHECK: @llvm.masked.load.v4i32.p0v4i32(<4 x i32>* %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x i32> %{{.*}})
6796   return _mm_maskz_loadu_epi32(__U, __P); 
6797 }
6798
6799 __m256i test_mm256_mask_loadu_epi32(__m256i __W, __mmask8 __U, void const *__P) {
6800   // CHECK-LABEL: @test_mm256_mask_loadu_epi32
6801   // CHECK: @llvm.masked.load.v8i32.p0v8i32(<8 x i32>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x i32> %{{.*}})
6802   return _mm256_mask_loadu_epi32(__W, __U, __P); 
6803 }
6804
6805 __m256i test_mm256_maskz_loadu_epi32(__mmask8 __U, void const *__P) {
6806   // CHECK-LABEL: @test_mm256_maskz_loadu_epi32
6807   // CHECK: @llvm.masked.load.v8i32.p0v8i32(<8 x i32>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x i32> %{{.*}})
6808   return _mm256_maskz_loadu_epi32(__U, __P); 
6809 }
6810
6811 __m128d test_mm_mask_loadu_pd(__m128d __W, __mmask8 __U, void const *__P) {
6812   // CHECK-LABEL: @test_mm_mask_loadu_pd
6813   // CHECK: @llvm.masked.load.v2f64.p0v2f64(<2 x double>* %{{.*}}, i32 1, <2 x i1> %{{.*}}, <2 x double> %{{.*}})
6814   return _mm_mask_loadu_pd(__W, __U, __P); 
6815 }
6816
6817 __m128d test_mm_maskz_loadu_pd(__mmask8 __U, void const *__P) {
6818   // CHECK-LABEL: @test_mm_maskz_loadu_pd
6819   // CHECK: @llvm.masked.load.v2f64.p0v2f64(<2 x double>* %{{.*}}, i32 1, <2 x i1> %{{.*}}, <2 x double> %{{.*}})
6820   return _mm_maskz_loadu_pd(__U, __P); 
6821 }
6822
6823 __m256d test_mm256_mask_loadu_pd(__m256d __W, __mmask8 __U, void const *__P) {
6824   // CHECK-LABEL: @test_mm256_mask_loadu_pd
6825   // CHECK: @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x double> %{{.*}})
6826   return _mm256_mask_loadu_pd(__W, __U, __P); 
6827 }
6828
6829 __m256d test_mm256_maskz_loadu_pd(__mmask8 __U, void const *__P) {
6830   // CHECK-LABEL: @test_mm256_maskz_loadu_pd
6831   // CHECK: @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x double> %{{.*}})
6832   return _mm256_maskz_loadu_pd(__U, __P); 
6833 }
6834
6835 __m128 test_mm_mask_loadu_ps(__m128 __W, __mmask8 __U, void const *__P) {
6836   // CHECK-LABEL: @test_mm_mask_loadu_ps
6837   // CHECK: @llvm.masked.load.v4f32.p0v4f32(<4 x float>* %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x float> %{{.*}})
6838   return _mm_mask_loadu_ps(__W, __U, __P); 
6839 }
6840
6841 __m128 test_mm_maskz_loadu_ps(__mmask8 __U, void const *__P) {
6842   // CHECK-LABEL: @test_mm_maskz_loadu_ps
6843   // CHECK: @llvm.masked.load.v4f32.p0v4f32(<4 x float>* %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x float> %{{.*}})
6844   return _mm_maskz_loadu_ps(__U, __P); 
6845 }
6846
6847 __m256 test_mm256_mask_loadu_ps(__m256 __W, __mmask8 __U, void const *__P) {
6848   // CHECK-LABEL: @test_mm256_mask_loadu_ps
6849   // CHECK: @llvm.masked.load.v8f32.p0v8f32(<8 x float>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x float> %{{.*}})
6850   return _mm256_mask_loadu_ps(__W, __U, __P); 
6851 }
6852
6853 __m256 test_mm256_maskz_loadu_ps(__mmask8 __U, void const *__P) {
6854   // CHECK-LABEL: @test_mm256_maskz_loadu_ps
6855   // CHECK: @llvm.masked.load.v8f32.p0v8f32(<8 x float>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x float> %{{.*}})
6856   return _mm256_maskz_loadu_ps(__U, __P); 
6857 }
6858
6859 void test_mm_mask_store_pd(void *__P, __mmask8 __U, __m128d __A) {
6860   // CHECK-LABEL: @test_mm_mask_store_pd
6861   // CHECK: @llvm.masked.store.v2f64.p0v2f64(<2 x double> %{{.*}}, <2 x double>* %{{.*}}, i32 16, <2 x i1> %{{.*}})
6862   return _mm_mask_store_pd(__P, __U, __A); 
6863 }
6864
6865 void test_mm256_mask_store_pd(void *__P, __mmask8 __U, __m256d __A) {
6866   // CHECK-LABEL: @test_mm256_mask_store_pd
6867   // CHECK: @llvm.masked.store.v4f64.p0v4f64(<4 x double> %{{.*}}, <4 x double>* %{{.*}}, i32 32, <4 x i1> %{{.*}})
6868   return _mm256_mask_store_pd(__P, __U, __A); 
6869 }
6870
6871 void test_mm_mask_store_ps(void *__P, __mmask8 __U, __m128 __A) {
6872   // CHECK-LABEL: @test_mm_mask_store_ps
6873   // CHECK: @llvm.masked.store.v4f32.p0v4f32(<4 x float> %{{.*}}, <4 x float>* %{{.*}}, i32 16, <4 x i1> %{{.*}})
6874   return _mm_mask_store_ps(__P, __U, __A); 
6875 }
6876
6877 void test_mm256_mask_store_ps(void *__P, __mmask8 __U, __m256 __A) {
6878   // CHECK-LABEL: @test_mm256_mask_store_ps
6879   // CHECK: @llvm.masked.store.v8f32.p0v8f32(<8 x float> %{{.*}}, <8 x float>* %{{.*}}, i32 32, <8 x i1> %{{.*}})
6880   return _mm256_mask_store_ps(__P, __U, __A); 
6881 }
6882
6883 void test_mm_mask_storeu_epi64(void *__P, __mmask8 __U, __m128i __A) {
6884   // CHECK-LABEL: @test_mm_mask_storeu_epi64
6885   // CHECK: @llvm.masked.store.v2i64.p0v2i64(<2 x i64> %{{.*}}, <2 x i64>* %{{.*}}, i32 1, <2 x i1> %{{.*}})
6886   return _mm_mask_storeu_epi64(__P, __U, __A); 
6887 }
6888
6889 void test_mm256_mask_storeu_epi64(void *__P, __mmask8 __U, __m256i __A) {
6890   // CHECK-LABEL: @test_mm256_mask_storeu_epi64
6891   // CHECK: @llvm.masked.store.v4i64.p0v4i64(<4 x i64> %{{.*}}, <4 x i64>* %{{.*}}, i32 1, <4 x i1> %{{.*}})
6892   return _mm256_mask_storeu_epi64(__P, __U, __A); 
6893 }
6894
6895 void test_mm_mask_storeu_epi32(void *__P, __mmask8 __U, __m128i __A) {
6896   // CHECK-LABEL: @test_mm_mask_storeu_epi32
6897   // CHECK: @llvm.masked.store.v4i32.p0v4i32(<4 x i32> %{{.*}}, <4 x i32>* %{{.*}}, i32 1, <4 x i1> %{{.*}})
6898   return _mm_mask_storeu_epi32(__P, __U, __A); 
6899 }
6900
6901 void test_mm256_mask_storeu_epi32(void *__P, __mmask8 __U, __m256i __A) {
6902   // CHECK-LABEL: @test_mm256_mask_storeu_epi32
6903   // CHECK: @llvm.masked.store.v8i32.p0v8i32(<8 x i32> %{{.*}}, <8 x i32>* %{{.*}}, i32 1, <8 x i1> %{{.*}})
6904   return _mm256_mask_storeu_epi32(__P, __U, __A); 
6905 }
6906
6907 void test_mm_mask_storeu_pd(void *__P, __mmask8 __U, __m128d __A) {
6908   // CHECK-LABEL: @test_mm_mask_storeu_pd
6909   // CHECK: @llvm.masked.store.v2f64.p0v2f64(<2 x double> %{{.*}}, <2 x double>* %{{.*}}, i32 1, <2 x i1> %{{.*}})
6910   return _mm_mask_storeu_pd(__P, __U, __A); 
6911 }
6912
6913 void test_mm256_mask_storeu_pd(void *__P, __mmask8 __U, __m256d __A) {
6914   // CHECK-LABEL: @test_mm256_mask_storeu_pd
6915   // CHECK: @llvm.masked.store.v4f64.p0v4f64(<4 x double> %{{.*}}, <4 x double>* %{{.*}}, i32 1, <4 x i1> %{{.*}})
6916   return _mm256_mask_storeu_pd(__P, __U, __A); 
6917 }
6918
6919 void test_mm_mask_storeu_ps(void *__P, __mmask8 __U, __m128 __A) {
6920   // CHECK-LABEL: @test_mm_mask_storeu_ps
6921   // CHECK: @llvm.masked.store.v4f32.p0v4f32(<4 x float> %{{.*}}, <4 x float>* %{{.*}}, i32 1, <4 x i1> %{{.*}})
6922   return _mm_mask_storeu_ps(__P, __U, __A); 
6923 }
6924
6925 void test_mm256_mask_storeu_ps(void *__P, __mmask8 __U, __m256 __A) {
6926   // CHECK-LABEL: @test_mm256_mask_storeu_ps
6927   // CHECK: @llvm.masked.store.v8f32.p0v8f32(<8 x float> %{{.*}}, <8 x float>* %{{.*}}, i32 1, <8 x i1> %{{.*}})
6928   return _mm256_mask_storeu_ps(__P, __U, __A); 
6929 }
6930
6931 __m128d test_mm_mask_unpackhi_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
6932   // CHECK-LABEL: @test_mm_mask_unpackhi_pd
6933   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> <i32 1, i32 3>
6934   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
6935   return _mm_mask_unpackhi_pd(__W, __U, __A, __B); 
6936 }
6937
6938 __m128d test_mm_maskz_unpackhi_pd(__mmask8 __U, __m128d __A, __m128d __B) {
6939   // CHECK-LABEL: @test_mm_maskz_unpackhi_pd
6940   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> <i32 1, i32 3>
6941   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
6942   return _mm_maskz_unpackhi_pd(__U, __A, __B); 
6943 }
6944
6945 __m256d test_mm256_mask_unpackhi_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
6946   // CHECK-LABEL: @test_mm256_mask_unpackhi_pd
6947   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
6948   // CHECK: select <4 x i1> %{{.*}} <4 x double> %{{.*}}, <4 x double> %{{.*}}
6949   return _mm256_mask_unpackhi_pd(__W, __U, __A, __B); 
6950 }
6951
6952 __m256d test_mm256_maskz_unpackhi_pd(__mmask8 __U, __m256d __A, __m256d __B) {
6953   // CHECK-LABEL: @test_mm256_maskz_unpackhi_pd
6954   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
6955   // CHECK: select <4 x i1> %{{.*}} <4 x double> %{{.*}}, <4 x double> %{{.*}}
6956   return _mm256_maskz_unpackhi_pd(__U, __A, __B); 
6957 }
6958
6959 __m128 test_mm_mask_unpackhi_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
6960   // CHECK-LABEL: @test_mm_mask_unpackhi_ps
6961   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
6962   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}} <4 x float> %{{.*}}
6963   return _mm_mask_unpackhi_ps(__W, __U, __A, __B); 
6964 }
6965
6966 __m128 test_mm_maskz_unpackhi_ps(__mmask8 __U, __m128 __A, __m128 __B) {
6967   // CHECK-LABEL: @test_mm_maskz_unpackhi_ps
6968   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
6969   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}} <4 x float> %{{.*}}
6970   return _mm_maskz_unpackhi_ps(__U, __A, __B); 
6971 }
6972
6973 __m256 test_mm256_mask_unpackhi_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
6974   // CHECK-LABEL: @test_mm256_mask_unpackhi_ps
6975   // 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>
6976   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
6977   return _mm256_mask_unpackhi_ps(__W, __U, __A, __B); 
6978 }
6979
6980 __m256 test_mm256_maskz_unpackhi_ps(__mmask8 __U, __m256 __A, __m256 __B) {
6981   // CHECK-LABEL: @test_mm256_maskz_unpackhi_ps
6982   // 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>
6983   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
6984   return _mm256_maskz_unpackhi_ps(__U, __A, __B); 
6985 }
6986
6987 __m128d test_mm_mask_unpacklo_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
6988   // CHECK-LABEL: @test_mm_mask_unpacklo_pd
6989   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> <i32 0, i32 2>
6990   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
6991   return _mm_mask_unpacklo_pd(__W, __U, __A, __B); 
6992 }
6993
6994 __m128d test_mm_maskz_unpacklo_pd(__mmask8 __U, __m128d __A, __m128d __B) {
6995   // CHECK-LABEL: @test_mm_maskz_unpacklo_pd
6996   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> <i32 0, i32 2>
6997   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
6998   return _mm_maskz_unpacklo_pd(__U, __A, __B); 
6999 }
7000
7001 __m256d test_mm256_mask_unpacklo_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
7002   // CHECK-LABEL: @test_mm256_mask_unpacklo_pd
7003   // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
7004   // CHECK: select <4 x i1> %{{.*}} <4 x double> %{{.*}}, <4 x double> %{{.*}}
7005   return _mm256_mask_unpacklo_pd(__W, __U, __A, __B); 
7006 }
7007
7008 __m256d test_mm256_maskz_unpacklo_pd(__mmask8 __U, __m256d __A, __m256d __B) {
7009   // CHECK-LABEL: @test_mm256_maskz_unpacklo_pd
7010   // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
7011   // CHECK: select <4 x i1> %{{.*}} <4 x double> %{{.*}}, <4 x double> %{{.*}}
7012   return _mm256_maskz_unpacklo_pd(__U, __A, __B); 
7013 }
7014
7015 __m128 test_mm_mask_unpacklo_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
7016   // CHECK-LABEL: @test_mm_mask_unpacklo_ps
7017   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
7018   // CHECK: select <4 x i1> %{{.*}} <4 x float> %{{.*}}, <4 x float> %{{.*}}
7019   return _mm_mask_unpacklo_ps(__W, __U, __A, __B); 
7020 }
7021
7022 __m128 test_mm_maskz_unpacklo_ps(__mmask8 __U, __m128 __A, __m128 __B) {
7023   // CHECK-LABEL: @test_mm_maskz_unpacklo_ps
7024   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
7025   // CHECK: select <4 x i1> %{{.*}} <4 x float> %{{.*}}, <4 x float> %{{.*}}
7026   return _mm_maskz_unpacklo_ps(__U, __A, __B); 
7027 }
7028
7029 __m256 test_mm256_mask_unpacklo_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
7030   // CHECK-LABEL: @test_mm256_mask_unpacklo_ps
7031   // 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>
7032   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7033   return _mm256_mask_unpacklo_ps(__W, __U, __A, __B); 
7034 }
7035
7036 __m256 test_mm256_maskz_unpacklo_ps(__mmask8 __U, __m256 __A, __m256 __B) {
7037   // CHECK-LABEL: @test_mm256_maskz_unpacklo_ps
7038   // 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>
7039   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7040   return _mm256_maskz_unpacklo_ps(__U, __A, __B); 
7041 }
7042
7043 __m128d test_mm_rcp14_pd(__m128d __A) {
7044   // CHECK-LABEL: @test_mm_rcp14_pd
7045   // CHECK: @llvm.x86.avx512.rcp14.pd.128
7046   return _mm_rcp14_pd(__A); 
7047 }
7048
7049 __m128d test_mm_mask_rcp14_pd(__m128d __W, __mmask8 __U, __m128d __A) {
7050   // CHECK-LABEL: @test_mm_mask_rcp14_pd
7051   // CHECK: @llvm.x86.avx512.rcp14.pd.128
7052   return _mm_mask_rcp14_pd(__W, __U, __A); 
7053 }
7054
7055 __m128d test_mm_maskz_rcp14_pd(__mmask8 __U, __m128d __A) {
7056   // CHECK-LABEL: @test_mm_maskz_rcp14_pd
7057   // CHECK: @llvm.x86.avx512.rcp14.pd.128
7058   return _mm_maskz_rcp14_pd(__U, __A); 
7059 }
7060
7061 __m256d test_mm256_rcp14_pd(__m256d __A) {
7062   // CHECK-LABEL: @test_mm256_rcp14_pd
7063   // CHECK: @llvm.x86.avx512.rcp14.pd.256
7064   return _mm256_rcp14_pd(__A); 
7065 }
7066
7067 __m256d test_mm256_mask_rcp14_pd(__m256d __W, __mmask8 __U, __m256d __A) {
7068   // CHECK-LABEL: @test_mm256_mask_rcp14_pd
7069   // CHECK: @llvm.x86.avx512.rcp14.pd.256
7070   return _mm256_mask_rcp14_pd(__W, __U, __A); 
7071 }
7072
7073 __m256d test_mm256_maskz_rcp14_pd(__mmask8 __U, __m256d __A) {
7074   // CHECK-LABEL: @test_mm256_maskz_rcp14_pd
7075   // CHECK: @llvm.x86.avx512.rcp14.pd.256
7076   return _mm256_maskz_rcp14_pd(__U, __A); 
7077 }
7078
7079 __m128 test_mm_rcp14_ps(__m128 __A) {
7080   // CHECK-LABEL: @test_mm_rcp14_ps
7081   // CHECK: @llvm.x86.avx512.rcp14.ps.128
7082   return _mm_rcp14_ps(__A); 
7083 }
7084
7085 __m128 test_mm_mask_rcp14_ps(__m128 __W, __mmask8 __U, __m128 __A) {
7086   // CHECK-LABEL: @test_mm_mask_rcp14_ps
7087   // CHECK: @llvm.x86.avx512.rcp14.ps.128
7088   return _mm_mask_rcp14_ps(__W, __U, __A); 
7089 }
7090
7091 __m128 test_mm_maskz_rcp14_ps(__mmask8 __U, __m128 __A) {
7092   // CHECK-LABEL: @test_mm_maskz_rcp14_ps
7093   // CHECK: @llvm.x86.avx512.rcp14.ps.128
7094   return _mm_maskz_rcp14_ps(__U, __A); 
7095 }
7096
7097 __m256 test_mm256_rcp14_ps(__m256 __A) {
7098   // CHECK-LABEL: @test_mm256_rcp14_ps
7099   // CHECK: @llvm.x86.avx512.rcp14.ps.256
7100   return _mm256_rcp14_ps(__A); 
7101 }
7102
7103 __m256 test_mm256_mask_rcp14_ps(__m256 __W, __mmask8 __U, __m256 __A) {
7104   // CHECK-LABEL: @test_mm256_mask_rcp14_ps
7105   // CHECK: @llvm.x86.avx512.rcp14.ps.256
7106   return _mm256_mask_rcp14_ps(__W, __U, __A); 
7107 }
7108
7109 __m256 test_mm256_maskz_rcp14_ps(__mmask8 __U, __m256 __A) {
7110   // CHECK-LABEL: @test_mm256_maskz_rcp14_ps
7111   // CHECK: @llvm.x86.avx512.rcp14.ps.256
7112   return _mm256_maskz_rcp14_ps(__U, __A); 
7113 }
7114
7115 __m128d test_mm_mask_permute_pd(__m128d __W, __mmask8 __U, __m128d __X) {
7116   // CHECK-LABEL: @test_mm_mask_permute_pd
7117   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> undef, <2 x i32> <i32 1, i32 0>
7118   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
7119   return _mm_mask_permute_pd(__W, __U, __X, 1); 
7120 }
7121
7122 __m128d test_mm_maskz_permute_pd(__mmask8 __U, __m128d __X) {
7123   // CHECK-LABEL: @test_mm_maskz_permute_pd
7124   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> undef, <2 x i32> <i32 1, i32 0>
7125   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
7126   return _mm_maskz_permute_pd(__U, __X, 1); 
7127 }
7128
7129 __m256d test_mm256_mask_permute_pd(__m256d __W, __mmask8 __U, __m256d __X) {
7130   // CHECK-LABEL: @test_mm256_mask_permute_pd
7131   // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> undef, <4 x i32> <i32 1, i32 0, i32 3, i32 2>
7132   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
7133   return _mm256_mask_permute_pd(__W, __U, __X, 5); 
7134 }
7135
7136 __m256d test_mm256_maskz_permute_pd(__mmask8 __U, __m256d __X) {
7137   // CHECK-LABEL: @test_mm256_maskz_permute_pd
7138   // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> undef, <4 x i32> <i32 1, i32 0, i32 3, i32 2>
7139   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
7140   return _mm256_maskz_permute_pd(__U, __X, 5); 
7141 }
7142
7143 __m128 test_mm_mask_permute_ps(__m128 __W, __mmask8 __U, __m128 __X) {
7144   // CHECK-LABEL: @test_mm_mask_permute_ps
7145   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> undef, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
7146   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
7147   return _mm_mask_permute_ps(__W, __U, __X, 0x1b); 
7148 }
7149
7150 __m128 test_mm_maskz_permute_ps(__mmask8 __U, __m128 __X) {
7151   // CHECK-LABEL: @test_mm_maskz_permute_ps
7152   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> undef, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
7153   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
7154   return _mm_maskz_permute_ps(__U, __X, 0x1b); 
7155 }
7156
7157 __m256 test_mm256_mask_permute_ps(__m256 __W, __mmask8 __U, __m256 __X) {
7158   // CHECK-LABEL: @test_mm256_mask_permute_ps
7159   // 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>
7160   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7161   return _mm256_mask_permute_ps(__W, __U, __X, 0x1b); 
7162 }
7163
7164 __m256 test_mm256_maskz_permute_ps(__mmask8 __U, __m256 __X) {
7165   // CHECK-LABEL: @test_mm256_maskz_permute_ps
7166   // 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>
7167   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7168   return _mm256_maskz_permute_ps(__U, __X, 0x1b); 
7169 }
7170
7171 __m128d test_mm_mask_permutevar_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128i __C) {
7172   // CHECK-LABEL: @test_mm_mask_permutevar_pd
7173   // CHECK: @llvm.x86.avx.vpermilvar.pd
7174   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
7175   return _mm_mask_permutevar_pd(__W, __U, __A, __C); 
7176 }
7177
7178 __m128d test_mm_maskz_permutevar_pd(__mmask8 __U, __m128d __A, __m128i __C) {
7179   // CHECK-LABEL: @test_mm_maskz_permutevar_pd
7180   // CHECK: @llvm.x86.avx.vpermilvar.pd
7181   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
7182   return _mm_maskz_permutevar_pd(__U, __A, __C); 
7183 }
7184
7185 __m256d test_mm256_mask_permutevar_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256i __C) {
7186   // CHECK-LABEL: @test_mm256_mask_permutevar_pd
7187   // CHECK: @llvm.x86.avx.vpermilvar.pd.256
7188   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
7189   return _mm256_mask_permutevar_pd(__W, __U, __A, __C); 
7190 }
7191
7192 __m256d test_mm256_maskz_permutevar_pd(__mmask8 __U, __m256d __A, __m256i __C) {
7193   // CHECK-LABEL: @test_mm256_maskz_permutevar_pd
7194   // CHECK: @llvm.x86.avx.vpermilvar.pd.256
7195   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
7196   return _mm256_maskz_permutevar_pd(__U, __A, __C); 
7197 }
7198
7199 __m128 test_mm_mask_permutevar_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128i __C) {
7200   // CHECK-LABEL: @test_mm_mask_permutevar_ps
7201   // CHECK: @llvm.x86.avx.vpermilvar.ps
7202   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
7203   return _mm_mask_permutevar_ps(__W, __U, __A, __C); 
7204 }
7205
7206 __m128 test_mm_maskz_permutevar_ps(__mmask8 __U, __m128 __A, __m128i __C) {
7207   // CHECK-LABEL: @test_mm_maskz_permutevar_ps
7208   // CHECK: @llvm.x86.avx.vpermilvar.ps
7209   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
7210   return _mm_maskz_permutevar_ps(__U, __A, __C); 
7211 }
7212
7213 __m256 test_mm256_mask_permutevar_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256i __C) {
7214   // CHECK-LABEL: @test_mm256_mask_permutevar_ps
7215   // CHECK: @llvm.x86.avx.vpermilvar.ps.256
7216   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7217   return _mm256_mask_permutevar_ps(__W, __U, __A, __C); 
7218 }
7219
7220 __m256 test_mm256_maskz_permutevar_ps(__mmask8 __U, __m256 __A, __m256i __C) {
7221   // CHECK-LABEL: @test_mm256_maskz_permutevar_ps
7222   // CHECK: @llvm.x86.avx.vpermilvar.ps.256
7223   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7224   return _mm256_maskz_permutevar_ps(__U, __A, __C); 
7225 }
7226
7227 __mmask8 test_mm_test_epi32_mask(__m128i __A, __m128i __B) {
7228   // CHECK-LABEL: @test_mm_test_epi32_mask
7229   // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
7230   // CHECK: icmp ne <4 x i32> %{{.*}}, %{{.*}}
7231   return _mm_test_epi32_mask(__A, __B); 
7232 }
7233
7234 __mmask8 test_mm_mask_test_epi32_mask(__mmask8 __U, __m128i __A, __m128i __B) {
7235   // CHECK-LABEL: @test_mm_mask_test_epi32_mask
7236   // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
7237   // CHECK: icmp ne <4 x i32> %{{.*}}, %{{.*}}
7238   // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
7239   return _mm_mask_test_epi32_mask(__U, __A, __B); 
7240 }
7241
7242 __mmask8 test_mm256_test_epi32_mask(__m256i __A, __m256i __B) {
7243   // CHECK-LABEL: @test_mm256_test_epi32_mask
7244   // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
7245   // CHECK: icmp ne <8 x i32> %{{.*}}, %{{.*}}
7246   return _mm256_test_epi32_mask(__A, __B); 
7247 }
7248
7249 __mmask8 test_mm256_mask_test_epi32_mask(__mmask8 __U, __m256i __A, __m256i __B) {
7250   // CHECK-LABEL: @test_mm256_mask_test_epi32_mask
7251   // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
7252   // CHECK: icmp ne <8 x i32> %{{.*}}, %{{.*}}
7253   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
7254   return _mm256_mask_test_epi32_mask(__U, __A, __B); 
7255 }
7256
7257 __mmask8 test_mm_test_epi64_mask(__m128i __A, __m128i __B) {
7258   // CHECK-LABEL: @test_mm_test_epi64_mask
7259   // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
7260   // CHECK: icmp ne <2 x i64> %{{.*}}, %{{.*}}
7261   return _mm_test_epi64_mask(__A, __B); 
7262 }
7263
7264 __mmask8 test_mm_mask_test_epi64_mask(__mmask8 __U, __m128i __A, __m128i __B) {
7265   // CHECK-LABEL: @test_mm_mask_test_epi64_mask
7266   // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
7267   // CHECK: icmp ne <2 x i64> %{{.*}}, %{{.*}}
7268   // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
7269   return _mm_mask_test_epi64_mask(__U, __A, __B); 
7270 }
7271
7272 __mmask8 test_mm256_test_epi64_mask(__m256i __A, __m256i __B) {
7273   // CHECK-LABEL: @test_mm256_test_epi64_mask
7274   // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
7275   // CHECK: icmp ne <4 x i64> %{{.*}}, %{{.*}}
7276   return _mm256_test_epi64_mask(__A, __B); 
7277 }
7278
7279 __mmask8 test_mm256_mask_test_epi64_mask(__mmask8 __U, __m256i __A, __m256i __B) {
7280   // CHECK-LABEL: @test_mm256_mask_test_epi64_mask
7281   // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
7282   // CHECK: icmp ne <4 x i64> %{{.*}}, %{{.*}}
7283   // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
7284   return _mm256_mask_test_epi64_mask(__U, __A, __B); 
7285 }
7286
7287 __mmask8 test_mm_testn_epi32_mask(__m128i __A, __m128i __B) {
7288   // CHECK-LABEL: @test_mm_testn_epi32_mask
7289   // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
7290   // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}
7291   return _mm_testn_epi32_mask(__A, __B); 
7292 }
7293
7294 __mmask8 test_mm_mask_testn_epi32_mask(__mmask8 __U, __m128i __A, __m128i __B) {
7295   // CHECK-LABEL: @test_mm_mask_testn_epi32_mask
7296   // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
7297   // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}
7298   // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
7299   return _mm_mask_testn_epi32_mask(__U, __A, __B); 
7300 }
7301
7302 __mmask8 test_mm256_testn_epi32_mask(__m256i __A, __m256i __B) {
7303   // CHECK-LABEL: @test_mm256_testn_epi32_mask
7304   // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
7305   // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}}
7306   return _mm256_testn_epi32_mask(__A, __B); 
7307 }
7308
7309 __mmask8 test_mm256_mask_testn_epi32_mask(__mmask8 __U, __m256i __A, __m256i __B) {
7310   // CHECK-LABEL: @test_mm256_mask_testn_epi32_mask
7311   // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
7312   // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}}
7313   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
7314   return _mm256_mask_testn_epi32_mask(__U, __A, __B); 
7315 }
7316
7317 __mmask8 test_mm_testn_epi64_mask(__m128i __A, __m128i __B) {
7318   // CHECK-LABEL: @test_mm_testn_epi64_mask
7319   // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
7320   // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}
7321   return _mm_testn_epi64_mask(__A, __B); 
7322 }
7323
7324 __mmask8 test_mm_mask_testn_epi64_mask(__mmask8 __U, __m128i __A, __m128i __B) {
7325   // CHECK-LABEL: @test_mm_mask_testn_epi64_mask
7326   // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
7327   // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}
7328   // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
7329   return _mm_mask_testn_epi64_mask(__U, __A, __B); 
7330 }
7331
7332 __mmask8 test_mm256_testn_epi64_mask(__m256i __A, __m256i __B) {
7333   // CHECK-LABEL: @test_mm256_testn_epi64_mask
7334   // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
7335   // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}}
7336   return _mm256_testn_epi64_mask(__A, __B); 
7337 }
7338
7339 __mmask8 test_mm256_mask_testn_epi64_mask(__mmask8 __U, __m256i __A, __m256i __B) {
7340   // CHECK-LABEL: @test_mm256_mask_testn_epi64_mask
7341   // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
7342   // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}}
7343   // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
7344   return _mm256_mask_testn_epi64_mask(__U, __A, __B); 
7345 }
7346
7347 __m128i test_mm_mask_unpackhi_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
7348   // CHECK-LABEL: @test_mm_mask_unpackhi_epi32
7349   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
7350   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
7351   return _mm_mask_unpackhi_epi32(__W, __U, __A, __B); 
7352 }
7353
7354 __m128i test_mm_maskz_unpackhi_epi32(__mmask8 __U, __m128i __A, __m128i __B) {
7355   // CHECK-LABEL: @test_mm_maskz_unpackhi_epi32
7356   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
7357   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
7358   return _mm_maskz_unpackhi_epi32(__U, __A, __B); 
7359 }
7360
7361 __m256i test_mm256_mask_unpackhi_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
7362   // CHECK-LABEL: @test_mm256_mask_unpackhi_epi32
7363   // 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>
7364   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7365   return _mm256_mask_unpackhi_epi32(__W, __U, __A, __B); 
7366 }
7367
7368 __m256i test_mm256_maskz_unpackhi_epi32(__mmask8 __U, __m256i __A, __m256i __B) {
7369   // CHECK-LABEL: @test_mm256_maskz_unpackhi_epi32
7370   // 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>
7371   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7372   return _mm256_maskz_unpackhi_epi32(__U, __A, __B); 
7373 }
7374
7375 __m128i test_mm_mask_unpackhi_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
7376   // CHECK-LABEL: @test_mm_mask_unpackhi_epi64
7377   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 1, i32 3>
7378   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
7379   return _mm_mask_unpackhi_epi64(__W, __U, __A, __B); 
7380 }
7381
7382 __m128i test_mm_maskz_unpackhi_epi64(__mmask8 __U, __m128i __A, __m128i __B) {
7383   // CHECK-LABEL: @test_mm_maskz_unpackhi_epi64
7384   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 1, i32 3>
7385   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
7386   return _mm_maskz_unpackhi_epi64(__U, __A, __B); 
7387 }
7388
7389 __m256i test_mm256_mask_unpackhi_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
7390   // CHECK-LABEL: @test_mm256_mask_unpackhi_epi64
7391   // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
7392   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
7393   return _mm256_mask_unpackhi_epi64(__W, __U, __A, __B); 
7394 }
7395
7396 __m256i test_mm256_maskz_unpackhi_epi64(__mmask8 __U, __m256i __A, __m256i __B) {
7397   // CHECK-LABEL: @test_mm256_maskz_unpackhi_epi64
7398   // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
7399   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
7400   return _mm256_maskz_unpackhi_epi64(__U, __A, __B); 
7401 }
7402
7403 __m128i test_mm_mask_unpacklo_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
7404   // CHECK-LABEL: @test_mm_mask_unpacklo_epi32
7405   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
7406   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
7407   return _mm_mask_unpacklo_epi32(__W, __U, __A, __B); 
7408 }
7409
7410 __m128i test_mm_maskz_unpacklo_epi32(__mmask8 __U, __m128i __A, __m128i __B) {
7411   // CHECK-LABEL: @test_mm_maskz_unpacklo_epi32
7412   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
7413   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
7414   return _mm_maskz_unpacklo_epi32(__U, __A, __B); 
7415 }
7416
7417 __m256i test_mm256_mask_unpacklo_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
7418   // CHECK-LABEL: @test_mm256_mask_unpacklo_epi32
7419   // 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>
7420   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7421   return _mm256_mask_unpacklo_epi32(__W, __U, __A, __B); 
7422 }
7423
7424 __m256i test_mm256_maskz_unpacklo_epi32(__mmask8 __U, __m256i __A, __m256i __B) {
7425   // CHECK-LABEL: @test_mm256_maskz_unpacklo_epi32
7426   // 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>
7427   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7428   return _mm256_maskz_unpacklo_epi32(__U, __A, __B); 
7429 }
7430
7431 __m128i test_mm_mask_unpacklo_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
7432   // CHECK-LABEL: @test_mm_mask_unpacklo_epi64
7433   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 0, i32 2>
7434   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
7435   return _mm_mask_unpacklo_epi64(__W, __U, __A, __B); 
7436 }
7437
7438 __m128i test_mm_maskz_unpacklo_epi64(__mmask8 __U, __m128i __A, __m128i __B) {
7439   // CHECK-LABEL: @test_mm_maskz_unpacklo_epi64
7440   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 0, i32 2>
7441   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
7442   return _mm_maskz_unpacklo_epi64(__U, __A, __B); 
7443 }
7444
7445 __m256i test_mm256_mask_unpacklo_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
7446   // CHECK-LABEL: @test_mm256_mask_unpacklo_epi64
7447   // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
7448   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
7449   return _mm256_mask_unpacklo_epi64(__W, __U, __A, __B); 
7450 }
7451
7452 __m256i test_mm256_maskz_unpacklo_epi64(__mmask8 __U, __m256i __A, __m256i __B) {
7453   // CHECK-LABEL: @test_mm256_maskz_unpacklo_epi64
7454   // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
7455   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
7456   return _mm256_maskz_unpacklo_epi64(__U, __A, __B); 
7457 }
7458
7459 __m128i test_mm_mask_sra_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
7460   // CHECK-LABEL: @test_mm_mask_sra_epi32
7461   // CHECK: @llvm.x86.sse2.psra.d
7462   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
7463   return _mm_mask_sra_epi32(__W, __U, __A, __B); 
7464 }
7465
7466 __m128i test_mm_maskz_sra_epi32(__mmask8 __U, __m128i __A, __m128i __B) {
7467   // CHECK-LABEL: @test_mm_maskz_sra_epi32
7468   // CHECK: @llvm.x86.sse2.psra.d
7469   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
7470   return _mm_maskz_sra_epi32(__U, __A, __B); 
7471 }
7472
7473 __m256i test_mm256_mask_sra_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B) {
7474   // CHECK-LABEL: @test_mm256_mask_sra_epi32
7475   // CHECK: @llvm.x86.avx2.psra.d
7476   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7477   return _mm256_mask_sra_epi32(__W, __U, __A, __B); 
7478 }
7479
7480 __m256i test_mm256_maskz_sra_epi32(__mmask8 __U, __m256i __A, __m128i __B) {
7481   // CHECK-LABEL: @test_mm256_maskz_sra_epi32
7482   // CHECK: @llvm.x86.avx2.psra.d
7483   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7484   return _mm256_maskz_sra_epi32(__U, __A, __B); 
7485 }
7486
7487 __m128i test_mm_mask_srai_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
7488   // CHECK-LABEL: @test_mm_mask_srai_epi32
7489   // CHECK: @llvm.x86.sse2.psrai.d
7490   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
7491   return _mm_mask_srai_epi32(__W, __U, __A, 5); 
7492 }
7493
7494 __m128i test_mm_maskz_srai_epi32(__mmask8 __U, __m128i __A) {
7495   // CHECK-LABEL: @test_mm_maskz_srai_epi32
7496   // CHECK: @llvm.x86.sse2.psrai.d
7497   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
7498   return _mm_maskz_srai_epi32(__U, __A, 5); 
7499 }
7500
7501 __m256i test_mm256_mask_srai_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
7502   // CHECK-LABEL: @test_mm256_mask_srai_epi32
7503   // CHECK: @llvm.x86.avx2.psrai.d
7504   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7505   return _mm256_mask_srai_epi32(__W, __U, __A, 5); 
7506 }
7507
7508 __m256i test_mm256_maskz_srai_epi32(__mmask8 __U, __m256i __A) {
7509   // CHECK-LABEL: @test_mm256_maskz_srai_epi32
7510   // CHECK: @llvm.x86.avx2.psrai.d
7511   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7512   return _mm256_maskz_srai_epi32(__U, __A, 5); 
7513 }
7514
7515 __m128i test_mm_sra_epi64(__m128i __A, __m128i __B) {
7516   // CHECK-LABEL: @test_mm_sra_epi64
7517   // CHECK: @llvm.x86.avx512.psra.q.128
7518   return _mm_sra_epi64(__A, __B); 
7519 }
7520
7521 __m128i test_mm_mask_sra_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
7522   // CHECK-LABEL: @test_mm_mask_sra_epi64
7523   // CHECK: @llvm.x86.avx512.psra.q.128
7524   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
7525   return _mm_mask_sra_epi64(__W, __U, __A, __B); 
7526 }
7527
7528 __m128i test_mm_maskz_sra_epi64(__mmask8 __U, __m128i __A, __m128i __B) {
7529   // CHECK-LABEL: @test_mm_maskz_sra_epi64
7530   // CHECK: @llvm.x86.avx512.psra.q.128
7531   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
7532   return _mm_maskz_sra_epi64(__U, __A, __B); 
7533 }
7534
7535 __m256i test_mm256_sra_epi64(__m256i __A, __m128i __B) {
7536   // CHECK-LABEL: @test_mm256_sra_epi64
7537   // CHECK: @llvm.x86.avx512.psra.q.256
7538   return _mm256_sra_epi64(__A, __B); 
7539 }
7540
7541 __m256i test_mm256_mask_sra_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B) {
7542   // CHECK-LABEL: @test_mm256_mask_sra_epi64
7543   // CHECK: @llvm.x86.avx512.psra.q.256
7544   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
7545   return _mm256_mask_sra_epi64(__W, __U, __A, __B); 
7546 }
7547
7548 __m256i test_mm256_maskz_sra_epi64(__mmask8 __U, __m256i __A, __m128i __B) {
7549   // CHECK-LABEL: @test_mm256_maskz_sra_epi64
7550   // CHECK: @llvm.x86.avx512.psra.q.256
7551   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
7552   return _mm256_maskz_sra_epi64(__U, __A, __B); 
7553 }
7554
7555 __m128i test_mm_srai_epi64(__m128i __A) {
7556   // CHECK-LABEL: @test_mm_srai_epi64
7557   // CHECK: @llvm.x86.avx512.psrai.q.128
7558   return _mm_srai_epi64(__A, 5); 
7559 }
7560
7561 __m128i test_mm_mask_srai_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
7562   // CHECK-LABEL: @test_mm_mask_srai_epi64
7563   // CHECK: @llvm.x86.avx512.psrai.q.128
7564   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
7565   return _mm_mask_srai_epi64(__W, __U, __A, 5); 
7566 }
7567
7568 __m128i test_mm_maskz_srai_epi64(__mmask8 __U, __m128i __A) {
7569   // CHECK-LABEL: @test_mm_maskz_srai_epi64
7570   // CHECK: @llvm.x86.avx512.psrai.q.128
7571   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
7572   return _mm_maskz_srai_epi64(__U, __A, 5); 
7573 }
7574
7575 __m256i test_mm256_srai_epi64(__m256i __A) {
7576   // CHECK-LABEL: @test_mm256_srai_epi64
7577   // CHECK: @llvm.x86.avx512.psrai.q.256
7578   return _mm256_srai_epi64(__A, 5); 
7579 }
7580
7581 __m256i test_mm256_mask_srai_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
7582   // CHECK-LABEL: @test_mm256_mask_srai_epi64
7583   // CHECK: @llvm.x86.avx512.psrai.q.256
7584   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
7585   return _mm256_mask_srai_epi64(__W, __U, __A, 5); 
7586 }
7587
7588 __m256i test_mm256_maskz_srai_epi64(__mmask8 __U, __m256i __A) {
7589   // CHECK-LABEL: @test_mm256_maskz_srai_epi64
7590   // CHECK: @llvm.x86.avx512.psrai.q.256
7591   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
7592   return _mm256_maskz_srai_epi64(__U, __A, 5); 
7593 }
7594
7595 __m128i test_mm_ternarylogic_epi32(__m128i __A, __m128i __B, __m128i __C) {
7596   // CHECK-LABEL: @test_mm_ternarylogic_epi32
7597   // CHECK: @llvm.x86.avx512.pternlog.d.128
7598   return _mm_ternarylogic_epi32(__A, __B, __C, 4); 
7599 }
7600
7601 __m128i test_mm_mask_ternarylogic_epi32(__m128i __A, __mmask8 __U, __m128i __B, __m128i __C) {
7602   // CHECK-LABEL: @test_mm_mask_ternarylogic_epi32
7603   // CHECK: @llvm.x86.avx512.pternlog.d.128
7604   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
7605   return _mm_mask_ternarylogic_epi32(__A, __U, __B, __C, 4); 
7606 }
7607
7608 __m128i test_mm_maskz_ternarylogic_epi32(__mmask8 __U, __m128i __A, __m128i __B, __m128i __C) {
7609   // CHECK-LABEL: @test_mm_maskz_ternarylogic_epi32
7610   // CHECK: @llvm.x86.avx512.pternlog.d.128
7611   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> zeroinitializer
7612   return _mm_maskz_ternarylogic_epi32(__U, __A, __B, __C, 4); 
7613 }
7614
7615 __m256i test_mm256_ternarylogic_epi32(__m256i __A, __m256i __B, __m256i __C) {
7616   // CHECK-LABEL: @test_mm256_ternarylogic_epi32
7617   // CHECK: @llvm.x86.avx512.pternlog.d.256
7618   return _mm256_ternarylogic_epi32(__A, __B, __C, 4); 
7619 }
7620
7621 __m256i test_mm256_mask_ternarylogic_epi32(__m256i __A, __mmask8 __U, __m256i __B, __m256i __C) {
7622   // CHECK-LABEL: @test_mm256_mask_ternarylogic_epi32
7623   // CHECK: @llvm.x86.avx512.pternlog.d.256
7624   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7625   return _mm256_mask_ternarylogic_epi32(__A, __U, __B, __C, 4); 
7626 }
7627
7628 __m256i test_mm256_maskz_ternarylogic_epi32(__mmask8 __U, __m256i __A, __m256i __B, __m256i __C) {
7629   // CHECK-LABEL: @test_mm256_maskz_ternarylogic_epi32
7630   // CHECK: @llvm.x86.avx512.pternlog.d.256
7631   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> zeroinitializer
7632   return _mm256_maskz_ternarylogic_epi32(__U, __A, __B, __C, 4); 
7633 }
7634
7635 __m128i test_mm_ternarylogic_epi64(__m128i __A, __m128i __B, __m128i __C) {
7636   // CHECK-LABEL: @test_mm_ternarylogic_epi64
7637   // CHECK: @llvm.x86.avx512.pternlog.q.128
7638   return _mm_ternarylogic_epi64(__A, __B, __C, 4); 
7639 }
7640
7641 __m128i test_mm_mask_ternarylogic_epi64(__m128i __A, __mmask8 __U, __m128i __B, __m128i __C) {
7642   // CHECK-LABEL: @test_mm_mask_ternarylogic_epi64
7643   // CHECK: @llvm.x86.avx512.pternlog.q.128
7644   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
7645   return _mm_mask_ternarylogic_epi64(__A, __U, __B, __C, 4); 
7646 }
7647
7648 __m128i test_mm_maskz_ternarylogic_epi64(__mmask8 __U, __m128i __A, __m128i __B, __m128i __C) {
7649   // CHECK-LABEL: @test_mm_maskz_ternarylogic_epi64
7650   // CHECK: @llvm.x86.avx512.pternlog.q.128
7651   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> zeroinitializer
7652   return _mm_maskz_ternarylogic_epi64(__U, __A, __B, __C, 4); 
7653 }
7654
7655 __m256i test_mm256_ternarylogic_epi64(__m256i __A, __m256i __B, __m256i __C) {
7656   // CHECK-LABEL: @test_mm256_ternarylogic_epi64
7657   // CHECK: @llvm.x86.avx512.pternlog.q.256
7658   return _mm256_ternarylogic_epi64(__A, __B, __C, 4); 
7659 }
7660
7661 __m256i test_mm256_mask_ternarylogic_epi64(__m256i __A, __mmask8 __U, __m256i __B, __m256i __C) {
7662   // CHECK-LABEL: @test_mm256_mask_ternarylogic_epi64
7663   // CHECK: @llvm.x86.avx512.pternlog.q.256
7664   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
7665   return _mm256_mask_ternarylogic_epi64(__A, __U, __B, __C, 4); 
7666 }
7667
7668 __m256i test_mm256_maskz_ternarylogic_epi64(__mmask8 __U, __m256i __A, __m256i __B, __m256i __C) {
7669   // CHECK-LABEL: @test_mm256_maskz_ternarylogic_epi64
7670   // CHECK: @llvm.x86.avx512.pternlog.q.256
7671   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> zeroinitializer
7672   return _mm256_maskz_ternarylogic_epi64(__U, __A, __B, __C, 4); 
7673 }
7674 __m256 test_mm256_shuffle_f32x4(__m256 __A, __m256 __B) {
7675   // CHECK-LABEL: @test_mm256_shuffle_f32x4
7676   // 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>
7677   return _mm256_shuffle_f32x4(__A, __B, 3); 
7678 }
7679
7680 __m256 test_mm256_mask_shuffle_f32x4(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
7681   // CHECK-LABEL: @test_mm256_mask_shuffle_f32x4
7682   // 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>
7683   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7684   return _mm256_mask_shuffle_f32x4(__W, __U, __A, __B, 3); 
7685 }
7686
7687 __m256 test_mm256_maskz_shuffle_f32x4(__mmask8 __U, __m256 __A, __m256 __B) {
7688   // CHECK-LABEL: @test_mm256_maskz_shuffle_f32x4
7689   // 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>
7690   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7691   return _mm256_maskz_shuffle_f32x4(__U, __A, __B, 3); 
7692 }
7693
7694 __m256d test_mm256_shuffle_f64x2(__m256d __A, __m256d __B) {
7695   // CHECK-LABEL: @test_mm256_shuffle_f64x2
7696   // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 2, i32 3, i32 6, i32 7>
7697   return _mm256_shuffle_f64x2(__A, __B, 3); 
7698 }
7699
7700 __m256d test_mm256_mask_shuffle_f64x2(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
7701   // CHECK-LABEL: @test_mm256_mask_shuffle_f64x2
7702   // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 2, i32 3, i32 6, i32 7>
7703   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
7704   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
7705   return _mm256_mask_shuffle_f64x2(__W, __U, __A, __B, 3); 
7706 }
7707
7708 __m256d test_mm256_maskz_shuffle_f64x2(__mmask8 __U, __m256d __A, __m256d __B) {
7709   // CHECK-LABEL: @test_mm256_maskz_shuffle_f64x2
7710   // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 2, i32 3, i32 6, i32 7>
7711   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
7712   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
7713   return _mm256_maskz_shuffle_f64x2(__U, __A, __B, 3); 
7714 }
7715
7716 __m256i test_mm256_shuffle_i32x4(__m256i __A, __m256i __B) {
7717   // CHECK-LABEL: @test_mm256_shuffle_i32x4
7718   // 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>
7719   return _mm256_shuffle_i32x4(__A, __B, 3); 
7720 }
7721
7722 __m256i test_mm256_mask_shuffle_i32x4(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
7723   // CHECK-LABEL: @test_mm256_mask_shuffle_i32x4
7724   // 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>
7725   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7726   return _mm256_mask_shuffle_i32x4(__W, __U, __A, __B, 3); 
7727 }
7728
7729 __m256i test_mm256_maskz_shuffle_i32x4(__mmask8 __U, __m256i __A, __m256i __B) {
7730   // CHECK-LABEL: @test_mm256_maskz_shuffle_i32x4
7731   // 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>
7732   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7733   return _mm256_maskz_shuffle_i32x4(__U, __A, __B, 3); 
7734 }
7735
7736 __m256i test_mm256_shuffle_i64x2(__m256i __A, __m256i __B) {
7737   // CHECK-LABEL: @test_mm256_shuffle_i64x2
7738   // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 2, i32 3, i32 6, i32 7>
7739   return _mm256_shuffle_i64x2(__A, __B, 3); 
7740 }
7741
7742 __m256i test_mm256_mask_shuffle_i64x2(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
7743   // CHECK-LABEL: @test_mm256_mask_shuffle_i64x2
7744   // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 2, i32 3, i32 6, i32 7>
7745   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
7746   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
7747   return _mm256_mask_shuffle_i64x2(__W, __U, __A, __B, 3); 
7748 }
7749
7750 __m256i test_mm256_maskz_shuffle_i64x2(__mmask8 __U, __m256i __A, __m256i __B) {
7751   // CHECK-LABEL: @test_mm256_maskz_shuffle_i64x2
7752   // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 2, i32 3, i32 6, i32 7>
7753   // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
7754   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
7755   return _mm256_maskz_shuffle_i64x2(__U, __A, __B, 3); 
7756 }
7757
7758 __m128d test_mm_mask_shuffle_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
7759   // CHECK-LABEL: @test_mm_mask_shuffle_pd
7760   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> <i32 1, i32 3>
7761   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
7762   return _mm_mask_shuffle_pd(__W, __U, __A, __B, 3); 
7763 }
7764
7765 __m128d test_mm_maskz_shuffle_pd(__mmask8 __U, __m128d __A, __m128d __B) {
7766   // CHECK-LABEL: @test_mm_maskz_shuffle_pd
7767   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> <i32 1, i32 3>
7768   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
7769   return _mm_maskz_shuffle_pd(__U, __A, __B, 3); 
7770 }
7771
7772 __m256d test_mm256_mask_shuffle_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
7773   // CHECK-LABEL: @test_mm256_mask_shuffle_pd
7774   // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 1, i32 5, i32 2, i32 6>
7775   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
7776   return _mm256_mask_shuffle_pd(__W, __U, __A, __B, 3); 
7777 }
7778
7779 __m256d test_mm256_maskz_shuffle_pd(__mmask8 __U, __m256d __A, __m256d __B) {
7780   // CHECK-LABEL: @test_mm256_maskz_shuffle_pd
7781   // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 1, i32 5, i32 2, i32 6>
7782   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
7783   return _mm256_maskz_shuffle_pd(__U, __A, __B, 3); 
7784 }
7785
7786 __m128 test_mm_mask_shuffle_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
7787   // CHECK-LABEL: @test_mm_mask_shuffle_ps
7788   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 4, i32 4>
7789   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
7790   return _mm_mask_shuffle_ps(__W, __U, __A, __B, 4); 
7791 }
7792
7793 __m128 test_mm_maskz_shuffle_ps(__mmask8 __U, __m128 __A, __m128 __B) {
7794   // CHECK-LABEL: @test_mm_maskz_shuffle_ps
7795   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 4, i32 4>
7796   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
7797   return _mm_maskz_shuffle_ps(__U, __A, __B, 4); 
7798 }
7799
7800 __m256 test_mm256_mask_shuffle_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
7801   // CHECK-LABEL: @test_mm256_mask_shuffle_ps
7802   // 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>
7803   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7804   return _mm256_mask_shuffle_ps(__W, __U, __A, __B, 4); 
7805 }
7806
7807 __m256 test_mm256_maskz_shuffle_ps(__mmask8 __U, __m256 __A, __m256 __B) {
7808   // CHECK-LABEL: @test_mm256_maskz_shuffle_ps
7809   // 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>
7810   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7811   return _mm256_maskz_shuffle_ps(__U, __A, __B, 4); 
7812 }
7813
7814 __m128d test_mm_rsqrt14_pd(__m128d __A) {
7815   // CHECK-LABEL: @test_mm_rsqrt14_pd
7816   // CHECK: @llvm.x86.avx512.rsqrt14.pd.128
7817   return _mm_rsqrt14_pd(__A); 
7818 }
7819
7820 __m128d test_mm_mask_rsqrt14_pd(__m128d __W, __mmask8 __U, __m128d __A) {
7821   // CHECK-LABEL: @test_mm_mask_rsqrt14_pd
7822   // CHECK: @llvm.x86.avx512.rsqrt14.pd.128
7823   return _mm_mask_rsqrt14_pd(__W, __U, __A); 
7824 }
7825
7826 __m128d test_mm_maskz_rsqrt14_pd(__mmask8 __U, __m128d __A) {
7827   // CHECK-LABEL: @test_mm_maskz_rsqrt14_pd
7828   // CHECK: @llvm.x86.avx512.rsqrt14.pd.128
7829   return _mm_maskz_rsqrt14_pd(__U, __A); 
7830 }
7831
7832 __m256d test_mm256_rsqrt14_pd(__m256d __A) {
7833   // CHECK-LABEL: @test_mm256_rsqrt14_pd
7834   // CHECK: @llvm.x86.avx512.rsqrt14.pd.256
7835   return _mm256_rsqrt14_pd(__A); 
7836 }
7837
7838 __m256d test_mm256_mask_rsqrt14_pd(__m256d __W, __mmask8 __U, __m256d __A) {
7839   // CHECK-LABEL: @test_mm256_mask_rsqrt14_pd
7840   // CHECK: @llvm.x86.avx512.rsqrt14.pd.256
7841   return _mm256_mask_rsqrt14_pd(__W, __U, __A); 
7842 }
7843
7844 __m256d test_mm256_maskz_rsqrt14_pd(__mmask8 __U, __m256d __A) {
7845   // CHECK-LABEL: @test_mm256_maskz_rsqrt14_pd
7846   // CHECK: @llvm.x86.avx512.rsqrt14.pd.256
7847   return _mm256_maskz_rsqrt14_pd(__U, __A); 
7848 }
7849
7850 __m128 test_mm_rsqrt14_ps(__m128 __A) {
7851   // CHECK-LABEL: @test_mm_rsqrt14_ps
7852   // CHECK: @llvm.x86.avx512.rsqrt14.ps.128
7853   return _mm_rsqrt14_ps(__A); 
7854 }
7855
7856 __m128 test_mm_mask_rsqrt14_ps(__m128 __W, __mmask8 __U, __m128 __A) {
7857   // CHECK-LABEL: @test_mm_mask_rsqrt14_ps
7858   // CHECK: @llvm.x86.avx512.rsqrt14.ps.128
7859   return _mm_mask_rsqrt14_ps(__W, __U, __A); 
7860 }
7861
7862 __m128 test_mm_maskz_rsqrt14_ps(__mmask8 __U, __m128 __A) {
7863   // CHECK-LABEL: @test_mm_maskz_rsqrt14_ps
7864   // CHECK: @llvm.x86.avx512.rsqrt14.ps.128
7865   return _mm_maskz_rsqrt14_ps(__U, __A); 
7866 }
7867
7868 __m256 test_mm256_rsqrt14_ps(__m256 __A) {
7869   // CHECK-LABEL: @test_mm256_rsqrt14_ps
7870   // CHECK: @llvm.x86.avx512.rsqrt14.ps.256
7871   return _mm256_rsqrt14_ps(__A); 
7872 }
7873
7874 __m256 test_mm256_mask_rsqrt14_ps(__m256 __W, __mmask8 __U, __m256 __A) {
7875   // CHECK-LABEL: @test_mm256_mask_rsqrt14_ps
7876   // CHECK: @llvm.x86.avx512.rsqrt14.ps.256
7877   return _mm256_mask_rsqrt14_ps(__W, __U, __A); 
7878 }
7879
7880 __m256 test_mm256_maskz_rsqrt14_ps(__mmask8 __U, __m256 __A) {
7881   // CHECK-LABEL: @test_mm256_maskz_rsqrt14_ps
7882   // CHECK: @llvm.x86.avx512.rsqrt14.ps.256
7883   return _mm256_maskz_rsqrt14_ps(__U, __A); 
7884 }
7885
7886 __m256 test_mm256_broadcast_f32x4(__m128 __A) {
7887   // CHECK-LABEL: @test_mm256_broadcast_f32x4
7888   // 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>
7889   return _mm256_broadcast_f32x4(__A); 
7890 }
7891
7892 __m256 test_mm256_mask_broadcast_f32x4(__m256 __O, __mmask8 __M, __m128 __A) {
7893   // CHECK-LABEL: @test_mm256_mask_broadcast_f32x4
7894   // 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>
7895   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7896   return _mm256_mask_broadcast_f32x4(__O, __M, __A); 
7897 }
7898
7899 __m256 test_mm256_maskz_broadcast_f32x4(__mmask8 __M, __m128 __A) {
7900   // CHECK-LABEL: @test_mm256_maskz_broadcast_f32x4
7901   // 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>
7902   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7903   return _mm256_maskz_broadcast_f32x4(__M, __A); 
7904 }
7905
7906 __m256i test_mm256_broadcast_i32x4(__m128i const* __A) {
7907   // CHECK-LABEL: @test_mm256_broadcast_i32x4
7908   // 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>
7909   return _mm256_broadcast_i32x4(_mm_loadu_si128(__A)); 
7910 }
7911
7912 __m256i test_mm256_mask_broadcast_i32x4(__m256i __O, __mmask8 __M, __m128i const* __A) {
7913   // CHECK-LABEL: @test_mm256_mask_broadcast_i32x4
7914   // 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>
7915   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7916   return _mm256_mask_broadcast_i32x4(__O, __M, _mm_loadu_si128(__A)); 
7917 }
7918
7919 __m256i test_mm256_maskz_broadcast_i32x4(__mmask8 __M, __m128i const* __A) {
7920   // CHECK-LABEL: @test_mm256_maskz_broadcast_i32x4
7921   // 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>
7922   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7923   return _mm256_maskz_broadcast_i32x4(__M, _mm_loadu_si128(__A)); 
7924 }
7925
7926 __m256d test_mm256_mask_broadcastsd_pd(__m256d __O, __mmask8 __M, __m128d __A) {
7927   // CHECK-LABEL: @test_mm256_mask_broadcastsd_pd
7928   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <4 x i32> zeroinitializer
7929   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
7930   return _mm256_mask_broadcastsd_pd(__O, __M, __A);
7931 }
7932
7933 __m256d test_mm256_maskz_broadcastsd_pd(__mmask8 __M, __m128d __A) {
7934   // CHECK-LABEL: @test_mm256_maskz_broadcastsd_pd
7935   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <4 x i32> zeroinitializer
7936   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
7937   return _mm256_maskz_broadcastsd_pd(__M, __A);
7938 }
7939
7940 __m128 test_mm_mask_broadcastss_ps(__m128 __O, __mmask8 __M, __m128 __A) {
7941   // CHECK-LABEL: @test_mm_mask_broadcastss_ps
7942   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> zeroinitializer
7943   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
7944   return _mm_mask_broadcastss_ps(__O, __M, __A);
7945 }
7946
7947 __m128 test_mm_maskz_broadcastss_ps(__mmask8 __M, __m128 __A) {
7948   // CHECK-LABEL: @test_mm_maskz_broadcastss_ps
7949   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> zeroinitializer
7950   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
7951   return _mm_maskz_broadcastss_ps(__M, __A);
7952 }
7953
7954 __m256 test_mm256_mask_broadcastss_ps(__m256 __O, __mmask8 __M, __m128 __A) {
7955   // CHECK-LABEL: @test_mm256_mask_broadcastss_ps
7956   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <8 x i32> zeroinitializer
7957   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7958   return _mm256_mask_broadcastss_ps(__O, __M, __A);
7959 }
7960
7961 __m256 test_mm256_maskz_broadcastss_ps(__mmask8 __M, __m128 __A) {
7962   // CHECK-LABEL: @test_mm256_maskz_broadcastss_ps
7963   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <8 x i32> zeroinitializer
7964   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7965   return _mm256_maskz_broadcastss_ps(__M, __A);
7966 }
7967
7968 __m128i test_mm_mask_broadcastd_epi32(__m128i __O, __mmask8 __M, __m128i __A) {
7969   // CHECK-LABEL: @test_mm_mask_broadcastd_epi32
7970   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> zeroinitializer
7971   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
7972   return _mm_mask_broadcastd_epi32(__O, __M, __A);
7973 }
7974
7975 __m128i test_mm_maskz_broadcastd_epi32(__mmask8 __M, __m128i __A) {
7976   // CHECK-LABEL: @test_mm_maskz_broadcastd_epi32
7977   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> zeroinitializer
7978   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
7979   return _mm_maskz_broadcastd_epi32(__M, __A);
7980 }
7981
7982 __m256i test_mm256_mask_broadcastd_epi32(__m256i __O, __mmask8 __M, __m128i __A) {
7983   // CHECK-LABEL: @test_mm256_mask_broadcastd_epi32
7984   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <8 x i32> zeroinitializer
7985   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7986   return _mm256_mask_broadcastd_epi32(__O, __M, __A);
7987 }
7988
7989 __m256i test_mm256_maskz_broadcastd_epi32(__mmask8 __M, __m128i __A) {
7990   // CHECK-LABEL: @test_mm256_maskz_broadcastd_epi32
7991   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <8 x i32> zeroinitializer
7992   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7993   return _mm256_maskz_broadcastd_epi32(__M, __A);
7994 }
7995
7996 __m128i test_mm_mask_broadcastq_epi64(__m128i __O, __mmask8 __M, __m128i __A) {
7997   // CHECK-LABEL: @test_mm_mask_broadcastq_epi64
7998   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> zeroinitializer
7999   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
8000   return _mm_mask_broadcastq_epi64(__O, __M, __A);
8001 }
8002
8003 __m128i test_mm_maskz_broadcastq_epi64(__mmask8 __M, __m128i __A) {
8004   // CHECK-LABEL: @test_mm_maskz_broadcastq_epi64
8005   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> zeroinitializer
8006   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
8007   return _mm_maskz_broadcastq_epi64(__M, __A);
8008 }
8009
8010 __m256i test_mm256_mask_broadcastq_epi64(__m256i __O, __mmask8 __M, __m128i __A) {
8011   // CHECK-LABEL: @test_mm256_mask_broadcastq_epi64
8012   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <4 x i32> zeroinitializer
8013   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
8014   return _mm256_mask_broadcastq_epi64(__O, __M, __A);
8015 }
8016
8017 __m256i test_mm256_maskz_broadcastq_epi64(__mmask8 __M, __m128i __A) {
8018   // CHECK-LABEL: @test_mm256_maskz_broadcastq_epi64
8019   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <4 x i32> zeroinitializer
8020   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
8021   return _mm256_maskz_broadcastq_epi64(__M, __A);
8022 }
8023
8024 __m128i test_mm_cvtsepi32_epi8(__m128i __A) {
8025   // CHECK-LABEL: @test_mm_cvtsepi32_epi8
8026   // CHECK: @llvm.x86.avx512.mask.pmovs.db.128
8027   return _mm_cvtsepi32_epi8(__A); 
8028 }
8029
8030 __m128i test_mm_mask_cvtsepi32_epi8(__m128i __O, __mmask8 __M, __m128i __A) {
8031   // CHECK-LABEL: @test_mm_mask_cvtsepi32_epi8
8032   // CHECK: @llvm.x86.avx512.mask.pmovs.db.128
8033   return _mm_mask_cvtsepi32_epi8(__O, __M, __A); 
8034 }
8035
8036 __m128i test_mm_maskz_cvtsepi32_epi8(__mmask8 __M, __m128i __A) {
8037   // CHECK-LABEL: @test_mm_maskz_cvtsepi32_epi8
8038   // CHECK: @llvm.x86.avx512.mask.pmovs.db.128
8039   return _mm_maskz_cvtsepi32_epi8(__M, __A); 
8040 }
8041
8042 void test_mm_mask_cvtsepi32_storeu_epi8(void * __P, __mmask8 __M, __m128i __A) {
8043   // CHECK-LABEL: @test_mm_mask_cvtsepi32_storeu_epi8
8044   // CHECK: @llvm.x86.avx512.mask.pmovs.db.mem.128
8045   return _mm_mask_cvtsepi32_storeu_epi8(__P, __M, __A); 
8046 }
8047
8048 __m128i test_mm256_cvtsepi32_epi8(__m256i __A) {
8049   // CHECK-LABEL: @test_mm256_cvtsepi32_epi8
8050   // CHECK: @llvm.x86.avx512.mask.pmovs.db.256
8051   return _mm256_cvtsepi32_epi8(__A); 
8052 }
8053
8054 __m128i test_mm256_mask_cvtsepi32_epi8(__m128i __O, __mmask8 __M, __m256i __A) {
8055   // CHECK-LABEL: @test_mm256_mask_cvtsepi32_epi8
8056   // CHECK: @llvm.x86.avx512.mask.pmovs.db.256
8057   return _mm256_mask_cvtsepi32_epi8(__O, __M, __A); 
8058 }
8059
8060 __m128i test_mm256_maskz_cvtsepi32_epi8(__mmask8 __M, __m256i __A) {
8061   // CHECK-LABEL: @test_mm256_maskz_cvtsepi32_epi8
8062   // CHECK: @llvm.x86.avx512.mask.pmovs.db.256
8063   return _mm256_maskz_cvtsepi32_epi8(__M, __A); 
8064 }
8065
8066 void test_mm256_mask_cvtsepi32_storeu_epi8(void * __P, __mmask8 __M, __m256i __A) {
8067   // CHECK-LABEL: @test_mm256_mask_cvtsepi32_storeu_epi8
8068   // CHECK: @llvm.x86.avx512.mask.pmovs.db.mem.256
8069   return _mm256_mask_cvtsepi32_storeu_epi8(__P, __M, __A); 
8070 }
8071
8072 __m128i test_mm_cvtsepi32_epi16(__m128i __A) {
8073   // CHECK-LABEL: @test_mm_cvtsepi32_epi16
8074   // CHECK: @llvm.x86.avx512.mask.pmovs.dw.128
8075   return _mm_cvtsepi32_epi16(__A); 
8076 }
8077
8078 __m128i test_mm_mask_cvtsepi32_epi16(__m128i __O, __mmask8 __M, __m128i __A) {
8079   // CHECK-LABEL: @test_mm_mask_cvtsepi32_epi16
8080   // CHECK: @llvm.x86.avx512.mask.pmovs.dw.128
8081   return _mm_mask_cvtsepi32_epi16(__O, __M, __A); 
8082 }
8083
8084 __m128i test_mm_maskz_cvtsepi32_epi16(__mmask8 __M, __m128i __A) {
8085   // CHECK-LABEL: @test_mm_maskz_cvtsepi32_epi16
8086   // CHECK: @llvm.x86.avx512.mask.pmovs.dw.128
8087   return _mm_maskz_cvtsepi32_epi16(__M, __A); 
8088 }
8089
8090 void test_mm_mask_cvtsepi32_storeu_epi16(void * __P, __mmask8 __M, __m128i __A) {
8091   // CHECK-LABEL: @test_mm_mask_cvtsepi32_storeu_epi16
8092   // CHECK: @llvm.x86.avx512.mask.pmovs.dw.mem.128
8093   return _mm_mask_cvtsepi32_storeu_epi16(__P, __M, __A); 
8094 }
8095
8096 __m128i test_mm256_cvtsepi32_epi16(__m256i __A) {
8097   // CHECK-LABEL: @test_mm256_cvtsepi32_epi16
8098   // CHECK: @llvm.x86.avx512.mask.pmovs.dw.256
8099   return _mm256_cvtsepi32_epi16(__A); 
8100 }
8101
8102 __m128i test_mm256_mask_cvtsepi32_epi16(__m128i __O, __mmask8 __M, __m256i __A) {
8103   // CHECK-LABEL: @test_mm256_mask_cvtsepi32_epi16
8104   // CHECK: @llvm.x86.avx512.mask.pmovs.dw.256
8105   return _mm256_mask_cvtsepi32_epi16(__O, __M, __A); 
8106 }
8107
8108 __m128i test_mm256_maskz_cvtsepi32_epi16(__mmask8 __M, __m256i __A) {
8109   // CHECK-LABEL: @test_mm256_maskz_cvtsepi32_epi16
8110   // CHECK: @llvm.x86.avx512.mask.pmovs.dw.256
8111   return _mm256_maskz_cvtsepi32_epi16(__M, __A); 
8112 }
8113
8114 void test_mm256_mask_cvtsepi32_storeu_epi16(void * __P, __mmask8 __M, __m256i __A) {
8115   // CHECK-LABEL: @test_mm256_mask_cvtsepi32_storeu_epi16
8116   // CHECK: @llvm.x86.avx512.mask.pmovs.dw.mem.256
8117   return _mm256_mask_cvtsepi32_storeu_epi16(__P, __M, __A); 
8118 }
8119
8120 __m128i test_mm_cvtsepi64_epi8(__m128i __A) {
8121   // CHECK-LABEL: @test_mm_cvtsepi64_epi8
8122   // CHECK: @llvm.x86.avx512.mask.pmovs.qb.128
8123   return _mm_cvtsepi64_epi8(__A); 
8124 }
8125
8126 __m128i test_mm_mask_cvtsepi64_epi8(__m128i __O, __mmask8 __M, __m128i __A) {
8127   // CHECK-LABEL: @test_mm_mask_cvtsepi64_epi8
8128   // CHECK: @llvm.x86.avx512.mask.pmovs.qb.128
8129   return _mm_mask_cvtsepi64_epi8(__O, __M, __A); 
8130 }
8131
8132 __m128i test_mm_maskz_cvtsepi64_epi8(__mmask8 __M, __m128i __A) {
8133   // CHECK-LABEL: @test_mm_maskz_cvtsepi64_epi8
8134   // CHECK: @llvm.x86.avx512.mask.pmovs.qb.128
8135   return _mm_maskz_cvtsepi64_epi8(__M, __A); 
8136 }
8137
8138 void test_mm_mask_cvtsepi64_storeu_epi8(void * __P, __mmask8 __M, __m128i __A) {
8139   // CHECK-LABEL: @test_mm_mask_cvtsepi64_storeu_epi8
8140   // CHECK: @llvm.x86.avx512.mask.pmovs.qb.mem.128
8141   return _mm_mask_cvtsepi64_storeu_epi8(__P, __M, __A); 
8142 }
8143
8144 __m128i test_mm256_cvtsepi64_epi8(__m256i __A) {
8145   // CHECK-LABEL: @test_mm256_cvtsepi64_epi8
8146   // CHECK: @llvm.x86.avx512.mask.pmovs.qb.256
8147   return _mm256_cvtsepi64_epi8(__A); 
8148 }
8149
8150 __m128i test_mm256_mask_cvtsepi64_epi8(__m128i __O, __mmask8 __M, __m256i __A) {
8151   // CHECK-LABEL: @test_mm256_mask_cvtsepi64_epi8
8152   // CHECK: @llvm.x86.avx512.mask.pmovs.qb.256
8153   return _mm256_mask_cvtsepi64_epi8(__O, __M, __A); 
8154 }
8155
8156 __m128i test_mm256_maskz_cvtsepi64_epi8(__mmask8 __M, __m256i __A) {
8157   // CHECK-LABEL: @test_mm256_maskz_cvtsepi64_epi8
8158   // CHECK: @llvm.x86.avx512.mask.pmovs.qb.256
8159   return _mm256_maskz_cvtsepi64_epi8(__M, __A); 
8160 }
8161
8162 void test_mm256_mask_cvtsepi64_storeu_epi8(void * __P, __mmask8 __M, __m256i __A) {
8163   // CHECK-LABEL: @test_mm256_mask_cvtsepi64_storeu_epi8
8164   // CHECK: @llvm.x86.avx512.mask.pmovs.qb.mem.256
8165   return _mm256_mask_cvtsepi64_storeu_epi8(__P, __M, __A); 
8166 }
8167
8168 __m128i test_mm_cvtsepi64_epi32(__m128i __A) {
8169   // CHECK-LABEL: @test_mm_cvtsepi64_epi32
8170   // CHECK: @llvm.x86.avx512.mask.pmovs.qd.128
8171   return _mm_cvtsepi64_epi32(__A); 
8172 }
8173
8174 __m128i test_mm_mask_cvtsepi64_epi32(__m128i __O, __mmask8 __M, __m128i __A) {
8175   // CHECK-LABEL: @test_mm_mask_cvtsepi64_epi32
8176   // CHECK: @llvm.x86.avx512.mask.pmovs.qd.128
8177   return _mm_mask_cvtsepi64_epi32(__O, __M, __A); 
8178 }
8179
8180 __m128i test_mm_maskz_cvtsepi64_epi32(__mmask8 __M, __m128i __A) {
8181   // CHECK-LABEL: @test_mm_maskz_cvtsepi64_epi32
8182   // CHECK: @llvm.x86.avx512.mask.pmovs.qd.128
8183   return _mm_maskz_cvtsepi64_epi32(__M, __A); 
8184 }
8185
8186 void test_mm_mask_cvtsepi64_storeu_epi32(void * __P, __mmask8 __M, __m128i __A) {
8187   // CHECK-LABEL: @test_mm_mask_cvtsepi64_storeu_epi32
8188   // CHECK: @llvm.x86.avx512.mask.pmovs.qd.mem.128
8189   return _mm_mask_cvtsepi64_storeu_epi32(__P, __M, __A); 
8190 }
8191
8192 __m128i test_mm256_cvtsepi64_epi32(__m256i __A) {
8193   // CHECK-LABEL: @test_mm256_cvtsepi64_epi32
8194   // CHECK: @llvm.x86.avx512.mask.pmovs.qd.256
8195   return _mm256_cvtsepi64_epi32(__A); 
8196 }
8197
8198 __m128i test_mm256_mask_cvtsepi64_epi32(__m128i __O, __mmask8 __M, __m256i __A) {
8199   // CHECK-LABEL: @test_mm256_mask_cvtsepi64_epi32
8200   // CHECK: @llvm.x86.avx512.mask.pmovs.qd.256
8201   return _mm256_mask_cvtsepi64_epi32(__O, __M, __A); 
8202 }
8203
8204 __m128i test_mm256_maskz_cvtsepi64_epi32(__mmask8 __M, __m256i __A) {
8205   // CHECK-LABEL: @test_mm256_maskz_cvtsepi64_epi32
8206   // CHECK: @llvm.x86.avx512.mask.pmovs.qd.256
8207   return _mm256_maskz_cvtsepi64_epi32(__M, __A); 
8208 }
8209
8210 void test_mm256_mask_cvtsepi64_storeu_epi32(void * __P, __mmask8 __M, __m256i __A) {
8211   // CHECK-LABEL: @test_mm256_mask_cvtsepi64_storeu_epi32
8212   // CHECK: @llvm.x86.avx512.mask.pmovs.qd.mem.256
8213   return _mm256_mask_cvtsepi64_storeu_epi32(__P, __M, __A); 
8214 }
8215
8216 __m128i test_mm_cvtsepi64_epi16(__m128i __A) {
8217   // CHECK-LABEL: @test_mm_cvtsepi64_epi16
8218   // CHECK: @llvm.x86.avx512.mask.pmovs.qw.128
8219   return _mm_cvtsepi64_epi16(__A); 
8220 }
8221
8222 __m128i test_mm_mask_cvtsepi64_epi16(__m128i __O, __mmask8 __M, __m128i __A) {
8223   // CHECK-LABEL: @test_mm_mask_cvtsepi64_epi16
8224   // CHECK: @llvm.x86.avx512.mask.pmovs.qw.128
8225   return _mm_mask_cvtsepi64_epi16(__O, __M, __A); 
8226 }
8227
8228 __m128i test_mm_maskz_cvtsepi64_epi16(__mmask8 __M, __m128i __A) {
8229   // CHECK-LABEL: @test_mm_maskz_cvtsepi64_epi16
8230   // CHECK: @llvm.x86.avx512.mask.pmovs.qw.128
8231   return _mm_maskz_cvtsepi64_epi16(__M, __A); 
8232 }
8233
8234 void test_mm_mask_cvtsepi64_storeu_epi16(void * __P, __mmask8 __M, __m128i __A) {
8235   // CHECK-LABEL: @test_mm_mask_cvtsepi64_storeu_epi16
8236   // CHECK: @llvm.x86.avx512.mask.pmovs.qw.mem.128
8237   return _mm_mask_cvtsepi64_storeu_epi16(__P, __M, __A); 
8238 }
8239
8240 __m128i test_mm256_cvtsepi64_epi16(__m256i __A) {
8241   // CHECK-LABEL: @test_mm256_cvtsepi64_epi16
8242   // CHECK: @llvm.x86.avx512.mask.pmovs.qw.256
8243   return _mm256_cvtsepi64_epi16(__A); 
8244 }
8245
8246 __m128i test_mm256_mask_cvtsepi64_epi16(__m128i __O, __mmask8 __M, __m256i __A) {
8247   // CHECK-LABEL: @test_mm256_mask_cvtsepi64_epi16
8248   // CHECK: @llvm.x86.avx512.mask.pmovs.qw.256
8249   return _mm256_mask_cvtsepi64_epi16(__O, __M, __A); 
8250 }
8251
8252 __m128i test_mm256_maskz_cvtsepi64_epi16(__mmask8 __M, __m256i __A) {
8253   // CHECK-LABEL: @test_mm256_maskz_cvtsepi64_epi16
8254   // CHECK: @llvm.x86.avx512.mask.pmovs.qw.256
8255   return _mm256_maskz_cvtsepi64_epi16(__M, __A); 
8256 }
8257
8258 void test_mm256_mask_cvtsepi64_storeu_epi16(void * __P, __mmask8 __M, __m256i __A) {
8259   // CHECK-LABEL: @test_mm256_mask_cvtsepi64_storeu_epi16
8260   // CHECK: @llvm.x86.avx512.mask.pmovs.qw.mem.256
8261   return _mm256_mask_cvtsepi64_storeu_epi16(__P, __M, __A); 
8262 }
8263
8264 __m128i test_mm_cvtusepi32_epi8(__m128i __A) {
8265   // CHECK-LABEL: @test_mm_cvtusepi32_epi8
8266   // CHECK: @llvm.x86.avx512.mask.pmovus.db.128
8267   return _mm_cvtusepi32_epi8(__A); 
8268 }
8269
8270 __m128i test_mm_mask_cvtusepi32_epi8(__m128i __O, __mmask8 __M, __m128i __A) {
8271   // CHECK-LABEL: @test_mm_mask_cvtusepi32_epi8
8272   // CHECK: @llvm.x86.avx512.mask.pmovus.db.128
8273   return _mm_mask_cvtusepi32_epi8(__O, __M, __A); 
8274 }
8275
8276 __m128i test_mm_maskz_cvtusepi32_epi8(__mmask8 __M, __m128i __A) {
8277   // CHECK-LABEL: @test_mm_maskz_cvtusepi32_epi8
8278   // CHECK: @llvm.x86.avx512.mask.pmovus.db.128
8279   return _mm_maskz_cvtusepi32_epi8(__M, __A); 
8280 }
8281
8282 void test_mm_mask_cvtusepi32_storeu_epi8(void * __P, __mmask8 __M, __m128i __A) {
8283   // CHECK-LABEL: @test_mm_mask_cvtusepi32_storeu_epi8
8284   // CHECK: @llvm.x86.avx512.mask.pmovus.db.mem.128
8285   return _mm_mask_cvtusepi32_storeu_epi8(__P, __M, __A); 
8286 }
8287
8288 __m128i test_mm256_cvtusepi32_epi8(__m256i __A) {
8289   // CHECK-LABEL: @test_mm256_cvtusepi32_epi8
8290   // CHECK: @llvm.x86.avx512.mask.pmovus.db.256
8291   return _mm256_cvtusepi32_epi8(__A); 
8292 }
8293
8294 __m128i test_mm256_mask_cvtusepi32_epi8(__m128i __O, __mmask8 __M, __m256i __A) {
8295   // CHECK-LABEL: @test_mm256_mask_cvtusepi32_epi8
8296   // CHECK: @llvm.x86.avx512.mask.pmovus.db.256
8297   return _mm256_mask_cvtusepi32_epi8(__O, __M, __A); 
8298 }
8299
8300 __m128i test_mm256_maskz_cvtusepi32_epi8(__mmask8 __M, __m256i __A) {
8301   // CHECK-LABEL: @test_mm256_maskz_cvtusepi32_epi8
8302   // CHECK: @llvm.x86.avx512.mask.pmovus.db.256
8303   return _mm256_maskz_cvtusepi32_epi8(__M, __A); 
8304 }
8305
8306 void test_mm256_mask_cvtusepi32_storeu_epi8(void * __P, __mmask8 __M, __m256i __A) {
8307   // CHECK-LABEL: @test_mm256_mask_cvtusepi32_storeu_epi8
8308   // CHECK: @llvm.x86.avx512.mask.pmovus.db.mem.256
8309   return _mm256_mask_cvtusepi32_storeu_epi8(__P, __M, __A); 
8310 }
8311
8312 __m128i test_mm_cvtusepi32_epi16(__m128i __A) {
8313   // CHECK-LABEL: @test_mm_cvtusepi32_epi16
8314   // CHECK: @llvm.x86.avx512.mask.pmovus.dw.128
8315   return _mm_cvtusepi32_epi16(__A); 
8316 }
8317
8318 __m128i test_mm_mask_cvtusepi32_epi16(__m128i __O, __mmask8 __M, __m128i __A) {
8319   // CHECK-LABEL: @test_mm_mask_cvtusepi32_epi16
8320   // CHECK: @llvm.x86.avx512.mask.pmovus.dw.128
8321   return _mm_mask_cvtusepi32_epi16(__O, __M, __A); 
8322 }
8323
8324 __m128i test_mm_maskz_cvtusepi32_epi16(__mmask8 __M, __m128i __A) {
8325   // CHECK-LABEL: @test_mm_maskz_cvtusepi32_epi16
8326   // CHECK: @llvm.x86.avx512.mask.pmovus.dw.128
8327   return _mm_maskz_cvtusepi32_epi16(__M, __A); 
8328 }
8329
8330 void test_mm_mask_cvtusepi32_storeu_epi16(void * __P, __mmask8 __M, __m128i __A) {
8331   // CHECK-LABEL: @test_mm_mask_cvtusepi32_storeu_epi16
8332   // CHECK: @llvm.x86.avx512.mask.pmovus.dw.mem.128
8333   return _mm_mask_cvtusepi32_storeu_epi16(__P, __M, __A); 
8334 }
8335
8336 __m128i test_mm256_cvtusepi32_epi16(__m256i __A) {
8337   // CHECK-LABEL: @test_mm256_cvtusepi32_epi16
8338   // CHECK: @llvm.x86.avx512.mask.pmovus.dw.256
8339   return _mm256_cvtusepi32_epi16(__A); 
8340 }
8341
8342 __m128i test_mm256_mask_cvtusepi32_epi16(__m128i __O, __mmask8 __M, __m256i __A) {
8343   // CHECK-LABEL: @test_mm256_mask_cvtusepi32_epi16
8344   // CHECK: @llvm.x86.avx512.mask.pmovus.dw.256
8345   return _mm256_mask_cvtusepi32_epi16(__O, __M, __A); 
8346 }
8347
8348 __m128i test_mm256_maskz_cvtusepi32_epi16(__mmask8 __M, __m256i __A) {
8349   // CHECK-LABEL: @test_mm256_maskz_cvtusepi32_epi16
8350   // CHECK: @llvm.x86.avx512.mask.pmovus.dw.256
8351   return _mm256_maskz_cvtusepi32_epi16(__M, __A); 
8352 }
8353
8354 void test_mm256_mask_cvtusepi32_storeu_epi16(void * __P, __mmask8 __M, __m256i __A) {
8355   // CHECK-LABEL: @test_mm256_mask_cvtusepi32_storeu_epi16
8356   // CHECK: @llvm.x86.avx512.mask.pmovus.dw.mem.256
8357   return _mm256_mask_cvtusepi32_storeu_epi16(__P, __M, __A); 
8358 }
8359
8360 __m128i test_mm_cvtusepi64_epi8(__m128i __A) {
8361   // CHECK-LABEL: @test_mm_cvtusepi64_epi8
8362   // CHECK: @llvm.x86.avx512.mask.pmovus.qb.128
8363   return _mm_cvtusepi64_epi8(__A); 
8364 }
8365
8366 __m128i test_mm_mask_cvtusepi64_epi8(__m128i __O, __mmask8 __M, __m128i __A) {
8367   // CHECK-LABEL: @test_mm_mask_cvtusepi64_epi8
8368   // CHECK: @llvm.x86.avx512.mask.pmovus.qb.128
8369   return _mm_mask_cvtusepi64_epi8(__O, __M, __A); 
8370 }
8371
8372 __m128i test_mm_maskz_cvtusepi64_epi8(__mmask8 __M, __m128i __A) {
8373   // CHECK-LABEL: @test_mm_maskz_cvtusepi64_epi8
8374   // CHECK: @llvm.x86.avx512.mask.pmovus.qb.128
8375   return _mm_maskz_cvtusepi64_epi8(__M, __A); 
8376 }
8377
8378 void test_mm_mask_cvtusepi64_storeu_epi8(void * __P, __mmask8 __M, __m128i __A) {
8379   // CHECK-LABEL: @test_mm_mask_cvtusepi64_storeu_epi8
8380   // CHECK: @llvm.x86.avx512.mask.pmovus.qb.mem.128
8381   return _mm_mask_cvtusepi64_storeu_epi8(__P, __M, __A); 
8382 }
8383
8384 __m128i test_mm256_cvtusepi64_epi8(__m256i __A) {
8385   // CHECK-LABEL: @test_mm256_cvtusepi64_epi8
8386   // CHECK: @llvm.x86.avx512.mask.pmovus.qb.256
8387   return _mm256_cvtusepi64_epi8(__A); 
8388 }
8389
8390 __m128i test_mm256_mask_cvtusepi64_epi8(__m128i __O, __mmask8 __M, __m256i __A) {
8391   // CHECK-LABEL: @test_mm256_mask_cvtusepi64_epi8
8392   // CHECK: @llvm.x86.avx512.mask.pmovus.qb.256
8393   return _mm256_mask_cvtusepi64_epi8(__O, __M, __A); 
8394 }
8395
8396 __m128i test_mm256_maskz_cvtusepi64_epi8(__mmask8 __M, __m256i __A) {
8397   // CHECK-LABEL: @test_mm256_maskz_cvtusepi64_epi8
8398   // CHECK: @llvm.x86.avx512.mask.pmovus.qb.256
8399   return _mm256_maskz_cvtusepi64_epi8(__M, __A); 
8400 }
8401
8402 void test_mm256_mask_cvtusepi64_storeu_epi8(void * __P, __mmask8 __M, __m256i __A) {
8403   // CHECK-LABEL: @test_mm256_mask_cvtusepi64_storeu_epi8
8404   // CHECK: @llvm.x86.avx512.mask.pmovus.qb.mem.256
8405   return _mm256_mask_cvtusepi64_storeu_epi8(__P, __M, __A); 
8406 }
8407
8408 __m128i test_mm_cvtusepi64_epi32(__m128i __A) {
8409   // CHECK-LABEL: @test_mm_cvtusepi64_epi32
8410   // CHECK: @llvm.x86.avx512.mask.pmovus.qd.128
8411   return _mm_cvtusepi64_epi32(__A); 
8412 }
8413
8414 __m128i test_mm_mask_cvtusepi64_epi32(__m128i __O, __mmask8 __M, __m128i __A) {
8415   // CHECK-LABEL: @test_mm_mask_cvtusepi64_epi32
8416   // CHECK: @llvm.x86.avx512.mask.pmovus.qd.128
8417   return _mm_mask_cvtusepi64_epi32(__O, __M, __A); 
8418 }
8419
8420 __m128i test_mm_maskz_cvtusepi64_epi32(__mmask8 __M, __m128i __A) {
8421   // CHECK-LABEL: @test_mm_maskz_cvtusepi64_epi32
8422   // CHECK: @llvm.x86.avx512.mask.pmovus.qd.128
8423   return _mm_maskz_cvtusepi64_epi32(__M, __A); 
8424 }
8425
8426 void test_mm_mask_cvtusepi64_storeu_epi32(void * __P, __mmask8 __M, __m128i __A) {
8427   // CHECK-LABEL: @test_mm_mask_cvtusepi64_storeu_epi32
8428   // CHECK: @llvm.x86.avx512.mask.pmovus.qd.mem.128
8429   return _mm_mask_cvtusepi64_storeu_epi32(__P, __M, __A); 
8430 }
8431
8432 __m128i test_mm256_cvtusepi64_epi32(__m256i __A) {
8433   // CHECK-LABEL: @test_mm256_cvtusepi64_epi32
8434   // CHECK: @llvm.x86.avx512.mask.pmovus.qd.256
8435   return _mm256_cvtusepi64_epi32(__A); 
8436 }
8437
8438 __m128i test_mm256_mask_cvtusepi64_epi32(__m128i __O, __mmask8 __M, __m256i __A) {
8439   // CHECK-LABEL: @test_mm256_mask_cvtusepi64_epi32
8440   // CHECK: @llvm.x86.avx512.mask.pmovus.qd.256
8441   return _mm256_mask_cvtusepi64_epi32(__O, __M, __A); 
8442 }
8443
8444 __m128i test_mm256_maskz_cvtusepi64_epi32(__mmask8 __M, __m256i __A) {
8445   // CHECK-LABEL: @test_mm256_maskz_cvtusepi64_epi32
8446   // CHECK: @llvm.x86.avx512.mask.pmovus.qd.256
8447   return _mm256_maskz_cvtusepi64_epi32(__M, __A); 
8448 }
8449
8450 void test_mm256_mask_cvtusepi64_storeu_epi32(void * __P, __mmask8 __M, __m256i __A) {
8451   // CHECK-LABEL: @test_mm256_mask_cvtusepi64_storeu_epi32
8452   // CHECK: @llvm.x86.avx512.mask.pmovus.qd.mem.256
8453   return _mm256_mask_cvtusepi64_storeu_epi32(__P, __M, __A); 
8454 }
8455
8456 __m128i test_mm_cvtusepi64_epi16(__m128i __A) {
8457   // CHECK-LABEL: @test_mm_cvtusepi64_epi16
8458   // CHECK: @llvm.x86.avx512.mask.pmovus.qw.128
8459   return _mm_cvtusepi64_epi16(__A); 
8460 }
8461
8462 __m128i test_mm_mask_cvtusepi64_epi16(__m128i __O, __mmask8 __M, __m128i __A) {
8463   // CHECK-LABEL: @test_mm_mask_cvtusepi64_epi16
8464   // CHECK: @llvm.x86.avx512.mask.pmovus.qw.128
8465   return _mm_mask_cvtusepi64_epi16(__O, __M, __A); 
8466 }
8467
8468 __m128i test_mm_maskz_cvtusepi64_epi16(__mmask8 __M, __m128i __A) {
8469   // CHECK-LABEL: @test_mm_maskz_cvtusepi64_epi16
8470   // CHECK: @llvm.x86.avx512.mask.pmovus.qw.128
8471   return _mm_maskz_cvtusepi64_epi16(__M, __A); 
8472 }
8473
8474 void test_mm_mask_cvtusepi64_storeu_epi16(void * __P, __mmask8 __M, __m128i __A) {
8475   // CHECK-LABEL: @test_mm_mask_cvtusepi64_storeu_epi16
8476   // CHECK: @llvm.x86.avx512.mask.pmovus.qw.mem.128
8477   return _mm_mask_cvtusepi64_storeu_epi16(__P, __M, __A); 
8478 }
8479
8480 __m128i test_mm256_cvtusepi64_epi16(__m256i __A) {
8481   // CHECK-LABEL: @test_mm256_cvtusepi64_epi16
8482   // CHECK: @llvm.x86.avx512.mask.pmovus.qw.256
8483   return _mm256_cvtusepi64_epi16(__A); 
8484 }
8485
8486 __m128i test_mm256_mask_cvtusepi64_epi16(__m128i __O, __mmask8 __M, __m256i __A) {
8487   // CHECK-LABEL: @test_mm256_mask_cvtusepi64_epi16
8488   // CHECK: @llvm.x86.avx512.mask.pmovus.qw.256
8489   return _mm256_mask_cvtusepi64_epi16(__O, __M, __A); 
8490 }
8491
8492 __m128i test_mm256_maskz_cvtusepi64_epi16(__mmask8 __M, __m256i __A) {
8493   // CHECK-LABEL: @test_mm256_maskz_cvtusepi64_epi16
8494   // CHECK: @llvm.x86.avx512.mask.pmovus.qw.256
8495   return _mm256_maskz_cvtusepi64_epi16(__M, __A); 
8496 }
8497
8498 void test_mm256_mask_cvtusepi64_storeu_epi16(void * __P, __mmask8 __M, __m256i __A) {
8499   // CHECK-LABEL: @test_mm256_mask_cvtusepi64_storeu_epi16
8500   // CHECK: @llvm.x86.avx512.mask.pmovus.qw.mem.256
8501   return _mm256_mask_cvtusepi64_storeu_epi16(__P, __M, __A); 
8502 }
8503
8504 __m128i test_mm_cvtepi32_epi8(__m128i __A) {
8505   // CHECK-LABEL: @test_mm_cvtepi32_epi8
8506   // CHECK: trunc <4 x i32> %{{.*}} to <4 x i8>
8507   // 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>
8508   return _mm_cvtepi32_epi8(__A); 
8509 }
8510
8511 __m128i test_mm_mask_cvtepi32_epi8(__m128i __O, __mmask8 __M, __m128i __A) {
8512   // CHECK-LABEL: @test_mm_mask_cvtepi32_epi8
8513   // CHECK: @llvm.x86.avx512.mask.pmov.db.128
8514   return _mm_mask_cvtepi32_epi8(__O, __M, __A); 
8515 }
8516
8517 __m128i test_mm_maskz_cvtepi32_epi8(__mmask8 __M, __m128i __A) {
8518   // CHECK-LABEL: @test_mm_maskz_cvtepi32_epi8
8519   // CHECK: @llvm.x86.avx512.mask.pmov.db.128
8520   return _mm_maskz_cvtepi32_epi8(__M, __A); 
8521 }
8522
8523 void test_mm_mask_cvtepi32_storeu_epi8(void * __P, __mmask8 __M, __m128i __A) {
8524   // CHECK-LABEL: @test_mm_mask_cvtepi32_storeu_epi8
8525   // CHECK: @llvm.x86.avx512.mask.pmov.db.mem.128
8526   return _mm_mask_cvtepi32_storeu_epi8(__P, __M, __A); 
8527 }
8528
8529 __m128i test_mm256_cvtepi32_epi8(__m256i __A) {
8530   // CHECK-LABEL: @test_mm256_cvtepi32_epi8
8531   // CHECK: trunc <8 x i32> %{{.*}} to <8 x i8>
8532   // 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>
8533   return _mm256_cvtepi32_epi8(__A); 
8534 }
8535
8536 __m128i test_mm256_mask_cvtepi32_epi8(__m128i __O, __mmask8 __M, __m256i __A) {
8537   // CHECK-LABEL: @test_mm256_mask_cvtepi32_epi8
8538   // CHECK: @llvm.x86.avx512.mask.pmov.db.256
8539   return _mm256_mask_cvtepi32_epi8(__O, __M, __A); 
8540 }
8541
8542 __m128i test_mm256_maskz_cvtepi32_epi8(__mmask8 __M, __m256i __A) {
8543   // CHECK-LABEL: @test_mm256_maskz_cvtepi32_epi8
8544   // CHECK: @llvm.x86.avx512.mask.pmov.db.256
8545   return _mm256_maskz_cvtepi32_epi8(__M, __A); 
8546 }
8547
8548 void test_mm256_mask_cvtepi32_storeu_epi8(void * __P, __mmask8 __M, __m256i __A) {
8549   // CHECK-LABEL: @test_mm256_mask_cvtepi32_storeu_epi8
8550   // CHECK: @llvm.x86.avx512.mask.pmov.db.mem.256
8551   return _mm256_mask_cvtepi32_storeu_epi8(__P, __M, __A); 
8552 }
8553
8554 __m128i test_mm_cvtepi32_epi16(__m128i __A) {
8555   // CHECK-LABEL: @test_mm_cvtepi32_epi16
8556   // CHECK: trunc <4 x i32> %{{.*}} to <4 x i16>
8557   // 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>
8558   return _mm_cvtepi32_epi16(__A); 
8559 }
8560
8561 __m128i test_mm_mask_cvtepi32_epi16(__m128i __O, __mmask8 __M, __m128i __A) {
8562   // CHECK-LABEL: @test_mm_mask_cvtepi32_epi16
8563   // CHECK: @llvm.x86.avx512.mask.pmov.dw.128
8564   return _mm_mask_cvtepi32_epi16(__O, __M, __A); 
8565 }
8566
8567 __m128i test_mm_maskz_cvtepi32_epi16(__mmask8 __M, __m128i __A) {
8568   // CHECK-LABEL: @test_mm_maskz_cvtepi32_epi16
8569   // CHECK: @llvm.x86.avx512.mask.pmov.dw.128
8570   return _mm_maskz_cvtepi32_epi16(__M, __A); 
8571 }
8572
8573 void test_mm_mask_cvtepi32_storeu_epi16(void * __P, __mmask8 __M, __m128i __A) {
8574   // CHECK-LABEL: @test_mm_mask_cvtepi32_storeu_epi16
8575   // CHECK: @llvm.x86.avx512.mask.pmov.dw.mem.128
8576   return _mm_mask_cvtepi32_storeu_epi16(__P, __M, __A); 
8577 }
8578
8579 __m128i test_mm256_cvtepi32_epi16(__m256i __A) {
8580   // CHECK-LABEL: @test_mm256_cvtepi32_epi16
8581   // CHECK: trunc <8 x i32> %{{.*}} to <8 x i16>
8582   return _mm256_cvtepi32_epi16(__A); 
8583 }
8584
8585 __m128i test_mm256_mask_cvtepi32_epi16(__m128i __O, __mmask8 __M, __m256i __A) {
8586   // CHECK-LABEL: @test_mm256_mask_cvtepi32_epi16
8587   // CHECK: @llvm.x86.avx512.mask.pmov.dw.256
8588   return _mm256_mask_cvtepi32_epi16(__O, __M, __A); 
8589 }
8590
8591 __m128i test_mm256_maskz_cvtepi32_epi16(__mmask8 __M, __m256i __A) {
8592   // CHECK-LABEL: @test_mm256_maskz_cvtepi32_epi16
8593   // CHECK: @llvm.x86.avx512.mask.pmov.dw.256
8594   return _mm256_maskz_cvtepi32_epi16(__M, __A); 
8595 }
8596
8597 void test_mm256_mask_cvtepi32_storeu_epi16(void *  __P, __mmask8 __M, __m256i __A) {
8598   // CHECK-LABEL: @test_mm256_mask_cvtepi32_storeu_epi16
8599   // CHECK: @llvm.x86.avx512.mask.pmov.dw.mem.256
8600   return _mm256_mask_cvtepi32_storeu_epi16(__P, __M, __A); 
8601 }
8602
8603 __m128i test_mm_cvtepi64_epi8(__m128i __A) {
8604   // CHECK-LABEL: @test_mm_cvtepi64_epi8
8605   // CHECK: trunc <2 x i64> %{{.*}} to <2 x i8>
8606   // 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>
8607   return _mm_cvtepi64_epi8(__A); 
8608 }
8609
8610 __m128i test_mm_mask_cvtepi64_epi8(__m128i __O, __mmask8 __M, __m128i __A) {
8611   // CHECK-LABEL: @test_mm_mask_cvtepi64_epi8
8612   // CHECK: @llvm.x86.avx512.mask.pmov.qb.128
8613   return _mm_mask_cvtepi64_epi8(__O, __M, __A); 
8614 }
8615
8616 __m128i test_mm_maskz_cvtepi64_epi8(__mmask8 __M, __m128i __A) {
8617   // CHECK-LABEL: @test_mm_maskz_cvtepi64_epi8
8618   // CHECK: @llvm.x86.avx512.mask.pmov.qb.128
8619   return _mm_maskz_cvtepi64_epi8(__M, __A); 
8620 }
8621
8622 void test_mm_mask_cvtepi64_storeu_epi8(void * __P, __mmask8 __M, __m128i __A) {
8623   // CHECK-LABEL: @test_mm_mask_cvtepi64_storeu_epi8
8624   // CHECK: @llvm.x86.avx512.mask.pmov.qb.mem.128
8625   return _mm_mask_cvtepi64_storeu_epi8(__P, __M, __A); 
8626 }
8627
8628 __m128i test_mm256_cvtepi64_epi8(__m256i __A) {
8629   // CHECK-LABEL: @test_mm256_cvtepi64_epi8
8630   // CHECK: trunc <4 x i64> %{{.*}} to <4 x i8>
8631   // 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>
8632   return _mm256_cvtepi64_epi8(__A); 
8633 }
8634
8635 __m128i test_mm256_mask_cvtepi64_epi8(__m128i __O, __mmask8 __M, __m256i __A) {
8636   // CHECK-LABEL: @test_mm256_mask_cvtepi64_epi8
8637   // CHECK: @llvm.x86.avx512.mask.pmov.qb.256
8638   return _mm256_mask_cvtepi64_epi8(__O, __M, __A); 
8639 }
8640
8641 __m128i test_mm256_maskz_cvtepi64_epi8(__mmask8 __M, __m256i __A) {
8642   // CHECK-LABEL: @test_mm256_maskz_cvtepi64_epi8
8643   // CHECK: @llvm.x86.avx512.mask.pmov.qb.256
8644   return _mm256_maskz_cvtepi64_epi8(__M, __A); 
8645 }
8646
8647 void test_mm256_mask_cvtepi64_storeu_epi8(void * __P, __mmask8 __M, __m256i __A) {
8648   // CHECK-LABEL: @test_mm256_mask_cvtepi64_storeu_epi8
8649   // CHECK: @llvm.x86.avx512.mask.pmov.qb.mem.256
8650   return _mm256_mask_cvtepi64_storeu_epi8(__P, __M, __A); 
8651 }
8652
8653 __m128i test_mm_cvtepi64_epi32(__m128i __A) {
8654   // CHECK-LABEL: @test_mm_cvtepi64_epi32
8655   // CHECK: trunc <2 x i64> %{{.*}} to <2 x i32>
8656   // CHECK: shufflevector <2 x i32> %{{.*}}, <2 x i32> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
8657   return _mm_cvtepi64_epi32(__A); 
8658 }
8659
8660 __m128i test_mm_mask_cvtepi64_epi32(__m128i __O, __mmask8 __M, __m128i __A) {
8661   // CHECK-LABEL: @test_mm_mask_cvtepi64_epi32
8662   // CHECK: @llvm.x86.avx512.mask.pmov.qd.128
8663   return _mm_mask_cvtepi64_epi32(__O, __M, __A); 
8664 }
8665
8666 __m128i test_mm_maskz_cvtepi64_epi32(__mmask8 __M, __m128i __A) {
8667   // CHECK-LABEL: @test_mm_maskz_cvtepi64_epi32
8668   // CHECK: @llvm.x86.avx512.mask.pmov.qd.128
8669   return _mm_maskz_cvtepi64_epi32(__M, __A); 
8670 }
8671
8672 void test_mm_mask_cvtepi64_storeu_epi32(void * __P, __mmask8 __M, __m128i __A) {
8673   // CHECK-LABEL: @test_mm_mask_cvtepi64_storeu_epi32
8674   // CHECK: @llvm.x86.avx512.mask.pmov.qd.mem.128
8675   return _mm_mask_cvtepi64_storeu_epi32(__P, __M, __A); 
8676 }
8677
8678 __m128i test_mm256_cvtepi64_epi32(__m256i __A) {
8679   // CHECK-LABEL: @test_mm256_cvtepi64_epi32
8680   // CHECK: trunc <4 x i64> %{{.*}} to <4 x i32>
8681   return _mm256_cvtepi64_epi32(__A); 
8682 }
8683
8684 __m128i test_mm256_mask_cvtepi64_epi32(__m128i __O, __mmask8 __M, __m256i __A) {
8685   // CHECK-LABEL: @test_mm256_mask_cvtepi64_epi32
8686   // CHECK: trunc <4 x i64> %{{.*}} to <4 x i32>
8687   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
8688   return _mm256_mask_cvtepi64_epi32(__O, __M, __A); 
8689 }
8690
8691 __m128i test_mm256_maskz_cvtepi64_epi32(__mmask8 __M, __m256i __A) {
8692   // CHECK-LABEL: @test_mm256_maskz_cvtepi64_epi32
8693   // CHECK: trunc <4 x i64> %{{.*}} to <4 x i32>
8694   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
8695   return _mm256_maskz_cvtepi64_epi32(__M, __A); 
8696 }
8697
8698 void test_mm256_mask_cvtepi64_storeu_epi32(void * __P, __mmask8 __M, __m256i __A) {
8699   // CHECK-LABEL: @test_mm256_mask_cvtepi64_storeu_epi32
8700   // CHECK: @llvm.x86.avx512.mask.pmov.qd.mem.256
8701   return _mm256_mask_cvtepi64_storeu_epi32(__P, __M, __A); 
8702 }
8703
8704 __m128i test_mm_cvtepi64_epi16(__m128i __A) {
8705   // CHECK-LABEL: @test_mm_cvtepi64_epi16
8706   // CHECK: trunc <2 x i64> %{{.*}} to <2 x i16>
8707   // 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>
8708   return _mm_cvtepi64_epi16(__A); 
8709 }
8710
8711 __m128i test_mm_mask_cvtepi64_epi16(__m128i __O, __mmask8 __M, __m128i __A) {
8712   // CHECK-LABEL: @test_mm_mask_cvtepi64_epi16
8713   // CHECK: @llvm.x86.avx512.mask.pmov.qw.128
8714   return _mm_mask_cvtepi64_epi16(__O, __M, __A); 
8715 }
8716
8717 __m128i test_mm_maskz_cvtepi64_epi16(__mmask8 __M, __m128i __A) {
8718   // CHECK-LABEL: @test_mm_maskz_cvtepi64_epi16
8719   // CHECK: @llvm.x86.avx512.mask.pmov.qw.128
8720   return _mm_maskz_cvtepi64_epi16(__M, __A); 
8721 }
8722
8723 void test_mm_mask_cvtepi64_storeu_epi16(void * __P, __mmask8 __M, __m128i __A) {
8724   // CHECK-LABEL: @test_mm_mask_cvtepi64_storeu_epi16
8725   // CHECK: @llvm.x86.avx512.mask.pmov.qw.mem.128
8726   return _mm_mask_cvtepi64_storeu_epi16(__P, __M, __A); 
8727 }
8728
8729 __m128i test_mm256_cvtepi64_epi16(__m256i __A) {
8730   // CHECK-LABEL: @test_mm256_cvtepi64_epi16
8731   // CHECK: trunc <4 x i64> %{{.*}} to <4 x i16>
8732   // 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>
8733   return _mm256_cvtepi64_epi16(__A); 
8734 }
8735
8736 __m128i test_mm256_mask_cvtepi64_epi16(__m128i __O, __mmask8 __M, __m256i __A) {
8737   // CHECK-LABEL: @test_mm256_mask_cvtepi64_epi16
8738   // CHECK: @llvm.x86.avx512.mask.pmov.qw.256
8739   return _mm256_mask_cvtepi64_epi16(__O, __M, __A); 
8740 }
8741
8742 __m128i test_mm256_maskz_cvtepi64_epi16(__mmask8 __M, __m256i __A) {
8743   // CHECK-LABEL: @test_mm256_maskz_cvtepi64_epi16
8744   // CHECK: @llvm.x86.avx512.mask.pmov.qw.256
8745   return _mm256_maskz_cvtepi64_epi16(__M, __A); 
8746 }
8747
8748 void test_mm256_mask_cvtepi64_storeu_epi16(void * __P, __mmask8 __M, __m256i __A) {
8749   // CHECK-LABEL: @test_mm256_mask_cvtepi64_storeu_epi16
8750   // CHECK: @llvm.x86.avx512.mask.pmov.qw.mem.256
8751   return _mm256_mask_cvtepi64_storeu_epi16(__P, __M, __A); 
8752 }
8753
8754 __m128 test_mm256_extractf32x4_ps(__m256 __A) {
8755   // CHECK-LABEL: @test_mm256_extractf32x4_ps
8756   // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
8757   return _mm256_extractf32x4_ps(__A, 1); 
8758 }
8759
8760 __m128 test_mm256_mask_extractf32x4_ps(__m128 __W, __mmask8 __U, __m256 __A) {
8761   // CHECK-LABEL: @test_mm256_mask_extractf32x4_ps
8762   // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
8763   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
8764   return _mm256_mask_extractf32x4_ps(__W, __U, __A, 1); 
8765 }
8766
8767 __m128 test_mm256_maskz_extractf32x4_ps(__mmask8 __U, __m256 __A) {
8768   // CHECK-LABEL: @test_mm256_maskz_extractf32x4_ps
8769   // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
8770   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
8771   return _mm256_maskz_extractf32x4_ps(__U, __A, 1); 
8772 }
8773
8774 __m128i test_mm256_extracti32x4_epi32(__m256i __A) {
8775   // CHECK-LABEL: @test_mm256_extracti32x4_epi32
8776   // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
8777   return _mm256_extracti32x4_epi32(__A, 1); 
8778 }
8779
8780 __m128i test_mm256_mask_extracti32x4_epi32(__m128i __W, __mmask8 __U, __m256i __A) {
8781   // CHECK-LABEL: @test_mm256_mask_extracti32x4_epi32
8782   // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
8783   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
8784   return _mm256_mask_extracti32x4_epi32(__W, __U, __A, 1); 
8785 }
8786
8787 __m128i test_mm256_maskz_extracti32x4_epi32(__mmask8 __U, __m256i __A) {
8788   // CHECK-LABEL: @test_mm256_maskz_extracti32x4_epi32
8789   // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
8790   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
8791   return _mm256_maskz_extracti32x4_epi32(__U, __A, 1); 
8792 }
8793
8794 __m256 test_mm256_insertf32x4(__m256 __A, __m128 __B) {
8795   // CHECK-LABEL: @test_mm256_insertf32x4
8796   // 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>
8797   return _mm256_insertf32x4(__A, __B, 1); 
8798 }
8799
8800 __m256 test_mm256_mask_insertf32x4(__m256 __W, __mmask8 __U, __m256 __A, __m128 __B) {
8801   // CHECK-LABEL: @test_mm256_mask_insertf32x4
8802   // 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>
8803   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
8804   return _mm256_mask_insertf32x4(__W, __U, __A, __B, 1); 
8805 }
8806
8807 __m256 test_mm256_maskz_insertf32x4(__mmask8 __U, __m256 __A, __m128 __B) {
8808   // CHECK-LABEL: @test_mm256_maskz_insertf32x4
8809   // 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>
8810   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
8811   return _mm256_maskz_insertf32x4(__U, __A, __B, 1); 
8812 }
8813
8814 __m256i test_mm256_inserti32x4(__m256i __A, __m128i __B) {
8815   // CHECK-LABEL: @test_mm256_inserti32x4
8816   // 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>
8817   return _mm256_inserti32x4(__A, __B, 1); 
8818 }
8819
8820 __m256i test_mm256_mask_inserti32x4(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B) {
8821   // CHECK-LABEL: @test_mm256_mask_inserti32x4
8822   // 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>
8823   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
8824   return _mm256_mask_inserti32x4(__W, __U, __A, __B, 1); 
8825 }
8826
8827 __m256i test_mm256_maskz_inserti32x4(__mmask8 __U, __m256i __A, __m128i __B) {
8828   // CHECK-LABEL: @test_mm256_maskz_inserti32x4
8829   // 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>
8830   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
8831   return _mm256_maskz_inserti32x4(__U, __A, __B, 1); 
8832 }
8833
8834 __m128d test_mm_getmant_pd(__m128d __A) {
8835   // CHECK-LABEL: @test_mm_getmant_pd
8836   // CHECK: @llvm.x86.avx512.mask.getmant.pd.128
8837   return _mm_getmant_pd(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 
8838 }
8839
8840 __m128d test_mm_mask_getmant_pd(__m128d __W, __mmask8 __U, __m128d __A) {
8841   // CHECK-LABEL: @test_mm_mask_getmant_pd
8842   // CHECK: @llvm.x86.avx512.mask.getmant.pd.128
8843   return _mm_mask_getmant_pd(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 
8844 }
8845
8846 __m128d test_mm_maskz_getmant_pd(__mmask8 __U, __m128d __A) {
8847   // CHECK-LABEL: @test_mm_maskz_getmant_pd
8848   // CHECK: @llvm.x86.avx512.mask.getmant.pd.128
8849   return _mm_maskz_getmant_pd(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 
8850 }
8851
8852 __m256d test_mm256_getmant_pd(__m256d __A) {
8853   // CHECK-LABEL: @test_mm256_getmant_pd
8854   // CHECK: @llvm.x86.avx512.mask.getmant.pd.256
8855   return _mm256_getmant_pd(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 
8856 }
8857
8858 __m256d test_mm256_mask_getmant_pd(__m256d __W, __mmask8 __U, __m256d __A) {
8859   // CHECK-LABEL: @test_mm256_mask_getmant_pd
8860   // CHECK: @llvm.x86.avx512.mask.getmant.pd.256
8861   return _mm256_mask_getmant_pd(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 
8862 }
8863
8864 __m256d test_mm256_maskz_getmant_pd(__mmask8 __U, __m256d __A) {
8865   // CHECK-LABEL: @test_mm256_maskz_getmant_pd
8866   // CHECK: @llvm.x86.avx512.mask.getmant.pd.256
8867   return _mm256_maskz_getmant_pd(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 
8868 }
8869
8870 __m128 test_mm_getmant_ps(__m128 __A) {
8871   // CHECK-LABEL: @test_mm_getmant_ps
8872   // CHECK: @llvm.x86.avx512.mask.getmant.ps.128
8873   return _mm_getmant_ps(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 
8874 }
8875
8876 __m128 test_mm_mask_getmant_ps(__m128 __W, __mmask8 __U, __m128 __A) {
8877   // CHECK-LABEL: @test_mm_mask_getmant_ps
8878   // CHECK: @llvm.x86.avx512.mask.getmant.ps.128
8879   return _mm_mask_getmant_ps(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 
8880 }
8881
8882 __m128 test_mm_maskz_getmant_ps(__mmask8 __U, __m128 __A) {
8883   // CHECK-LABEL: @test_mm_maskz_getmant_ps
8884   // CHECK: @llvm.x86.avx512.mask.getmant.ps.128
8885   return _mm_maskz_getmant_ps(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 
8886 }
8887
8888 __m256 test_mm256_getmant_ps(__m256 __A) {
8889   // CHECK-LABEL: @test_mm256_getmant_ps
8890   // CHECK: @llvm.x86.avx512.mask.getmant.ps.256
8891   return _mm256_getmant_ps(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 
8892 }
8893
8894 __m256 test_mm256_mask_getmant_ps(__m256 __W, __mmask8 __U, __m256 __A) {
8895   // CHECK-LABEL: @test_mm256_mask_getmant_ps
8896   // CHECK: @llvm.x86.avx512.mask.getmant.ps.256
8897   return _mm256_mask_getmant_ps(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 
8898 }
8899
8900 __m256 test_mm256_maskz_getmant_ps(__mmask8 __U, __m256 __A) {
8901   // CHECK-LABEL: @test_mm256_maskz_getmant_ps
8902   // CHECK: @llvm.x86.avx512.mask.getmant.ps.256
8903   return _mm256_maskz_getmant_ps(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 
8904 }
8905
8906 __m128d test_mm_mmask_i64gather_pd(__m128d __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
8907   // CHECK-LABEL: @test_mm_mmask_i64gather_pd
8908   // CHECK: @llvm.x86.avx512.gather3div2.df
8909   return _mm_mmask_i64gather_pd(__v1_old, __mask, __index, __addr, 2); 
8910 }
8911
8912 __m128i test_mm_mmask_i64gather_epi64(__m128i __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
8913   // CHECK-LABEL: @test_mm_mmask_i64gather_epi64
8914   // CHECK: @llvm.x86.avx512.gather3div2.di
8915   return _mm_mmask_i64gather_epi64(__v1_old, __mask, __index, __addr, 2); 
8916 }
8917
8918 __m256d test_mm256_mmask_i64gather_pd(__m256d __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
8919   // CHECK-LABEL: @test_mm256_mmask_i64gather_pd
8920   // CHECK: @llvm.x86.avx512.gather3div4.df
8921   return _mm256_mmask_i64gather_pd(__v1_old, __mask, __index, __addr, 2); 
8922 }
8923
8924 __m256i test_mm256_mmask_i64gather_epi64(__m256i __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
8925   // CHECK-LABEL: @test_mm256_mmask_i64gather_epi64
8926   // CHECK: @llvm.x86.avx512.gather3div4.di
8927   return _mm256_mmask_i64gather_epi64(__v1_old, __mask, __index, __addr, 2); 
8928 }
8929
8930 __m128 test_mm_mmask_i64gather_ps(__m128 __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
8931   // CHECK-LABEL: @test_mm_mmask_i64gather_ps
8932   // CHECK: @llvm.x86.avx512.gather3div4.sf
8933   return _mm_mmask_i64gather_ps(__v1_old, __mask, __index, __addr, 2); 
8934 }
8935
8936 __m128i test_mm_mmask_i64gather_epi32(__m128i __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
8937   // CHECK-LABEL: @test_mm_mmask_i64gather_epi32
8938   // CHECK: @llvm.x86.avx512.gather3div4.si
8939   return _mm_mmask_i64gather_epi32(__v1_old, __mask, __index, __addr, 2); 
8940 }
8941
8942 __m128 test_mm256_mmask_i64gather_ps(__m128 __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
8943   // CHECK-LABEL: @test_mm256_mmask_i64gather_ps
8944   // CHECK: @llvm.x86.avx512.gather3div8.sf
8945   return _mm256_mmask_i64gather_ps(__v1_old, __mask, __index, __addr, 2); 
8946 }
8947
8948 __m128i test_mm256_mmask_i64gather_epi32(__m128i __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
8949   // CHECK-LABEL: @test_mm256_mmask_i64gather_epi32
8950   // CHECK: @llvm.x86.avx512.gather3div8.si
8951   return _mm256_mmask_i64gather_epi32(__v1_old, __mask, __index, __addr, 2); 
8952 }
8953
8954 __m128d test_mm_mask_i32gather_pd(__m128d __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
8955   // CHECK-LABEL: @test_mm_mask_i32gather_pd
8956   // CHECK: @llvm.x86.avx512.gather3siv2.df
8957   return _mm_mmask_i32gather_pd(__v1_old, __mask, __index, __addr, 2); 
8958 }
8959
8960 __m128i test_mm_mask_i32gather_epi64(__m128i __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
8961   // CHECK-LABEL: @test_mm_mask_i32gather_epi64
8962   // CHECK: @llvm.x86.avx512.gather3siv2.di
8963   return _mm_mmask_i32gather_epi64(__v1_old, __mask, __index, __addr, 2); 
8964 }
8965
8966 __m256d test_mm256_mask_i32gather_pd(__m256d __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
8967   // CHECK-LABEL: @test_mm256_mask_i32gather_pd
8968   // CHECK: @llvm.x86.avx512.gather3siv4.df
8969   return _mm256_mmask_i32gather_pd(__v1_old, __mask, __index, __addr, 2); 
8970 }
8971
8972 __m256i test_mm256_mask_i32gather_epi64(__m256i __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
8973   // CHECK-LABEL: @test_mm256_mask_i32gather_epi64
8974   // CHECK: @llvm.x86.avx512.gather3siv4.di
8975   return _mm256_mmask_i32gather_epi64(__v1_old, __mask, __index, __addr, 2); 
8976 }
8977
8978 __m128 test_mm_mask_i32gather_ps(__m128 __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
8979   // CHECK-LABEL: @test_mm_mask_i32gather_ps
8980   // CHECK: @llvm.x86.avx512.gather3siv4.sf
8981   return _mm_mmask_i32gather_ps(__v1_old, __mask, __index, __addr, 2); 
8982 }
8983
8984 __m128i test_mm_mask_i32gather_epi32(__m128i __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
8985   // CHECK-LABEL: @test_mm_mask_i32gather_epi32
8986   // CHECK: @llvm.x86.avx512.gather3siv4.si
8987   return _mm_mmask_i32gather_epi32(__v1_old, __mask, __index, __addr, 2); 
8988 }
8989
8990 __m256 test_mm256_mask_i32gather_ps(__m256 __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
8991   // CHECK-LABEL: @test_mm256_mask_i32gather_ps
8992   // CHECK: @llvm.x86.avx512.gather3siv8.sf
8993   return _mm256_mmask_i32gather_ps(__v1_old, __mask, __index, __addr, 2); 
8994 }
8995
8996 __m256i test_mm256_mask_i32gather_epi32(__m256i __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
8997   // CHECK-LABEL: @test_mm256_mask_i32gather_epi32
8998   // CHECK: @llvm.x86.avx512.gather3siv8.si
8999   return _mm256_mmask_i32gather_epi32(__v1_old, __mask, __index, __addr, 2); 
9000 }
9001
9002 __m256d test_mm256_permutex_pd(__m256d __X) {
9003   // CHECK-LABEL: @test_mm256_permutex_pd
9004   // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> undef, <4 x i32> <i32 3, i32 0, i32 0, i32 0>
9005   return _mm256_permutex_pd(__X, 3);
9006 }
9007
9008 __m256d test_mm256_mask_permutex_pd(__m256d __W, __mmask8 __U, __m256d __X) {
9009   // CHECK-LABEL: @test_mm256_mask_permutex_pd
9010   // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> undef, <4 x i32> <i32 1, i32 0, i32 0, i32 0>
9011   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
9012   return _mm256_mask_permutex_pd(__W, __U, __X, 1);
9013 }
9014
9015 __m256d test_mm256_maskz_permutex_pd(__mmask8 __U, __m256d __X) {
9016   // CHECK-LABEL: @test_mm256_maskz_permutex_pd
9017   // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> undef, <4 x i32> <i32 1, i32 0, i32 0, i32 0>
9018   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
9019   return _mm256_maskz_permutex_pd(__U, __X, 1);
9020 }
9021
9022 __m256i test_mm256_permutex_epi64(__m256i __X) {
9023   // CHECK-LABEL: @test_mm256_permutex_epi64
9024   // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> undef, <4 x i32> <i32 3, i32 0, i32 0, i32 0>
9025   return _mm256_permutex_epi64(__X, 3);
9026 }
9027
9028 __m256i test_mm256_mask_permutex_epi64(__m256i __W, __mmask8 __M, __m256i __X) {
9029   // CHECK-LABEL: @test_mm256_mask_permutex_epi64
9030   // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> undef, <4 x i32> <i32 3, i32 0, i32 0, i32 0>
9031   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
9032   return _mm256_mask_permutex_epi64(__W, __M, __X, 3);
9033 }
9034
9035 __m256i test_mm256_maskz_permutex_epi64(__mmask8 __M, __m256i __X) {
9036   // CHECK-LABEL: @test_mm256_maskz_permutex_epi64
9037   // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> undef, <4 x i32> <i32 3, i32 0, i32 0, i32 0>
9038   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
9039   return _mm256_maskz_permutex_epi64(__M, __X, 3);
9040 }
9041
9042 __m256d test_mm256_permutexvar_pd(__m256i __X, __m256d __Y) {
9043   // CHECK-LABEL: @test_mm256_permutexvar_pd
9044   // CHECK: @llvm.x86.avx512.permvar.df.256
9045   return _mm256_permutexvar_pd(__X, __Y);
9046 }
9047
9048 __m256d test_mm256_mask_permutexvar_pd(__m256d __W, __mmask8 __U, __m256i __X, __m256d __Y) {
9049   // CHECK-LABEL: @test_mm256_mask_permutexvar_pd
9050   // CHECK: @llvm.x86.avx512.permvar.df.256
9051   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
9052   return _mm256_mask_permutexvar_pd(__W, __U, __X, __Y);
9053 }
9054
9055 __m256d test_mm256_maskz_permutexvar_pd(__mmask8 __U, __m256i __X, __m256d __Y) {
9056   // CHECK-LABEL: @test_mm256_maskz_permutexvar_pd
9057   // CHECK: @llvm.x86.avx512.permvar.df.256
9058   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
9059   return _mm256_maskz_permutexvar_pd(__U, __X, __Y);
9060 }
9061
9062 __m256i test_mm256_maskz_permutexvar_epi64(__mmask8 __M, __m256i __X, __m256i __Y) {
9063   // CHECK-LABEL: @test_mm256_maskz_permutexvar_epi64
9064   // CHECK: @llvm.x86.avx512.permvar.di.256
9065   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
9066   return _mm256_maskz_permutexvar_epi64(__M, __X, __Y);
9067 }
9068
9069 __m256i test_mm256_mask_permutexvar_epi64(__m256i __W, __mmask8 __M, __m256i __X, __m256i __Y) {
9070   // CHECK-LABEL: @test_mm256_mask_permutexvar_epi64
9071   // CHECK: @llvm.x86.avx512.permvar.di.256
9072   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
9073   return _mm256_mask_permutexvar_epi64(__W, __M, __X, __Y);
9074 }
9075
9076 __m256 test_mm256_mask_permutexvar_ps(__m256 __W, __mmask8 __U, __m256i __X, __m256 __Y) {
9077   // CHECK-LABEL: @test_mm256_mask_permutexvar_ps
9078   // CHECK: @llvm.x86.avx2.permps
9079   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
9080   return _mm256_mask_permutexvar_ps(__W, __U, __X, __Y);
9081 }
9082
9083 __m256 test_mm256_maskz_permutexvar_ps(__mmask8 __U, __m256i __X, __m256 __Y) {
9084   // CHECK-LABEL: @test_mm256_maskz_permutexvar_ps
9085   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
9086   return _mm256_maskz_permutexvar_ps(__U, __X, __Y);
9087 }
9088
9089 __m256 test_mm256_permutexvar_ps(__m256i __X, __m256 __Y) {
9090   // CHECK-LABEL: @test_mm256_permutexvar_ps
9091   // CHECK: @llvm.x86.avx2.permps
9092   return _mm256_permutexvar_ps( __X, __Y);
9093 }
9094
9095 __m256i test_mm256_maskz_permutexvar_epi32(__mmask8 __M, __m256i __X, __m256i __Y) {
9096   // CHECK-LABEL: @test_mm256_maskz_permutexvar_epi32
9097   // CHECK: @llvm.x86.avx2.permd
9098   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
9099   return _mm256_maskz_permutexvar_epi32(__M, __X, __Y);
9100 }
9101
9102 __m256i test_mm256_permutexvar_epi32(__m256i __X, __m256i __Y) {
9103   // CHECK-LABEL: @test_mm256_permutexvar_epi32
9104   // CHECK: @llvm.x86.avx2.permd
9105   return _mm256_permutexvar_epi32(__X, __Y);
9106 }
9107
9108 __m256i test_mm256_mask_permutexvar_epi32(__m256i __W, __mmask8 __M, __m256i __X, __m256i __Y) {
9109   // CHECK-LABEL: @test_mm256_mask_permutexvar_epi32
9110   // CHECK: @llvm.x86.avx2.permd
9111   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
9112   return _mm256_mask_permutexvar_epi32(__W, __M, __X, __Y);
9113 }
9114
9115 __m128i test_mm_alignr_epi32(__m128i __A, __m128i __B) {
9116   // CHECK-LABEL: @test_mm_alignr_epi32
9117   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 1, i32 2, i32 3, i32 4>
9118   return _mm_alignr_epi32(__A, __B, 1);
9119 }
9120
9121 __m128i test_mm_mask_alignr_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
9122   // CHECK-LABEL: @test_mm_mask_alignr_epi32
9123   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 1, i32 2, i32 3, i32 4>
9124   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
9125   return _mm_mask_alignr_epi32(__W, __U, __A, __B, 1);
9126 }
9127
9128 __m128i test_mm_maskz_alignr_epi32(__mmask8 __U, __m128i __A, __m128i __B) {
9129   // CHECK-LABEL: @test_mm_maskz_alignr_epi32
9130   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 1, i32 2, i32 3, i32 4>
9131   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
9132   return _mm_maskz_alignr_epi32(__U, __A, __B, 1);
9133 }
9134
9135 __m256i test_mm256_alignr_epi32(__m256i __A, __m256i __B) {
9136   // CHECK-LABEL: @test_mm256_alignr_epi32
9137   // 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>
9138   return _mm256_alignr_epi32(__A, __B, 1);
9139 }
9140
9141 __m256i test_mm256_mask_alignr_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
9142   // CHECK-LABEL: @test_mm256_mask_alignr_epi32
9143   // 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>
9144   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
9145   return _mm256_mask_alignr_epi32(__W, __U, __A, __B, 1);
9146 }
9147
9148 __m256i test_mm256_maskz_alignr_epi32(__mmask8 __U, __m256i __A, __m256i __B) {
9149   // CHECK-LABEL: @test_mm256_maskz_alignr_epi32
9150   // 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>
9151   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
9152   return _mm256_maskz_alignr_epi32(__U, __A, __B, 1);
9153 }
9154
9155 __m128i test_mm_alignr_epi64(__m128i __A, __m128i __B) {
9156   // CHECK-LABEL: @test_mm_alignr_epi64
9157   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 1, i32 2>
9158   return _mm_alignr_epi64(__A, __B, 1);
9159 }
9160
9161 __m128i test_mm_mask_alignr_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
9162   // CHECK-LABEL: @test_mm_mask_alignr_epi64
9163   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 1, i32 2>
9164   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
9165   return _mm_mask_alignr_epi64(__W, __U, __A, __B, 1);
9166 }
9167
9168 __m128i test_mm_maskz_alignr_epi64(__mmask8 __U, __m128i __A, __m128i __B) {
9169   // CHECK-LABEL: @test_mm_maskz_alignr_epi64
9170   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 1, i32 2>
9171   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
9172   return _mm_maskz_alignr_epi64(__U, __A, __B, 1);
9173 }
9174
9175 __m256i test_mm256_alignr_epi64(__m256i __A, __m256i __B) {
9176   // CHECK-LABEL: @test_mm256_alignr_epi64
9177   // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 1, i32 2, i32 3, i32 4>
9178   return _mm256_alignr_epi64(__A, __B, 1);
9179 }
9180
9181 __m256i test_mm256_mask_alignr_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
9182   // CHECK-LABEL: @test_mm256_mask_alignr_epi64
9183   // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 1, i32 2, i32 3, i32 4>
9184   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
9185   return _mm256_mask_alignr_epi64(__W, __U, __A, __B, 1);
9186 }
9187
9188 __m256i test_mm256_maskz_alignr_epi64(__mmask8 __U, __m256i __A, __m256i __B) {
9189   // CHECK-LABEL: @test_mm256_maskz_alignr_epi64
9190   // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 1, i32 2, i32 3, i32 4>
9191   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
9192   return _mm256_maskz_alignr_epi64(__U, __A, __B, 1);
9193 }
9194
9195 __m128 test_mm_mask_movehdup_ps(__m128 __W, __mmask8 __U, __m128 __A) {
9196   // CHECK-LABEL: @test_mm_mask_movehdup_ps
9197   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 1, i32 1, i32 3, i32 3>
9198   // CHECK: select <4 x i1> %{{.*}} <4 x float> %{{.*}}, <4 x float> %{{.*}}
9199   return _mm_mask_movehdup_ps(__W, __U, __A);
9200 }
9201
9202 __m128 test_mm_maskz_movehdup_ps(__mmask8 __U, __m128 __A) {
9203   // CHECK-LABEL: @test_mm_maskz_movehdup_ps
9204   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 1, i32 1, i32 3, i32 3>
9205   // CHECK: select <4 x i1> %{{.*}} <4 x float> %{{.*}}, <4 x float> %{{.*}}
9206   return _mm_maskz_movehdup_ps(__U, __A);
9207 }
9208
9209 __m256 test_mm256_mask_movehdup_ps(__m256 __W, __mmask8 __U, __m256 __A) {
9210   // CHECK-LABEL: @test_mm256_mask_movehdup_ps
9211   // 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>
9212   // CHECK: select <8 x i1> %{{.*}} <8 x float> %{{.*}}, <8 x float> %{{.*}}
9213   return _mm256_mask_movehdup_ps(__W, __U, __A);
9214 }
9215
9216 __m256 test_mm256_maskz_movehdup_ps(__mmask8 __U, __m256 __A) {
9217   // CHECK-LABEL: @test_mm256_maskz_movehdup_ps
9218   // 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>
9219   // CHECK: select <8 x i1> %{{.*}} <8 x float> %{{.*}}, <8 x float> %{{.*}}
9220   return _mm256_maskz_movehdup_ps(__U, __A);
9221 }
9222
9223 __m128 test_mm_mask_moveldup_ps(__m128 __W, __mmask8 __U, __m128 __A) {
9224   // CHECK-LABEL: @test_mm_mask_moveldup_ps
9225   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 0, i32 0, i32 2, i32 2>
9226   // CHECK: select <4 x i1> %{{.*}} <4 x float> %{{.*}}, <4 x float> %{{.*}}
9227   return _mm_mask_moveldup_ps(__W, __U, __A);
9228 }
9229
9230 __m128 test_mm_maskz_moveldup_ps(__mmask8 __U, __m128 __A) {
9231   // CHECK-LABEL: @test_mm_maskz_moveldup_ps
9232   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 0, i32 0, i32 2, i32 2>
9233   // CHECK: select <4 x i1> %{{.*}} <4 x float> %{{.*}}, <4 x float> %{{.*}}
9234   return _mm_maskz_moveldup_ps(__U, __A);
9235 }
9236
9237 __m256 test_mm256_mask_moveldup_ps(__m256 __W, __mmask8 __U, __m256 __A) {
9238   // CHECK-LABEL: @test_mm256_mask_moveldup_ps
9239   // 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>
9240   // CHECK: select <8 x i1> %{{.*}} <8 x float> %{{.*}}, <8 x float> %{{.*}}
9241   return _mm256_mask_moveldup_ps(__W, __U, __A);
9242 }
9243
9244 __m256 test_mm256_maskz_moveldup_ps(__mmask8 __U, __m256 __A) {
9245   // CHECK-LABEL: @test_mm256_maskz_moveldup_ps
9246   // 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>
9247   // CHECK: select <8 x i1> %{{.*}} <8 x float> %{{.*}}, <8 x float> %{{.*}}
9248   return _mm256_maskz_moveldup_ps(__U, __A);
9249 }
9250
9251 __m128i test_mm_mask_shuffle_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
9252   // CHECK-LABEL: @test_mm_mask_shuffle_epi32
9253   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <4 x i32> <i32 1, i32 0, i32 0, i32 0>
9254   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
9255   return _mm_mask_shuffle_epi32(__W, __U, __A, 1);
9256 }
9257
9258 __m128i test_mm_maskz_shuffle_epi32(__mmask8 __U, __m128i __A) {
9259   // CHECK-LABEL: @test_mm_maskz_shuffle_epi32
9260   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <4 x i32> <i32 2, i32 0, i32 0, i32 0>
9261   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
9262   return _mm_maskz_shuffle_epi32(__U, __A, 2);
9263 }
9264
9265 __m256i test_mm256_mask_shuffle_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
9266   // CHECK-LABEL: @test_mm256_mask_shuffle_epi32
9267   // 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>
9268   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
9269   return _mm256_mask_shuffle_epi32(__W, __U, __A, 2);
9270 }
9271
9272 __m256i test_mm256_maskz_shuffle_epi32(__mmask8 __U, __m256i __A) {
9273   // CHECK-LABEL: @test_mm256_maskz_shuffle_epi32
9274   // 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>
9275   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
9276   return _mm256_maskz_shuffle_epi32(__U, __A, 2);
9277 }
9278
9279 __m128d test_mm_mask_mov_pd(__m128d __W, __mmask8 __U, __m128d __A) {
9280   // CHECK-LABEL: @test_mm_mask_mov_pd
9281   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
9282   return _mm_mask_mov_pd(__W, __U, __A);
9283 }
9284
9285 __m128d test_mm_maskz_mov_pd(__mmask8 __U, __m128d __A) {
9286   // CHECK-LABEL: @test_mm_maskz_mov_pd
9287   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
9288   return _mm_maskz_mov_pd(__U, __A);
9289 }
9290
9291 __m256d test_mm256_mask_mov_pd(__m256d __W, __mmask8 __U, __m256d __A) {
9292   // CHECK-LABEL: @test_mm256_mask_mov_pd
9293   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
9294   return _mm256_mask_mov_pd(__W, __U, __A);
9295 }
9296
9297 __m256d test_mm256_maskz_mov_pd(__mmask8 __U, __m256d __A) {
9298   // CHECK-LABEL: @test_mm256_maskz_mov_pd
9299   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
9300   return _mm256_maskz_mov_pd(__U, __A);
9301 }
9302
9303 __m128 test_mm_mask_mov_ps(__m128 __W, __mmask8 __U, __m128 __A) {
9304   // CHECK-LABEL: @test_mm_mask_mov_ps
9305   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
9306   return _mm_mask_mov_ps(__W, __U, __A);
9307 }
9308
9309 __m128 test_mm_maskz_mov_ps(__mmask8 __U, __m128 __A) {
9310   // CHECK-LABEL: @test_mm_maskz_mov_ps
9311   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
9312   return _mm_maskz_mov_ps(__U, __A);
9313 }
9314
9315 __m256 test_mm256_mask_mov_ps(__m256 __W, __mmask8 __U, __m256 __A) {
9316   // CHECK-LABEL: @test_mm256_mask_mov_ps
9317   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
9318   return _mm256_mask_mov_ps(__W, __U, __A);
9319 }
9320
9321 __m256 test_mm256_maskz_mov_ps(__mmask8 __U, __m256 __A) {
9322   // CHECK-LABEL: @test_mm256_maskz_mov_ps
9323   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
9324   return _mm256_maskz_mov_ps(__U, __A);
9325 }
9326
9327 __m128 test_mm_mask_cvtph_ps(__m128 __W, __mmask8 __U, __m128i __A) {
9328   // CHECK-LABEL: @test_mm_mask_cvtph_ps
9329   // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.128
9330   return _mm_mask_cvtph_ps(__W, __U, __A);
9331 }
9332
9333 __m128 test_mm_maskz_cvtph_ps(__mmask8 __U, __m128i __A) {
9334   // CHECK-LABEL: @test_mm_maskz_cvtph_ps
9335   // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.128
9336   return _mm_maskz_cvtph_ps(__U, __A);
9337 }
9338
9339 __m256 test_mm256_mask_cvtph_ps(__m256 __W, __mmask8 __U, __m128i __A) {
9340   // CHECK-LABEL: @test_mm256_mask_cvtph_ps
9341   // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.256
9342   return _mm256_mask_cvtph_ps(__W, __U, __A);
9343 }
9344
9345 __m256 test_mm256_maskz_cvtph_ps(__mmask8 __U, __m128i __A) {
9346   // CHECK-LABEL: @test_mm256_maskz_cvtph_ps
9347   // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.256
9348   return _mm256_maskz_cvtph_ps(__U, __A);
9349 }
9350
9351 __m128i test_mm_mask_cvtps_ph(__m128i __W, __mmask8 __U, __m128 __A) {
9352   // CHECK-LABEL: @test_mm_mask_cvtps_ph
9353   // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.128
9354   return _mm_mask_cvtps_ph(__W, __U, __A);
9355 }
9356
9357 __m128i test_mm_maskz_cvtps_ph(__mmask8 __U, __m128 __A) {
9358   // CHECK-LABEL: @test_mm_maskz_cvtps_ph
9359   // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.128
9360   return _mm_maskz_cvtps_ph(__U, __A);
9361 }
9362
9363 __m128i test_mm256_mask_cvtps_ph(__m128i __W, __mmask8 __U, __m256 __A) {
9364   // CHECK-LABEL: @test_mm256_mask_cvtps_ph
9365   // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.256
9366   return _mm256_mask_cvtps_ph(__W, __U, __A);
9367 }
9368
9369 __m128i test_mm256_maskz_cvtps_ph(__mmask8 __U, __m256 __A) {
9370   // CHECK-LABEL: @test_mm256_maskz_cvtps_ph
9371   // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.256
9372   return _mm256_maskz_cvtps_ph(__U, __A);
9373 }
9374
9375 __m128i test_mm_mask_cvt_roundps_ph(__m128i __W, __mmask8 __U, __m128 __A) {
9376   // CHECK-LABEL: @test_mm_mask_cvt_roundps_ph
9377   // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.128
9378   return _mm_mask_cvt_roundps_ph(__W, __U, __A, _MM_FROUND_CUR_DIRECTION);
9379 }
9380
9381 __m128i test_mm_maskz_cvt_roundps_ph(__mmask8 __U, __m128 __A) {
9382   // CHECK-LABEL: @test_mm_maskz_cvt_roundps_ph
9383   // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.128
9384   return _mm_maskz_cvt_roundps_ph(__U, __A, _MM_FROUND_CUR_DIRECTION);
9385 }
9386
9387 __m128i test_mm256_mask_cvt_roundps_ph(__m128i __W, __mmask8 __U, __m256 __A) {
9388   // CHECK-LABEL: @test_mm256_mask_cvt_roundps_ph
9389   // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.256
9390   return _mm256_mask_cvt_roundps_ph(__W, __U, __A, _MM_FROUND_CUR_DIRECTION);
9391 }
9392
9393 __m128i test_mm256_maskz_cvt_roundps_ph(__mmask8 __U, __m256 __A) {
9394   // CHECK-LABEL: @test_mm256_maskz_cvt_roundps_ph
9395   // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.256
9396   return _mm256_maskz_cvt_roundps_ph(__U, __A, _MM_FROUND_CUR_DIRECTION);
9397 }
9398
9399 __mmask8 test_mm_cmpeq_epi32_mask(__m128i __a, __m128i __b) {
9400   // CHECK-LABEL: @test_mm_cmpeq_epi32_mask
9401   // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}
9402   return (__mmask8)_mm_cmpeq_epi32_mask(__a, __b);
9403 }
9404
9405 __mmask8 test_mm_mask_cmpeq_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
9406   // CHECK-LABEL: @test_mm_mask_cmpeq_epi32_mask
9407   // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}
9408   // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
9409   return (__mmask8)_mm_mask_cmpeq_epi32_mask(__u, __a, __b);
9410 }
9411
9412 __mmask8 test_mm_mask_cmpeq_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
9413   // CHECK-LABEL: @test_mm_mask_cmpeq_epi64_mask
9414   // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}
9415   // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
9416   return (__mmask8)_mm_mask_cmpeq_epi64_mask(__u, __a, __b);
9417 }
9418
9419 __mmask8 test_mm_cmpeq_epi64_mask(__m128i __a, __m128i __b) {
9420   // CHECK-LABEL: @test_mm_cmpeq_epi64_mask
9421   // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}
9422   return (__mmask8)_mm_cmpeq_epi64_mask(__a, __b);
9423 }
9424
9425 __mmask8 test_mm_cmpgt_epi32_mask(__m128i __a, __m128i __b) {
9426   // CHECK-LABEL: @test_mm_cmpgt_epi32_mask
9427   // CHECK: icmp sgt <4 x i32> %{{.*}}, %{{.*}}
9428   return (__mmask8)_mm_cmpgt_epi32_mask(__a, __b);
9429 }
9430
9431 __mmask8 test_mm_mask_cmpgt_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
9432   // CHECK-LABEL: @test_mm_mask_cmpgt_epi32_mask
9433   // CHECK: icmp sgt <4 x i32> %{{.*}}, %{{.*}}
9434   // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
9435   return (__mmask8)_mm_mask_cmpgt_epi32_mask(__u, __a, __b);
9436 }
9437
9438 __mmask8 test_mm_mask_cmpgt_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
9439   // CHECK-LABEL: @test_mm_mask_cmpgt_epi64_mask
9440   // CHECK: icmp sgt <2 x i64> %{{.*}}, %{{.*}}
9441   // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
9442   return (__mmask8)_mm_mask_cmpgt_epi64_mask(__u, __a, __b);
9443 }
9444
9445 __mmask8 test_mm_cmpgt_epi64_mask(__m128i __a, __m128i __b) {
9446   // CHECK-LABEL: @test_mm_cmpgt_epi64_mask
9447   // CHECK: icmp sgt <2 x i64> %{{.*}}, %{{.*}}
9448   return (__mmask8)_mm_cmpgt_epi64_mask(__a, __b);
9449 }
9450
9451 __mmask8 test_mm256_cmpeq_epi32_mask(__m256i __a, __m256i __b) {
9452   // CHECK-LABEL: @test_mm256_cmpeq_epi32_mask
9453   // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}}
9454   return (__mmask8)_mm256_cmpeq_epi32_mask(__a, __b);
9455 }
9456
9457 __mmask8 test_mm256_mask_cmpeq_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
9458   // CHECK-LABEL: @test_mm256_mask_cmpeq_epi32_mask
9459   // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}}
9460   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
9461   return (__mmask8)_mm256_mask_cmpeq_epi32_mask(__u, __a, __b);
9462 }
9463
9464 __mmask8 test_mm256_mask_cmpeq_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
9465   // CHECK-LABEL: @test_mm256_mask_cmpeq_epi64_mask
9466   // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}}
9467   // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
9468   return (__mmask8)_mm256_mask_cmpeq_epi64_mask(__u, __a, __b);
9469 }
9470
9471 __mmask8 test_mm256_cmpeq_epi64_mask(__m256i __a, __m256i __b) {
9472   // CHECK-LABEL: @test_mm256_cmpeq_epi64_mask
9473   // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}}
9474   return (__mmask8)_mm256_cmpeq_epi64_mask(__a, __b);
9475 }
9476
9477 __mmask8 test_mm256_cmpgt_epi32_mask(__m256i __a, __m256i __b) {
9478   // CHECK-LABEL: @test_mm256_cmpgt_epi32_mask
9479   // CHECK: icmp sgt <8 x i32> %{{.*}}, %{{.*}}
9480   return (__mmask8)_mm256_cmpgt_epi32_mask(__a, __b);
9481 }
9482
9483 __mmask8 test_mm256_mask_cmpgt_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
9484   // CHECK-LABEL: @test_mm256_mask_cmpgt_epi32_mask
9485   // CHECK: icmp sgt <8 x i32> %{{.*}}, %{{.*}}
9486   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
9487   return (__mmask8)_mm256_mask_cmpgt_epi32_mask(__u, __a, __b);
9488 }
9489
9490 __mmask8 test_mm256_mask_cmpgt_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
9491   // CHECK-LABEL: @test_mm256_mask_cmpgt_epi64_mask
9492   // CHECK: icmp sgt <4 x i64> %{{.*}}, %{{.*}}
9493   // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
9494   return (__mmask8)_mm256_mask_cmpgt_epi64_mask(__u, __a, __b);
9495 }
9496
9497 __mmask8 test_mm256_cmpgt_epi64_mask(__m256i __a, __m256i __b) {
9498   // CHECK-LABEL: @test_mm256_cmpgt_epi64_mask
9499   // CHECK: icmp sgt <4 x i64> %{{.*}}, %{{.*}}
9500   return (__mmask8)_mm256_cmpgt_epi64_mask(__a, __b);
9501 }