]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CodeGen/avx512f-builtins.c
Vendor import of clang trunk r306956:
[FreeBSD/FreeBSD.git] / test / CodeGen / avx512f-builtins.c
1 // RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512f -emit-llvm -o - -Wall -Werror | FileCheck %s
2
3 // FIXME: It's wrong to check LLVM IR transformations from clang. This run should be removed and tests added to the appropriate LLVM pass.
4
5 // RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512f -O2 -emit-llvm -o - -Wall -Werror | FileCheck %s -check-prefix=O2
6
7 #include <immintrin.h>
8
9 __m512d test_mm512_sqrt_pd(__m512d a)
10 {
11   // CHECK-LABEL: @test_mm512_sqrt_pd
12   // CHECK: @llvm.x86.avx512.mask.sqrt.pd.512
13   return _mm512_sqrt_pd(a);
14 }
15
16 __m512d test_mm512_mask_sqrt_pd (__m512d __W, __mmask8 __U, __m512d __A)
17 {
18   // CHECK-LABEL: @test_mm512_mask_sqrt_pd 
19   // CHECK: @llvm.x86.avx512.mask.sqrt.pd.512
20   return _mm512_mask_sqrt_pd (__W,__U,__A);
21 }
22
23 __m512d test_mm512_maskz_sqrt_pd (__mmask8 __U, __m512d __A)
24 {
25   // CHECK-LABEL: @test_mm512_maskz_sqrt_pd 
26   // CHECK: @llvm.x86.avx512.mask.sqrt.pd.512
27   return _mm512_maskz_sqrt_pd (__U,__A);
28 }
29
30 __m512d test_mm512_mask_sqrt_round_pd(__m512d __W,__mmask8 __U,__m512d __A)
31 {
32   // CHECK-LABEL: @test_mm512_mask_sqrt_round_pd
33   // CHECK: @llvm.x86.avx512.mask.sqrt.pd.512
34   return _mm512_mask_sqrt_round_pd(__W,__U,__A,_MM_FROUND_CUR_DIRECTION);
35 }
36
37 __m512d test_mm512_maskz_sqrt_round_pd(__mmask8 __U,__m512d __A)
38 {
39   // CHECK-LABEL: @test_mm512_maskz_sqrt_round_pd
40   // CHECK: @llvm.x86.avx512.mask.sqrt.pd.512
41   return _mm512_maskz_sqrt_round_pd(__U,__A,_MM_FROUND_CUR_DIRECTION);
42 }
43
44 __m512d test_mm512_sqrt_round_pd(__m512d __A)
45 {
46   // CHECK-LABEL: @test_mm512_sqrt_round_pd
47   // CHECK: @llvm.x86.avx512.mask.sqrt.pd.512
48   return _mm512_sqrt_round_pd(__A,_MM_FROUND_CUR_DIRECTION);
49 }
50
51 __m512 test_mm512_sqrt_ps(__m512 a)
52 {
53   // CHECK-LABEL: @test_mm512_sqrt_ps
54   // CHECK: @llvm.x86.avx512.mask.sqrt.ps.512
55   return _mm512_sqrt_ps(a);
56 }
57
58 __m512 test_mm512_mask_sqrt_ps(__m512 __W, __mmask16 __U, __m512 __A)
59 {
60   // CHECK-LABEL: @test_mm512_mask_sqrt_ps
61   // CHECK: @llvm.x86.avx512.mask.sqrt.ps.512
62   return _mm512_mask_sqrt_ps( __W, __U, __A);
63 }
64
65 __m512 test_mm512_maskz_sqrt_ps( __mmask16 __U, __m512 __A)
66 {
67   // CHECK-LABEL: @test_mm512_maskz_sqrt_ps
68   // CHECK: @llvm.x86.avx512.mask.sqrt.ps.512
69   return _mm512_maskz_sqrt_ps(__U ,__A);
70 }
71
72 __m512 test_mm512_mask_sqrt_round_ps(__m512 __W,__mmask16 __U,__m512 __A)
73 {
74   // CHECK-LABEL: @test_mm512_mask_sqrt_round_ps
75   // CHECK: @llvm.x86.avx512.mask.sqrt.ps.512
76   return _mm512_mask_sqrt_round_ps(__W,__U,__A,_MM_FROUND_CUR_DIRECTION);
77 }
78
79 __m512 test_mm512_maskz_sqrt_round_ps(__mmask16 __U,__m512 __A)
80 {
81   // CHECK-LABEL: @test_mm512_maskz_sqrt_round_ps
82   // CHECK: @llvm.x86.avx512.mask.sqrt.ps.512
83   return _mm512_maskz_sqrt_round_ps(__U,__A,_MM_FROUND_CUR_DIRECTION);
84 }
85
86 __m512 test_mm512_sqrt_round_ps(__m512 __A)
87 {
88   // CHECK-LABEL: @test_mm512_sqrt_round_ps
89   // CHECK: @llvm.x86.avx512.mask.sqrt.ps.512
90   return _mm512_sqrt_round_ps(__A,_MM_FROUND_CUR_DIRECTION);
91 }
92
93 __m512d test_mm512_rsqrt14_pd(__m512d a)
94 {
95   // CHECK-LABEL: @test_mm512_rsqrt14_pd
96   // CHECK: @llvm.x86.avx512.rsqrt14.pd.512
97   return _mm512_rsqrt14_pd(a);
98 }
99
100 __m512d test_mm512_mask_rsqrt14_pd (__m512d __W, __mmask8 __U, __m512d __A)
101 {
102   // CHECK-LABEL: @test_mm512_mask_rsqrt14_pd 
103   // CHECK: @llvm.x86.avx512.rsqrt14.pd.512
104   return _mm512_mask_rsqrt14_pd (__W,__U,__A);
105 }
106
107 __m512d test_mm512_maskz_rsqrt14_pd (__mmask8 __U, __m512d __A)
108 {
109   // CHECK-LABEL: @test_mm512_maskz_rsqrt14_pd 
110   // CHECK: @llvm.x86.avx512.rsqrt14.pd.512
111   return _mm512_maskz_rsqrt14_pd (__U,__A);
112 }
113
114 __m512 test_mm512_rsqrt14_ps(__m512 a)
115 {
116   // CHECK-LABEL: @test_mm512_rsqrt14_ps
117   // CHECK: @llvm.x86.avx512.rsqrt14.ps.512
118   return _mm512_rsqrt14_ps(a);
119 }
120
121 __m512 test_mm512_mask_rsqrt14_ps (__m512 __W, __mmask16 __U, __m512 __A)
122 {
123   // CHECK-LABEL: @test_mm512_mask_rsqrt14_ps 
124   // CHECK: @llvm.x86.avx512.rsqrt14.ps.512
125   return _mm512_mask_rsqrt14_ps (__W,__U,__A);
126 }
127
128 __m512 test_mm512_maskz_rsqrt14_ps (__mmask16 __U, __m512 __A)
129 {
130   // CHECK-LABEL: @test_mm512_maskz_rsqrt14_ps 
131   // CHECK: @llvm.x86.avx512.rsqrt14.ps.512
132   return _mm512_maskz_rsqrt14_ps (__U,__A);
133 }
134
135 __m512 test_mm512_add_ps(__m512 a, __m512 b)
136 {
137   // CHECK-LABEL: @test_mm512_add_ps
138   // CHECK: fadd <16 x float>
139   return _mm512_add_ps(a, b);
140 }
141
142 __m512d test_mm512_add_pd(__m512d a, __m512d b)
143 {
144   // CHECK-LABEL: @test_mm512_add_pd
145   // CHECK: fadd <8 x double>
146   return _mm512_add_pd(a, b);
147 }
148
149 __m512 test_mm512_mul_ps(__m512 a, __m512 b)
150 {
151   // CHECK-LABEL: @test_mm512_mul_ps
152   // CHECK: fmul <16 x float>
153   return _mm512_mul_ps(a, b);
154 }
155
156 __m512d test_mm512_mul_pd(__m512d a, __m512d b)
157 {
158   // CHECK-LABEL: @test_mm512_mul_pd
159   // CHECK: fmul <8 x double>
160   return _mm512_mul_pd(a, b);
161 }
162
163 void test_mm512_storeu_si512 (void *__P, __m512i __A)
164 {
165   // CHECK-LABEL: @test_mm512_storeu_si512
166   // CHECK: store <16 x i32> %{{.*}}, <16 x i32>* %{{.*}}, align 1{{$}}
167   // CHECK-NEXT: ret void
168   _mm512_storeu_si512 ( __P,__A);
169 }
170
171 void test_mm512_storeu_ps(void *p, __m512 a)
172 {
173   // CHECK-LABEL: @test_mm512_storeu_ps
174   // CHECK: store <16 x float> %{{.*}}, <16 x float>* %{{.*}}, align 1{{$}}
175   // CHECK-NEXT: ret void
176   _mm512_storeu_ps(p, a);
177 }
178
179 void test_mm512_storeu_pd(void *p, __m512d a)
180 {
181   // CHECK-LABEL: @test_mm512_storeu_pd
182   // CHECK: store <8 x double> %{{.*}}, <8 x double>* %{{.*}}, align 1{{$}}
183   // CHECK-NEXT: ret void
184   _mm512_storeu_pd(p, a);
185 }
186
187 void test_mm512_mask_store_ps(void *p, __m512 a, __mmask16 m)
188 {
189   // CHECK-LABEL: @test_mm512_mask_store_ps
190   // CHECK: @llvm.masked.store.v16f32.p0v16f32(<16 x float> %{{.*}}, <16 x float>* %{{.*}}, i32 64, <16 x i1> %{{.*}})
191   _mm512_mask_store_ps(p, m, a);
192 }
193
194 void test_mm512_store_si512 (void *__P, __m512i __A)
195 {
196   // CHECK-LABEL: @test_mm512_store_si512 
197   // CHECK: load <8 x i64>, <8 x i64>* %__A.addr.i, align 64
198   // CHECK: [[SI512_3:%.+]] = load i8*, i8** %__P.addr.i, align 8
199   // CHECK: bitcast i8* [[SI512_3]] to <8 x i64>*
200   // CHECK: store <8 x i64>  
201   _mm512_store_si512 ( __P,__A);
202 }
203
204 void test_mm512_store_epi32 (void *__P, __m512i __A)
205 {
206   // CHECK-LABEL: @test_mm512_store_epi32 
207   // CHECK: load <8 x i64>, <8 x i64>* %__A.addr.i, align 64
208   // CHECK: [[Si32_3:%.+]] = load i8*, i8** %__P.addr.i, align 8
209   // CHECK: bitcast i8* [[Si32_3]] to <8 x i64>*
210   // CHECK: store <8 x i64>  
211   _mm512_store_epi32 ( __P,__A);
212 }
213
214 void test_mm512_store_epi64 (void *__P, __m512i __A)
215 {
216   // CHECK-LABEL: @test_mm512_store_epi64 
217   // CHECK: load <8 x i64>, <8 x i64>* %__A.addr.i, align 64
218   // CHECK: [[SI64_3:%.+]] = load i8*, i8** %__P.addr.i, align 8
219   // CHECK: bitcast i8* [[SI64_3]] to <8 x i64>*
220   // CHECK: store <8 x i64>  
221   _mm512_store_epi64 ( __P,__A);
222 }
223
224 void test_mm512_store_ps(void *p, __m512 a)
225 {
226   // CHECK-LABEL: @test_mm512_store_ps
227   // CHECK: store <16 x float>
228   _mm512_store_ps(p, a);
229 }
230
231 void test_mm512_store_pd(void *p, __m512d a)
232 {
233   // CHECK-LABEL: @test_mm512_store_pd
234   // CHECK: store <8 x double>
235   _mm512_store_pd(p, a);
236 }
237
238 void test_mm512_mask_store_pd(void *p, __m512d a, __mmask8 m)
239 {
240   // CHECK-LABEL: @test_mm512_mask_store_pd
241   // CHECK: @llvm.masked.store.v8f64.p0v8f64(<8 x double> %{{.*}}, <8 x double>* %{{.*}}, i32 64, <8 x i1> %{{.*}})
242   _mm512_mask_store_pd(p, m, a);
243 }
244
245 void test_mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A) {
246   // CHECK-LABEL: @test_mm512_mask_storeu_epi32
247   // CHECK: @llvm.masked.store.v16i32.p0v16i32(<16 x i32> %{{.*}}, <16 x i32>* %{{.*}}, i32 1, <16 x i1> %{{.*}})
248   return _mm512_mask_storeu_epi32(__P, __U, __A); 
249 }
250
251 void test_mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A) {
252   // CHECK-LABEL: @test_mm512_mask_storeu_epi64
253   // CHECK: @llvm.masked.store.v8i64.p0v8i64(<8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, i32 1, <8 x i1> %{{.*}})
254   return _mm512_mask_storeu_epi64(__P, __U, __A); 
255 }
256
257 __m512i test_mm512_loadu_si512 (void *__P)
258 {
259   // CHECK-LABEL: @test_mm512_loadu_si512 
260   // CHECK: load <16 x i32>, <16 x i32>* %{{.*}}, align 1{{$}}
261   return _mm512_loadu_si512 ( __P);
262 }
263
264 __m512i test_mm512_mask_loadu_epi32 (__m512i __W, __mmask16 __U, void *__P)
265 {
266   // CHECK-LABEL: @test_mm512_mask_loadu_epi32 
267   // CHECK: @llvm.masked.load.v16i32.p0v16i32(<16 x i32>* %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
268   return _mm512_mask_loadu_epi32 (__W,__U, __P);
269 }
270
271 __m512i test_mm512_mask_loadu_epi64 (__m512i __W, __mmask8 __U, void *__P)
272 {
273   // CHECK-LABEL: @test_mm512_mask_loadu_epi64 
274   // CHECK: @llvm.masked.load.v8i64.p0v8i64(<8 x i64>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
275   return _mm512_mask_loadu_epi64 (__W,__U, __P);
276 }
277
278 __m512 test_mm512_loadu_ps(void *p)
279 {
280   // CHECK-LABEL: @test_mm512_loadu_ps
281   // CHECK: load <16 x float>, <16 x float>* {{.*}}, align 1{{$}}
282   return _mm512_loadu_ps(p);
283 }
284
285 __m512 test_mm512_mask_loadu_ps (__m512 __W, __mmask16 __U, void *__P)
286 {
287   // CHECK-LABEL: @test_mm512_mask_loadu_ps 
288   // CHECK: @llvm.masked.load.v16f32.p0v16f32(<16 x float>* %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
289   return _mm512_mask_loadu_ps (__W,__U, __P);
290 }
291
292 __m512d test_mm512_loadu_pd(void *p)
293 {
294   // CHECK-LABEL: @test_mm512_loadu_pd
295   // CHECK: load <8 x double>, <8 x double>* {{.*}}, align 1{{$}}
296   return _mm512_loadu_pd(p);
297 }
298
299 __m512d test_mm512_mask_loadu_pd (__m512d __W, __mmask8 __U, void *__P)
300 {
301   // CHECK-LABEL: @test_mm512_mask_loadu_pd 
302   // CHECK: @llvm.masked.load.v8f64.p0v8f64(<8 x double>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
303   return _mm512_mask_loadu_pd (__W,__U, __P);
304 }
305
306 __m512i test_mm512_load_si512 (void *__P)
307 {
308   // CHECK-LABEL: @test_mm512_load_si512 
309   // CHECK: [[LI512_1:%.+]] = load i8*, i8** %__P.addr.i, align 8
310   // CHECK: [[LI512_2:%.+]] = bitcast i8* [[LI512_1]] to <8 x i64>*
311   // CHECK: load <8 x i64>, <8 x i64>* [[LI512_2]], align 64
312   return _mm512_load_si512 ( __P);
313 }
314
315 __m512i test_mm512_load_epi32 (void *__P)
316 {
317   // CHECK-LABEL: @test_mm512_load_epi32 
318   // CHECK: [[LI32_1:%.+]] = load i8*, i8** %__P.addr.i, align 8
319   // CHECK: [[LI32_2:%.+]] = bitcast i8* [[LI32_1]] to <8 x i64>*
320   // CHECK: load <8 x i64>, <8 x i64>* [[LI32_2]], align 64
321   return _mm512_load_epi32 ( __P);
322 }
323
324 __m512i test_mm512_load_epi64 (void *__P)
325 {
326   // CHECK-LABEL: @test_mm512_load_epi64 
327   // CHECK: [[LI64_1:%.+]] = load i8*, i8** %__P.addr.i, align 8
328   // CHECK: [[LI64_2:%.+]] = bitcast i8* [[LI64_1]] to <8 x i64>*
329   // CHECK: load <8 x i64>, <8 x i64>* [[LI64_2]], align 64
330   return _mm512_load_epi64 ( __P);
331 }
332
333 __m512 test_mm512_load_ps(void *p)
334 {
335   // CHECK-LABEL: @test_mm512_load_ps
336   // CHECK: load <16 x float>, <16 x float>* %{{.*}}, align 64
337   return _mm512_load_ps(p);
338 }
339
340 __m512 test_mm512_mask_load_ps (__m512 __W, __mmask16 __U, void *__P)
341 {
342   // CHECK-LABEL: @test_mm512_mask_load_ps 
343   // CHECK: @llvm.masked.load.v16f32.p0v16f32(<16 x float>* %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
344   return _mm512_mask_load_ps (__W,__U, __P);
345 }
346
347 __m512 test_mm512_maskz_load_ps(__mmask16 __U, void *__P)
348 {
349   // CHECK-LABEL: @test_mm512_maskz_load_ps
350   // CHECK: @llvm.masked.load.v16f32.p0v16f32(<16 x float>* %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
351   return _mm512_maskz_load_ps(__U, __P);
352 }
353
354 __m512d test_mm512_load_pd(void *p)
355 {
356   // CHECK-LABEL: @test_mm512_load_pd
357   // CHECK: load <8 x double>, <8 x double>* %{{.*}}, align 64
358   return _mm512_load_pd(p);
359 }
360
361 __m512d test_mm512_mask_load_pd (__m512d __W, __mmask8 __U, void *__P)
362 {
363   // CHECK-LABEL: @test_mm512_mask_load_pd 
364   // CHECK: @llvm.masked.load.v8f64.p0v8f64(<8 x double>* %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
365   return _mm512_mask_load_pd (__W,__U, __P);
366 }
367
368 __m512d test_mm512_maskz_load_pd(__mmask8 __U, void *__P)
369 {
370   // CHECK-LABEL: @test_mm512_maskz_load_pd
371   // CHECK: @llvm.masked.load.v8f64.p0v8f64(<8 x double>* %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
372   return _mm512_maskz_load_pd(__U, __P);
373 }
374
375 __m512d test_mm512_set1_pd(double d)
376 {
377   // CHECK-LABEL: @test_mm512_set1_pd
378   // CHECK: insertelement <8 x double> {{.*}}, i32 0
379   // CHECK: insertelement <8 x double> {{.*}}, i32 1
380   // CHECK: insertelement <8 x double> {{.*}}, i32 2
381   // CHECK: insertelement <8 x double> {{.*}}, i32 3
382   // CHECK: insertelement <8 x double> {{.*}}, i32 4
383   // CHECK: insertelement <8 x double> {{.*}}, i32 5
384   // CHECK: insertelement <8 x double> {{.*}}, i32 6
385   // CHECK: insertelement <8 x double> {{.*}}, i32 7
386   return _mm512_set1_pd(d);
387 }
388
389 __mmask16 test_mm512_knot(__mmask16 a)
390 {
391   // CHECK-LABEL: @test_mm512_knot
392   // CHECK: @llvm.x86.avx512.knot.w
393   return _mm512_knot(a);
394 }
395
396 __m512i test_mm512_alignr_epi32(__m512i a, __m512i b)
397 {
398   // CHECK-LABEL: @test_mm512_alignr_epi32
399   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17>
400   return _mm512_alignr_epi32(a, b, 2);
401 }
402
403 __m512i test_mm512_mask_alignr_epi32(__m512i w, __mmask16 u, __m512i a, __m512i b)
404 {
405   // CHECK-LABEL: @test_mm512_mask_alignr_epi32
406   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17>
407   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> {{.*}}
408   return _mm512_mask_alignr_epi32(w, u, a, b, 2);
409 }
410
411 __m512i test_mm512_maskz_alignr_epi32( __mmask16 u, __m512i a, __m512i b)
412 {
413   // CHECK-LABEL: @test_mm512_maskz_alignr_epi32
414   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17>
415   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> {{.*}}
416   return _mm512_maskz_alignr_epi32(u, a, b, 2);
417 }
418
419 __m512i test_mm512_alignr_epi64(__m512i a, __m512i b)
420 {
421   // CHECK-LABEL: @test_mm512_alignr_epi64
422   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9>
423   return _mm512_alignr_epi64(a, b, 2);
424 }
425
426 __m512i test_mm512_mask_alignr_epi64(__m512i w, __mmask8 u, __m512i a, __m512i b)
427 {
428   // CHECK-LABEL: @test_mm512_mask_alignr_epi64
429   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9>
430   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> {{.*}}
431   return _mm512_mask_alignr_epi64(w, u, a, b, 2);
432 }
433
434 __m512i test_mm512_maskz_alignr_epi64( __mmask8 u, __m512i a, __m512i b)
435 {
436   // CHECK-LABEL: @test_mm512_maskz_alignr_epi64
437   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9>
438   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> {{.*}}
439   return _mm512_maskz_alignr_epi64(u, a, b, 2);
440 }
441
442 __m512d test_mm512_fmadd_round_pd(__m512d __A, __m512d __B, __m512d __C) {
443   // CHECK-LABEL: @test_mm512_fmadd_round_pd
444   // CHECK: @llvm.x86.avx512.mask.vfmadd.pd.512
445   return _mm512_fmadd_round_pd(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
446 }
447
448 __m512d test_mm512_mask_fmadd_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
449   // CHECK-LABEL: @test_mm512_mask_fmadd_round_pd
450   // CHECK: @llvm.x86.avx512.mask.vfmadd.pd.512
451   return _mm512_mask_fmadd_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
452 }
453 __m512d test_mm512_mask3_fmadd_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
454   // CHECK-LABEL: @test_mm512_mask3_fmadd_round_pd
455   // CHECK: @llvm.x86.avx512.mask3.vfmadd.pd.512
456   return _mm512_mask3_fmadd_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
457 }
458 __m512d test_mm512_maskz_fmadd_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
459   // CHECK-LABEL: @test_mm512_maskz_fmadd_round_pd
460   // CHECK: @llvm.x86.avx512.maskz.vfmadd.pd.512
461   return _mm512_maskz_fmadd_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
462 }
463 __m512d test_mm512_fmsub_round_pd(__m512d __A, __m512d __B, __m512d __C) {
464   // CHECK-LABEL: @test_mm512_fmsub_round_pd
465   // CHECK: @llvm.x86.avx512.mask.vfmadd.pd.512
466   return _mm512_fmsub_round_pd(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
467 }
468 __m512d test_mm512_mask_fmsub_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
469   // CHECK-LABEL: @test_mm512_mask_fmsub_round_pd
470   // CHECK: @llvm.x86.avx512.mask.vfmadd.pd.512
471   return _mm512_mask_fmsub_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
472 }
473 __m512d test_mm512_maskz_fmsub_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
474   // CHECK-LABEL: @test_mm512_maskz_fmsub_round_pd
475   // CHECK: @llvm.x86.avx512.maskz.vfmadd.pd.512
476   return _mm512_maskz_fmsub_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
477 }
478 __m512d test_mm512_fnmadd_round_pd(__m512d __A, __m512d __B, __m512d __C) {
479   // CHECK-LABEL: @test_mm512_fnmadd_round_pd
480   // CHECK: @llvm.x86.avx512.mask.vfmadd.pd.512
481   return _mm512_fnmadd_round_pd(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
482 }
483 __m512d test_mm512_mask3_fnmadd_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
484   // CHECK-LABEL: @test_mm512_mask3_fnmadd_round_pd
485   // CHECK: @llvm.x86.avx512.mask3.vfmadd.pd.512
486   return _mm512_mask3_fnmadd_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
487 }
488 __m512d test_mm512_maskz_fnmadd_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
489   // CHECK-LABEL: @test_mm512_maskz_fnmadd_round_pd
490   // CHECK: @llvm.x86.avx512.maskz.vfmadd.pd.512
491   return _mm512_maskz_fnmadd_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
492 }
493 __m512d test_mm512_fnmsub_round_pd(__m512d __A, __m512d __B, __m512d __C) {
494   // CHECK-LABEL: @test_mm512_fnmsub_round_pd
495   // CHECK: @llvm.x86.avx512.mask.vfmadd.pd.512
496   return _mm512_fnmsub_round_pd(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
497 }
498 __m512d test_mm512_maskz_fnmsub_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
499   // CHECK-LABEL: @test_mm512_maskz_fnmsub_round_pd
500   // CHECK: @llvm.x86.avx512.maskz.vfmadd.pd.512
501   return _mm512_maskz_fnmsub_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
502 }
503 __m512d test_mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C) {
504   // CHECK-LABEL: @test_mm512_fmadd_pd
505   // CHECK: @llvm.x86.avx512.mask.vfmadd.pd.512
506   return _mm512_fmadd_pd(__A, __B, __C);
507 }
508 __m512d test_mm512_mask_fmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
509   // CHECK-LABEL: @test_mm512_mask_fmadd_pd
510   // CHECK: @llvm.x86.avx512.mask.vfmadd.pd.512
511   return _mm512_mask_fmadd_pd(__A, __U, __B, __C);
512 }
513 __m512d test_mm512_mask3_fmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
514   // CHECK-LABEL: @test_mm512_mask3_fmadd_pd
515   // CHECK: @llvm.x86.avx512.mask3.vfmadd.pd.512
516   return _mm512_mask3_fmadd_pd(__A, __B, __C, __U);
517 }
518 __m512d test_mm512_maskz_fmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
519   // CHECK-LABEL: @test_mm512_maskz_fmadd_pd
520   // CHECK: @llvm.x86.avx512.maskz.vfmadd.pd.512
521   return _mm512_maskz_fmadd_pd(__U, __A, __B, __C);
522 }
523 __m512d test_mm512_fmsub_pd(__m512d __A, __m512d __B, __m512d __C) {
524   // CHECK-LABEL: @test_mm512_fmsub_pd
525   // CHECK: @llvm.x86.avx512.mask.vfmadd.pd.512
526   return _mm512_fmsub_pd(__A, __B, __C);
527 }
528 __m512d test_mm512_mask_fmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
529   // CHECK-LABEL: @test_mm512_mask_fmsub_pd
530   // CHECK: @llvm.x86.avx512.mask.vfmadd.pd.512
531   return _mm512_mask_fmsub_pd(__A, __U, __B, __C);
532 }
533 __m512d test_mm512_maskz_fmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
534   // CHECK-LABEL: @test_mm512_maskz_fmsub_pd
535   // CHECK: @llvm.x86.avx512.maskz.vfmadd.pd.512
536   return _mm512_maskz_fmsub_pd(__U, __A, __B, __C);
537 }
538 __m512d test_mm512_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C) {
539   // CHECK-LABEL: @test_mm512_fnmadd_pd
540   // CHECK: @llvm.x86.avx512.mask.vfmadd.pd.512
541   return _mm512_fnmadd_pd(__A, __B, __C);
542 }
543 __m512d test_mm512_mask3_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
544   // CHECK-LABEL: @test_mm512_mask3_fnmadd_pd
545   // CHECK: @llvm.x86.avx512.mask3.vfmadd.pd.512
546   return _mm512_mask3_fnmadd_pd(__A, __B, __C, __U);
547 }
548 __m512d test_mm512_maskz_fnmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
549   // CHECK-LABEL: @test_mm512_maskz_fnmadd_pd
550   // CHECK: @llvm.x86.avx512.maskz.vfmadd.pd.512
551   return _mm512_maskz_fnmadd_pd(__U, __A, __B, __C);
552 }
553 __m512d test_mm512_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C) {
554   // CHECK-LABEL: @test_mm512_fnmsub_pd
555   // CHECK: @llvm.x86.avx512.mask.vfmadd.pd.512
556   return _mm512_fnmsub_pd(__A, __B, __C);
557 }
558 __m512d test_mm512_maskz_fnmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
559   // CHECK-LABEL: @test_mm512_maskz_fnmsub_pd
560   // CHECK: @llvm.x86.avx512.maskz.vfmadd.pd.512
561   return _mm512_maskz_fnmsub_pd(__U, __A, __B, __C);
562 }
563 __m512 test_mm512_fmadd_round_ps(__m512 __A, __m512 __B, __m512 __C) {
564   // CHECK-LABEL: @test_mm512_fmadd_round_ps
565   // CHECK: @llvm.x86.avx512.mask.vfmadd.ps.512
566   return _mm512_fmadd_round_ps(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
567 }
568 __m512 test_mm512_mask_fmadd_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
569   // CHECK-LABEL: @test_mm512_mask_fmadd_round_ps
570   // CHECK: @llvm.x86.avx512.mask.vfmadd.ps.512
571   return _mm512_mask_fmadd_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
572 }
573 __m512 test_mm512_mask3_fmadd_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
574   // CHECK-LABEL: @test_mm512_mask3_fmadd_round_ps
575   // CHECK: @llvm.x86.avx512.mask3.vfmadd.ps.512
576   return _mm512_mask3_fmadd_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
577 }
578 __m512 test_mm512_maskz_fmadd_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
579   // CHECK-LABEL: @test_mm512_maskz_fmadd_round_ps
580   // CHECK: @llvm.x86.avx512.maskz.vfmadd.ps.512
581   return _mm512_maskz_fmadd_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
582 }
583 __m512 test_mm512_fmsub_round_ps(__m512 __A, __m512 __B, __m512 __C) {
584   // CHECK-LABEL: @test_mm512_fmsub_round_ps
585   // CHECK: @llvm.x86.avx512.mask.vfmadd.ps.512
586   return _mm512_fmsub_round_ps(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
587 }
588 __m512 test_mm512_mask_fmsub_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
589   // CHECK-LABEL: @test_mm512_mask_fmsub_round_ps
590   // CHECK: @llvm.x86.avx512.mask.vfmadd.ps.512
591   return _mm512_mask_fmsub_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
592 }
593 __m512 test_mm512_maskz_fmsub_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
594   // CHECK-LABEL: @test_mm512_maskz_fmsub_round_ps
595   // CHECK: @llvm.x86.avx512.maskz.vfmadd.ps.512
596   return _mm512_maskz_fmsub_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
597 }
598 __m512 test_mm512_fnmadd_round_ps(__m512 __A, __m512 __B, __m512 __C) {
599   // CHECK-LABEL: @test_mm512_fnmadd_round_ps
600   // CHECK: @llvm.x86.avx512.mask.vfmadd.ps.512
601   return _mm512_fnmadd_round_ps(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
602 }
603 __m512 test_mm512_mask3_fnmadd_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
604   // CHECK-LABEL: @test_mm512_mask3_fnmadd_round_ps
605   // CHECK: @llvm.x86.avx512.mask3.vfmadd.ps.512
606   return _mm512_mask3_fnmadd_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
607 }
608 __m512 test_mm512_maskz_fnmadd_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
609   // CHECK-LABEL: @test_mm512_maskz_fnmadd_round_ps
610   // CHECK: @llvm.x86.avx512.maskz.vfmadd.ps.512
611   return _mm512_maskz_fnmadd_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
612 }
613 __m512 test_mm512_fnmsub_round_ps(__m512 __A, __m512 __B, __m512 __C) {
614   // CHECK-LABEL: @test_mm512_fnmsub_round_ps
615   // CHECK: @llvm.x86.avx512.mask.vfmadd.ps.512
616   return _mm512_fnmsub_round_ps(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
617 }
618 __m512 test_mm512_maskz_fnmsub_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
619   // CHECK-LABEL: @test_mm512_maskz_fnmsub_round_ps
620   // CHECK: @llvm.x86.avx512.maskz.vfmadd.ps.512
621   return _mm512_maskz_fnmsub_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
622 }
623 __m512 test_mm512_fmadd_ps(__m512 __A, __m512 __B, __m512 __C) {
624   // CHECK-LABEL: @test_mm512_fmadd_ps
625   // CHECK: @llvm.x86.avx512.mask.vfmadd.ps.512
626   return _mm512_fmadd_ps(__A, __B, __C);
627 }
628 __m512 test_mm512_mask_fmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
629   // CHECK-LABEL: @test_mm512_mask_fmadd_ps
630   // CHECK: @llvm.x86.avx512.mask.vfmadd.ps.512
631   return _mm512_mask_fmadd_ps(__A, __U, __B, __C);
632 }
633 __m512 test_mm512_mask3_fmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
634   // CHECK-LABEL: @test_mm512_mask3_fmadd_ps
635   // CHECK: @llvm.x86.avx512.mask3.vfmadd.ps.512
636   return _mm512_mask3_fmadd_ps(__A, __B, __C, __U);
637 }
638 __m512 test_mm512_maskz_fmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
639   // CHECK-LABEL: @test_mm512_maskz_fmadd_ps
640   // CHECK: @llvm.x86.avx512.maskz.vfmadd.ps.512
641   return _mm512_maskz_fmadd_ps(__U, __A, __B, __C);
642 }
643 __m512 test_mm512_fmsub_ps(__m512 __A, __m512 __B, __m512 __C) {
644   // CHECK-LABEL: @test_mm512_fmsub_ps
645   // CHECK: @llvm.x86.avx512.mask.vfmadd.ps.512
646   return _mm512_fmsub_ps(__A, __B, __C);
647 }
648 __m512 test_mm512_mask_fmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
649   // CHECK-LABEL: @test_mm512_mask_fmsub_ps
650   // CHECK: @llvm.x86.avx512.mask.vfmadd.ps.512
651   return _mm512_mask_fmsub_ps(__A, __U, __B, __C);
652 }
653 __m512 test_mm512_maskz_fmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
654   // CHECK-LABEL: @test_mm512_maskz_fmsub_ps
655   // CHECK: @llvm.x86.avx512.maskz.vfmadd.ps.512
656   return _mm512_maskz_fmsub_ps(__U, __A, __B, __C);
657 }
658 __m512 test_mm512_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C) {
659   // CHECK-LABEL: @test_mm512_fnmadd_ps
660   // CHECK: @llvm.x86.avx512.mask.vfmadd.ps.512
661   return _mm512_fnmadd_ps(__A, __B, __C);
662 }
663 __m512 test_mm512_mask3_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
664   // CHECK-LABEL: @test_mm512_mask3_fnmadd_ps
665   // CHECK: @llvm.x86.avx512.mask3.vfmadd.ps.512
666   return _mm512_mask3_fnmadd_ps(__A, __B, __C, __U);
667 }
668 __m512 test_mm512_maskz_fnmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
669   // CHECK-LABEL: @test_mm512_maskz_fnmadd_ps
670   // CHECK: @llvm.x86.avx512.maskz.vfmadd.ps.512
671   return _mm512_maskz_fnmadd_ps(__U, __A, __B, __C);
672 }
673 __m512 test_mm512_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C) {
674   // CHECK-LABEL: @test_mm512_fnmsub_ps
675   // CHECK: @llvm.x86.avx512.mask.vfmadd.ps.512
676   return _mm512_fnmsub_ps(__A, __B, __C);
677 }
678 __m512 test_mm512_maskz_fnmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
679   // CHECK-LABEL: @test_mm512_maskz_fnmsub_ps
680   // CHECK: @llvm.x86.avx512.maskz.vfmadd.ps.512
681   return _mm512_maskz_fnmsub_ps(__U, __A, __B, __C);
682 }
683 __m512d test_mm512_fmaddsub_round_pd(__m512d __A, __m512d __B, __m512d __C) {
684   // CHECK-LABEL: @test_mm512_fmaddsub_round_pd
685   // CHECK: @llvm.x86.avx512.mask.vfmaddsub.pd.512
686   return _mm512_fmaddsub_round_pd(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
687 }
688 __m512d test_mm512_mask_fmaddsub_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
689   // CHECK-LABEL: @test_mm512_mask_fmaddsub_round_pd
690   // CHECK: @llvm.x86.avx512.mask.vfmaddsub.pd.512
691   return _mm512_mask_fmaddsub_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
692 }
693 __m512d test_mm512_mask3_fmaddsub_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
694   // CHECK-LABEL: @test_mm512_mask3_fmaddsub_round_pd
695   // CHECK: @llvm.x86.avx512.mask3.vfmaddsub.pd.512
696   return _mm512_mask3_fmaddsub_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
697 }
698 __m512d test_mm512_maskz_fmaddsub_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
699   // CHECK-LABEL: @test_mm512_maskz_fmaddsub_round_pd
700   // CHECK: @llvm.x86.avx512.maskz.vfmaddsub.pd.512
701   return _mm512_maskz_fmaddsub_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
702 }
703 __m512d test_mm512_fmsubadd_round_pd(__m512d __A, __m512d __B, __m512d __C) {
704   // CHECK-LABEL: @test_mm512_fmsubadd_round_pd
705   // CHECK: @llvm.x86.avx512.mask.vfmaddsub.pd.512
706   return _mm512_fmsubadd_round_pd(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
707 }
708 __m512d test_mm512_mask_fmsubadd_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
709   // CHECK-LABEL: @test_mm512_mask_fmsubadd_round_pd
710   // CHECK: @llvm.x86.avx512.mask.vfmaddsub.pd.512
711   return _mm512_mask_fmsubadd_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
712 }
713 __m512d test_mm512_maskz_fmsubadd_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
714   // CHECK-LABEL: @test_mm512_maskz_fmsubadd_round_pd
715   // CHECK: @llvm.x86.avx512.maskz.vfmaddsub.pd.512
716   return _mm512_maskz_fmsubadd_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
717 }
718 __m512d test_mm512_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C) {
719   // CHECK-LABEL: @test_mm512_fmaddsub_pd
720   // CHECK: @llvm.x86.avx512.mask.vfmaddsub.pd.512
721   return _mm512_fmaddsub_pd(__A, __B, __C);
722 }
723 __m512d test_mm512_mask_fmaddsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
724   // CHECK-LABEL: @test_mm512_mask_fmaddsub_pd
725   // CHECK: @llvm.x86.avx512.mask.vfmaddsub.pd.512
726   return _mm512_mask_fmaddsub_pd(__A, __U, __B, __C);
727 }
728 __m512d test_mm512_mask3_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
729   // CHECK-LABEL: @test_mm512_mask3_fmaddsub_pd
730   // CHECK: @llvm.x86.avx512.mask3.vfmaddsub.pd.512
731   return _mm512_mask3_fmaddsub_pd(__A, __B, __C, __U);
732 }
733 __m512d test_mm512_maskz_fmaddsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
734   // CHECK-LABEL: @test_mm512_maskz_fmaddsub_pd
735   // CHECK: @llvm.x86.avx512.maskz.vfmaddsub.pd.512
736   return _mm512_maskz_fmaddsub_pd(__U, __A, __B, __C);
737 }
738 __m512d test_mm512_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C) {
739   // CHECK-LABEL: @test_mm512_fmsubadd_pd
740   // CHECK: @llvm.x86.avx512.mask.vfmaddsub.pd.512
741   return _mm512_fmsubadd_pd(__A, __B, __C);
742 }
743 __m512d test_mm512_mask_fmsubadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
744   // CHECK-LABEL: @test_mm512_mask_fmsubadd_pd
745   // CHECK: @llvm.x86.avx512.mask.vfmaddsub.pd.512
746   return _mm512_mask_fmsubadd_pd(__A, __U, __B, __C);
747 }
748 __m512d test_mm512_maskz_fmsubadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
749   // CHECK-LABEL: @test_mm512_maskz_fmsubadd_pd
750   // CHECK: @llvm.x86.avx512.maskz.vfmaddsub.pd.512
751   return _mm512_maskz_fmsubadd_pd(__U, __A, __B, __C);
752 }
753 __m512 test_mm512_fmaddsub_round_ps(__m512 __A, __m512 __B, __m512 __C) {
754   // CHECK-LABEL: @test_mm512_fmaddsub_round_ps
755   // CHECK: @llvm.x86.avx512.mask.vfmaddsub.ps.512
756   return _mm512_fmaddsub_round_ps(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
757 }
758 __m512 test_mm512_mask_fmaddsub_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
759   // CHECK-LABEL: @test_mm512_mask_fmaddsub_round_ps
760   // CHECK: @llvm.x86.avx512.mask.vfmaddsub.ps.512
761   return _mm512_mask_fmaddsub_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
762 }
763 __m512 test_mm512_mask3_fmaddsub_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
764   // CHECK-LABEL: @test_mm512_mask3_fmaddsub_round_ps
765   // CHECK: @llvm.x86.avx512.mask3.vfmaddsub.ps.512
766   return _mm512_mask3_fmaddsub_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
767 }
768 __m512 test_mm512_maskz_fmaddsub_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
769   // CHECK-LABEL: @test_mm512_maskz_fmaddsub_round_ps
770   // CHECK: @llvm.x86.avx512.maskz.vfmaddsub.ps.512
771   return _mm512_maskz_fmaddsub_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
772 }
773 __m512 test_mm512_fmsubadd_round_ps(__m512 __A, __m512 __B, __m512 __C) {
774   // CHECK-LABEL: @test_mm512_fmsubadd_round_ps
775   // CHECK: @llvm.x86.avx512.mask.vfmaddsub.ps.512
776   return _mm512_fmsubadd_round_ps(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
777 }
778 __m512 test_mm512_mask_fmsubadd_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
779   // CHECK-LABEL: @test_mm512_mask_fmsubadd_round_ps
780   // CHECK: @llvm.x86.avx512.mask.vfmaddsub.ps.512
781   return _mm512_mask_fmsubadd_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
782 }
783 __m512 test_mm512_maskz_fmsubadd_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
784   // CHECK-LABEL: @test_mm512_maskz_fmsubadd_round_ps
785   // CHECK: @llvm.x86.avx512.maskz.vfmaddsub.ps.512
786   return _mm512_maskz_fmsubadd_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
787 }
788 __m512 test_mm512_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C) {
789   // CHECK-LABEL: @test_mm512_fmaddsub_ps
790   // CHECK: @llvm.x86.avx512.mask.vfmaddsub.ps.512
791   return _mm512_fmaddsub_ps(__A, __B, __C);
792 }
793 __m512 test_mm512_mask_fmaddsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
794   // CHECK-LABEL: @test_mm512_mask_fmaddsub_ps
795   // CHECK: @llvm.x86.avx512.mask.vfmaddsub.ps.512
796   return _mm512_mask_fmaddsub_ps(__A, __U, __B, __C);
797 }
798 __m512 test_mm512_mask3_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
799   // CHECK-LABEL: @test_mm512_mask3_fmaddsub_ps
800   // CHECK: @llvm.x86.avx512.mask3.vfmaddsub.ps.512
801   return _mm512_mask3_fmaddsub_ps(__A, __B, __C, __U);
802 }
803 __m512 test_mm512_maskz_fmaddsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
804   // CHECK-LABEL: @test_mm512_maskz_fmaddsub_ps
805   // CHECK: @llvm.x86.avx512.maskz.vfmaddsub.ps.512
806   return _mm512_maskz_fmaddsub_ps(__U, __A, __B, __C);
807 }
808 __m512 test_mm512_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C) {
809   // CHECK-LABEL: @test_mm512_fmsubadd_ps
810   // CHECK: @llvm.x86.avx512.mask.vfmaddsub.ps.512
811   return _mm512_fmsubadd_ps(__A, __B, __C);
812 }
813 __m512 test_mm512_mask_fmsubadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
814   // CHECK-LABEL: @test_mm512_mask_fmsubadd_ps
815   // CHECK: @llvm.x86.avx512.mask.vfmaddsub.ps.512
816   return _mm512_mask_fmsubadd_ps(__A, __U, __B, __C);
817 }
818 __m512 test_mm512_maskz_fmsubadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
819   // CHECK-LABEL: @test_mm512_maskz_fmsubadd_ps
820   // CHECK: @llvm.x86.avx512.maskz.vfmaddsub.ps.512
821   return _mm512_maskz_fmsubadd_ps(__U, __A, __B, __C);
822 }
823 __m512d test_mm512_mask3_fmsub_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
824   // CHECK-LABEL: @test_mm512_mask3_fmsub_round_pd
825   // CHECK: @llvm.x86.avx512.mask3.vfmsub.pd.512
826   return _mm512_mask3_fmsub_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
827 }
828 __m512d test_mm512_mask3_fmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
829   // CHECK-LABEL: @test_mm512_mask3_fmsub_pd
830   // CHECK: @llvm.x86.avx512.mask3.vfmsub.pd.512
831   return _mm512_mask3_fmsub_pd(__A, __B, __C, __U);
832 }
833 __m512 test_mm512_mask3_fmsub_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
834   // CHECK-LABEL: @test_mm512_mask3_fmsub_round_ps
835   // CHECK: @llvm.x86.avx512.mask3.vfmsub.ps.512
836   return _mm512_mask3_fmsub_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
837 }
838 __m512 test_mm512_mask3_fmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
839   // CHECK-LABEL: @test_mm512_mask3_fmsub_ps
840   // CHECK: @llvm.x86.avx512.mask3.vfmsub.ps.512
841   return _mm512_mask3_fmsub_ps(__A, __B, __C, __U);
842 }
843 __m512d test_mm512_mask3_fmsubadd_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
844   // CHECK-LABEL: @test_mm512_mask3_fmsubadd_round_pd
845   // CHECK: @llvm.x86.avx512.mask3.vfmsubadd.pd.512
846   return _mm512_mask3_fmsubadd_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
847 }
848 __m512d test_mm512_mask3_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
849   // CHECK-LABEL: @test_mm512_mask3_fmsubadd_pd
850   // CHECK: @llvm.x86.avx512.mask3.vfmsubadd.pd.512
851   return _mm512_mask3_fmsubadd_pd(__A, __B, __C, __U);
852 }
853 __m512 test_mm512_mask3_fmsubadd_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
854   // CHECK-LABEL: @test_mm512_mask3_fmsubadd_round_ps
855   // CHECK: @llvm.x86.avx512.mask3.vfmsubadd.ps.512
856   return _mm512_mask3_fmsubadd_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
857 }
858 __m512 test_mm512_mask3_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
859   // CHECK-LABEL: @test_mm512_mask3_fmsubadd_ps
860   // CHECK: @llvm.x86.avx512.mask3.vfmsubadd.ps.512
861   return _mm512_mask3_fmsubadd_ps(__A, __B, __C, __U);
862 }
863 __m512d test_mm512_mask_fnmadd_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
864   // CHECK-LABEL: @test_mm512_mask_fnmadd_round_pd
865   // CHECK: @llvm.x86.avx512.mask.vfnmadd.pd.512
866   return _mm512_mask_fnmadd_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
867 }
868 __m512d test_mm512_mask_fnmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
869   // CHECK-LABEL: @test_mm512_mask_fnmadd_pd
870   // CHECK: @llvm.x86.avx512.mask.vfnmadd.pd.512
871   return _mm512_mask_fnmadd_pd(__A, __U, __B, __C);
872 }
873 __m512 test_mm512_mask_fnmadd_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
874   // CHECK-LABEL: @test_mm512_mask_fnmadd_round_ps
875   // CHECK: @llvm.x86.avx512.mask.vfnmadd.ps.512
876   return _mm512_mask_fnmadd_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
877 }
878 __m512 test_mm512_mask_fnmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
879   // CHECK-LABEL: @test_mm512_mask_fnmadd_ps
880   // CHECK: @llvm.x86.avx512.mask.vfnmadd.ps.512
881   return _mm512_mask_fnmadd_ps(__A, __U, __B, __C);
882 }
883 __m512d test_mm512_mask_fnmsub_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
884   // CHECK-LABEL: @test_mm512_mask_fnmsub_round_pd
885   // CHECK: @llvm.x86.avx512.mask.vfnmsub.pd.512
886   return _mm512_mask_fnmsub_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
887 }
888 __m512d test_mm512_mask3_fnmsub_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
889   // CHECK-LABEL: @test_mm512_mask3_fnmsub_round_pd
890   // CHECK: @llvm.x86.avx512.mask3.vfnmsub.pd.512
891   return _mm512_mask3_fnmsub_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
892 }
893 __m512d test_mm512_mask_fnmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
894   // CHECK-LABEL: @test_mm512_mask_fnmsub_pd
895   // CHECK: @llvm.x86.avx512.mask.vfnmsub.pd.512
896   return _mm512_mask_fnmsub_pd(__A, __U, __B, __C);
897 }
898 __m512d test_mm512_mask3_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
899   // CHECK-LABEL: @test_mm512_mask3_fnmsub_pd
900   // CHECK: @llvm.x86.avx512.mask3.vfnmsub.pd.512
901   return _mm512_mask3_fnmsub_pd(__A, __B, __C, __U);
902 }
903 __m512 test_mm512_mask_fnmsub_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
904   // CHECK-LABEL: @test_mm512_mask_fnmsub_round_ps
905   // CHECK: @llvm.x86.avx512.mask.vfnmsub.ps.512
906   return _mm512_mask_fnmsub_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
907 }
908 __m512 test_mm512_mask3_fnmsub_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
909   // CHECK-LABEL: @test_mm512_mask3_fnmsub_round_ps
910   // CHECK: @llvm.x86.avx512.mask3.vfnmsub.ps.512
911   return _mm512_mask3_fnmsub_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
912 }
913 __m512 test_mm512_mask_fnmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
914   // CHECK-LABEL: @test_mm512_mask_fnmsub_ps
915   // CHECK: @llvm.x86.avx512.mask.vfnmsub.ps.512
916   return _mm512_mask_fnmsub_ps(__A, __U, __B, __C);
917 }
918 __m512 test_mm512_mask3_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
919   // CHECK-LABEL: @test_mm512_mask3_fnmsub_ps
920   // CHECK: @llvm.x86.avx512.mask3.vfnmsub.ps.512
921   return _mm512_mask3_fnmsub_ps(__A, __B, __C, __U);
922 }
923
924 __mmask16 test_mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) {
925   // CHECK-LABEL: @test_mm512_cmpeq_epi32_mask
926   // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
927   return (__mmask16)_mm512_cmpeq_epi32_mask(__a, __b);
928 }
929
930 __mmask16 test_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
931   // CHECK-LABEL: @test_mm512_mask_cmpeq_epi32_mask
932   // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
933   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
934   return (__mmask16)_mm512_mask_cmpeq_epi32_mask(__u, __a, __b);
935 }
936
937 __mmask8 test_mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
938   // CHECK-LABEL: @test_mm512_mask_cmpeq_epi64_mask
939   // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
940   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
941   return (__mmask8)_mm512_mask_cmpeq_epi64_mask(__u, __a, __b);
942 }
943
944 __mmask8 test_mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) {
945   // CHECK-LABEL: @test_mm512_cmpeq_epi64_mask
946   // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
947   return (__mmask8)_mm512_cmpeq_epi64_mask(__a, __b);
948 }
949
950 __mmask16 test_mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) {
951   // CHECK-LABEL: @test_mm512_cmpgt_epi32_mask
952   // CHECK: icmp sgt <16 x i32> %{{.*}}, %{{.*}}
953   return (__mmask16)_mm512_cmpgt_epi32_mask(__a, __b);
954 }
955
956 __mmask16 test_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
957   // CHECK-LABEL: @test_mm512_mask_cmpgt_epi32_mask
958   // CHECK: icmp sgt <16 x i32> %{{.*}}, %{{.*}}
959   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
960   return (__mmask16)_mm512_mask_cmpgt_epi32_mask(__u, __a, __b);
961 }
962
963 __mmask8 test_mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
964   // CHECK-LABEL: @test_mm512_mask_cmpgt_epi64_mask
965   // CHECK: icmp sgt <8 x i64> %{{.*}}, %{{.*}}
966   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
967   return (__mmask8)_mm512_mask_cmpgt_epi64_mask(__u, __a, __b);
968 }
969
970 __mmask8 test_mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) {
971   // CHECK-LABEL: @test_mm512_cmpgt_epi64_mask
972   // CHECK: icmp sgt <8 x i64> %{{.*}}, %{{.*}}
973   return (__mmask8)_mm512_cmpgt_epi64_mask(__a, __b);
974 }
975
976 __m512d test_mm512_unpackhi_pd(__m512d a, __m512d b)
977 {
978   // CHECK-LABEL: @test_mm512_unpackhi_pd
979   // CHECK: shufflevector <8 x double> {{.*}} <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
980   return _mm512_unpackhi_pd(a, b);
981 }
982
983 __m512d test_mm512_unpacklo_pd(__m512d a, __m512d b)
984 {
985   // CHECK-LABEL: @test_mm512_unpacklo_pd
986   // CHECK: shufflevector <8 x double> {{.*}} <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
987   return _mm512_unpacklo_pd(a, b);
988 }
989
990 __m512 test_mm512_unpackhi_ps(__m512 a, __m512 b)
991 {
992   // CHECK-LABEL: @test_mm512_unpackhi_ps
993   // CHECK: shufflevector <16 x float> {{.*}} <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31>
994   return _mm512_unpackhi_ps(a, b);
995 }
996
997 __m512 test_mm512_unpacklo_ps(__m512 a, __m512 b)
998 {
999   // CHECK-LABEL: @test_mm512_unpacklo_ps
1000   // CHECK: shufflevector <16 x float> {{.*}} <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29>
1001   return _mm512_unpacklo_ps(a, b);
1002 }
1003
1004 __mmask16 test_mm512_cmp_round_ps_mask(__m512 a, __m512 b) {
1005   // CHECK-LABEL: @test_mm512_cmp_round_ps_mask
1006   // CHECK: @llvm.x86.avx512.mask.cmp.ps.512
1007   return _mm512_cmp_round_ps_mask(a, b, 0, _MM_FROUND_CUR_DIRECTION);
1008 }
1009
1010 __mmask16 test_mm512_mask_cmp_round_ps_mask(__mmask16 m, __m512 a, __m512 b) {
1011   // CHECK-LABEL: @test_mm512_mask_cmp_round_ps_mask
1012   // CHECK: @llvm.x86.avx512.mask.cmp.ps.512
1013   return _mm512_mask_cmp_round_ps_mask(m, a, b, 0, _MM_FROUND_CUR_DIRECTION);
1014 }
1015
1016 __mmask16 test_mm512_cmp_ps_mask(__m512 a, __m512 b) {
1017   // CHECK-LABEL: @test_mm512_cmp_ps_mask
1018   // CHECKn: @llvm.x86.avx512.mask.cmp.ps.512
1019   return _mm512_cmp_ps_mask(a, b, 0);
1020 }
1021
1022 __mmask16 test_mm512_mask_cmp_ps_mask(__mmask16 m, __m512 a, __m512 b) {
1023   // CHECK-LABEL: @test_mm512_mask_cmp_ps_mask
1024   // CHECK: @llvm.x86.avx512.mask.cmp.ps.512
1025   return _mm512_mask_cmp_ps_mask(m, a, b, 0);
1026 }
1027
1028 __mmask8 test_mm512_cmp_round_pd_mask(__m512d a, __m512d b) {
1029   // CHECK-LABEL: @test_mm512_cmp_round_pd_mask
1030   // CHECK: @llvm.x86.avx512.mask.cmp.pd.512
1031   return _mm512_cmp_round_pd_mask(a, b, 0, _MM_FROUND_CUR_DIRECTION);
1032 }
1033
1034 __mmask8 test_mm512_mask_cmp_round_pd_mask(__mmask8 m, __m512d a, __m512d b) {
1035   // CHECK-LABEL: @test_mm512_mask_cmp_round_pd_mask
1036   // CHECK: @llvm.x86.avx512.mask.cmp.pd.512
1037   return _mm512_mask_cmp_round_pd_mask(m, a, b, 0, _MM_FROUND_CUR_DIRECTION);
1038 }
1039
1040 __mmask8 test_mm512_cmp_pd_mask(__m512d a, __m512d b) {
1041   // CHECK-LABEL: @test_mm512_cmp_pd_mask
1042   // CHECK: @llvm.x86.avx512.mask.cmp.pd.512
1043   return _mm512_cmp_pd_mask(a, b, 0);
1044 }
1045
1046 __mmask8 test_mm512_mask_cmp_pd_mask(__mmask8 m, __m512d a, __m512d b) {
1047   // CHECK-LABEL: @test_mm512_mask_cmp_pd_mask
1048   // CHECK: @llvm.x86.avx512.mask.cmp.pd.512
1049   return _mm512_mask_cmp_pd_mask(m, a, b, 0);
1050 }
1051
1052 __mmask8 test_mm512_cmpeq_pd_mask(__m512d a, __m512d b) {
1053   // CHECK-LABEL: @test_mm512_cmpeq_pd_mask
1054   // CHECK: @llvm.x86.avx512.mask.cmp.pd.512
1055   return _mm512_cmpeq_pd_mask(a, b);
1056 }
1057
1058 __mmask8 test_mm512_cmpeq_ps_mask(__m512 a, __m512 b) {
1059   // CHECK-LABEL: @test_mm512_cmpeq_ps_mask
1060   // CHECK: @llvm.x86.avx512.mask.cmp.ps.512
1061   return _mm512_cmpeq_ps_mask(a, b);
1062 }
1063
1064 __mmask8 test_mm512_mask_cmpeq_pd_mask(__mmask8 k, __m512d a, __m512d b) {
1065   // CHECK-LABEL: @test_mm512_mask_cmpeq_pd_mask
1066   // CHECK: @llvm.x86.avx512.mask.cmp.pd.512
1067   return _mm512_mask_cmpeq_pd_mask(k, a, b);
1068 }
1069
1070 __mmask8 test_mm512_mask_cmpeq_ps_mask(__mmask8 k, __m512 a, __m512 b) {
1071   // CHECK-LABEL: @test_mm512_mask_cmpeq_ps_mask
1072   // CHECK: @llvm.x86.avx512.mask.cmp.ps.512
1073   return _mm512_mask_cmpeq_ps_mask(k, a, b);
1074 }
1075
1076 __mmask8 test_mm512_cmple_pd_mask(__m512d a, __m512d b) {
1077   // CHECK-LABEL: @test_mm512_cmple_pd_mask
1078   // CHECK: @llvm.x86.avx512.mask.cmp.pd.512
1079   return _mm512_cmpeq_pd_mask(a, b);
1080 }
1081
1082 __mmask8 test_mm512_cmple_ps_mask(__m512 a, __m512 b) {
1083   // CHECK-LABEL: @test_mm512_cmple_ps_mask
1084   // CHECK: @llvm.x86.avx512.mask.cmp.ps.512
1085   return _mm512_cmpeq_ps_mask(a, b);
1086 }
1087
1088 __mmask8 test_mm512_mask_cmple_pd_mask(__mmask8 k, __m512d a, __m512d b) {
1089   // CHECK-LABEL: @test_mm512_mask_cmple_pd_mask
1090   // CHECK: @llvm.x86.avx512.mask.cmp.pd.512
1091   return _mm512_mask_cmple_pd_mask(k, a, b);
1092 }
1093
1094 __mmask8 test_mm512_mask_cmple_ps_mask(__mmask8 k, __m512 a, __m512 b) {
1095   // CHECK-LABEL: @test_mm512_mask_cmple_ps_mask
1096   // CHECK: @llvm.x86.avx512.mask.cmp.ps.512
1097   return _mm512_mask_cmple_ps_mask(k, a, b);
1098 }
1099
1100 __mmask8 test_mm512_cmplt_pd_mask(__m512d a, __m512d b) {
1101   // CHECK-LABEL: @test_mm512_cmplt_pd_mask
1102   // CHECK: @llvm.x86.avx512.mask.cmp.pd.512
1103   return _mm512_cmplt_pd_mask(a, b);
1104 }
1105
1106 __mmask8 test_mm512_cmplt_ps_mask(__m512 a, __m512 b) {
1107   // CHECK-LABEL: @test_mm512_cmplt_ps_mask
1108   // CHECK: @llvm.x86.avx512.mask.cmp.ps.512
1109   return _mm512_cmplt_ps_mask(a, b);
1110 }
1111
1112 __mmask8 test_mm512_mask_cmplt_pd_mask(__mmask8 k, __m512d a, __m512d b) {
1113   // CHECK-LABEL: @test_mm512_mask_cmplt_pd_mask
1114   // CHECK: @llvm.x86.avx512.mask.cmp.pd.512
1115   return _mm512_mask_cmplt_pd_mask(k, a, b);
1116 }
1117
1118 __mmask8 test_mm512_mask_cmplt_ps_mask(__mmask8 k, __m512 a, __m512 b) {
1119   // CHECK-LABEL: @test_mm512_mask_cmplt_ps_mask
1120   // CHECK: @llvm.x86.avx512.mask.cmp.ps.512
1121   return _mm512_mask_cmplt_ps_mask(k, a, b);
1122 }
1123
1124 __mmask8 test_mm512_cmpneq_pd_mask(__m512d a, __m512d b) {
1125   // CHECK-LABEL: @test_mm512_cmpneq_pd_mask
1126   // CHECK: @llvm.x86.avx512.mask.cmp.pd.512
1127   return _mm512_cmpneq_pd_mask(a, b);
1128 }
1129
1130 __mmask8 test_mm512_cmpneq_ps_mask(__m512 a, __m512 b) {
1131   // CHECK-LABEL: @test_mm512_cmpneq_ps_mask
1132   // CHECK: @llvm.x86.avx512.mask.cmp.ps.512
1133   return _mm512_cmpneq_ps_mask(a, b);
1134 }
1135
1136 __mmask8 test_mm512_mask_cmpneq_pd_mask(__mmask8 k, __m512d a, __m512d b) {
1137   // CHECK-LABEL: @test_mm512_mask_cmpneq_pd_mask
1138   // CHECK: @llvm.x86.avx512.mask.cmp.pd.512
1139   return _mm512_mask_cmpneq_pd_mask(k, a, b);
1140 }
1141
1142 __mmask8 test_mm512_mask_cmpneq_ps_mask(__mmask8 k, __m512 a, __m512 b) {
1143   // CHECK-LABEL: @test_mm512_mask_cmpneq_ps_mask
1144   // CHECK: @llvm.x86.avx512.mask.cmp.ps.512
1145   return _mm512_mask_cmpneq_ps_mask(k, a, b);
1146 }
1147
1148 __mmask8 test_mm512_cmpnle_pd_mask(__m512d a, __m512d b) {
1149   // CHECK-LABEL: @test_mm512_cmpnle_pd_mask
1150   // CHECK: @llvm.x86.avx512.mask.cmp.pd.512
1151   return _mm512_cmpnle_pd_mask(a, b);
1152 }
1153
1154 __mmask8 test_mm512_cmpnle_ps_mask(__m512 a, __m512 b) {
1155   // CHECK-LABEL: @test_mm512_cmpnle_ps_mask
1156   // CHECK: @llvm.x86.avx512.mask.cmp.ps.512
1157   return _mm512_cmpnle_ps_mask(a, b);
1158 }
1159
1160 __mmask8 test_mm512_mask_cmpnle_pd_mask(__mmask8 k, __m512d a, __m512d b) {
1161   // CHECK-LABEL: @test_mm512_mask_cmpnle_pd_mask
1162   // CHECK: @llvm.x86.avx512.mask.cmp.pd.512
1163   return _mm512_mask_cmpnle_pd_mask(k, a, b);
1164 }
1165
1166 __mmask8 test_mm512_mask_cmpnle_ps_mask(__mmask8 k, __m512 a, __m512 b) {
1167   // CHECK-LABEL: @test_mm512_mask_cmpnle_ps_mask
1168   // CHECK: @llvm.x86.avx512.mask.cmp.ps.512
1169   return _mm512_mask_cmpnle_ps_mask(k, a, b);
1170 }
1171
1172 __mmask8 test_mm512_cmpnlt_pd_mask(__m512d a, __m512d b) {
1173   // CHECK-LABEL: @test_mm512_cmpnlt_pd_mask
1174   // CHECK: @llvm.x86.avx512.mask.cmp.pd.512
1175   return _mm512_cmpnlt_pd_mask(a, b);
1176 }
1177
1178 __mmask8 test_mm512_cmpnlt_ps_mask(__m512 a, __m512 b) {
1179   // CHECK-LABEL: @test_mm512_cmpnlt_ps_mask
1180   // CHECK: @llvm.x86.avx512.mask.cmp.ps.512
1181   return _mm512_cmpnlt_ps_mask(a, b);
1182 }
1183
1184 __mmask8 test_mm512_mask_cmpnlt_pd_mask(__mmask8 k, __m512d a, __m512d b) {
1185   // CHECK-LABEL: @test_mm512_mask_cmpnlt_pd_mask
1186   // CHECK: @llvm.x86.avx512.mask.cmp.pd.512
1187   return _mm512_mask_cmpnlt_pd_mask(k, a, b);
1188 }
1189
1190 __mmask8 test_mm512_mask_cmpnlt_ps_mask(__mmask8 k, __m512 a, __m512 b) {
1191   // CHECK-LABEL: @test_mm512_mask_cmpnlt_ps_mask
1192   // CHECK: @llvm.x86.avx512.mask.cmp.ps.512
1193   return _mm512_mask_cmpnlt_ps_mask(k, a, b);
1194 }
1195
1196 __mmask8 test_mm512_cmpord_pd_mask(__m512d a, __m512d b) {
1197   // CHECK-LABEL: @test_mm512_cmpord_pd_mask
1198   // CHECK: @llvm.x86.avx512.mask.cmp.pd.512
1199   return _mm512_cmpord_pd_mask(a, b);
1200 }
1201
1202 __mmask8 test_mm512_cmpord_ps_mask(__m512 a, __m512 b) {
1203   // CHECK-LABEL: @test_mm512_cmpord_ps_mask
1204   // CHECK: @llvm.x86.avx512.mask.cmp.ps.512
1205   return _mm512_cmpord_ps_mask(a, b);
1206 }
1207
1208 __mmask8 test_mm512_mask_cmpord_pd_mask(__mmask8 k, __m512d a, __m512d b) {
1209   // CHECK-LABEL: @test_mm512_mask_cmpord_pd_mask
1210   // CHECK: @llvm.x86.avx512.mask.cmp.pd.512
1211   return _mm512_mask_cmpord_pd_mask(k, a, b);
1212 }
1213
1214 __mmask8 test_mm512_mask_cmpord_ps_mask(__mmask8 k, __m512 a, __m512 b) {
1215   // CHECK-LABEL: @test_mm512_mask_cmpord_ps_mask
1216   // CHECK: @llvm.x86.avx512.mask.cmp.ps.512
1217   return _mm512_mask_cmpord_ps_mask(k, a, b);
1218 }
1219
1220 __mmask8 test_mm512_cmpunord_pd_mask(__m512d a, __m512d b) {
1221   // CHECK-LABEL: @test_mm512_cmpunord_pd_mask
1222   // CHECK: @llvm.x86.avx512.mask.cmp.pd.512
1223   return _mm512_cmpunord_pd_mask(a, b);
1224 }
1225
1226 __mmask8 test_mm512_cmpunord_ps_mask(__m512 a, __m512 b) {
1227   // CHECK-LABEL: @test_mm512_cmpunord_ps_mask
1228   // CHECK: @llvm.x86.avx512.mask.cmp.ps.512
1229   return _mm512_cmpunord_ps_mask(a, b);
1230 }
1231
1232 __mmask8 test_mm512_mask_cmpunord_pd_mask(__mmask8 k, __m512d a, __m512d b) {
1233   // CHECK-LABEL: @test_mm512_mask_cmpunord_pd_mask
1234   // CHECK: @llvm.x86.avx512.mask.cmp.pd.512
1235   return _mm512_mask_cmpunord_pd_mask(k, a, b);
1236 }
1237
1238 __mmask8 test_mm512_mask_cmpunord_ps_mask(__mmask8 k, __m512 a, __m512 b) {
1239   // CHECK-LABEL: @test_mm512_mask_cmpunord_ps_mask
1240   // CHECK: @llvm.x86.avx512.mask.cmp.ps.512
1241   return _mm512_mask_cmpunord_ps_mask(k, a, b);
1242 }
1243
1244 __m256d test_mm512_extractf64x4_pd(__m512d a)
1245 {
1246   // CHECK-LABEL: @test_mm512_extractf64x4_pd
1247   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> zeroinitializer, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
1248   return _mm512_extractf64x4_pd(a, 1);
1249 }
1250
1251 __m256d test_mm512_mask_extractf64x4_pd(__m256d  __W,__mmask8  __U,__m512d __A){
1252   // CHECK-LABEL:@test_mm512_mask_extractf64x4_pd
1253   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> zeroinitializer, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
1254   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
1255   return _mm512_mask_extractf64x4_pd( __W, __U, __A, 1);
1256 }
1257
1258 __m256d test_mm512_maskz_extractf64x4_pd(__mmask8  __U,__m512d __A){
1259   // CHECK-LABEL:@test_mm512_maskz_extractf64x4_pd
1260   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> zeroinitializer, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
1261   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
1262   return _mm512_maskz_extractf64x4_pd( __U, __A, 1);
1263 }
1264
1265 __m128 test_mm512_extractf32x4_ps(__m512 a)
1266 {
1267   // CHECK-LABEL: @test_mm512_extractf32x4_ps
1268   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> zeroinitializer, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
1269   return _mm512_extractf32x4_ps(a, 1);
1270 }
1271
1272 __m128 test_mm512_mask_extractf32x4_ps(__m128 __W, __mmask8  __U,__m512d __A){
1273   // CHECK-LABEL:@test_mm512_mask_extractf32x4_ps
1274   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> zeroinitializer, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
1275   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
1276   return _mm512_mask_extractf32x4_ps( __W, __U, __A, 1);
1277 }
1278
1279 __m128 test_mm512_maskz_extractf32x4_ps( __mmask8  __U,__m512d __A){
1280   // CHECK-LABEL:@test_mm512_maskz_extractf32x4_ps
1281   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> zeroinitializer, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
1282   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
1283  return _mm512_maskz_extractf32x4_ps(  __U, __A, 1);
1284 }
1285
1286 __mmask16 test_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) {
1287   // CHECK-LABEL: @test_mm512_cmpeq_epu32_mask
1288   // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
1289   return (__mmask16)_mm512_cmpeq_epu32_mask(__a, __b);
1290 }
1291
1292 __mmask16 test_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
1293   // CHECK-LABEL: @test_mm512_mask_cmpeq_epu32_mask
1294   // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
1295   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
1296   return (__mmask16)_mm512_mask_cmpeq_epu32_mask(__u, __a, __b);
1297 }
1298
1299 __mmask8 test_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) {
1300   // CHECK-LABEL: @test_mm512_cmpeq_epu64_mask
1301   // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
1302   return (__mmask8)_mm512_cmpeq_epu64_mask(__a, __b);
1303 }
1304
1305 __mmask8 test_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
1306   // CHECK-LABEL: @test_mm512_mask_cmpeq_epu64_mask
1307   // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
1308   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
1309   return (__mmask8)_mm512_mask_cmpeq_epu64_mask(__u, __a, __b);
1310 }
1311
1312 __mmask16 test_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) {
1313   // CHECK-LABEL: @test_mm512_cmpge_epi32_mask
1314   // CHECK: icmp sge <16 x i32> %{{.*}}, %{{.*}}
1315   return (__mmask16)_mm512_cmpge_epi32_mask(__a, __b);
1316 }
1317
1318 __mmask16 test_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
1319   // CHECK-LABEL: @test_mm512_mask_cmpge_epi32_mask
1320   // CHECK: icmp sge <16 x i32> %{{.*}}, %{{.*}}
1321   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
1322   return (__mmask16)_mm512_mask_cmpge_epi32_mask(__u, __a, __b);
1323 }
1324
1325 __mmask8 test_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) {
1326   // CHECK-LABEL: @test_mm512_cmpge_epi64_mask
1327   // CHECK: icmp sge <8 x i64> %{{.*}}, %{{.*}}
1328   return (__mmask8)_mm512_cmpge_epi64_mask(__a, __b);
1329 }
1330
1331 __mmask8 test_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
1332   // CHECK-LABEL: @test_mm512_mask_cmpge_epi64_mask
1333   // CHECK: icmp sge <8 x i64> %{{.*}}, %{{.*}}
1334   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
1335   return (__mmask8)_mm512_mask_cmpge_epi64_mask(__u, __a, __b);
1336 }
1337
1338 __mmask16 test_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) {
1339   // CHECK-LABEL: @test_mm512_cmpge_epu32_mask
1340   // CHECK: icmp uge <16 x i32> %{{.*}}, %{{.*}}
1341   return (__mmask16)_mm512_cmpge_epu32_mask(__a, __b);
1342 }
1343
1344 __mmask16 test_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
1345   // CHECK-LABEL: @test_mm512_mask_cmpge_epu32_mask
1346   // CHECK: icmp uge <16 x i32> %{{.*}}, %{{.*}}
1347   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
1348   return (__mmask16)_mm512_mask_cmpge_epu32_mask(__u, __a, __b);
1349 }
1350
1351 __mmask8 test_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) {
1352   // CHECK-LABEL: @test_mm512_cmpge_epu64_mask
1353   // CHECK: icmp uge <8 x i64> %{{.*}}, %{{.*}}
1354   return (__mmask8)_mm512_cmpge_epu64_mask(__a, __b);
1355 }
1356
1357 __mmask8 test_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
1358   // CHECK-LABEL: @test_mm512_mask_cmpge_epu64_mask
1359   // CHECK: icmp uge <8 x i64> %{{.*}}, %{{.*}}
1360   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
1361   return (__mmask8)_mm512_mask_cmpge_epu64_mask(__u, __a, __b);
1362 }
1363
1364 __mmask16 test_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) {
1365   // CHECK-LABEL: @test_mm512_cmpgt_epu32_mask
1366   // CHECK: icmp ugt <16 x i32> %{{.*}}, %{{.*}}
1367   return (__mmask16)_mm512_cmpgt_epu32_mask(__a, __b);
1368 }
1369
1370 __mmask16 test_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
1371   // CHECK-LABEL: @test_mm512_mask_cmpgt_epu32_mask
1372   // CHECK: icmp ugt <16 x i32> %{{.*}}, %{{.*}}
1373   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
1374   return (__mmask16)_mm512_mask_cmpgt_epu32_mask(__u, __a, __b);
1375 }
1376
1377 __mmask8 test_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) {
1378   // CHECK-LABEL: @test_mm512_cmpgt_epu64_mask
1379   // CHECK: icmp ugt <8 x i64> %{{.*}}, %{{.*}}
1380   return (__mmask8)_mm512_cmpgt_epu64_mask(__a, __b);
1381 }
1382
1383 __mmask8 test_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
1384   // CHECK-LABEL: @test_mm512_mask_cmpgt_epu64_mask
1385   // CHECK: icmp ugt <8 x i64> %{{.*}}, %{{.*}}
1386   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
1387   return (__mmask8)_mm512_mask_cmpgt_epu64_mask(__u, __a, __b);
1388 }
1389
1390 __mmask16 test_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) {
1391   // CHECK-LABEL: @test_mm512_cmple_epi32_mask
1392   // CHECK: icmp sle <16 x i32> %{{.*}}, %{{.*}}
1393   return (__mmask16)_mm512_cmple_epi32_mask(__a, __b);
1394 }
1395
1396 __mmask16 test_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
1397   // CHECK-LABEL: @test_mm512_mask_cmple_epi32_mask
1398   // CHECK: icmp sle <16 x i32> %{{.*}}, %{{.*}}
1399   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
1400   return (__mmask16)_mm512_mask_cmple_epi32_mask(__u, __a, __b);
1401 }
1402
1403 __mmask8 test_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) {
1404   // CHECK-LABEL: @test_mm512_cmple_epi64_mask
1405   // CHECK: icmp sle <8 x i64> %{{.*}}, %{{.*}}
1406   return (__mmask8)_mm512_cmple_epi64_mask(__a, __b);
1407 }
1408
1409 __mmask8 test_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
1410   // CHECK-LABEL: @test_mm512_mask_cmple_epi64_mask
1411   // CHECK: icmp sle <8 x i64> %{{.*}}, %{{.*}}
1412   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
1413   return (__mmask8)_mm512_mask_cmple_epi64_mask(__u, __a, __b);
1414 }
1415
1416 __mmask16 test_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) {
1417   // CHECK-LABEL: @test_mm512_cmple_epu32_mask
1418   // CHECK: icmp ule <16 x i32> %{{.*}}, %{{.*}}
1419   return (__mmask16)_mm512_cmple_epu32_mask(__a, __b);
1420 }
1421
1422 __mmask16 test_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
1423   // CHECK-LABEL: @test_mm512_mask_cmple_epu32_mask
1424   // CHECK: icmp ule <16 x i32> %{{.*}}, %{{.*}}
1425   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
1426   return (__mmask16)_mm512_mask_cmple_epu32_mask(__u, __a, __b);
1427 }
1428
1429 __mmask8 test_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) {
1430   // CHECK-LABEL: @test_mm512_cmple_epu64_mask
1431   // CHECK: icmp ule <8 x i64> %{{.*}}, %{{.*}}
1432   return (__mmask8)_mm512_cmple_epu64_mask(__a, __b);
1433 }
1434
1435 __mmask8 test_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
1436   // CHECK-LABEL: @test_mm512_mask_cmple_epu64_mask
1437   // CHECK: icmp ule <8 x i64> %{{.*}}, %{{.*}}
1438   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
1439   return (__mmask8)_mm512_mask_cmple_epu64_mask(__u, __a, __b);
1440 }
1441
1442 __mmask16 test_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) {
1443   // CHECK-LABEL: @test_mm512_cmplt_epi32_mask
1444   // CHECK: icmp slt <16 x i32> %{{.*}}, %{{.*}}
1445   return (__mmask16)_mm512_cmplt_epi32_mask(__a, __b);
1446 }
1447
1448 __mmask16 test_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
1449   // CHECK-LABEL: @test_mm512_mask_cmplt_epi32_mask
1450   // CHECK: icmp slt <16 x i32> %{{.*}}, %{{.*}}
1451   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
1452   return (__mmask16)_mm512_mask_cmplt_epi32_mask(__u, __a, __b);
1453 }
1454
1455 __mmask8 test_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) {
1456   // CHECK-LABEL: @test_mm512_cmplt_epi64_mask
1457   // CHECK: icmp slt <8 x i64> %{{.*}}, %{{.*}}
1458   return (__mmask8)_mm512_cmplt_epi64_mask(__a, __b);
1459 }
1460
1461 __mmask8 test_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
1462   // CHECK-LABEL: @test_mm512_mask_cmplt_epi64_mask
1463   // CHECK: icmp slt <8 x i64> %{{.*}}, %{{.*}}
1464   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
1465   return (__mmask8)_mm512_mask_cmplt_epi64_mask(__u, __a, __b);
1466 }
1467
1468 __mmask16 test_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) {
1469   // CHECK-LABEL: @test_mm512_cmplt_epu32_mask
1470   // CHECK: icmp ult <16 x i32> %{{.*}}, %{{.*}}
1471   return (__mmask16)_mm512_cmplt_epu32_mask(__a, __b);
1472 }
1473
1474 __mmask16 test_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
1475   // CHECK-LABEL: @test_mm512_mask_cmplt_epu32_mask
1476   // CHECK: icmp ult <16 x i32> %{{.*}}, %{{.*}}
1477   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
1478   return (__mmask16)_mm512_mask_cmplt_epu32_mask(__u, __a, __b);
1479 }
1480
1481 __mmask8 test_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) {
1482   // CHECK-LABEL: @test_mm512_cmplt_epu64_mask
1483   // CHECK: icmp ult <8 x i64> %{{.*}}, %{{.*}}
1484   return (__mmask8)_mm512_cmplt_epu64_mask(__a, __b);
1485 }
1486
1487 __mmask8 test_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
1488   // CHECK-LABEL: @test_mm512_mask_cmplt_epu64_mask
1489   // CHECK: icmp ult <8 x i64> %{{.*}}, %{{.*}}
1490   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
1491   return (__mmask8)_mm512_mask_cmplt_epu64_mask(__u, __a, __b);
1492 }
1493
1494 __mmask16 test_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) {
1495   // CHECK-LABEL: @test_mm512_cmpneq_epi32_mask
1496   // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}}
1497   return (__mmask16)_mm512_cmpneq_epi32_mask(__a, __b);
1498 }
1499
1500 __mmask16 test_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
1501   // CHECK-LABEL: @test_mm512_mask_cmpneq_epi32_mask
1502   // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}}
1503   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
1504   return (__mmask16)_mm512_mask_cmpneq_epi32_mask(__u, __a, __b);
1505 }
1506
1507 __mmask8 test_mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) {
1508   // CHECK-LABEL: @test_mm512_cmpneq_epi64_mask
1509   // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
1510   return (__mmask8)_mm512_cmpneq_epi64_mask(__a, __b);
1511 }
1512
1513 __mmask8 test_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
1514   // CHECK-LABEL: @test_mm512_mask_cmpneq_epi64_mask
1515   // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
1516   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
1517   return (__mmask8)_mm512_mask_cmpneq_epi64_mask(__u, __a, __b);
1518 }
1519
1520 __mmask16 test_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) {
1521   // CHECK-LABEL: @test_mm512_cmpneq_epu32_mask
1522   // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}}
1523   return (__mmask16)_mm512_cmpneq_epu32_mask(__a, __b);
1524 }
1525
1526 __mmask16 test_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
1527   // CHECK-LABEL: @test_mm512_mask_cmpneq_epu32_mask
1528   // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}}
1529   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
1530   return (__mmask16)_mm512_mask_cmpneq_epu32_mask(__u, __a, __b);
1531 }
1532
1533 __mmask8 test_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) {
1534   // CHECK-LABEL: @test_mm512_cmpneq_epu64_mask
1535   // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
1536   return (__mmask8)_mm512_cmpneq_epu64_mask(__a, __b);
1537 }
1538
1539 __mmask8 test_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
1540   // CHECK-LABEL: @test_mm512_mask_cmpneq_epu64_mask
1541   // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
1542   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
1543   return (__mmask8)_mm512_mask_cmpneq_epu64_mask(__u, __a, __b);
1544 }
1545
1546 __mmask16 test_mm512_cmp_eq_epi32_mask(__m512i __a, __m512i __b) {
1547   // CHECK-LABEL: @test_mm512_cmp_eq_epi32_mask
1548   // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
1549   return (__mmask16)_mm512_cmp_epi32_mask(__a, __b, _MM_CMPINT_EQ);
1550 }
1551
1552 __mmask16 test_mm512_mask_cmp_eq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
1553   // CHECK-LABEL: @test_mm512_mask_cmp_eq_epi32_mask
1554   // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
1555   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
1556   return (__mmask16)_mm512_mask_cmp_epi32_mask(__u, __a, __b, _MM_CMPINT_EQ);
1557 }
1558
1559 __mmask8 test_mm512_cmp_eq_epi64_mask(__m512i __a, __m512i __b) {
1560   // CHECK-LABEL: @test_mm512_cmp_eq_epi64_mask
1561   // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
1562   return (__mmask8)_mm512_cmp_epi64_mask(__a, __b, _MM_CMPINT_EQ);
1563 }
1564
1565 __mmask8 test_mm512_mask_cmp_eq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
1566   // CHECK-LABEL: @test_mm512_mask_cmp_eq_epi64_mask
1567   // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
1568   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
1569   return (__mmask8)_mm512_mask_cmp_epi64_mask(__u, __a, __b, _MM_CMPINT_EQ);
1570 }
1571
1572 __mmask16 test_mm512_cmp_epu32_mask(__m512i __a, __m512i __b) {
1573   // CHECK-LABEL: @test_mm512_cmp_epu32_mask
1574   // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
1575   return (__mmask16)_mm512_cmp_epu32_mask(__a, __b, 0);
1576 }
1577
1578 __mmask16 test_mm512_mask_cmp_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
1579   // CHECK-LABEL: @test_mm512_mask_cmp_epu32_mask
1580   // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
1581   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
1582   return (__mmask16)_mm512_mask_cmp_epu32_mask(__u, __a, __b, 0);
1583 }
1584
1585 __mmask8 test_mm512_cmp_epu64_mask(__m512i __a, __m512i __b) {
1586   // CHECK-LABEL: @test_mm512_cmp_epu64_mask
1587   // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
1588   return (__mmask8)_mm512_cmp_epu64_mask(__a, __b, 0);
1589 }
1590
1591 __mmask8 test_mm512_mask_cmp_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
1592   // CHECK-LABEL: @test_mm512_mask_cmp_epu64_mask
1593   // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
1594   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
1595   return (__mmask8)_mm512_mask_cmp_epu64_mask(__u, __a, __b, 0);
1596 }
1597
1598 __m512i test_mm512_mask_and_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) {
1599   // CHECK-LABEL: @test_mm512_mask_and_epi32
1600   // CHECK: and <16 x i32> 
1601   // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
1602   // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1603   return _mm512_mask_and_epi32(__src, __k,__a, __b);
1604 }
1605
1606 __m512i test_mm512_maskz_and_epi32(__mmask16 __k, __m512i __a, __m512i __b) {
1607   // CHECK-LABEL: @test_mm512_maskz_and_epi32
1608   // CHECK: and <16 x i32> 
1609   // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
1610   // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1611   return _mm512_maskz_and_epi32(__k,__a, __b);
1612 }
1613
1614 __m512i test_mm512_mask_and_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) {
1615   // CHECK-LABEL: @test_mm512_mask_and_epi64
1616   // CHECK: %[[AND_RES:.*]] = and <8 x i64>
1617   // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
1618   // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[AND_RES]], <8 x i64> %{{.*}}
1619   return _mm512_mask_and_epi64(__src, __k,__a, __b);
1620 }
1621
1622 __m512i test_mm512_maskz_and_epi64(__mmask8 __k, __m512i __a, __m512i __b) {
1623   // CHECK-LABEL: @test_mm512_maskz_and_epi64
1624   // CHECK: %[[AND_RES:.*]] = and <8 x i64>
1625   // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
1626   // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[AND_RES]], <8 x i64> %{{.*}}
1627   return _mm512_maskz_and_epi64(__k,__a, __b);
1628 }
1629
1630 __m512i test_mm512_mask_or_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) {
1631   // CHECK-LABEL: @test_mm512_mask_or_epi32
1632   // CHECK: or <16 x i32> 
1633   // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
1634   // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1635   return _mm512_mask_or_epi32(__src, __k,__a, __b);
1636 }
1637
1638 __m512i test_mm512_maskz_or_epi32(__mmask16 __k, __m512i __a, __m512i __b) {
1639   // CHECK-LABEL: @test_mm512_maskz_or_epi32
1640   // CHECK: or <16 x i32> 
1641   // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
1642   // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1643   return _mm512_maskz_or_epi32(__k,__a, __b);
1644 }
1645
1646 __m512i test_mm512_mask_or_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) {
1647   // CHECK-LABEL: @test_mm512_mask_or_epi64
1648   // CHECK: %[[OR_RES:.*]] = or <8 x i64>
1649   // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
1650   // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[OR_RES]], <8 x i64> %{{.*}}
1651   return _mm512_mask_or_epi64(__src, __k,__a, __b);
1652 }
1653
1654 __m512i test_mm512_maskz_or_epi64(__mmask8 __k, __m512i __a, __m512i __b) {
1655   // CHECK-LABEL: @test_mm512_maskz_or_epi64
1656   // CHECK: %[[OR_RES:.*]] = or <8 x i64>
1657   // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
1658   // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[OR_RES]], <8 x i64> %{{.*}}
1659   return _mm512_maskz_or_epi64(__k,__a, __b);
1660 }
1661
1662 __m512i test_mm512_mask_xor_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) {
1663   // CHECK-LABEL: @test_mm512_mask_xor_epi32
1664   // CHECK: xor <16 x i32> 
1665   // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
1666   // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1667   return _mm512_mask_xor_epi32(__src, __k,__a, __b);
1668 }
1669
1670 __m512i test_mm512_maskz_xor_epi32(__mmask16 __k, __m512i __a, __m512i __b) {
1671   // CHECK-LABEL: @test_mm512_maskz_xor_epi32
1672   // CHECK: xor <16 x i32> 
1673   // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
1674   // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1675   return _mm512_maskz_xor_epi32(__k,__a, __b);
1676 }
1677
1678 __m512i test_mm512_mask_xor_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) {
1679   // CHECK-LABEL: @test_mm512_mask_xor_epi64
1680   // CHECK: %[[XOR_RES:.*]] = xor <8 x i64>
1681   // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
1682   // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[XOR_RES]], <8 x i64> %{{.*}}
1683   return _mm512_mask_xor_epi64(__src, __k,__a, __b);
1684 }
1685
1686 __m512i test_mm512_maskz_xor_epi64(__mmask8 __k, __m512i __a, __m512i __b) {
1687   // CHECK-LABEL: @test_mm512_maskz_xor_epi64
1688   // CHECK: %[[XOR_RES:.*]] = xor <8 x i64>
1689   // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
1690   // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[XOR_RES]], <8 x i64> %{{.*}}
1691   return _mm512_maskz_xor_epi64(__k,__a, __b);
1692 }
1693
1694 __m512i test_mm512_and_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) {
1695   // CHECK-LABEL: @test_mm512_and_epi32
1696   // CHECK: and <16 x i32>
1697   return _mm512_and_epi32(__a, __b);
1698 }
1699
1700 __m512i test_mm512_and_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) {
1701   // CHECK-LABEL: @test_mm512_and_epi64
1702   // CHECK: and <8 x i64>
1703   return _mm512_and_epi64(__a, __b);
1704 }
1705
1706 __m512i test_mm512_or_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) {
1707   // CHECK-LABEL: @test_mm512_or_epi32
1708   // CHECK: or <16 x i32>
1709   return _mm512_or_epi32(__a, __b);
1710 }
1711
1712 __m512i test_mm512_or_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) {
1713   // CHECK-LABEL: @test_mm512_or_epi64
1714   // CHECK: or <8 x i64>
1715   return _mm512_or_epi64(__a, __b);
1716 }
1717
1718 __m512i test_mm512_xor_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) {
1719   // CHECK-LABEL: @test_mm512_xor_epi32
1720   // CHECK: xor <16 x i32>
1721   return _mm512_xor_epi32(__a, __b);
1722 }
1723
1724 __m512i test_mm512_xor_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) {
1725   // CHECK-LABEL: @test_mm512_xor_epi64
1726   // CHECK: xor <8 x i64>
1727   return _mm512_xor_epi64(__a, __b);
1728 }
1729
1730 __m512i test_mm512_maskz_andnot_epi32 (__mmask16 __k,__m512i __A, __m512i __B){
1731   // CHECK-LABEL: @test_mm512_maskz_andnot_epi32
1732   // CHECK: xor <16 x i32> %{{.*}}, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>
1733   // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
1734   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1735   return _mm512_maskz_andnot_epi32(__k,__A,__B);
1736 }
1737
1738 __m512i test_mm512_mask_andnot_epi32 (__mmask16 __k,__m512i __A, __m512i __B,
1739                                       __m512i __src) {
1740   // CHECK-LABEL: @test_mm512_mask_andnot_epi32
1741   // CHECK: xor <16 x i32> %{{.*}}, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>
1742   // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
1743   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1744   return _mm512_mask_andnot_epi32(__src,__k,__A,__B);
1745 }
1746
1747 __m512i test_mm512_andnot_si512(__m512i __A, __m512i __B)
1748 {
1749   //CHECK-LABEL: @test_mm512_andnot_si512
1750   //CHECK: load {{.*}}%__A.addr.i, align 64
1751   //CHECK: %neg.i = xor{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
1752   //CHECK: load {{.*}}%__B.addr.i, align 64
1753   //CHECK: and <8 x i64> %neg.i,{{.*}}
1754
1755   return _mm512_andnot_si512(__A, __B);
1756 }
1757
1758 __m512i test_mm512_andnot_epi32(__m512i __A, __m512i __B) {
1759   // CHECK-LABEL: @test_mm512_andnot_epi32
1760   // CHECK: xor <16 x i32> %{{.*}}, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>
1761   // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
1762   return _mm512_andnot_epi32(__A,__B);
1763 }
1764
1765 __m512i test_mm512_maskz_andnot_epi64 (__mmask8 __k,__m512i __A, __m512i __B) {
1766   // CHECK-LABEL: @test_mm512_maskz_andnot_epi64
1767   // CHECK: xor <8 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
1768   // CHECK: and <8 x i64> %{{.*}}, %{{.*}}
1769   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
1770   return _mm512_maskz_andnot_epi64(__k,__A,__B);
1771 }
1772
1773 __m512i test_mm512_mask_andnot_epi64 (__mmask8 __k,__m512i __A, __m512i __B, 
1774                                       __m512i __src) {
1775   //CHECK-LABEL: @test_mm512_mask_andnot_epi64
1776   // CHECK: xor <8 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
1777   // CHECK: and <8 x i64> %{{.*}}, %{{.*}}
1778   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
1779   return _mm512_mask_andnot_epi64(__src,__k,__A,__B);
1780 }
1781
1782 __m512i test_mm512_andnot_epi64(__m512i __A, __m512i __B) {
1783   //CHECK-LABEL: @test_mm512_andnot_epi64
1784   // CHECK: xor <8 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
1785   // CHECK: and <8 x i64> %{{.*}}, %{{.*}}
1786   return _mm512_andnot_epi64(__A,__B);
1787 }
1788
1789 __m512i test_mm512_maskz_sub_epi32 (__mmask16 __k,__m512i __A, __m512i __B) {
1790   //CHECK-LABEL: @test_mm512_maskz_sub_epi32
1791   //CHECK: sub <16 x i32> %{{.*}}, %{{.*}}
1792   //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1793   return _mm512_maskz_sub_epi32(__k,__A,__B);
1794 }
1795
1796 __m512i test_mm512_mask_sub_epi32 (__mmask16 __k,__m512i __A, __m512i __B, 
1797                                    __m512i __src) {
1798   //CHECK-LABEL: @test_mm512_mask_sub_epi32
1799   //CHECK: sub <16 x i32> %{{.*}}, %{{.*}}
1800   //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1801   return _mm512_mask_sub_epi32(__src,__k,__A,__B);
1802 }
1803
1804 __m512i test_mm512_sub_epi32(__m512i __A, __m512i __B) {
1805   //CHECK-LABEL: @test_mm512_sub_epi32
1806   //CHECK: sub <16 x i32>
1807   return _mm512_sub_epi32(__A,__B);
1808 }
1809
1810 __m512i test_mm512_maskz_sub_epi64 (__mmask8 __k,__m512i __A, __m512i __B) {
1811   //CHECK-LABEL: @test_mm512_maskz_sub_epi64
1812   //CHECK: sub <8 x i64> %{{.*}}, %{{.*}}
1813   //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
1814   return _mm512_maskz_sub_epi64(__k,__A,__B);
1815 }
1816
1817 __m512i test_mm512_mask_sub_epi64 (__mmask8 __k,__m512i __A, __m512i __B, 
1818                                    __m512i __src) {
1819   //CHECK-LABEL: @test_mm512_mask_sub_epi64
1820   //CHECK: sub <8 x i64> %{{.*}}, %{{.*}}
1821   //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
1822   return _mm512_mask_sub_epi64(__src,__k,__A,__B);
1823 }
1824
1825 __m512i test_mm512_sub_epi64(__m512i __A, __m512i __B) {
1826   //CHECK-LABEL: @test_mm512_sub_epi64
1827   //CHECK: sub <8 x i64>
1828   return _mm512_sub_epi64(__A,__B);
1829 }
1830
1831 __m512i test_mm512_maskz_add_epi32 (__mmask16 __k,__m512i __A, __m512i __B) {
1832   //CHECK-LABEL: @test_mm512_maskz_add_epi32
1833   //CHECK: add <16 x i32> %{{.*}}, %{{.*}}
1834   //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1835   return _mm512_maskz_add_epi32(__k,__A,__B);
1836 }
1837
1838 __m512i test_mm512_mask_add_epi32 (__mmask16 __k,__m512i __A, __m512i __B, 
1839                                    __m512i __src) {
1840   //CHECK-LABEL: @test_mm512_mask_add_epi32
1841   //CHECK: add <16 x i32> %{{.*}}, %{{.*}}
1842   //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1843   return _mm512_mask_add_epi32(__src,__k,__A,__B);
1844 }
1845
1846 __m512i test_mm512_add_epi32(__m512i __A, __m512i __B) {
1847   //CHECK-LABEL: @test_mm512_add_epi32
1848   //CHECK: add <16 x i32>
1849   return _mm512_add_epi32(__A,__B);
1850 }
1851
1852 __m512i test_mm512_maskz_add_epi64 (__mmask8 __k,__m512i __A, __m512i __B) {
1853   //CHECK-LABEL: @test_mm512_maskz_add_epi64
1854   //CHECK: add <8 x i64> %{{.*}}, %{{.*}}
1855   //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
1856   return _mm512_maskz_add_epi64(__k,__A,__B);
1857 }
1858
1859 __m512i test_mm512_mask_add_epi64 (__mmask8 __k,__m512i __A, __m512i __B, 
1860                                    __m512i __src) {
1861   //CHECK-LABEL: @test_mm512_mask_add_epi64
1862   //CHECK: add <8 x i64> %{{.*}}, %{{.*}}
1863   //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
1864   return _mm512_mask_add_epi64(__src,__k,__A,__B);
1865 }
1866
1867 __m512i test_mm512_add_epi64(__m512i __A, __m512i __B) {
1868   //CHECK-LABEL: @test_mm512_add_epi64
1869   //CHECK: add <8 x i64>
1870   return _mm512_add_epi64(__A,__B);
1871 }
1872
1873 __m512i test_mm512_mul_epi32(__m512i __A, __m512i __B) {
1874   //CHECK-LABEL: @test_mm512_mul_epi32
1875   //CHECK: @llvm.x86.avx512.pmul.dq.512
1876   return _mm512_mul_epi32(__A,__B);
1877 }
1878
1879 __m512i test_mm512_maskz_mul_epi32 (__mmask16 __k,__m512i __A, __m512i __B) {
1880   //CHECK-LABEL: @test_mm512_maskz_mul_epi32
1881   //CHECK: @llvm.x86.avx512.pmul.dq.512
1882   //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
1883   return _mm512_maskz_mul_epi32(__k,__A,__B);
1884 }
1885
1886 __m512i test_mm512_mask_mul_epi32 (__mmask16 __k,__m512i __A, __m512i __B,
1887                                    __m512i __src) {
1888   //CHECK-LABEL: @test_mm512_mask_mul_epi32
1889   //CHECK: @llvm.x86.avx512.pmul.dq.512
1890   //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
1891   return _mm512_mask_mul_epi32(__src,__k,__A,__B);
1892 }
1893
1894 __m512i test_mm512_mul_epu32 (__m512i __A, __m512i __B) {
1895   //CHECK-LABEL: @test_mm512_mul_epu32
1896   //CHECK: @llvm.x86.avx512.pmulu.dq.512
1897   return _mm512_mul_epu32(__A,__B);
1898 }
1899
1900 __m512i test_mm512_maskz_mul_epu32 (__mmask16 __k,__m512i __A, __m512i __B) {
1901   //CHECK-LABEL: @test_mm512_maskz_mul_epu32
1902   //CHECK: @llvm.x86.avx512.pmulu.dq.512
1903   //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
1904   return _mm512_maskz_mul_epu32(__k,__A,__B);
1905 }
1906
1907 __m512i test_mm512_mask_mul_epu32 (__mmask16 __k,__m512i __A, __m512i __B, 
1908                                    __m512i __src) {
1909   //CHECK-LABEL: @test_mm512_mask_mul_epu32
1910   //CHECK: @llvm.x86.avx512.pmulu.dq.512
1911   //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
1912   return _mm512_mask_mul_epu32(__src,__k,__A,__B);
1913 }
1914
1915 __m512i test_mm512_maskz_mullo_epi32 (__mmask16 __k,__m512i __A, __m512i __B) {
1916   //CHECK-LABEL: @test_mm512_maskz_mullo_epi32
1917   //CHECK: mul <16 x i32> %{{.*}}, %{{.*}}
1918   //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1919   return _mm512_maskz_mullo_epi32(__k,__A,__B);
1920 }
1921
1922 __m512i test_mm512_mask_mullo_epi32 (__mmask16 __k,__m512i __A, __m512i __B, __m512i __src) {
1923   //CHECK-LABEL: @test_mm512_mask_mullo_epi32
1924   //CHECK: mul <16 x i32> %{{.*}}, %{{.*}}
1925   //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1926   return _mm512_mask_mullo_epi32(__src,__k,__A,__B);
1927 }
1928
1929 __m512i test_mm512_mullo_epi32(__m512i __A, __m512i __B) {
1930   //CHECK-LABEL: @test_mm512_mullo_epi32
1931   //CHECK: mul <16 x i32>
1932   return _mm512_mullo_epi32(__A,__B);
1933 }
1934
1935 __m512d test_mm512_add_round_pd(__m512d __A, __m512d __B) {
1936   // CHECK-LABEL: @test_mm512_add_round_pd
1937   // CHECK: @llvm.x86.avx512.mask.add.pd.512
1938   return _mm512_add_round_pd(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
1939 }
1940 __m512d test_mm512_mask_add_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1941   // CHECK-LABEL: @test_mm512_mask_add_round_pd
1942   // CHECK: @llvm.x86.avx512.mask.add.pd.512
1943   return _mm512_mask_add_round_pd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
1944 }
1945 __m512d test_mm512_maskz_add_round_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1946   // CHECK-LABEL: @test_mm512_maskz_add_round_pd
1947   // CHECK: @llvm.x86.avx512.mask.add.pd.512
1948   return _mm512_maskz_add_round_pd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
1949 }
1950 __m512d test_mm512_mask_add_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1951   // CHECK-LABEL: @test_mm512_mask_add_pd
1952   // CHECK: fadd <8 x double> %{{.*}}, %{{.*}}
1953   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1954   return _mm512_mask_add_pd(__W,__U,__A,__B); 
1955 }
1956 __m512d test_mm512_maskz_add_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1957   // CHECK-LABEL: @test_mm512_maskz_add_pd
1958   // CHECK: fadd <8 x double> %{{.*}}, %{{.*}}
1959   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1960   return _mm512_maskz_add_pd(__U,__A,__B); 
1961 }
1962 __m512 test_mm512_add_round_ps(__m512 __A, __m512 __B) {
1963   // CHECK-LABEL: @test_mm512_add_round_ps
1964   // CHECK: @llvm.x86.avx512.mask.add.ps.512
1965   return _mm512_add_round_ps(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
1966 }
1967 __m512 test_mm512_mask_add_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1968   // CHECK-LABEL: @test_mm512_mask_add_round_ps
1969   // CHECK: @llvm.x86.avx512.mask.add.ps.512
1970   return _mm512_mask_add_round_ps(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
1971 }
1972 __m512 test_mm512_maskz_add_round_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1973   // CHECK-LABEL: @test_mm512_maskz_add_round_ps
1974   // CHECK: @llvm.x86.avx512.mask.add.ps.512
1975   return _mm512_maskz_add_round_ps(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
1976 }
1977 __m512 test_mm512_mask_add_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1978   // CHECK-LABEL: @test_mm512_mask_add_ps
1979   // CHECK: fadd <16 x float> %{{.*}}, %{{.*}}
1980   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1981   return _mm512_mask_add_ps(__W,__U,__A,__B); 
1982 }
1983 __m512 test_mm512_maskz_add_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1984   // CHECK-LABEL: @test_mm512_maskz_add_ps
1985   // CHECK: fadd <16 x float> %{{.*}}, %{{.*}}
1986   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1987   return _mm512_maskz_add_ps(__U,__A,__B); 
1988 }
1989 __m128 test_mm_add_round_ss(__m128 __A, __m128 __B) {
1990   // CHECK-LABEL: @test_mm_add_round_ss
1991   // CHECK: @llvm.x86.avx512.mask.add.ss.round
1992   return _mm_add_round_ss(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
1993 }
1994 __m128 test_mm_mask_add_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
1995   // CHECK-LABEL: @test_mm_mask_add_round_ss
1996   // CHECK: @llvm.x86.avx512.mask.add.ss.round
1997   return _mm_mask_add_round_ss(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
1998 }
1999 __m128 test_mm_maskz_add_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
2000   // CHECK-LABEL: @test_mm_maskz_add_round_ss
2001   // CHECK: @llvm.x86.avx512.mask.add.ss.round
2002   return _mm_maskz_add_round_ss(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2003 }
2004 __m128 test_mm_mask_add_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2005   // CHECK-LABEL: @test_mm_mask_add_ss
2006   // CHECK: @llvm.x86.avx512.mask.add.ss.round
2007   return _mm_mask_add_ss(__W,__U,__A,__B); 
2008 }
2009 __m128 test_mm_maskz_add_ss(__mmask8 __U, __m128 __A, __m128 __B) {
2010   // CHECK-LABEL: @test_mm_maskz_add_ss
2011   // CHECK: @llvm.x86.avx512.mask.add.ss.round
2012   return _mm_maskz_add_ss(__U,__A,__B); 
2013 }
2014 __m128d test_mm_add_round_sd(__m128d __A, __m128d __B) {
2015   // CHECK-LABEL: @test_mm_add_round_sd
2016   // CHECK: @llvm.x86.avx512.mask.add.sd.round
2017   return _mm_add_round_sd(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2018 }
2019 __m128d test_mm_mask_add_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2020   // CHECK-LABEL: @test_mm_mask_add_round_sd
2021   // CHECK: @llvm.x86.avx512.mask.add.sd.round
2022   return _mm_mask_add_round_sd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2023 }
2024 __m128d test_mm_maskz_add_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
2025   // CHECK-LABEL: @test_mm_maskz_add_round_sd
2026   // CHECK: @llvm.x86.avx512.mask.add.sd.round
2027   return _mm_maskz_add_round_sd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2028 }
2029 __m128d test_mm_mask_add_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2030   // CHECK-LABEL: @test_mm_mask_add_sd
2031   // CHECK: @llvm.x86.avx512.mask.add.sd.round
2032   return _mm_mask_add_sd(__W,__U,__A,__B); 
2033 }
2034 __m128d test_mm_maskz_add_sd(__mmask8 __U, __m128d __A, __m128d __B) {
2035   // CHECK-LABEL: @test_mm_maskz_add_sd
2036   // CHECK: @llvm.x86.avx512.mask.add.sd.round
2037   return _mm_maskz_add_sd(__U,__A,__B); 
2038 }
2039 __m512d test_mm512_sub_round_pd(__m512d __A, __m512d __B) {
2040   // CHECK-LABEL: @test_mm512_sub_round_pd
2041   // CHECK: @llvm.x86.avx512.mask.sub.pd.512
2042   return _mm512_sub_round_pd(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2043 }
2044 __m512d test_mm512_mask_sub_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2045   // CHECK-LABEL: @test_mm512_mask_sub_round_pd
2046   // CHECK: @llvm.x86.avx512.mask.sub.pd.512
2047   return _mm512_mask_sub_round_pd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2048 }
2049 __m512d test_mm512_maskz_sub_round_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2050   // CHECK-LABEL: @test_mm512_maskz_sub_round_pd
2051   // CHECK: @llvm.x86.avx512.mask.sub.pd.512
2052   return _mm512_maskz_sub_round_pd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2053 }
2054 __m512d test_mm512_mask_sub_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2055   // CHECK-LABEL: @test_mm512_mask_sub_pd
2056   // CHECK: fsub <8 x double> %{{.*}}, %{{.*}}
2057   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
2058   return _mm512_mask_sub_pd(__W,__U,__A,__B); 
2059 }
2060 __m512d test_mm512_maskz_sub_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2061   // CHECK-LABEL: @test_mm512_maskz_sub_pd
2062   // CHECK: fsub <8 x double> %{{.*}}, %{{.*}}
2063   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
2064   return _mm512_maskz_sub_pd(__U,__A,__B); 
2065 }
2066 __m512 test_mm512_sub_round_ps(__m512 __A, __m512 __B) {
2067   // CHECK-LABEL: @test_mm512_sub_round_ps
2068   // CHECK: @llvm.x86.avx512.mask.sub.ps.512
2069   return _mm512_sub_round_ps(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2070 }
2071 __m512 test_mm512_mask_sub_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2072   // CHECK-LABEL: @test_mm512_mask_sub_round_ps
2073   // CHECK: @llvm.x86.avx512.mask.sub.ps.512
2074   return _mm512_mask_sub_round_ps(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2075 }
2076 __m512 test_mm512_maskz_sub_round_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2077   // CHECK-LABEL: @test_mm512_maskz_sub_round_ps
2078   // CHECK: @llvm.x86.avx512.mask.sub.ps.512
2079   return _mm512_maskz_sub_round_ps(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2080 }
2081 __m512 test_mm512_mask_sub_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2082   // CHECK-LABEL: @test_mm512_mask_sub_ps
2083   // CHECK: fsub <16 x float> %{{.*}}, %{{.*}}
2084   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
2085   return _mm512_mask_sub_ps(__W,__U,__A,__B); 
2086 }
2087 __m512 test_mm512_maskz_sub_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2088   // CHECK-LABEL: @test_mm512_maskz_sub_ps
2089   // CHECK: fsub <16 x float> %{{.*}}, %{{.*}}
2090   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
2091   return _mm512_maskz_sub_ps(__U,__A,__B); 
2092 }
2093 __m128 test_mm_sub_round_ss(__m128 __A, __m128 __B) {
2094   // CHECK-LABEL: @test_mm_sub_round_ss
2095   // CHECK: @llvm.x86.avx512.mask.sub.ss.round
2096   return _mm_sub_round_ss(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2097 }
2098 __m128 test_mm_mask_sub_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2099   // CHECK-LABEL: @test_mm_mask_sub_round_ss
2100   // CHECK: @llvm.x86.avx512.mask.sub.ss.round
2101   return _mm_mask_sub_round_ss(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2102 }
2103 __m128 test_mm_maskz_sub_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
2104   // CHECK-LABEL: @test_mm_maskz_sub_round_ss
2105   // CHECK: @llvm.x86.avx512.mask.sub.ss.round
2106   return _mm_maskz_sub_round_ss(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2107 }
2108 __m128 test_mm_mask_sub_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2109   // CHECK-LABEL: @test_mm_mask_sub_ss
2110   // CHECK: @llvm.x86.avx512.mask.sub.ss.round
2111   return _mm_mask_sub_ss(__W,__U,__A,__B); 
2112 }
2113 __m128 test_mm_maskz_sub_ss(__mmask8 __U, __m128 __A, __m128 __B) {
2114   // CHECK-LABEL: @test_mm_maskz_sub_ss
2115   // CHECK: @llvm.x86.avx512.mask.sub.ss.round
2116   return _mm_maskz_sub_ss(__U,__A,__B); 
2117 }
2118 __m128d test_mm_sub_round_sd(__m128d __A, __m128d __B) {
2119   // CHECK-LABEL: @test_mm_sub_round_sd
2120   // CHECK: @llvm.x86.avx512.mask.sub.sd.round
2121   return _mm_sub_round_sd(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2122 }
2123 __m128d test_mm_mask_sub_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2124   // CHECK-LABEL: @test_mm_mask_sub_round_sd
2125   // CHECK: @llvm.x86.avx512.mask.sub.sd.round
2126   return _mm_mask_sub_round_sd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2127 }
2128 __m128d test_mm_maskz_sub_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
2129   // CHECK-LABEL: @test_mm_maskz_sub_round_sd
2130   // CHECK: @llvm.x86.avx512.mask.sub.sd.round
2131   return _mm_maskz_sub_round_sd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2132 }
2133 __m128d test_mm_mask_sub_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2134   // CHECK-LABEL: @test_mm_mask_sub_sd
2135   // CHECK: @llvm.x86.avx512.mask.sub.sd.round
2136   return _mm_mask_sub_sd(__W,__U,__A,__B); 
2137 }
2138 __m128d test_mm_maskz_sub_sd(__mmask8 __U, __m128d __A, __m128d __B) {
2139   // CHECK-LABEL: @test_mm_maskz_sub_sd
2140   // CHECK: @llvm.x86.avx512.mask.sub.sd.round
2141   return _mm_maskz_sub_sd(__U,__A,__B); 
2142 }
2143 __m512d test_mm512_mul_round_pd(__m512d __A, __m512d __B) {
2144   // CHECK-LABEL: @test_mm512_mul_round_pd
2145   // CHECK: @llvm.x86.avx512.mask.mul.pd.512
2146   return _mm512_mul_round_pd(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2147 }
2148 __m512d test_mm512_mask_mul_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2149   // CHECK-LABEL: @test_mm512_mask_mul_round_pd
2150   // CHECK: @llvm.x86.avx512.mask.mul.pd.512
2151   return _mm512_mask_mul_round_pd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2152 }
2153 __m512d test_mm512_maskz_mul_round_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2154   // CHECK-LABEL: @test_mm512_maskz_mul_round_pd
2155   // CHECK: @llvm.x86.avx512.mask.mul.pd.512
2156   return _mm512_maskz_mul_round_pd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2157 }
2158 __m512d test_mm512_mask_mul_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2159   // CHECK-LABEL: @test_mm512_mask_mul_pd
2160   // CHECK: fmul <8 x double> %{{.*}}, %{{.*}}
2161   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
2162   return _mm512_mask_mul_pd(__W,__U,__A,__B); 
2163 }
2164 __m512d test_mm512_maskz_mul_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2165   // CHECK-LABEL: @test_mm512_maskz_mul_pd
2166   // CHECK: fmul <8 x double> %{{.*}}, %{{.*}}
2167   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
2168   return _mm512_maskz_mul_pd(__U,__A,__B); 
2169 }
2170 __m512 test_mm512_mul_round_ps(__m512 __A, __m512 __B) {
2171   // CHECK-LABEL: @test_mm512_mul_round_ps
2172   // CHECK: @llvm.x86.avx512.mask.mul.ps.512
2173   return _mm512_mul_round_ps(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2174 }
2175 __m512 test_mm512_mask_mul_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2176   // CHECK-LABEL: @test_mm512_mask_mul_round_ps
2177   // CHECK: @llvm.x86.avx512.mask.mul.ps.512
2178   return _mm512_mask_mul_round_ps(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2179 }
2180 __m512 test_mm512_maskz_mul_round_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2181   // CHECK-LABEL: @test_mm512_maskz_mul_round_ps
2182   // CHECK: @llvm.x86.avx512.mask.mul.ps.512
2183   return _mm512_maskz_mul_round_ps(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2184 }
2185 __m512 test_mm512_mask_mul_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2186   // CHECK-LABEL: @test_mm512_mask_mul_ps
2187   // CHECK: fmul <16 x float> %{{.*}}, %{{.*}}
2188   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
2189   return _mm512_mask_mul_ps(__W,__U,__A,__B); 
2190 }
2191 __m512 test_mm512_maskz_mul_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2192   // CHECK-LABEL: @test_mm512_maskz_mul_ps
2193   // CHECK: fmul <16 x float> %{{.*}}, %{{.*}}
2194   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
2195   return _mm512_maskz_mul_ps(__U,__A,__B); 
2196 }
2197 __m128 test_mm_mul_round_ss(__m128 __A, __m128 __B) {
2198   // CHECK-LABEL: @test_mm_mul_round_ss
2199   // CHECK: @llvm.x86.avx512.mask.mul.ss.round
2200   return _mm_mul_round_ss(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2201 }
2202 __m128 test_mm_mask_mul_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2203   // CHECK-LABEL: @test_mm_mask_mul_round_ss
2204   // CHECK: @llvm.x86.avx512.mask.mul.ss.round
2205   return _mm_mask_mul_round_ss(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2206 }
2207 __m128 test_mm_maskz_mul_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
2208   // CHECK-LABEL: @test_mm_maskz_mul_round_ss
2209   // CHECK: @llvm.x86.avx512.mask.mul.ss.round
2210   return _mm_maskz_mul_round_ss(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2211 }
2212 __m128 test_mm_mask_mul_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2213   // CHECK-LABEL: @test_mm_mask_mul_ss
2214   // CHECK: @llvm.x86.avx512.mask.mul.ss.round
2215   return _mm_mask_mul_ss(__W,__U,__A,__B); 
2216 }
2217 __m128 test_mm_maskz_mul_ss(__mmask8 __U, __m128 __A, __m128 __B) {
2218   // CHECK-LABEL: @test_mm_maskz_mul_ss
2219   // CHECK: @llvm.x86.avx512.mask.mul.ss.round
2220   return _mm_maskz_mul_ss(__U,__A,__B); 
2221 }
2222 __m128d test_mm_mul_round_sd(__m128d __A, __m128d __B) {
2223   // CHECK-LABEL: @test_mm_mul_round_sd
2224   // CHECK: @llvm.x86.avx512.mask.mul.sd.round
2225   return _mm_mul_round_sd(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2226 }
2227 __m128d test_mm_mask_mul_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2228   // CHECK-LABEL: @test_mm_mask_mul_round_sd
2229   // CHECK: @llvm.x86.avx512.mask.mul.sd.round
2230   return _mm_mask_mul_round_sd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2231 }
2232 __m128d test_mm_maskz_mul_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
2233   // CHECK-LABEL: @test_mm_maskz_mul_round_sd
2234   // CHECK: @llvm.x86.avx512.mask.mul.sd.round
2235   return _mm_maskz_mul_round_sd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2236 }
2237 __m128d test_mm_mask_mul_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2238   // CHECK-LABEL: @test_mm_mask_mul_sd
2239   // CHECK: @llvm.x86.avx512.mask.mul.sd.round
2240   return _mm_mask_mul_sd(__W,__U,__A,__B); 
2241 }
2242 __m128d test_mm_maskz_mul_sd(__mmask8 __U, __m128d __A, __m128d __B) {
2243   // CHECK-LABEL: @test_mm_maskz_mul_sd
2244   // CHECK: @llvm.x86.avx512.mask.mul.sd.round
2245   return _mm_maskz_mul_sd(__U,__A,__B); 
2246 }
2247 __m512d test_mm512_div_round_pd(__m512d __A, __m512d __B) {
2248   // CHECK-LABEL: @test_mm512_div_round_pd
2249   // CHECK: @llvm.x86.avx512.mask.div.pd.512
2250   return _mm512_div_round_pd(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2251 }
2252 __m512d test_mm512_mask_div_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2253   // CHECK-LABEL: @test_mm512_mask_div_round_pd
2254   // CHECK: @llvm.x86.avx512.mask.div.pd.512
2255   return _mm512_mask_div_round_pd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2256 }
2257 __m512d test_mm512_maskz_div_round_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2258   // CHECK-LABEL: @test_mm512_maskz_div_round_pd
2259   // CHECK: @llvm.x86.avx512.mask.div.pd.512
2260   return _mm512_maskz_div_round_pd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2261 }
2262 __m512d test_mm512_div_pd(__m512d __a, __m512d __b) {
2263   // CHECK-LABLE: @test_mm512_div_pd
2264   // CHECK: fdiv <8 x double>
2265   return _mm512_div_pd(__a,__b); 
2266 }
2267 __m512d test_mm512_mask_div_pd(__m512d __w, __mmask8 __u, __m512d __a, __m512d __b) {
2268   // CHECK-LABLE: @test_mm512_mask_div_pd
2269   // CHECK: fdiv <8 x double> %{{.*}}, %{{.*}}
2270   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
2271   return _mm512_mask_div_pd(__w,__u,__a,__b); 
2272 }
2273 __m512d test_mm512_maskz_div_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2274   // CHECK-LABEL: @test_mm512_maskz_div_pd
2275   // CHECK: fdiv <8 x double> %{{.*}}, %{{.*}}
2276   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
2277   return _mm512_maskz_div_pd(__U,__A,__B); 
2278 }
2279 __m512 test_mm512_div_round_ps(__m512 __A, __m512 __B) {
2280   // CHECK-LABEL: @test_mm512_div_round_ps
2281   // CHECK: @llvm.x86.avx512.mask.div.ps.512
2282   return _mm512_div_round_ps(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2283 }
2284 __m512 test_mm512_mask_div_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2285   // CHECK-LABEL: @test_mm512_mask_div_round_ps
2286   // CHECK: @llvm.x86.avx512.mask.div.ps.512
2287   return _mm512_mask_div_round_ps(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2288 }
2289 __m512 test_mm512_maskz_div_round_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2290   // CHECK-LABEL: @test_mm512_maskz_div_round_ps
2291   // CHECK: @llvm.x86.avx512.mask.div.ps.512
2292   return _mm512_maskz_div_round_ps(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2293 }
2294 __m512 test_mm512_div_ps(__m512 __A, __m512 __B) {
2295   // CHECK-LABEL: @test_mm512_div_ps
2296   // CHECK: fdiv <16 x float>
2297   return _mm512_div_ps(__A,__B); 
2298 }
2299 __m512 test_mm512_mask_div_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2300   // CHECK-LABEL: @test_mm512_mask_div_ps
2301   // CHECK: fdiv <16 x float> %{{.*}}, %{{.*}}
2302   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
2303   return _mm512_mask_div_ps(__W,__U,__A,__B); 
2304 }
2305 __m512 test_mm512_maskz_div_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2306   // CHECK-LABEL: @test_mm512_maskz_div_ps
2307   // CHECK: fdiv <16 x float> %{{.*}}, %{{.*}}
2308   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
2309   return _mm512_maskz_div_ps(__U,__A,__B); 
2310 }
2311 __m128 test_mm_div_round_ss(__m128 __A, __m128 __B) {
2312   // CHECK-LABEL: @test_mm_div_round_ss
2313   // CHECK: @llvm.x86.avx512.mask.div.ss.round
2314   return _mm_div_round_ss(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2315 }
2316 __m128 test_mm_mask_div_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2317   // CHECK-LABEL: @test_mm_mask_div_round_ss
2318   // CHECK: @llvm.x86.avx512.mask.div.ss.round
2319   return _mm_mask_div_round_ss(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2320 }
2321 __m128 test_mm_maskz_div_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
2322   // CHECK-LABEL: @test_mm_maskz_div_round_ss
2323   // CHECK: @llvm.x86.avx512.mask.div.ss.round
2324   return _mm_maskz_div_round_ss(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2325 }
2326 __m128 test_mm_mask_div_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2327   // CHECK-LABEL: @test_mm_mask_div_ss
2328   // CHECK: @llvm.x86.avx512.mask.div.ss.round
2329   return _mm_mask_div_ss(__W,__U,__A,__B); 
2330 }
2331 __m128 test_mm_maskz_div_ss(__mmask8 __U, __m128 __A, __m128 __B) {
2332   // CHECK-LABEL: @test_mm_maskz_div_ss
2333   // CHECK: @llvm.x86.avx512.mask.div.ss.round
2334   return _mm_maskz_div_ss(__U,__A,__B); 
2335 }
2336 __m128d test_mm_div_round_sd(__m128d __A, __m128d __B) {
2337   // CHECK-LABEL: @test_mm_div_round_sd
2338   // CHECK: @llvm.x86.avx512.mask.div.sd.round
2339   return _mm_div_round_sd(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2340 }
2341 __m128d test_mm_mask_div_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2342   // CHECK-LABEL: @test_mm_mask_div_round_sd
2343   // CHECK: @llvm.x86.avx512.mask.div.sd.round
2344   return _mm_mask_div_round_sd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2345 }
2346 __m128d test_mm_maskz_div_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
2347   // CHECK-LABEL: @test_mm_maskz_div_round_sd
2348   // CHECK: @llvm.x86.avx512.mask.div.sd.round
2349   return _mm_maskz_div_round_sd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
2350 }
2351 __m128d test_mm_mask_div_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2352   // CHECK-LABEL: @test_mm_mask_div_sd
2353   // CHECK: @llvm.x86.avx512.mask.div.sd.round
2354   return _mm_mask_div_sd(__W,__U,__A,__B); 
2355 }
2356 __m128d test_mm_maskz_div_sd(__mmask8 __U, __m128d __A, __m128d __B) {
2357   // CHECK-LABEL: @test_mm_maskz_div_sd
2358   // CHECK: @llvm.x86.avx512.mask.div.sd.round
2359   return _mm_maskz_div_sd(__U,__A,__B); 
2360 }
2361 __m128 test_mm_max_round_ss(__m128 __A, __m128 __B) {
2362   // CHECK-LABEL: @test_mm_max_round_ss
2363   // CHECK: @llvm.x86.avx512.mask.max.ss.round
2364   return _mm_max_round_ss(__A,__B,0x08); 
2365 }
2366 __m128 test_mm_mask_max_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2367   // CHECK-LABEL: @test_mm_mask_max_round_ss
2368   // CHECK: @llvm.x86.avx512.mask.max.ss.round
2369   return _mm_mask_max_round_ss(__W,__U,__A,__B,0x08); 
2370 }
2371 __m128 test_mm_maskz_max_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
2372   // CHECK-LABEL: @test_mm_maskz_max_round_ss
2373   // CHECK: @llvm.x86.avx512.mask.max.ss.round
2374   return _mm_maskz_max_round_ss(__U,__A,__B,0x08); 
2375 }
2376 __m128 test_mm_mask_max_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2377   // CHECK-LABEL: @test_mm_mask_max_ss
2378   // CHECK: @llvm.x86.avx512.mask.max.ss.round
2379   return _mm_mask_max_ss(__W,__U,__A,__B); 
2380 }
2381 __m128 test_mm_maskz_max_ss(__mmask8 __U, __m128 __A, __m128 __B) {
2382   // CHECK-LABEL: @test_mm_maskz_max_ss
2383   // CHECK: @llvm.x86.avx512.mask.max.ss.round
2384   return _mm_maskz_max_ss(__U,__A,__B); 
2385 }
2386 __m128d test_mm_max_round_sd(__m128d __A, __m128d __B) {
2387   // CHECK-LABEL: @test_mm_max_round_sd
2388   // CHECK: @llvm.x86.avx512.mask.max.sd.round
2389   return _mm_max_round_sd(__A,__B,0x08); 
2390 }
2391 __m128d test_mm_mask_max_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2392   // CHECK-LABEL: @test_mm_mask_max_round_sd
2393   // CHECK: @llvm.x86.avx512.mask.max.sd.round
2394   return _mm_mask_max_round_sd(__W,__U,__A,__B,0x08); 
2395 }
2396 __m128d test_mm_maskz_max_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
2397   // CHECK-LABEL: @test_mm_maskz_max_round_sd
2398   // CHECK: @llvm.x86.avx512.mask.max.sd.round
2399   return _mm_maskz_max_round_sd(__U,__A,__B,0x08); 
2400 }
2401 __m128d test_mm_mask_max_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2402   // CHECK-LABEL: @test_mm_mask_max_sd
2403   // CHECK: @llvm.x86.avx512.mask.max.sd.round
2404   return _mm_mask_max_sd(__W,__U,__A,__B); 
2405 }
2406 __m128d test_mm_maskz_max_sd(__mmask8 __U, __m128d __A, __m128d __B) {
2407   // CHECK-LABEL: @test_mm_maskz_max_sd
2408   // CHECK: @llvm.x86.avx512.mask.max.sd.round
2409   return _mm_maskz_max_sd(__U,__A,__B); 
2410 }
2411 __m128 test_mm_min_round_ss(__m128 __A, __m128 __B) {
2412   // CHECK-LABEL: @test_mm_min_round_ss
2413   // CHECK: @llvm.x86.avx512.mask.min.ss.round
2414   return _mm_min_round_ss(__A,__B,0x08); 
2415 }
2416 __m128 test_mm_mask_min_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2417   // CHECK-LABEL: @test_mm_mask_min_round_ss
2418   // CHECK: @llvm.x86.avx512.mask.min.ss.round
2419   return _mm_mask_min_round_ss(__W,__U,__A,__B,0x08); 
2420 }
2421 __m128 test_mm_maskz_min_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
2422   // CHECK-LABEL: @test_mm_maskz_min_round_ss
2423   // CHECK: @llvm.x86.avx512.mask.min.ss.round
2424   return _mm_maskz_min_round_ss(__U,__A,__B,0x08); 
2425 }
2426 __m128 test_mm_mask_min_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2427   // CHECK-LABEL: @test_mm_mask_min_ss
2428   // CHECK: @llvm.x86.avx512.mask.min.ss.round
2429   return _mm_mask_min_ss(__W,__U,__A,__B); 
2430 }
2431 __m128 test_mm_maskz_min_ss(__mmask8 __U, __m128 __A, __m128 __B) {
2432   // CHECK-LABEL: @test_mm_maskz_min_ss
2433   // CHECK: @llvm.x86.avx512.mask.min.ss.round
2434   return _mm_maskz_min_ss(__U,__A,__B); 
2435 }
2436 __m128d test_mm_min_round_sd(__m128d __A, __m128d __B) {
2437   // CHECK-LABEL: @test_mm_min_round_sd
2438   // CHECK: @llvm.x86.avx512.mask.min.sd.round
2439   return _mm_min_round_sd(__A,__B,0x08); 
2440 }
2441 __m128d test_mm_mask_min_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2442   // CHECK-LABEL: @test_mm_mask_min_round_sd
2443   // CHECK: @llvm.x86.avx512.mask.min.sd.round
2444   return _mm_mask_min_round_sd(__W,__U,__A,__B,0x08); 
2445 }
2446 __m128d test_mm_maskz_min_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
2447   // CHECK-LABEL: @test_mm_maskz_min_round_sd
2448   // CHECK: @llvm.x86.avx512.mask.min.sd.round
2449   return _mm_maskz_min_round_sd(__U,__A,__B,0x08); 
2450 }
2451 __m128d test_mm_mask_min_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2452   // CHECK-LABEL: @test_mm_mask_min_sd
2453   // CHECK: @llvm.x86.avx512.mask.min.sd.round
2454   return _mm_mask_min_sd(__W,__U,__A,__B); 
2455 }
2456 __m128d test_mm_maskz_min_sd(__mmask8 __U, __m128d __A, __m128d __B) {
2457   // CHECK-LABEL: @test_mm_maskz_min_sd
2458   // CHECK: @llvm.x86.avx512.mask.min.sd.round
2459   return _mm_maskz_min_sd(__U,__A,__B); 
2460 }
2461
2462 __m512 test_mm512_undefined() {
2463   // CHECK-LABEL: @test_mm512_undefined
2464   // CHECK: ret <16 x float> zeroinitializer
2465   return _mm512_undefined();
2466 }
2467
2468 __m512 test_mm512_undefined_ps() {
2469   // CHECK-LABEL: @test_mm512_undefined_ps
2470   // CHECK: ret <16 x float> zeroinitializer
2471   return _mm512_undefined_ps();
2472 }
2473
2474 __m512d test_mm512_undefined_pd() {
2475   // CHECK-LABEL: @test_mm512_undefined_pd
2476   // CHECK: ret <8 x double> zeroinitializer
2477   return _mm512_undefined_pd();
2478 }
2479
2480 __m512i test_mm512_undefined_epi32() {
2481   // CHECK-LABEL: @test_mm512_undefined_epi32
2482   // CHECK: ret <8 x i64> zeroinitializer
2483   return _mm512_undefined_epi32();
2484 }
2485
2486 __m512i test_mm512_cvtepi8_epi32(__m128i __A) {
2487   // CHECK-LABEL: @test_mm512_cvtepi8_epi32
2488   // CHECK: sext <16 x i8> %{{.*}} to <16 x i32>
2489   return _mm512_cvtepi8_epi32(__A); 
2490 }
2491
2492 __m512i test_mm512_mask_cvtepi8_epi32(__m512i __W, __mmask16 __U, __m128i __A) {
2493   // CHECK-LABEL: @test_mm512_mask_cvtepi8_epi32
2494   // CHECK: sext <16 x i8> %{{.*}} to <16 x i32>
2495   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2496   return _mm512_mask_cvtepi8_epi32(__W, __U, __A); 
2497 }
2498
2499 __m512i test_mm512_maskz_cvtepi8_epi32(__mmask16 __U, __m128i __A) {
2500   // CHECK-LABEL: @test_mm512_maskz_cvtepi8_epi32
2501   // CHECK: sext <16 x i8> %{{.*}} to <16 x i32>
2502   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2503   return _mm512_maskz_cvtepi8_epi32(__U, __A); 
2504 }
2505
2506 __m512i test_mm512_cvtepi8_epi64(__m128i __A) {
2507   // CHECK-LABEL: @test_mm512_cvtepi8_epi64
2508   // CHECK: sext <8 x i8> %{{.*}} to <8 x i64>
2509   return _mm512_cvtepi8_epi64(__A); 
2510 }
2511
2512 __m512i test_mm512_mask_cvtepi8_epi64(__m512i __W, __mmask8 __U, __m128i __A) {
2513   // CHECK-LABEL: @test_mm512_mask_cvtepi8_epi64
2514   // CHECK: sext <8 x i8> %{{.*}} to <8 x i64>
2515   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2516   return _mm512_mask_cvtepi8_epi64(__W, __U, __A); 
2517 }
2518
2519 __m512i test_mm512_maskz_cvtepi8_epi64(__mmask8 __U, __m128i __A) {
2520   // CHECK-LABEL: @test_mm512_maskz_cvtepi8_epi64
2521   // CHECK: sext <8 x i8> %{{.*}} to <8 x i64>
2522   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2523   return _mm512_maskz_cvtepi8_epi64(__U, __A); 
2524 }
2525
2526 __m512i test_mm512_cvtepi32_epi64(__m256i __X) {
2527   // CHECK-LABEL: @test_mm512_cvtepi32_epi64
2528   // CHECK: sext <8 x i32> %{{.*}} to <8 x i64>
2529   return _mm512_cvtepi32_epi64(__X); 
2530 }
2531
2532 __m512i test_mm512_mask_cvtepi32_epi64(__m512i __W, __mmask8 __U, __m256i __X) {
2533   // CHECK-LABEL: @test_mm512_mask_cvtepi32_epi64
2534   // CHECK: sext <8 x i32> %{{.*}} to <8 x i64>
2535   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2536   return _mm512_mask_cvtepi32_epi64(__W, __U, __X); 
2537 }
2538
2539 __m512i test_mm512_maskz_cvtepi32_epi64(__mmask8 __U, __m256i __X) {
2540   // CHECK-LABEL: @test_mm512_maskz_cvtepi32_epi64
2541   // CHECK: sext <8 x i32> %{{.*}} to <8 x i64>
2542   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2543   return _mm512_maskz_cvtepi32_epi64(__U, __X); 
2544 }
2545
2546 __m512i test_mm512_cvtepi16_epi32(__m256i __A) {
2547   // CHECK-LABEL: @test_mm512_cvtepi16_epi32
2548   // CHECK: sext <16 x i16> %{{.*}} to <16 x i32>
2549   return _mm512_cvtepi16_epi32(__A); 
2550 }
2551
2552 __m512i test_mm512_mask_cvtepi16_epi32(__m512i __W, __mmask16 __U, __m256i __A) {
2553   // CHECK-LABEL: @test_mm512_mask_cvtepi16_epi32
2554   // CHECK: sext <16 x i16> %{{.*}} to <16 x i32>
2555   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2556   return _mm512_mask_cvtepi16_epi32(__W, __U, __A); 
2557 }
2558
2559 __m512i test_mm512_maskz_cvtepi16_epi32(__mmask16 __U, __m256i __A) {
2560   // CHECK-LABEL: @test_mm512_maskz_cvtepi16_epi32
2561   // CHECK: sext <16 x i16> %{{.*}} to <16 x i32>
2562   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2563   return _mm512_maskz_cvtepi16_epi32(__U, __A); 
2564 }
2565
2566 __m512i test_mm512_cvtepi16_epi64(__m128i __A) {
2567   // CHECK-LABEL: @test_mm512_cvtepi16_epi64
2568   // CHECK: sext <8 x i16> %{{.*}} to <8 x i64>
2569   return _mm512_cvtepi16_epi64(__A); 
2570 }
2571
2572 __m512i test_mm512_mask_cvtepi16_epi64(__m512i __W, __mmask8 __U, __m128i __A) {
2573   // CHECK-LABEL: @test_mm512_mask_cvtepi16_epi64
2574   // CHECK: sext <8 x i16> %{{.*}} to <8 x i64>
2575   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2576   return _mm512_mask_cvtepi16_epi64(__W, __U, __A); 
2577 }
2578
2579 __m512i test_mm512_maskz_cvtepi16_epi64(__mmask8 __U, __m128i __A) {
2580   // CHECK-LABEL: @test_mm512_maskz_cvtepi16_epi64
2581   // CHECK: sext <8 x i16> %{{.*}} to <8 x i64>
2582   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2583   return _mm512_maskz_cvtepi16_epi64(__U, __A); 
2584 }
2585
2586 __m512i test_mm512_cvtepu8_epi32(__m128i __A) {
2587   // CHECK-LABEL: @test_mm512_cvtepu8_epi32
2588   // CHECK: zext <16 x i8> %{{.*}} to <16 x i32>
2589   return _mm512_cvtepu8_epi32(__A); 
2590 }
2591
2592 __m512i test_mm512_mask_cvtepu8_epi32(__m512i __W, __mmask16 __U, __m128i __A) {
2593   // CHECK-LABEL: @test_mm512_mask_cvtepu8_epi32
2594   // CHECK: zext <16 x i8> %{{.*}} to <16 x i32>
2595   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2596   return _mm512_mask_cvtepu8_epi32(__W, __U, __A); 
2597 }
2598
2599 __m512i test_mm512_maskz_cvtepu8_epi32(__mmask16 __U, __m128i __A) {
2600   // CHECK-LABEL: @test_mm512_maskz_cvtepu8_epi32
2601   // CHECK: zext <16 x i8> %{{.*}} to <16 x i32>
2602   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2603   return _mm512_maskz_cvtepu8_epi32(__U, __A); 
2604 }
2605
2606 __m512i test_mm512_cvtepu8_epi64(__m128i __A) {
2607   // CHECK-LABEL: @test_mm512_cvtepu8_epi64
2608   // CHECK: zext <8 x i8> %{{.*}} to <8 x i64>
2609   return _mm512_cvtepu8_epi64(__A); 
2610 }
2611
2612 __m512i test_mm512_mask_cvtepu8_epi64(__m512i __W, __mmask8 __U, __m128i __A) {
2613   // CHECK-LABEL: @test_mm512_mask_cvtepu8_epi64
2614   // CHECK: zext <8 x i8> %{{.*}} to <8 x i64>
2615   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2616   return _mm512_mask_cvtepu8_epi64(__W, __U, __A); 
2617 }
2618
2619 __m512i test_mm512_maskz_cvtepu8_epi64(__mmask8 __U, __m128i __A) {
2620   // CHECK-LABEL: @test_mm512_maskz_cvtepu8_epi64
2621   // CHECK: zext <8 x i8> %{{.*}} to <8 x i64>
2622   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2623   return _mm512_maskz_cvtepu8_epi64(__U, __A); 
2624 }
2625
2626 __m512i test_mm512_cvtepu32_epi64(__m256i __X) {
2627   // CHECK-LABEL: @test_mm512_cvtepu32_epi64
2628   // CHECK: zext <8 x i32> %{{.*}} to <8 x i64>
2629   return _mm512_cvtepu32_epi64(__X); 
2630 }
2631
2632 __m512i test_mm512_mask_cvtepu32_epi64(__m512i __W, __mmask8 __U, __m256i __X) {
2633   // CHECK-LABEL: @test_mm512_mask_cvtepu32_epi64
2634   // CHECK: zext <8 x i32> %{{.*}} to <8 x i64>
2635   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2636   return _mm512_mask_cvtepu32_epi64(__W, __U, __X); 
2637 }
2638
2639 __m512i test_mm512_maskz_cvtepu32_epi64(__mmask8 __U, __m256i __X) {
2640   // CHECK-LABEL: @test_mm512_maskz_cvtepu32_epi64
2641   // CHECK: zext <8 x i32> %{{.*}} to <8 x i64>
2642   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2643   return _mm512_maskz_cvtepu32_epi64(__U, __X); 
2644 }
2645
2646 __m512i test_mm512_cvtepu16_epi32(__m256i __A) {
2647   // CHECK-LABEL: @test_mm512_cvtepu16_epi32
2648   // CHECK: zext <16 x i16> %{{.*}} to <16 x i32>
2649   return _mm512_cvtepu16_epi32(__A); 
2650 }
2651
2652 __m512i test_mm512_mask_cvtepu16_epi32(__m512i __W, __mmask16 __U, __m256i __A) {
2653   // CHECK-LABEL: @test_mm512_mask_cvtepu16_epi32
2654   // CHECK: zext <16 x i16> %{{.*}} to <16 x i32>
2655   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2656   return _mm512_mask_cvtepu16_epi32(__W, __U, __A); 
2657 }
2658
2659 __m512i test_mm512_maskz_cvtepu16_epi32(__mmask16 __U, __m256i __A) {
2660   // CHECK-LABEL: @test_mm512_maskz_cvtepu16_epi32
2661   // CHECK: zext <16 x i16> %{{.*}} to <16 x i32>
2662   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2663   return _mm512_maskz_cvtepu16_epi32(__U, __A); 
2664 }
2665
2666 __m512i test_mm512_cvtepu16_epi64(__m128i __A) {
2667   // CHECK-LABEL: @test_mm512_cvtepu16_epi64
2668   // CHECK: zext <8 x i16> %{{.*}} to <8 x i64>
2669   return _mm512_cvtepu16_epi64(__A); 
2670 }
2671
2672 __m512i test_mm512_mask_cvtepu16_epi64(__m512i __W, __mmask8 __U, __m128i __A) {
2673   // CHECK-LABEL: @test_mm512_mask_cvtepu16_epi64
2674   // CHECK: zext <8 x i16> %{{.*}} to <8 x i64>
2675   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2676   return _mm512_mask_cvtepu16_epi64(__W, __U, __A); 
2677 }
2678
2679 __m512i test_mm512_maskz_cvtepu16_epi64(__mmask8 __U, __m128i __A) {
2680   // CHECK-LABEL: @test_mm512_maskz_cvtepu16_epi64
2681   // CHECK: zext <8 x i16> %{{.*}} to <8 x i64>
2682   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2683   return _mm512_maskz_cvtepu16_epi64(__U, __A); 
2684 }
2685
2686
2687 __m512i test_mm512_rol_epi32(__m512i __A) {
2688   // CHECK-LABEL: @test_mm512_rol_epi32
2689   // CHECK: @llvm.x86.avx512.mask.prol.d.512
2690   return _mm512_rol_epi32(__A, 5); 
2691 }
2692
2693 __m512i test_mm512_mask_rol_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
2694   // CHECK-LABEL: @test_mm512_mask_rol_epi32
2695   // CHECK: @llvm.x86.avx512.mask.prol.d.512
2696   return _mm512_mask_rol_epi32(__W, __U, __A, 5); 
2697 }
2698
2699 __m512i test_mm512_maskz_rol_epi32(__mmask16 __U, __m512i __A) {
2700   // CHECK-LABEL: @test_mm512_maskz_rol_epi32
2701   // CHECK: @llvm.x86.avx512.mask.prol.d.512
2702   return _mm512_maskz_rol_epi32(__U, __A, 5); 
2703 }
2704
2705 __m512i test_mm512_rol_epi64(__m512i __A) {
2706   // CHECK-LABEL: @test_mm512_rol_epi64
2707   // CHECK: @llvm.x86.avx512.mask.prol.q.512
2708   return _mm512_rol_epi64(__A, 5); 
2709 }
2710
2711 __m512i test_mm512_mask_rol_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
2712   // CHECK-LABEL: @test_mm512_mask_rol_epi64
2713   // CHECK: @llvm.x86.avx512.mask.prol.q.512
2714   return _mm512_mask_rol_epi64(__W, __U, __A, 5); 
2715 }
2716
2717 __m512i test_mm512_maskz_rol_epi64(__mmask8 __U, __m512i __A) {
2718   // CHECK-LABEL: @test_mm512_maskz_rol_epi64
2719   // CHECK: @llvm.x86.avx512.mask.prol.q.512
2720   return _mm512_maskz_rol_epi64(__U, __A, 5); 
2721 }
2722
2723 __m512i test_mm512_rolv_epi32(__m512i __A, __m512i __B) {
2724   // CHECK-LABEL: @test_mm512_rolv_epi32
2725   // CHECK: @llvm.x86.avx512.mask.prolv.d.512
2726   return _mm512_rolv_epi32(__A, __B); 
2727 }
2728
2729 __m512i test_mm512_mask_rolv_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {
2730   // CHECK-LABEL: @test_mm512_mask_rolv_epi32
2731   // CHECK: @llvm.x86.avx512.mask.prolv.d.512
2732   return _mm512_mask_rolv_epi32(__W, __U, __A, __B); 
2733 }
2734
2735 __m512i test_mm512_maskz_rolv_epi32(__mmask16 __U, __m512i __A, __m512i __B) {
2736   // CHECK-LABEL: @test_mm512_maskz_rolv_epi32
2737   // CHECK: @llvm.x86.avx512.mask.prolv.d.512
2738   return _mm512_maskz_rolv_epi32(__U, __A, __B); 
2739 }
2740
2741 __m512i test_mm512_rolv_epi64(__m512i __A, __m512i __B) {
2742   // CHECK-LABEL: @test_mm512_rolv_epi64
2743   // CHECK: @llvm.x86.avx512.mask.prolv.q.512
2744   return _mm512_rolv_epi64(__A, __B); 
2745 }
2746
2747 __m512i test_mm512_mask_rolv_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
2748   // CHECK-LABEL: @test_mm512_mask_rolv_epi64
2749   // CHECK: @llvm.x86.avx512.mask.prolv.q.512
2750   return _mm512_mask_rolv_epi64(__W, __U, __A, __B); 
2751 }
2752
2753 __m512i test_mm512_maskz_rolv_epi64(__mmask8 __U, __m512i __A, __m512i __B) {
2754   // CHECK-LABEL: @test_mm512_maskz_rolv_epi64
2755   // CHECK: @llvm.x86.avx512.mask.prolv.q.512
2756   return _mm512_maskz_rolv_epi64(__U, __A, __B); 
2757 }
2758
2759 __m512i test_mm512_ror_epi32(__m512i __A) {
2760   // CHECK-LABEL: @test_mm512_ror_epi32
2761   // CHECK: @llvm.x86.avx512.mask.pror.d.512
2762   return _mm512_ror_epi32(__A, 5); 
2763 }
2764
2765 __m512i test_mm512_mask_ror_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
2766   // CHECK-LABEL: @test_mm512_mask_ror_epi32
2767   // CHECK: @llvm.x86.avx512.mask.pror.d.512
2768   return _mm512_mask_ror_epi32(__W, __U, __A, 5); 
2769 }
2770
2771 __m512i test_mm512_maskz_ror_epi32(__mmask16 __U, __m512i __A) {
2772   // CHECK-LABEL: @test_mm512_maskz_ror_epi32
2773   // CHECK: @llvm.x86.avx512.mask.pror.d.512
2774   return _mm512_maskz_ror_epi32(__U, __A, 5); 
2775 }
2776
2777 __m512i test_mm512_ror_epi64(__m512i __A) {
2778   // CHECK-LABEL: @test_mm512_ror_epi64
2779   // CHECK: @llvm.x86.avx512.mask.pror.q.512
2780   return _mm512_ror_epi64(__A, 5); 
2781 }
2782
2783 __m512i test_mm512_mask_ror_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
2784   // CHECK-LABEL: @test_mm512_mask_ror_epi64
2785   // CHECK: @llvm.x86.avx512.mask.pror.q.512
2786   return _mm512_mask_ror_epi64(__W, __U, __A, 5); 
2787 }
2788
2789 __m512i test_mm512_maskz_ror_epi64(__mmask8 __U, __m512i __A) {
2790   // CHECK-LABEL: @test_mm512_maskz_ror_epi64
2791   // CHECK: @llvm.x86.avx512.mask.pror.q.512
2792   return _mm512_maskz_ror_epi64(__U, __A, 5); 
2793 }
2794
2795
2796 __m512i test_mm512_rorv_epi32(__m512i __A, __m512i __B) {
2797   // CHECK-LABEL: @test_mm512_rorv_epi32
2798   // CHECK: @llvm.x86.avx512.mask.prorv.d.512
2799   return _mm512_rorv_epi32(__A, __B); 
2800 }
2801
2802 __m512i test_mm512_mask_rorv_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {
2803   // CHECK-LABEL: @test_mm512_mask_rorv_epi32
2804   // CHECK: @llvm.x86.avx512.mask.prorv.d.512
2805   return _mm512_mask_rorv_epi32(__W, __U, __A, __B); 
2806 }
2807
2808 __m512i test_mm512_maskz_rorv_epi32(__mmask16 __U, __m512i __A, __m512i __B) {
2809   // CHECK-LABEL: @test_mm512_maskz_rorv_epi32
2810   // CHECK: @llvm.x86.avx512.mask.prorv.d.512
2811   return _mm512_maskz_rorv_epi32(__U, __A, __B); 
2812 }
2813
2814 __m512i test_mm512_rorv_epi64(__m512i __A, __m512i __B) {
2815   // CHECK-LABEL: @test_mm512_rorv_epi64
2816   // CHECK: @llvm.x86.avx512.mask.prorv.q.512
2817   return _mm512_rorv_epi64(__A, __B); 
2818 }
2819
2820 __m512i test_mm512_mask_rorv_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
2821   // CHECK-LABEL: @test_mm512_mask_rorv_epi64
2822   // CHECK: @llvm.x86.avx512.mask.prorv.q.512
2823   return _mm512_mask_rorv_epi64(__W, __U, __A, __B); 
2824 }
2825
2826 __m512i test_mm512_maskz_rorv_epi64(__mmask8 __U, __m512i __A, __m512i __B) {
2827   // CHECK-LABEL: @test_mm512_maskz_rorv_epi64
2828   // CHECK: @llvm.x86.avx512.mask.prorv.q.512
2829   return _mm512_maskz_rorv_epi64(__U, __A, __B); 
2830 }
2831
2832 __m512i test_mm512_slli_epi32(__m512i __A) {
2833   // CHECK-LABEL: @test_mm512_slli_epi32
2834   // CHECK: @llvm.x86.avx512.pslli.d.512
2835   return _mm512_slli_epi32(__A, 5); 
2836 }
2837
2838 __m512i test_mm512_mask_slli_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
2839   // CHECK-LABEL: @test_mm512_mask_slli_epi32
2840   // CHECK: @llvm.x86.avx512.pslli.d.512
2841   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2842   return _mm512_mask_slli_epi32(__W, __U, __A, 5); 
2843 }
2844
2845 __m512i test_mm512_maskz_slli_epi32(__mmask16 __U, __m512i __A) {
2846   // CHECK-LABEL: @test_mm512_maskz_slli_epi32
2847   // CHECK: @llvm.x86.avx512.pslli.d.512
2848   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2849   return _mm512_maskz_slli_epi32(__U, __A, 5); 
2850 }
2851
2852 __m512i test_mm512_slli_epi64(__m512i __A) {
2853   // CHECK-LABEL: @test_mm512_slli_epi64
2854   // CHECK: @llvm.x86.avx512.pslli.q.512
2855   return _mm512_slli_epi64(__A, 5); 
2856 }
2857
2858 __m512i test_mm512_mask_slli_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
2859   // CHECK-LABEL: @test_mm512_mask_slli_epi64
2860   // CHECK: @llvm.x86.avx512.pslli.q.512
2861   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2862   return _mm512_mask_slli_epi64(__W, __U, __A, 5); 
2863 }
2864
2865 __m512i test_mm512_maskz_slli_epi64(__mmask8 __U, __m512i __A) {
2866   // CHECK-LABEL: @test_mm512_maskz_slli_epi64
2867   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2868   return _mm512_maskz_slli_epi64(__U, __A, 5); 
2869 }
2870
2871 __m512i test_mm512_srli_epi32(__m512i __A) {
2872   // CHECK-LABEL: @test_mm512_srli_epi32
2873   // CHECK: @llvm.x86.avx512.psrli.d.512
2874   return _mm512_srli_epi32(__A, 5); 
2875 }
2876
2877 __m512i test_mm512_mask_srli_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
2878   // CHECK-LABEL: @test_mm512_mask_srli_epi32
2879   // CHECK: @llvm.x86.avx512.psrli.d.512
2880   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2881   return _mm512_mask_srli_epi32(__W, __U, __A, 5); 
2882 }
2883
2884 __m512i test_mm512_maskz_srli_epi32(__mmask16 __U, __m512i __A) {
2885   // CHECK-LABEL: @test_mm512_maskz_srli_epi32
2886   // CHECK: @llvm.x86.avx512.psrli.d.512
2887   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2888   return _mm512_maskz_srli_epi32(__U, __A, 5); 
2889 }
2890
2891 __m512i test_mm512_srli_epi64(__m512i __A) {
2892   // CHECK-LABEL: @test_mm512_srli_epi64
2893   // CHECK: @llvm.x86.avx512.psrli.q.512
2894   return _mm512_srli_epi64(__A, 5); 
2895 }
2896
2897 __m512i test_mm512_mask_srli_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
2898   // CHECK-LABEL: @test_mm512_mask_srli_epi64
2899   // CHECK: @llvm.x86.avx512.psrli.q.512
2900   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2901   return _mm512_mask_srli_epi64(__W, __U, __A, 5); 
2902 }
2903
2904 __m512i test_mm512_maskz_srli_epi64(__mmask8 __U, __m512i __A) {
2905   // CHECK-LABEL: @test_mm512_maskz_srli_epi64
2906   // CHECK: @llvm.x86.avx512.psrli.q.512
2907   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2908   return _mm512_maskz_srli_epi64(__U, __A, 5); 
2909 }
2910
2911 __m512i test_mm512_mask_load_epi32(__m512i __W, __mmask16 __U, void const *__P) {
2912   // CHECK-LABEL: @test_mm512_mask_load_epi32
2913   // CHECK: @llvm.masked.load.v16i32.p0v16i32(<16 x i32>* %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
2914   return _mm512_mask_load_epi32(__W, __U, __P); 
2915 }
2916
2917 __m512i test_mm512_maskz_load_epi32(__mmask16 __U, void const *__P) {
2918   // CHECK-LABEL: @test_mm512_maskz_load_epi32
2919   // CHECK: @llvm.masked.load.v16i32.p0v16i32(<16 x i32>* %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
2920   return _mm512_maskz_load_epi32(__U, __P); 
2921 }
2922
2923 __m512i test_mm512_mask_mov_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
2924   // CHECK-LABEL: @test_mm512_mask_mov_epi32
2925   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2926   return _mm512_mask_mov_epi32(__W, __U, __A); 
2927 }
2928
2929 __m512i test_mm512_maskz_mov_epi32(__mmask16 __U, __m512i __A) {
2930   // CHECK-LABEL: @test_mm512_maskz_mov_epi32
2931   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2932   return _mm512_maskz_mov_epi32(__U, __A); 
2933 }
2934
2935 __m512i test_mm512_mask_mov_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
2936   // CHECK-LABEL: @test_mm512_mask_mov_epi64
2937   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2938   return _mm512_mask_mov_epi64(__W, __U, __A); 
2939 }
2940
2941 __m512i test_mm512_maskz_mov_epi64(__mmask8 __U, __m512i __A) {
2942   // CHECK-LABEL: @test_mm512_maskz_mov_epi64
2943   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2944   return _mm512_maskz_mov_epi64(__U, __A); 
2945 }
2946
2947 __m512i test_mm512_mask_load_epi64(__m512i __W, __mmask8 __U, void const *__P) {
2948   // CHECK-LABEL: @test_mm512_mask_load_epi64
2949   // CHECK: @llvm.masked.load.v8i64.p0v8i64(<8 x i64>* %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
2950   return _mm512_mask_load_epi64(__W, __U, __P); 
2951 }
2952
2953 __m512i test_mm512_maskz_load_epi64(__mmask8 __U, void const *__P) {
2954   // CHECK-LABEL: @test_mm512_maskz_load_epi64
2955   // CHECK: @llvm.masked.load.v8i64.p0v8i64(<8 x i64>* %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
2956   return _mm512_maskz_load_epi64(__U, __P); 
2957 }
2958
2959 void test_mm512_mask_store_epi32(void *__P, __mmask16 __U, __m512i __A) {
2960   // CHECK-LABEL: @test_mm512_mask_store_epi32
2961   // CHECK: @llvm.masked.store.v16i32.p0v16i32(<16 x i32> %{{.*}}, <16 x i32>* %{{.*}}, i32 64, <16 x i1> %{{.*}})
2962   return _mm512_mask_store_epi32(__P, __U, __A); 
2963 }
2964
2965 void test_mm512_mask_store_epi64(void *__P, __mmask8 __U, __m512i __A) {
2966   // CHECK-LABEL: @test_mm512_mask_store_epi64
2967   // CHECK: @llvm.masked.store.v8i64.p0v8i64(<8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, i32 64, <8 x i1> %{{.*}})
2968   return _mm512_mask_store_epi64(__P, __U, __A); 
2969 }
2970
2971 __m512d test_mm512_movedup_pd(__m512d __A) {
2972   // CHECK-LABEL: @test_mm512_movedup_pd
2973   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
2974   return _mm512_movedup_pd(__A);
2975 }
2976
2977 __m512d test_mm512_mask_movedup_pd(__m512d __W, __mmask8 __U, __m512d __A) {
2978   // CHECK-LABEL: @test_mm512_mask_movedup_pd
2979   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
2980   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
2981   return _mm512_mask_movedup_pd(__W, __U, __A);
2982 }
2983
2984 __m512d test_mm512_maskz_movedup_pd(__mmask8 __U, __m512d __A) {
2985   // CHECK-LABEL: @test_mm512_maskz_movedup_pd
2986   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
2987   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
2988   return _mm512_maskz_movedup_pd(__U, __A);
2989 }
2990
2991 int test_mm_comi_round_sd(__m128d __A, __m128d __B) {
2992   // CHECK-LABEL: @test_mm_comi_round_sd
2993   // CHECK: @llvm.x86.avx512.vcomi.sd
2994   return _mm_comi_round_sd(__A, __B, 5, _MM_FROUND_NO_EXC); 
2995 }
2996
2997 int test_mm_comi_round_ss(__m128 __A, __m128 __B) {
2998   // CHECK-LABEL: @test_mm_comi_round_ss
2999   // CHECK: @llvm.x86.avx512.vcomi.ss
3000   return _mm_comi_round_ss(__A, __B, 5, _MM_FROUND_NO_EXC); 
3001 }
3002
3003 __m512d test_mm512_fixupimm_round_pd(__m512d __A, __m512d __B, __m512i __C) {
3004   // CHECK-LABEL: @test_mm512_fixupimm_round_pd
3005   // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.512
3006   return _mm512_fixupimm_round_pd(__A, __B, __C, 5, 8); 
3007 }
3008
3009 __m512d test_mm512_mask_fixupimm_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512i __C) {
3010   // CHECK-LABEL: @test_mm512_mask_fixupimm_round_pd
3011   // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.512
3012   return _mm512_mask_fixupimm_round_pd(__A, __U, __B, __C, 5, 8); 
3013 }
3014
3015 __m512d test_mm512_fixupimm_pd(__m512d __A, __m512d __B, __m512i __C) {
3016   // CHECK-LABEL: @test_mm512_fixupimm_pd
3017   // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.512
3018   return _mm512_fixupimm_pd(__A, __B, __C, 5); 
3019 }
3020
3021 __m512d test_mm512_mask_fixupimm_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512i __C) {
3022   // CHECK-LABEL: @test_mm512_mask_fixupimm_pd
3023   // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.512
3024   return _mm512_mask_fixupimm_pd(__A, __U, __B, __C, 5); 
3025 }
3026
3027 __m512d test_mm512_maskz_fixupimm_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512i __C) {
3028   // CHECK-LABEL: @test_mm512_maskz_fixupimm_round_pd
3029   // CHECK: @llvm.x86.avx512.maskz.fixupimm.pd.512
3030   return _mm512_maskz_fixupimm_round_pd(__U, __A, __B, __C, 5, 8); 
3031 }
3032
3033 __m512d test_mm512_maskz_fixupimm_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512i __C) {
3034   // CHECK-LABEL: @test_mm512_maskz_fixupimm_pd
3035   // CHECK: @llvm.x86.avx512.maskz.fixupimm.pd.512
3036   return _mm512_maskz_fixupimm_pd(__U, __A, __B, __C, 5); 
3037 }
3038
3039 __m512 test_mm512_fixupimm_round_ps(__m512 __A, __m512 __B, __m512i __C) {
3040   // CHECK-LABEL: @test_mm512_fixupimm_round_ps
3041   // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.512
3042   return _mm512_fixupimm_round_ps(__A, __B, __C, 5, 8); 
3043 }
3044
3045 __m512 test_mm512_mask_fixupimm_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512i __C) {
3046   // CHECK-LABEL: @test_mm512_mask_fixupimm_round_ps
3047   // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.512
3048   return _mm512_mask_fixupimm_round_ps(__A, __U, __B, __C, 5, 8); 
3049 }
3050
3051 __m512 test_mm512_fixupimm_ps(__m512 __A, __m512 __B, __m512i __C) {
3052   // CHECK-LABEL: @test_mm512_fixupimm_ps
3053   // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.512
3054   return _mm512_fixupimm_ps(__A, __B, __C, 5); 
3055 }
3056
3057 __m512 test_mm512_mask_fixupimm_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512i __C) {
3058   // CHECK-LABEL: @test_mm512_mask_fixupimm_ps
3059   // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.512
3060   return _mm512_mask_fixupimm_ps(__A, __U, __B, __C, 5); 
3061 }
3062
3063 __m512 test_mm512_maskz_fixupimm_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512i __C) {
3064   // CHECK-LABEL: @test_mm512_maskz_fixupimm_round_ps
3065   // CHECK: @llvm.x86.avx512.maskz.fixupimm.ps.512
3066   return _mm512_maskz_fixupimm_round_ps(__U, __A, __B, __C, 5, 8); 
3067 }
3068
3069 __m512 test_mm512_maskz_fixupimm_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512i __C) {
3070   // CHECK-LABEL: @test_mm512_maskz_fixupimm_ps
3071   // CHECK: @llvm.x86.avx512.maskz.fixupimm.ps.512
3072   return _mm512_maskz_fixupimm_ps(__U, __A, __B, __C, 5); 
3073 }
3074
3075 __m128d test_mm_fixupimm_round_sd(__m128d __A, __m128d __B, __m128i __C) {
3076   // CHECK-LABEL: @test_mm_fixupimm_round_sd
3077   // CHECK: @llvm.x86.avx512.mask.fixupimm
3078   return _mm_fixupimm_round_sd(__A, __B, __C, 5, 8); 
3079 }
3080
3081 __m128d test_mm_mask_fixupimm_round_sd(__m128d __A, __mmask8 __U, __m128d __B, __m128i __C) {
3082   // CHECK-LABEL: @test_mm_mask_fixupimm_round_sd
3083   // CHECK: @llvm.x86.avx512.mask.fixupimm
3084   return _mm_mask_fixupimm_round_sd(__A, __U, __B, __C, 5, 8); 
3085 }
3086
3087 __m128d test_mm_fixupimm_sd(__m128d __A, __m128d __B, __m128i __C) {
3088   // CHECK-LABEL: @test_mm_fixupimm_sd
3089   // CHECK: @llvm.x86.avx512.mask.fixupimm
3090   return _mm_fixupimm_sd(__A, __B, __C, 5); 
3091 }
3092
3093 __m128d test_mm_mask_fixupimm_sd(__m128d __A, __mmask8 __U, __m128d __B, __m128i __C) {
3094   // CHECK-LABEL: @test_mm_mask_fixupimm_sd
3095   // CHECK: @llvm.x86.avx512.mask.fixupimm
3096   return _mm_mask_fixupimm_sd(__A, __U, __B, __C, 5); 
3097 }
3098
3099 __m128d test_mm_maskz_fixupimm_round_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128i __C) {
3100   // CHECK-LABEL: @test_mm_maskz_fixupimm_round_sd
3101   // CHECK: @llvm.x86.avx512.maskz.fixupimm
3102   return _mm_maskz_fixupimm_round_sd(__U, __A, __B, __C, 5, 8); 
3103 }
3104
3105 __m128d test_mm_maskz_fixupimm_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128i __C) {
3106   // CHECK-LABEL: @test_mm_maskz_fixupimm_sd
3107   // CHECK: @llvm.x86.avx512.maskz.fixupimm
3108   return _mm_maskz_fixupimm_sd(__U, __A, __B, __C, 5); 
3109 }
3110
3111 __m128 test_mm_fixupimm_round_ss(__m128 __A, __m128 __B, __m128i __C) {
3112   // CHECK-LABEL: @test_mm_fixupimm_round_ss
3113   // CHECK: @llvm.x86.avx512.mask.fixupimm
3114   return _mm_fixupimm_round_ss(__A, __B, __C, 5, 8); 
3115 }
3116
3117 __m128 test_mm_mask_fixupimm_round_ss(__m128 __A, __mmask8 __U, __m128 __B, __m128i __C) {
3118   // CHECK-LABEL: @test_mm_mask_fixupimm_round_ss
3119   // CHECK: @llvm.x86.avx512.mask.fixupimm
3120   return _mm_mask_fixupimm_round_ss(__A, __U, __B, __C, 5, 8); 
3121 }
3122
3123 __m128 test_mm_fixupimm_ss(__m128 __A, __m128 __B, __m128i __C) {
3124   // CHECK-LABEL: @test_mm_fixupimm_ss
3125   // CHECK: @llvm.x86.avx512.mask.fixupimm
3126   return _mm_fixupimm_ss(__A, __B, __C, 5); 
3127 }
3128
3129 __m128 test_mm_mask_fixupimm_ss(__m128 __A, __mmask8 __U, __m128 __B, __m128i __C) {
3130   // CHECK-LABEL: @test_mm_mask_fixupimm_ss
3131   // CHECK: @llvm.x86.avx512.mask.fixupimm
3132   return _mm_mask_fixupimm_ss(__A, __U, __B, __C, 5); 
3133 }
3134
3135 __m128 test_mm_maskz_fixupimm_round_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128i __C) {
3136   // CHECK-LABEL: @test_mm_maskz_fixupimm_round_ss
3137   // CHECK: @llvm.x86.avx512.maskz.fixupimm
3138   return _mm_maskz_fixupimm_round_ss(__U, __A, __B, __C, 5, 8); 
3139 }
3140
3141 __m128 test_mm_maskz_fixupimm_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128i __C) {
3142   // CHECK-LABEL: @test_mm_maskz_fixupimm_ss
3143   // CHECK: @llvm.x86.avx512.maskz.fixupimm
3144   return _mm_maskz_fixupimm_ss(__U, __A, __B, __C, 5); 
3145 }
3146
3147 __m128d test_mm_getexp_round_sd(__m128d __A, __m128d __B) {
3148   // CHECK-LABEL: @test_mm_getexp_round_sd
3149   // CHECK: @llvm.x86.avx512.mask.getexp.sd
3150   return _mm_getexp_round_sd(__A, __B, 8); 
3151 }
3152
3153 __m128d test_mm_getexp_sd(__m128d __A, __m128d __B) {
3154   // CHECK-LABEL: @test_mm_getexp_sd
3155   // CHECK: @llvm.x86.avx512.mask.getexp.sd
3156   return _mm_getexp_sd(__A, __B); 
3157 }
3158
3159 __m128 test_mm_getexp_round_ss(__m128 __A, __m128 __B) {
3160   // CHECK-LABEL: @test_mm_getexp_round_ss
3161   // CHECK: @llvm.x86.avx512.mask.getexp.ss
3162   return _mm_getexp_round_ss(__A, __B, 8); 
3163 }
3164
3165 __m128 test_mm_getexp_ss(__m128 __A, __m128 __B) {
3166   // CHECK-LABEL: @test_mm_getexp_ss
3167   // CHECK: @llvm.x86.avx512.mask.getexp.ss
3168   return _mm_getexp_ss(__A, __B); 
3169 }
3170
3171 __m128d test_mm_getmant_round_sd(__m128d __A, __m128d __B) {
3172   // CHECK-LABEL: @test_mm_getmant_round_sd
3173   // CHECK: @llvm.x86.avx512.mask.getmant.sd
3174   return _mm_getmant_round_sd(__A, __B, _MM_MANT_NORM_1_2, _MM_MANT_SIGN_src, 8); 
3175 }
3176
3177 __m128d test_mm_getmant_sd(__m128d __A, __m128d __B) {
3178   // CHECK-LABEL: @test_mm_getmant_sd
3179   // CHECK: @llvm.x86.avx512.mask.getmant.sd
3180   return _mm_getmant_sd(__A, __B, _MM_MANT_NORM_1_2, _MM_MANT_SIGN_src); 
3181 }
3182
3183 __m128 test_mm_getmant_round_ss(__m128 __A, __m128 __B) {
3184   // CHECK-LABEL: @test_mm_getmant_round_ss
3185   // CHECK: @llvm.x86.avx512.mask.getmant.ss
3186   return _mm_getmant_round_ss(__A, __B, _MM_MANT_NORM_1_2, _MM_MANT_SIGN_src, 8); 
3187 }
3188
3189 __m128 test_mm_getmant_ss(__m128 __A, __m128 __B) {
3190   // CHECK-LABEL: @test_mm_getmant_ss
3191   // CHECK: @llvm.x86.avx512.mask.getmant.ss
3192   return _mm_getmant_ss(__A, __B, _MM_MANT_NORM_1_2, _MM_MANT_SIGN_src); 
3193 }
3194
3195 __mmask16 test_mm512_kmov(__mmask16 __A) {
3196   // CHECK-LABEL: @test_mm512_kmov
3197   // CHECK: load i16, i16* %__A.addr.i, align 2
3198   return _mm512_kmov(__A); 
3199 }
3200
3201 __m512d test_mm512_mask_unpackhi_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
3202   // CHECK-LABEL: @test_mm512_mask_unpackhi_pd
3203   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
3204   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3205   return _mm512_mask_unpackhi_pd(__W, __U, __A, __B); 
3206 }
3207 #if __x86_64__
3208 unsigned long long test_mm_cvt_roundsd_si64(__m128d __A) {
3209   // CHECK-LABEL: @test_mm_cvt_roundsd_si64
3210   // CHECK: @llvm.x86.avx512.vcvtsd2si64
3211   return _mm_cvt_roundsd_si64(__A, _MM_FROUND_CUR_DIRECTION); 
3212 }
3213 #endif
3214 __m512i test_mm512_mask2_permutex2var_epi32(__m512i __A, __m512i __I, __mmask16 __U, __m512i __B) {
3215   // CHECK-LABEL: @test_mm512_mask2_permutex2var_epi32
3216   // CHECK: @llvm.x86.avx512.mask.vpermi2var.d.512
3217   return _mm512_mask2_permutex2var_epi32(__A, __I, __U, __B); 
3218 }
3219 __m512i test_mm512_unpackhi_epi32(__m512i __A, __m512i __B) {
3220   // CHECK-LABEL: @test_mm512_unpackhi_epi32
3221   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31>
3222   return _mm512_unpackhi_epi32(__A, __B); 
3223 }
3224
3225 __m512d test_mm512_maskz_unpackhi_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3226   // CHECK-LABEL: @test_mm512_maskz_unpackhi_pd
3227   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
3228   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3229   return _mm512_maskz_unpackhi_pd(__U, __A, __B); 
3230 }
3231 #if __x86_64__
3232 long long test_mm_cvt_roundsd_i64(__m128d __A) {
3233   // CHECK-LABEL: @test_mm_cvt_roundsd_i64
3234   // CHECK: @llvm.x86.avx512.vcvtsd2si64
3235   return _mm_cvt_roundsd_i64(__A, _MM_FROUND_CUR_DIRECTION); 
3236 }
3237 #endif
3238 __m512d test_mm512_mask2_permutex2var_pd(__m512d __A, __m512i __I, __mmask8 __U, __m512d __B) {
3239   // CHECK-LABEL: @test_mm512_mask2_permutex2var_pd
3240   // CHECK: @llvm.x86.avx512.mask.vpermi2var.pd.512
3241   return _mm512_mask2_permutex2var_pd(__A, __I, __U, __B); 
3242 }
3243 __m512i test_mm512_mask_unpackhi_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {
3244   // CHECK-LABEL: @test_mm512_mask_unpackhi_epi32
3245   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31>
3246   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3247   return _mm512_mask_unpackhi_epi32(__W, __U, __A, __B); 
3248 }
3249
3250 __m512 test_mm512_mask_unpackhi_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3251   // CHECK-LABEL: @test_mm512_mask_unpackhi_ps
3252   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31>
3253   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3254   return _mm512_mask_unpackhi_ps(__W, __U, __A, __B); 
3255 }
3256
3257 __m512 test_mm512_maskz_unpackhi_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3258   // CHECK-LABEL: @test_mm512_maskz_unpackhi_ps
3259   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31>
3260   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3261   return _mm512_maskz_unpackhi_ps(__U, __A, __B); 
3262 }
3263
3264 __m512d test_mm512_mask_unpacklo_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
3265   // CHECK-LABEL: @test_mm512_mask_unpacklo_pd
3266   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
3267   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3268   return _mm512_mask_unpacklo_pd(__W, __U, __A, __B); 
3269 }
3270
3271 __m512d test_mm512_maskz_unpacklo_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3272   // CHECK-LABEL: @test_mm512_maskz_unpacklo_pd
3273   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
3274   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3275   return _mm512_maskz_unpacklo_pd(__U, __A, __B); 
3276 }
3277
3278 __m512 test_mm512_mask_unpacklo_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3279   // CHECK-LABEL: @test_mm512_mask_unpacklo_ps
3280   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29>
3281   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3282   return _mm512_mask_unpacklo_ps(__W, __U, __A, __B); 
3283 }
3284
3285 __m512 test_mm512_maskz_unpacklo_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3286   // CHECK-LABEL: @test_mm512_maskz_unpacklo_ps
3287   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29>
3288   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3289   return _mm512_maskz_unpacklo_ps(__U, __A, __B); 
3290 }
3291 int test_mm_cvt_roundsd_si32(__m128d __A) {
3292   // CHECK-LABEL: @test_mm_cvt_roundsd_si32
3293   // CHECK: @llvm.x86.avx512.vcvtsd2si32
3294   return _mm_cvt_roundsd_si32(__A, _MM_FROUND_CUR_DIRECTION);
3295 }
3296
3297 int test_mm_cvt_roundsd_i32(__m128d __A) {
3298   // CHECK-LABEL: @test_mm_cvt_roundsd_i32
3299   // CHECK: @llvm.x86.avx512.vcvtsd2si32
3300   return _mm_cvt_roundsd_i32(__A, _MM_FROUND_CUR_DIRECTION);
3301 }
3302
3303 unsigned test_mm_cvt_roundsd_u32(__m128d __A) {
3304   // CHECK-LABEL: @test_mm_cvt_roundsd_u32
3305   // CHECK: @llvm.x86.avx512.vcvtsd2usi32
3306   return _mm_cvt_roundsd_u32(__A, _MM_FROUND_CUR_DIRECTION);
3307 }
3308
3309 unsigned test_mm_cvtsd_u32(__m128d __A) {
3310   // CHECK-LABEL: @test_mm_cvtsd_u32
3311   // CHECK: @llvm.x86.avx512.vcvtsd2usi32
3312   return _mm_cvtsd_u32(__A); 
3313 }
3314
3315 #ifdef __x86_64__
3316 unsigned long long test_mm_cvt_roundsd_u64(__m128d __A) {
3317   // CHECK-LABEL: @test_mm_cvt_roundsd_u64
3318   // CHECK: @llvm.x86.avx512.vcvtsd2usi64
3319   return _mm_cvt_roundsd_u64(__A, _MM_FROUND_CUR_DIRECTION);
3320 }
3321
3322 unsigned long long test_mm_cvtsd_u64(__m128d __A) {
3323   // CHECK-LABEL: @test_mm_cvtsd_u64
3324   // CHECK: @llvm.x86.avx512.vcvtsd2usi64
3325   return _mm_cvtsd_u64(__A); 
3326 }
3327 #endif
3328
3329 int test_mm_cvt_roundss_si32(__m128 __A) {
3330   // CHECK-LABEL: @test_mm_cvt_roundss_si32
3331   // CHECK: @llvm.x86.avx512.vcvtss2si32
3332   return _mm_cvt_roundss_si32(__A, _MM_FROUND_CUR_DIRECTION);
3333 }
3334
3335 int test_mm_cvt_roundss_i32(__m128 __A) {
3336   // CHECK-LABEL: @test_mm_cvt_roundss_i32
3337   // CHECK: @llvm.x86.avx512.vcvtss2si32
3338   return _mm_cvt_roundss_i32(__A, _MM_FROUND_CUR_DIRECTION);
3339 }
3340
3341 #ifdef __x86_64__
3342 int test_mm_cvt_roundss_si64(__m128 __A) {
3343   // CHECK-LABEL: @test_mm_cvt_roundss_si64
3344   // CHECK: @llvm.x86.avx512.vcvtss2si64
3345   return _mm_cvt_roundss_si64(__A, _MM_FROUND_CUR_DIRECTION);
3346 }
3347
3348 long long test_mm_cvt_roundss_i64(__m128 __A) {
3349   // CHECK-LABEL: @test_mm_cvt_roundss_i64
3350   // CHECK: @llvm.x86.avx512.vcvtss2si64
3351   return _mm_cvt_roundss_i64(__A, _MM_FROUND_CUR_DIRECTION);
3352 }
3353 #endif
3354
3355 unsigned test_mm_cvt_roundss_u32(__m128 __A) {
3356   // CHECK-LABEL: @test_mm_cvt_roundss_u32
3357   // CHECK: @llvm.x86.avx512.vcvtss2usi32
3358   return _mm_cvt_roundss_u32(__A, _MM_FROUND_CUR_DIRECTION);
3359 }
3360
3361 unsigned test_mm_cvtss_u32(__m128 __A) {
3362   // CHECK-LABEL: @test_mm_cvtss_u32
3363   // CHECK: @llvm.x86.avx512.vcvtss2usi32
3364   return _mm_cvtss_u32(__A); 
3365 }
3366
3367 #ifdef __x86_64__
3368 unsigned long long test_mm_cvt_roundss_u64(__m128 __A) {
3369   // CHECK-LABEL: @test_mm_cvt_roundss_u64
3370   // CHECK: @llvm.x86.avx512.vcvtss2usi64
3371   return _mm_cvt_roundss_u64(__A, _MM_FROUND_CUR_DIRECTION);
3372 }
3373
3374 unsigned long long test_mm_cvtss_u64(__m128 __A) {
3375   // CHECK-LABEL: @test_mm_cvtss_u64
3376   // CHECK: @llvm.x86.avx512.vcvtss2usi64
3377   return _mm_cvtss_u64(__A); 
3378 }
3379 #endif
3380
3381 int test_mm_cvtt_roundsd_i32(__m128d __A) {
3382   // CHECK-LABEL: @test_mm_cvtt_roundsd_i32
3383   // CHECK: @llvm.x86.avx512.cvttsd2si
3384   return _mm_cvtt_roundsd_i32(__A, _MM_FROUND_CUR_DIRECTION);
3385 }
3386
3387 int test_mm_cvtt_roundsd_si32(__m128d __A) {
3388   // CHECK-LABEL: @test_mm_cvtt_roundsd_si32
3389   // CHECK: @llvm.x86.avx512.cvttsd2si
3390   return _mm_cvtt_roundsd_si32(__A, _MM_FROUND_CUR_DIRECTION);
3391 }
3392
3393 int test_mm_cvttsd_i32(__m128d __A) {
3394   // CHECK-LABEL: @test_mm_cvttsd_i32
3395   // CHECK: @llvm.x86.avx512.cvttsd2si
3396   return _mm_cvttsd_i32(__A); 
3397 }
3398
3399 #ifdef __x86_64__
3400 unsigned long long test_mm_cvtt_roundsd_si64(__m128d __A) {
3401   // CHECK-LABEL: @test_mm_cvtt_roundsd_si64
3402   // CHECK: @llvm.x86.avx512.cvttsd2si64
3403   return _mm_cvtt_roundsd_si64(__A, _MM_FROUND_CUR_DIRECTION);
3404 }
3405
3406 long long test_mm_cvtt_roundsd_i64(__m128d __A) {
3407   // CHECK-LABEL: @test_mm_cvtt_roundsd_i64
3408   // CHECK: @llvm.x86.avx512.cvttsd2si64
3409   return _mm_cvtt_roundsd_i64(__A, _MM_FROUND_CUR_DIRECTION);
3410 }
3411
3412 long long test_mm_cvttsd_i64(__m128d __A) {
3413   // CHECK-LABEL: @test_mm_cvttsd_i64
3414   // CHECK: @llvm.x86.avx512.cvttsd2si64
3415   return _mm_cvttsd_i64(__A); 
3416 }
3417 #endif
3418
3419 unsigned test_mm_cvtt_roundsd_u32(__m128d __A) {
3420   // CHECK-LABEL: @test_mm_cvtt_roundsd_u32
3421   // CHECK: @llvm.x86.avx512.cvttsd2usi
3422   return _mm_cvtt_roundsd_u32(__A, _MM_FROUND_CUR_DIRECTION);
3423 }
3424
3425 unsigned test_mm_cvttsd_u32(__m128d __A) {
3426   // CHECK-LABEL: @test_mm_cvttsd_u32
3427   // CHECK: @llvm.x86.avx512.cvttsd2usi
3428   return _mm_cvttsd_u32(__A); 
3429 }
3430
3431 #ifdef __x86_64__
3432 unsigned long long test_mm_cvtt_roundsd_u64(__m128d __A) {
3433   // CHECK-LABEL: @test_mm_cvtt_roundsd_u64
3434   // CHECK: @llvm.x86.avx512.cvttsd2usi64
3435   return _mm_cvtt_roundsd_u64(__A, _MM_FROUND_CUR_DIRECTION);
3436 }
3437
3438 unsigned long long test_mm_cvttsd_u64(__m128d __A) {
3439   // CHECK-LABEL: @test_mm_cvttsd_u64
3440   // CHECK: @llvm.x86.avx512.cvttsd2usi64
3441   return _mm_cvttsd_u64(__A); 
3442 }
3443 #endif
3444
3445 int test_mm_cvtt_roundss_i32(__m128 __A) {
3446   // CHECK-LABEL: @test_mm_cvtt_roundss_i32
3447   // CHECK: @llvm.x86.avx512.cvttss2si
3448   return _mm_cvtt_roundss_i32(__A, _MM_FROUND_CUR_DIRECTION);
3449 }
3450
3451 int test_mm_cvtt_roundss_si32(__m128 __A) {
3452   // CHECK-LABEL: @test_mm_cvtt_roundss_si32
3453   // CHECK: @llvm.x86.avx512.cvttss2si
3454   return _mm_cvtt_roundss_si32(__A, _MM_FROUND_CUR_DIRECTION);
3455 }
3456
3457 int test_mm_cvttss_i32(__m128 __A) {
3458   // CHECK-LABEL: @test_mm_cvttss_i32
3459   // CHECK: @llvm.x86.avx512.cvttss2si
3460   return _mm_cvttss_i32(__A); 
3461 }
3462
3463 #ifdef __x86_64__
3464 float test_mm_cvtt_roundss_i64(__m128 __A) {
3465   // CHECK-LABEL: @test_mm_cvtt_roundss_i64
3466   // CHECK: @llvm.x86.avx512.cvttss2si64
3467   return _mm_cvtt_roundss_i64(__A, _MM_FROUND_CUR_DIRECTION);
3468 }
3469
3470 long long test_mm_cvtt_roundss_si64(__m128 __A) {
3471   // CHECK-LABEL: @test_mm_cvtt_roundss_si64
3472   // CHECK: @llvm.x86.avx512.cvttss2si64
3473   return _mm_cvtt_roundss_si64(__A, _MM_FROUND_CUR_DIRECTION);
3474 }
3475
3476 long long test_mm_cvttss_i64(__m128 __A) {
3477   // CHECK-LABEL: @test_mm_cvttss_i64
3478   // CHECK: @llvm.x86.avx512.cvttss2si64
3479   return _mm_cvttss_i64(__A); 
3480 }
3481 #endif
3482
3483 unsigned test_mm_cvtt_roundss_u32(__m128 __A) {
3484   // CHECK-LABEL: @test_mm_cvtt_roundss_u32
3485   // CHECK: @llvm.x86.avx512.cvttss2usi
3486   return _mm_cvtt_roundss_u32(__A, _MM_FROUND_CUR_DIRECTION);
3487 }
3488
3489 unsigned test_mm_cvttss_u32(__m128 __A) {
3490   // CHECK-LABEL: @test_mm_cvttss_u32
3491   // CHECK: @llvm.x86.avx512.cvttss2usi
3492   return _mm_cvttss_u32(__A); 
3493 }
3494
3495 #ifdef __x86_64__
3496 unsigned long long test_mm_cvtt_roundss_u64(__m128 __A) {
3497   // CHECK-LABEL: @test_mm_cvtt_roundss_u64
3498   // CHECK: @llvm.x86.avx512.cvttss2usi64
3499   return _mm_cvtt_roundss_u64(__A, _MM_FROUND_CUR_DIRECTION);
3500 }
3501
3502 unsigned long long test_mm_cvttss_u64(__m128 __A) {
3503   // CHECK-LABEL: @test_mm_cvttss_u64
3504   // CHECK: @llvm.x86.avx512.cvttss2usi64
3505   return _mm_cvttss_u64(__A); 
3506 }
3507 #endif
3508
3509 __m512i test_mm512_cvtt_roundps_epu32(__m512 __A) 
3510 {
3511     // CHECK-LABEL: @test_mm512_cvtt_roundps_epu32
3512     // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512
3513     return _mm512_cvtt_roundps_epu32(__A, _MM_FROUND_CUR_DIRECTION);
3514 }
3515
3516 __m512i test_mm512_mask_cvtt_roundps_epu32(__m512i __W, __mmask16 __U, __m512 __A)
3517 {
3518     // CHECK-LABEL: @test_mm512_mask_cvtt_roundps_epu32
3519     // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512
3520     return _mm512_mask_cvtt_roundps_epu32(__W, __U, __A, _MM_FROUND_CUR_DIRECTION);
3521 }
3522
3523 __m512i test_mm512_maskz_cvtt_roundps_epu32( __mmask16 __U, __m512 __A)
3524 {
3525     // CHECK-LABEL: @test_mm512_maskz_cvtt_roundps_epu32
3526     // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512
3527
3528     return _mm512_maskz_cvtt_roundps_epu32(__U, __A, _MM_FROUND_CUR_DIRECTION);
3529 }
3530
3531 __m256i test_mm512_cvt_roundps_ph(__m512  __A)
3532 {
3533     // CHECK-LABEL: @test_mm512_cvt_roundps_ph
3534     // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512
3535     return _mm512_cvt_roundps_ph(__A, _MM_FROUND_CUR_DIRECTION);
3536 }
3537
3538 __m256i test_mm512_mask_cvt_roundps_ph(__m256i __W , __mmask16 __U, __m512  __A)
3539 {
3540     // CHECK-LABEL: @test_mm512_mask_cvt_roundps_ph
3541     // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512
3542     return _mm512_mask_cvt_roundps_ph(__W, __U, __A, _MM_FROUND_CUR_DIRECTION);
3543 }
3544
3545 __m256i test_mm512_maskz_cvt_roundps_ph(__mmask16 __U, __m512  __A)
3546 {
3547     // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_ph
3548     // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512
3549     return _mm512_maskz_cvt_roundps_ph(__U, __A, _MM_FROUND_CUR_DIRECTION);
3550 }
3551
3552 __m512 test_mm512_cvt_roundph_ps(__m256i __A)
3553 {
3554     // CHECK-LABEL: @test_mm512_cvt_roundph_ps
3555     // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.512
3556     return _mm512_cvt_roundph_ps(__A, _MM_FROUND_CUR_DIRECTION);
3557 }
3558
3559 __m512 test_mm512_mask_cvt_roundph_ps(__m512 __W, __mmask16 __U, __m256i __A)
3560 {
3561     // CHECK-LABEL: @test_mm512_mask_cvt_roundph_ps
3562     // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.512
3563     return _mm512_mask_cvt_roundph_ps(__W, __U, __A, _MM_FROUND_CUR_DIRECTION);
3564 }
3565
3566 __m512 test_mm512_maskz_cvt_roundph_ps(__mmask16 __U, __m256i __A)
3567 {
3568     // CHECK-LABEL: @test_mm512_maskz_cvt_roundph_ps
3569     // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.512
3570     return _mm512_maskz_cvt_roundph_ps(__U, __A, _MM_FROUND_CUR_DIRECTION);
3571 }
3572
3573 __m512 test_mm512_mask_cvt_roundepi32_ps(__m512 __W, __mmask16 __U, __m512i __A)
3574 {
3575   // CHECK-LABEL: @test_mm512_mask_cvt_roundepi32_ps
3576   // CHECK: @llvm.x86.avx512.mask.cvtdq2ps.512
3577   return _mm512_mask_cvt_roundepi32_ps(__W,__U,__A,4);
3578 }
3579
3580 __m512 test_mm512_maskz_cvt_roundepi32_ps(__mmask16 __U, __m512i __A)
3581 {
3582   // CHECK-LABEL: @test_mm512_maskz_cvt_roundepi32_ps
3583   // CHECK: @llvm.x86.avx512.mask.cvtdq2ps.512
3584   return _mm512_maskz_cvt_roundepi32_ps(__U,__A,4);
3585 }
3586
3587 __m512 test_mm512_mask_cvt_roundepu32_ps(__m512 __W, __mmask16 __U,__m512i __A)
3588 {
3589   // CHECK-LABEL: @test_mm512_mask_cvt_roundepu32_ps
3590   // CHECK: @llvm.x86.avx512.mask.cvtudq2ps.512
3591   return _mm512_mask_cvt_roundepu32_ps(__W,__U,__A,4);
3592 }
3593
3594 __m512 test_mm512_maskz_cvt_roundepu32_ps(__mmask16 __U,__m512i __A)
3595 {
3596   // CHECK-LABEL: @test_mm512_maskz_cvt_roundepu32_ps
3597   // CHECK: @llvm.x86.avx512.mask.cvtudq2ps.512
3598   return _mm512_maskz_cvt_roundepu32_ps(__U,__A,4);
3599 }
3600
3601 __m256 test_mm512_mask_cvt_roundpd_ps(__m256 W, __mmask8 U,__m512d A)
3602 {
3603   // CHECK-LABEL: @test_mm512_mask_cvt_roundpd_ps
3604   // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
3605   return _mm512_mask_cvt_roundpd_ps(W,U,A,4);
3606 }
3607
3608 __m256 test_mm512_maskz_cvt_roundpd_ps(__mmask8 U, __m512d A)
3609 {
3610   // CHECK-LABEL: @test_mm512_maskz_cvt_roundpd_ps
3611   // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
3612   return _mm512_maskz_cvt_roundpd_ps(U,A,4);
3613 }
3614
3615 __m256i test_mm512_cvtt_roundpd_epi32(__m512d A)
3616 {
3617   // CHECK-LABEL: @test_mm512_cvtt_roundpd_epi32
3618   // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.512
3619   return _mm512_cvtt_roundpd_epi32(A,4);
3620 }
3621
3622 __m256i test_mm512_mask_cvtt_roundpd_epi32(__m256i W, __mmask8 U, __m512d A)
3623 {
3624   // CHECK-LABEL: @test_mm512_mask_cvtt_roundpd_epi32
3625   // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.512
3626   return _mm512_mask_cvtt_roundpd_epi32(W,U,A,4);
3627 }
3628
3629 __m256i test_mm512_maskz_cvtt_roundpd_epi32(__mmask8 U, __m512d A)
3630 {
3631   // CHECK-LABEL: @test_mm512_maskz_cvtt_roundpd_epi32
3632   // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.512
3633   return _mm512_maskz_cvtt_roundpd_epi32(U,A,4);
3634 }
3635
3636 __m512i test_mm512_mask_cvtt_roundps_epi32(__m512i W,__mmask16 U, __m512 A)
3637 {
3638   // CHECK-LABEL: @test_mm512_mask_cvtt_roundps_epi32
3639   // CHECK: @llvm.x86.avx512.mask.cvttps2dq.512
3640   return _mm512_mask_cvtt_roundps_epi32(W,U,A,4);
3641 }
3642
3643 __m512i test_mm512_maskz_cvtt_roundps_epi32(__mmask16 U, __m512 A)
3644 {
3645   // CHECK-LABEL: @test_mm512_maskz_cvtt_roundps_epi32
3646   // CHECK: @llvm.x86.avx512.mask.cvttps2dq.512
3647   return _mm512_maskz_cvtt_roundps_epi32(U,A,4);
3648 }
3649
3650 __m512i test_mm512_mask_cvt_roundps_epi32(__m512i __W,__mmask16 __U,__m512 __A)
3651 {
3652   // CHECK-LABEL: @test_mm512_mask_cvt_roundps_epi32
3653   // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512
3654   return _mm512_mask_cvt_roundps_epi32(__W,__U,__A,4);
3655 }
3656
3657 __m512i test_mm512_maskz_cvt_roundps_epi32(__mmask16 __U, __m512 __A)
3658 {
3659   // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_epi32
3660   // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512
3661   return _mm512_maskz_cvt_roundps_epi32(__U,__A,4);
3662 }
3663
3664 __m256i test_mm512_mask_cvt_roundpd_epi32(__m256i W,__mmask8 U,__m512d A)
3665 {
3666   // CHECK-LABEL: @test_mm512_mask_cvt_roundpd_epi32
3667   // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512
3668   return _mm512_mask_cvt_roundpd_epi32(W,U,A,4);
3669 }
3670
3671 __m256i test_mm512_maskz_cvt_roundpd_epi32(__mmask8 U, __m512d A)
3672 {
3673   // CHECK-LABEL: @test_mm512_maskz_cvt_roundpd_epi32
3674   // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512
3675   return _mm512_maskz_cvt_roundpd_epi32(U,A,4);
3676 }
3677
3678 __m512i test_mm512_mask_cvt_roundps_epu32(__m512i __W,__mmask16 __U,__m512 __A)
3679 {
3680   // CHECK-LABEL: @test_mm512_mask_cvt_roundps_epu32
3681   // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512
3682   return _mm512_mask_cvt_roundps_epu32(__W,__U,__A,4);
3683 }
3684
3685 __m512i test_mm512_maskz_cvt_roundps_epu32(__mmask16 __U,__m512 __A)
3686 {
3687   // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_epu32
3688   // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512
3689   return _mm512_maskz_cvt_roundps_epu32(__U,__A, 4);
3690 }
3691
3692 __m256i test_mm512_mask_cvt_roundpd_epu32(__m256i W, __mmask8 U, __m512d A)
3693 {
3694   // CHECK-LABEL: @test_mm512_mask_cvt_roundpd_epu32
3695   // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512
3696   return _mm512_mask_cvt_roundpd_epu32(W,U,A,4);
3697 }
3698
3699 __m256i test_mm512_maskz_cvt_roundpd_epu32(__mmask8 U, __m512d A) 
3700 {
3701   // CHECK-LABEL: @test_mm512_maskz_cvt_roundpd_epu32
3702   // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512
3703   return _mm512_maskz_cvt_roundpd_epu32(U, A, 4);
3704 }
3705
3706 __m512 test_mm512_mask2_permutex2var_ps(__m512 __A, __m512i __I, __mmask16 __U, __m512 __B) {
3707   // CHECK-LABEL: @test_mm512_mask2_permutex2var_ps
3708   // CHECK: @llvm.x86.avx512.mask.vpermi2var.ps.512
3709   return _mm512_mask2_permutex2var_ps(__A, __I, __U, __B); 
3710 }
3711
3712 __m512i test_mm512_mask2_permutex2var_epi64(__m512i __A, __m512i __I, __mmask8 __U, __m512i __B) {
3713   // CHECK-LABEL: @test_mm512_mask2_permutex2var_epi64
3714   // CHECK: @llvm.x86.avx512.mask.vpermi2var.q.512
3715   return _mm512_mask2_permutex2var_epi64(__A, __I, __U, __B); 
3716 }
3717
3718 __m512d test_mm512_permute_pd(__m512d __X) {
3719   // CHECK-LABEL: @test_mm512_permute_pd
3720   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
3721   return _mm512_permute_pd(__X, 2);
3722 }
3723
3724 __m512d test_mm512_mask_permute_pd(__m512d __W, __mmask8 __U, __m512d __X) {
3725   // CHECK-LABEL: @test_mm512_mask_permute_pd
3726   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
3727   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3728   return _mm512_mask_permute_pd(__W, __U, __X, 2);
3729 }
3730
3731 __m512d test_mm512_maskz_permute_pd(__mmask8 __U, __m512d __X) {
3732   // CHECK-LABEL: @test_mm512_maskz_permute_pd
3733   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
3734   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3735   return _mm512_maskz_permute_pd(__U, __X, 2);
3736 }
3737
3738 __m512 test_mm512_permute_ps(__m512 __X) {
3739   // CHECK-LABEL: @test_mm512_permute_ps
3740   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> zeroinitializer, <16 x i32> <i32 2, i32 0, i32 0, i32 0, i32 6, i32 4, i32 4, i32 4, i32 10, i32 8, i32 8, i32 8, i32 14, i32 12, i32 12, i32 12>
3741   return _mm512_permute_ps(__X, 2);
3742 }
3743
3744 __m512 test_mm512_mask_permute_ps(__m512 __W, __mmask16 __U, __m512 __X) {
3745   // CHECK-LABEL: @test_mm512_mask_permute_ps
3746   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> zeroinitializer, <16 x i32> <i32 2, i32 0, i32 0, i32 0, i32 6, i32 4, i32 4, i32 4, i32 10, i32 8, i32 8, i32 8, i32 14, i32 12, i32 12, i32 12>
3747   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3748   return _mm512_mask_permute_ps(__W, __U, __X, 2);
3749 }
3750
3751 __m512 test_mm512_maskz_permute_ps(__mmask16 __U, __m512 __X) {
3752   // CHECK-LABEL: @test_mm512_maskz_permute_ps
3753   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> zeroinitializer, <16 x i32> <i32 2, i32 0, i32 0, i32 0, i32 6, i32 4, i32 4, i32 4, i32 10, i32 8, i32 8, i32 8, i32 14, i32 12, i32 12, i32 12>
3754   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3755   return _mm512_maskz_permute_ps(__U, __X, 2);
3756 }
3757
3758 __m512d test_mm512_permutevar_pd(__m512d __A, __m512i __C) {
3759   // CHECK-LABEL: @test_mm512_permutevar_pd
3760   // CHECK: @llvm.x86.avx512.vpermilvar.pd.512
3761   return _mm512_permutevar_pd(__A, __C); 
3762 }
3763
3764 __m512d test_mm512_mask_permutevar_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512i __C) {
3765   // CHECK-LABEL: @test_mm512_mask_permutevar_pd
3766   // CHECK: @llvm.x86.avx512.vpermilvar.pd.512
3767   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3768   return _mm512_mask_permutevar_pd(__W, __U, __A, __C); 
3769 }
3770
3771 __m512d test_mm512_maskz_permutevar_pd(__mmask8 __U, __m512d __A, __m512i __C) {
3772   // CHECK-LABEL: @test_mm512_maskz_permutevar_pd
3773   // CHECK: @llvm.x86.avx512.vpermilvar.pd.512
3774   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3775   return _mm512_maskz_permutevar_pd(__U, __A, __C); 
3776 }
3777
3778 __m512 test_mm512_permutevar_ps(__m512 __A, __m512i __C) {
3779   // CHECK-LABEL: @test_mm512_permutevar_ps
3780   // CHECK: @llvm.x86.avx512.vpermilvar.ps.512
3781   return _mm512_permutevar_ps(__A, __C); 
3782 }
3783
3784 __m512 test_mm512_mask_permutevar_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512i __C) {
3785   // CHECK-LABEL: @test_mm512_mask_permutevar_ps
3786   // CHECK: @llvm.x86.avx512.vpermilvar.ps.512
3787   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3788   return _mm512_mask_permutevar_ps(__W, __U, __A, __C); 
3789 }
3790
3791 __m512 test_mm512_maskz_permutevar_ps(__mmask16 __U, __m512 __A, __m512i __C) {
3792   // CHECK-LABEL: @test_mm512_maskz_permutevar_ps
3793   // CHECK: @llvm.x86.avx512.vpermilvar.ps.512
3794   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3795   return _mm512_maskz_permutevar_ps(__U, __A, __C); 
3796 }
3797
3798 __m512i test_mm512_maskz_permutex2var_epi32(__mmask16 __U, __m512i __A, __m512i __I, __m512i __B) {
3799   // CHECK-LABEL: @test_mm512_maskz_permutex2var_epi32
3800   // CHECK: @llvm.x86.avx512.maskz.vpermt2var.d.512
3801   return _mm512_maskz_permutex2var_epi32(__U, __A, __I, __B); 
3802 }
3803
3804 __m512i test_mm512_mask_permutex2var_epi32 (__m512i __A, __mmask16 __U, __m512i __I, __m512i __B)
3805 {
3806   // CHECK-LABEL: @test_mm512_mask_permutex2var_epi32 
3807   // CHECK: @llvm.x86.avx512.mask.vpermt2var.d.512
3808   return _mm512_mask_permutex2var_epi32 (__A,__U,__I,__B);
3809 }
3810
3811 __m512d test_mm512_permutex2var_pd (__m512d __A, __m512i __I, __m512d __B)
3812 {
3813   // CHECK-LABEL: @test_mm512_permutex2var_pd 
3814   // CHECK: @llvm.x86.avx512.mask.vpermt2var.pd.512
3815   return _mm512_permutex2var_pd (__A, __I,__B);
3816 }
3817
3818 __m512d test_mm512_mask_permutex2var_pd (__m512d __A, __mmask8 __U, __m512i __I, __m512d __B)
3819 {
3820   // CHECK-LABEL: @test_mm512_mask_permutex2var_pd 
3821   // CHECK: @llvm.x86.avx512.mask.vpermt2var.pd.512
3822   return _mm512_mask_permutex2var_pd (__A,__U,__I,__B);
3823 }
3824
3825 __m512d test_mm512_maskz_permutex2var_pd(__mmask8 __U, __m512d __A, __m512i __I, __m512d __B) {
3826   // CHECK-LABEL: @test_mm512_maskz_permutex2var_pd
3827   // CHECK: @llvm.x86.avx512.maskz.vpermt2var.pd.512
3828   return _mm512_maskz_permutex2var_pd(__U, __A, __I, __B); 
3829 }
3830
3831 __m512 test_mm512_permutex2var_ps (__m512 __A, __m512i __I, __m512 __B)
3832 {
3833   // CHECK-LABEL: @test_mm512_permutex2var_ps 
3834   // CHECK: @llvm.x86.avx512.mask.vpermt2var.ps.512
3835   return _mm512_permutex2var_ps (__A, __I, __B);
3836 }
3837
3838 __m512 test_mm512_mask_permutex2var_ps (__m512 __A, __mmask16 __U, __m512i __I, __m512 __B)
3839 {
3840   // CHECK-LABEL: @test_mm512_mask_permutex2var_ps 
3841   // CHECK: @llvm.x86.avx512.mask.vpermt2var.ps.512
3842   return _mm512_mask_permutex2var_ps (__A,__U,__I,__B);
3843 }
3844
3845 __m512 test_mm512_maskz_permutex2var_ps(__mmask16 __U, __m512 __A, __m512i __I, __m512 __B) {
3846   // CHECK-LABEL: @test_mm512_maskz_permutex2var_ps
3847   // CHECK: @llvm.x86.avx512.maskz.vpermt2var.ps.512
3848   return _mm512_maskz_permutex2var_ps(__U, __A, __I, __B); 
3849 }
3850
3851 __m512i test_mm512_mask_permutex2var_epi64 (__m512i __A, __mmask8 __U, __m512i __I, __m512i __B){
3852   // CHECK-LABEL: @test_mm512_mask_permutex2var_epi64
3853   // CHECK: @llvm.x86.avx512.mask.vpermt2var.q.512
3854   return _mm512_mask_permutex2var_epi64(__A, __U, __I, __B);
3855 }
3856
3857 __m512i test_mm512_maskz_permutex2var_epi64(__mmask8 __U, __m512i __A, __m512i __I, __m512i __B) {
3858   // CHECK-LABEL: @test_mm512_maskz_permutex2var_epi64
3859   // CHECK: @llvm.x86.avx512.maskz.vpermt2var.q.512
3860   return _mm512_maskz_permutex2var_epi64(__U, __A, __I, __B);
3861 }
3862 __mmask16 test_mm512_testn_epi32_mask(__m512i __A, __m512i __B) {
3863   // CHECK-LABEL: @test_mm512_testn_epi32_mask
3864   // CHECK: @llvm.x86.avx512.ptestnm.d.512
3865   return _mm512_testn_epi32_mask(__A, __B); 
3866 }
3867
3868 __mmask16 test_mm512_mask_testn_epi32_mask(__mmask16 __U, __m512i __A, __m512i __B) {
3869   // CHECK-LABEL: @test_mm512_mask_testn_epi32_mask
3870   // CHECK: @llvm.x86.avx512.ptestnm.d.512
3871   return _mm512_mask_testn_epi32_mask(__U, __A, __B); 
3872 }
3873
3874 __mmask8 test_mm512_testn_epi64_mask(__m512i __A, __m512i __B) {
3875   // CHECK-LABEL: @test_mm512_testn_epi64_mask
3876   // CHECK: @llvm.x86.avx512.ptestnm.q.512
3877   return _mm512_testn_epi64_mask(__A, __B); 
3878 }
3879
3880 __mmask8 test_mm512_mask_testn_epi64_mask(__mmask8 __U, __m512i __A, __m512i __B) {
3881   // CHECK-LABEL: @test_mm512_mask_testn_epi64_mask
3882   // CHECK: @llvm.x86.avx512.ptestnm.q.512
3883   return _mm512_mask_testn_epi64_mask(__U, __A, __B); 
3884 }
3885
3886 __mmask16 test_mm512_mask_test_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
3887 {
3888   // CHECK-LABEL: @test_mm512_mask_test_epi32_mask 
3889   // CHECK: @llvm.x86.avx512.ptestm.d.512
3890   return _mm512_mask_test_epi32_mask (__U,__A,__B);
3891 }
3892
3893 __mmask8 test_mm512_mask_test_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
3894 {
3895   // CHECK-LABEL: @test_mm512_mask_test_epi64_mask 
3896   // CHECK: @llvm.x86.avx512.ptestm.q.512
3897   return _mm512_mask_test_epi64_mask (__U,__A,__B);
3898 }
3899
3900 __m512i test_mm512_maskz_unpackhi_epi32(__mmask16 __U, __m512i __A, __m512i __B) {
3901   // CHECK-LABEL: @test_mm512_maskz_unpackhi_epi32
3902   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31>
3903   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3904   return _mm512_maskz_unpackhi_epi32(__U, __A, __B); 
3905 }
3906
3907 __m512i test_mm512_unpackhi_epi64(__m512i __A, __m512i __B) {
3908   // CHECK-LABEL: @test_mm512_unpackhi_epi64
3909   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
3910   return _mm512_unpackhi_epi64(__A, __B); 
3911 }
3912
3913 __m512i test_mm512_mask_unpackhi_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
3914   // CHECK-LABEL: @test_mm512_mask_unpackhi_epi64
3915   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
3916   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3917   return _mm512_mask_unpackhi_epi64(__W, __U, __A, __B); 
3918 }
3919
3920 __m512i test_mm512_maskz_unpackhi_epi64(__mmask8 __U, __m512i __A, __m512i __B) {
3921   // CHECK-LABEL: @test_mm512_maskz_unpackhi_epi64
3922   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
3923   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3924   return _mm512_maskz_unpackhi_epi64(__U, __A, __B); 
3925 }
3926
3927 __m512i test_mm512_unpacklo_epi32(__m512i __A, __m512i __B) {
3928   // CHECK-LABEL: @test_mm512_unpacklo_epi32
3929   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29>
3930   return _mm512_unpacklo_epi32(__A, __B); 
3931 }
3932
3933 __m512i test_mm512_mask_unpacklo_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {
3934   // CHECK-LABEL: @test_mm512_mask_unpacklo_epi32
3935   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29>
3936   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3937   return _mm512_mask_unpacklo_epi32(__W, __U, __A, __B); 
3938 }
3939
3940 __m512i test_mm512_maskz_unpacklo_epi32(__mmask16 __U, __m512i __A, __m512i __B) {
3941   // CHECK-LABEL: @test_mm512_maskz_unpacklo_epi32
3942   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29>
3943   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3944   return _mm512_maskz_unpacklo_epi32(__U, __A, __B); 
3945 }
3946
3947 __m512i test_mm512_unpacklo_epi64(__m512i __A, __m512i __B) {
3948   // CHECK-LABEL: @test_mm512_unpacklo_epi64
3949   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
3950   return _mm512_unpacklo_epi64(__A, __B); 
3951 }
3952
3953 __m512i test_mm512_mask_unpacklo_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
3954   // CHECK-LABEL: @test_mm512_mask_unpacklo_epi64
3955   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
3956   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3957   return _mm512_mask_unpacklo_epi64(__W, __U, __A, __B); 
3958 }
3959
3960 __m512i test_mm512_maskz_unpacklo_epi64(__mmask8 __U, __m512i __A, __m512i __B) {
3961   // CHECK-LABEL: @test_mm512_maskz_unpacklo_epi64
3962   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
3963   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3964   return _mm512_maskz_unpacklo_epi64(__U, __A, __B); 
3965 }
3966
3967 __m128d test_mm_roundscale_round_sd(__m128d __A, __m128d __B) {
3968   // CHECK-LABEL: @test_mm_roundscale_round_sd
3969   // CHECK: @llvm.x86.avx512.mask.rndscale.sd
3970   return _mm_roundscale_round_sd(__A, __B, 3, _MM_FROUND_CUR_DIRECTION); 
3971 }
3972
3973 __m128d test_mm_roundscale_sd(__m128d __A, __m128d __B) {
3974   // CHECK-LABEL: @test_mm_roundscale_sd
3975   // CHECK: @llvm.x86.avx512.mask.rndscale.sd
3976   return _mm_roundscale_sd(__A, __B, 3); 
3977 }
3978
3979 __m128d test_mm_mask_roundscale_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
3980   // CHECK: @llvm.x86.avx512.mask.rndscale.sd
3981     return _mm_mask_roundscale_sd(__W,__U,__A,__B,3);
3982 }
3983
3984 __m128d test_mm_mask_roundscale_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
3985   // CHECK: @llvm.x86.avx512.mask.rndscale.sd
3986     return _mm_mask_roundscale_round_sd(__W,__U,__A,__B,3,_MM_FROUND_CUR_DIRECTION);
3987 }
3988
3989 __m128d test_mm_maskz_roundscale_sd(__mmask8 __U, __m128d __A, __m128d __B){
3990   // CHECK: @llvm.x86.avx512.mask.rndscale.sd
3991     return _mm_maskz_roundscale_sd(__U,__A,__B,3);
3992 }
3993
3994 __m128d test_mm_maskz_roundscale_round_sd(__mmask8 __U, __m128d __A, __m128d __B){
3995   // CHECK: @llvm.x86.avx512.mask.rndscale.sd
3996     return _mm_maskz_roundscale_round_sd(__U,__A,__B,3,_MM_FROUND_CUR_DIRECTION );
3997 }
3998
3999 __m128 test_mm_roundscale_round_ss(__m128 __A, __m128 __B) {
4000   // CHECK-LABEL: @test_mm_roundscale_round_ss
4001   // CHECK: @llvm.x86.avx512.mask.rndscale.ss
4002   return _mm_roundscale_round_ss(__A, __B, 3, _MM_FROUND_CUR_DIRECTION); 
4003 }
4004
4005 __m128 test_mm_roundscale_ss(__m128 __A, __m128 __B) {
4006   // CHECK-LABEL: @test_mm_roundscale_ss
4007   // CHECK: @llvm.x86.avx512.mask.rndscale.ss
4008   return _mm_roundscale_ss(__A, __B, 3); 
4009 }
4010
4011 __m128 test_mm_mask_roundscale_ss(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
4012   // CHECK-LABEL: @test_mm_mask_roundscale_ss
4013   // CHECK: @llvm.x86.avx512.mask.rndscale.ss
4014     return _mm_mask_roundscale_ss(__W,__U,__A,__B,3);
4015 }
4016
4017 __m128 test_mm_maskz_roundscale_round_ss( __mmask8 __U, __m128d __A, __m128d __B){
4018   // CHECK-LABEL: @test_mm_maskz_roundscale_round_ss
4019   // CHECK: @llvm.x86.avx512.mask.rndscale.ss
4020     return _mm_maskz_roundscale_round_ss(__U,__A,__B,3,_MM_FROUND_CUR_DIRECTION);
4021 }
4022
4023 __m128 test_mm_maskz_roundscale_ss(__mmask8 __U, __m128d __A, __m128d __B){
4024   // CHECK-LABEL: @test_mm_maskz_roundscale_ss
4025   // CHECK: @llvm.x86.avx512.mask.rndscale.ss
4026     return _mm_maskz_roundscale_ss(__U,__A,__B,3);
4027 }
4028
4029 __m512d test_mm512_scalef_round_pd(__m512d __A, __m512d __B) {
4030   // CHECK-LABEL: @test_mm512_scalef_round_pd
4031   // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
4032   return _mm512_scalef_round_pd(__A, __B, _MM_FROUND_CUR_DIRECTION); 
4033 }
4034
4035 __m512d test_mm512_mask_scalef_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
4036   // CHECK-LABEL: @test_mm512_mask_scalef_round_pd
4037   // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
4038   return _mm512_mask_scalef_round_pd(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION); 
4039 }
4040
4041 __m512d test_mm512_maskz_scalef_round_pd(__mmask8 __U, __m512d __A, __m512d __B) {
4042   // CHECK-LABEL: @test_mm512_maskz_scalef_round_pd
4043   // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
4044   return _mm512_maskz_scalef_round_pd(__U, __A, __B, _MM_FROUND_CUR_DIRECTION); 
4045 }
4046
4047 __m512d test_mm512_scalef_pd(__m512d __A, __m512d __B) {
4048   // CHECK-LABEL: @test_mm512_scalef_pd
4049   // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
4050   return _mm512_scalef_pd(__A, __B); 
4051 }
4052
4053 __m512d test_mm512_mask_scalef_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
4054   // CHECK-LABEL: @test_mm512_mask_scalef_pd
4055   // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
4056   return _mm512_mask_scalef_pd(__W, __U, __A, __B); 
4057 }
4058
4059 __m512d test_mm512_maskz_scalef_pd(__mmask8 __U, __m512d __A, __m512d __B) {
4060   // CHECK-LABEL: @test_mm512_maskz_scalef_pd
4061   // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
4062   return _mm512_maskz_scalef_pd(__U, __A, __B); 
4063 }
4064
4065 __m512 test_mm512_scalef_round_ps(__m512 __A, __m512 __B) {
4066   // CHECK-LABEL: @test_mm512_scalef_round_ps
4067   // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
4068   return _mm512_scalef_round_ps(__A, __B, _MM_FROUND_CUR_DIRECTION); 
4069 }
4070
4071 __m512 test_mm512_mask_scalef_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
4072   // CHECK-LABEL: @test_mm512_mask_scalef_round_ps
4073   // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
4074   return _mm512_mask_scalef_round_ps(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION); 
4075 }
4076
4077 __m512 test_mm512_maskz_scalef_round_ps(__mmask16 __U, __m512 __A, __m512 __B) {
4078   // CHECK-LABEL: @test_mm512_maskz_scalef_round_ps
4079   // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
4080   return _mm512_maskz_scalef_round_ps(__U, __A, __B, _MM_FROUND_CUR_DIRECTION); 
4081 }
4082
4083 __m512 test_mm512_scalef_ps(__m512 __A, __m512 __B) {
4084   // CHECK-LABEL: @test_mm512_scalef_ps
4085   // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
4086   return _mm512_scalef_ps(__A, __B); 
4087 }
4088
4089 __m512 test_mm512_mask_scalef_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
4090   // CHECK-LABEL: @test_mm512_mask_scalef_ps
4091   // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
4092   return _mm512_mask_scalef_ps(__W, __U, __A, __B); 
4093 }
4094
4095 __m512 test_mm512_maskz_scalef_ps(__mmask16 __U, __m512 __A, __m512 __B) {
4096   // CHECK-LABEL: @test_mm512_maskz_scalef_ps
4097   // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
4098   return _mm512_maskz_scalef_ps(__U, __A, __B); 
4099 }
4100
4101 __m128d test_mm_scalef_round_sd(__m128d __A, __m128d __B) {
4102   // CHECK-LABEL: @test_mm_scalef_round_sd
4103   // CHECK: @llvm.x86.avx512.mask.scalef
4104   return _mm_scalef_round_sd(__A, __B, _MM_FROUND_CUR_DIRECTION); 
4105 }
4106
4107 __m128d test_mm_scalef_sd(__m128d __A, __m128d __B) {
4108   // CHECK-LABEL: @test_mm_scalef_sd
4109   // CHECK: @llvm.x86.avx512.mask.scalef
4110   return _mm_scalef_sd(__A, __B); 
4111 }
4112
4113 __m128d test_mm_mask_scalef_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
4114   // CHECK-LABEL: @test_mm_mask_scalef_sd
4115   // CHECK: @llvm.x86.avx512.mask.scalef.sd
4116   return _mm_mask_scalef_sd(__W, __U, __A, __B);
4117 }
4118
4119 __m128d test_mm_mask_scalef_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
4120   // CHECK-LABEL: @test_mm_mask_scalef_round_sd
4121   // CHECK: @llvm.x86.avx512.mask.scalef.sd
4122     return _mm_mask_scalef_round_sd(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION);
4123 }
4124
4125 __m128d test_mm_maskz_scalef_sd(__mmask8 __U, __m128d __A, __m128d __B){
4126   // CHECK-LABEL: @test_mm_maskz_scalef_sd
4127   // CHECK: @llvm.x86.avx512.mask.scalef.sd
4128     return _mm_maskz_scalef_sd(__U, __A, __B);
4129 }
4130
4131 __m128d test_mm_maskz_scalef_round_sd(__mmask8 __U, __m128d __A, __m128d __B){
4132   // CHECK-LABEL: @test_mm_maskz_scalef_round_sd
4133   // CHECK: @llvm.x86.avx512.mask.scalef.sd
4134     return _mm_maskz_scalef_round_sd(__U, __A, __B, _MM_FROUND_CUR_DIRECTION);
4135 }
4136
4137 __m128 test_mm_scalef_round_ss(__m128 __A, __m128 __B) {
4138   // CHECK-LABEL: @test_mm_scalef_round_ss
4139   // CHECK: @llvm.x86.avx512.mask.scalef.ss
4140   return _mm_scalef_round_ss(__A, __B, _MM_FROUND_CUR_DIRECTION); 
4141 }
4142
4143 __m128 test_mm_scalef_ss(__m128 __A, __m128 __B) {
4144   // CHECK-LABEL: @test_mm_scalef_ss
4145   // CHECK: @llvm.x86.avx512.mask.scalef.ss
4146   return _mm_scalef_ss(__A, __B); 
4147 }
4148
4149 __m128 test_mm_mask_scalef_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
4150   // CHECK-LABEL: @test_mm_mask_scalef_ss
4151   // CHECK: @llvm.x86.avx512.mask.scalef.ss
4152     return _mm_mask_scalef_ss(__W, __U, __A, __B);
4153 }
4154
4155 __m128 test_mm_mask_scalef_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
4156   // CHECK-LABEL: @test_mm_mask_scalef_round_ss
4157   // CHECK: @llvm.x86.avx512.mask.scalef.ss
4158     return _mm_mask_scalef_round_ss(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION);
4159 }
4160
4161 __m128 test_mm_maskz_scalef_ss(__mmask8 __U, __m128 __A, __m128 __B){
4162   // CHECK-LABEL: @test_mm_maskz_scalef_ss
4163   // CHECK: @llvm.x86.avx512.mask.scalef.ss
4164     return _mm_maskz_scalef_ss(__U, __A, __B);
4165 }
4166
4167 __m128 test_mm_maskz_scalef_round_ss(__mmask8 __U, __m128 __A, __m128 __B){
4168   // CHECK-LABEL: @test_mm_maskz_scalef_round_ss
4169   // CHECK: @llvm.x86.avx512.mask.scalef.ss
4170     return _mm_maskz_scalef_round_ss(__U, __A, __B, _MM_FROUND_CUR_DIRECTION);
4171 }
4172
4173 __m512i test_mm512_srai_epi32(__m512i __A) {
4174   // CHECK-LABEL: @test_mm512_srai_epi32
4175   // CHECK: @llvm.x86.avx512.psrai.d.512
4176   return _mm512_srai_epi32(__A, 5); 
4177 }
4178
4179 __m512i test_mm512_mask_srai_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
4180   // CHECK-LABEL: @test_mm512_mask_srai_epi32
4181   // CHECK: @llvm.x86.avx512.psrai.d.512
4182   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4183   return _mm512_mask_srai_epi32(__W, __U, __A, 5); 
4184 }
4185
4186 __m512i test_mm512_maskz_srai_epi32(__mmask16 __U, __m512i __A) {
4187   // CHECK-LABEL: @test_mm512_maskz_srai_epi32
4188   // CHECK: @llvm.x86.avx512.psrai.d.512
4189   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4190   return _mm512_maskz_srai_epi32(__U, __A, 5); 
4191 }
4192
4193 __m512i test_mm512_srai_epi64(__m512i __A) {
4194   // CHECK-LABEL: @test_mm512_srai_epi64
4195   // CHECK: @llvm.x86.avx512.psrai.q.512
4196   return _mm512_srai_epi64(__A, 5); 
4197 }
4198
4199 __m512i test_mm512_mask_srai_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
4200   // CHECK-LABEL: @test_mm512_mask_srai_epi64
4201   // CHECK: @llvm.x86.avx512.psrai.q.512
4202   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4203   return _mm512_mask_srai_epi64(__W, __U, __A, 5); 
4204 }
4205
4206 __m512i test_mm512_maskz_srai_epi64(__mmask8 __U, __m512i __A) {
4207   // CHECK-LABEL: @test_mm512_maskz_srai_epi64
4208   // CHECK: @llvm.x86.avx512.psrai.q.512
4209   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4210   return _mm512_maskz_srai_epi64(__U, __A, 5); 
4211 }
4212
4213 __m512i test_mm512_sll_epi32(__m512i __A, __m128i __B) {
4214   // CHECK-LABEL: @test_mm512_sll_epi32
4215   // CHECK: @llvm.x86.avx512.psll.d.512
4216   return _mm512_sll_epi32(__A, __B); 
4217 }
4218
4219 __m512i test_mm512_mask_sll_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m128i __B) {
4220   // CHECK-LABEL: @test_mm512_mask_sll_epi32
4221   // CHECK: @llvm.x86.avx512.psll.d.512
4222   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4223   return _mm512_mask_sll_epi32(__W, __U, __A, __B); 
4224 }
4225
4226 __m512i test_mm512_maskz_sll_epi32(__mmask16 __U, __m512i __A, __m128i __B) {
4227   // CHECK-LABEL: @test_mm512_maskz_sll_epi32
4228   // CHECK: @llvm.x86.avx512.psll.d.512
4229   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4230   return _mm512_maskz_sll_epi32(__U, __A, __B); 
4231 }
4232
4233 __m512i test_mm512_sll_epi64(__m512i __A, __m128i __B) {
4234   // CHECK-LABEL: @test_mm512_sll_epi64
4235   // CHECK: @llvm.x86.avx512.psll.q.512
4236   return _mm512_sll_epi64(__A, __B); 
4237 }
4238
4239 __m512i test_mm512_mask_sll_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m128i __B) {
4240   // CHECK-LABEL: @test_mm512_mask_sll_epi64
4241   // CHECK: @llvm.x86.avx512.psll.q.512
4242   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4243   return _mm512_mask_sll_epi64(__W, __U, __A, __B); 
4244 }
4245
4246 __m512i test_mm512_maskz_sll_epi64(__mmask8 __U, __m512i __A, __m128i __B) {
4247   // CHECK-LABEL: @test_mm512_maskz_sll_epi64
4248   // CHECK: @llvm.x86.avx512.psll.q.512
4249   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4250   return _mm512_maskz_sll_epi64(__U, __A, __B); 
4251 }
4252
4253 __m512i test_mm512_sllv_epi32(__m512i __X, __m512i __Y) {
4254   // CHECK-LABEL: @test_mm512_sllv_epi32
4255   // CHECK: @llvm.x86.avx512.psllv.d.512
4256   return _mm512_sllv_epi32(__X, __Y); 
4257 }
4258
4259 __m512i test_mm512_mask_sllv_epi32(__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y) {
4260   // CHECK-LABEL: @test_mm512_mask_sllv_epi32
4261   // CHECK: @llvm.x86.avx512.psllv.d.512
4262   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4263   return _mm512_mask_sllv_epi32(__W, __U, __X, __Y); 
4264 }
4265
4266 __m512i test_mm512_maskz_sllv_epi32(__mmask16 __U, __m512i __X, __m512i __Y) {
4267   // CHECK-LABEL: @test_mm512_maskz_sllv_epi32
4268   // CHECK: @llvm.x86.avx512.psllv.d.512
4269   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4270   return _mm512_maskz_sllv_epi32(__U, __X, __Y); 
4271 }
4272
4273 __m512i test_mm512_sllv_epi64(__m512i __X, __m512i __Y) {
4274   // CHECK-LABEL: @test_mm512_sllv_epi64
4275   // CHECK: @llvm.x86.avx512.psllv.q.512
4276   return _mm512_sllv_epi64(__X, __Y); 
4277 }
4278
4279 __m512i test_mm512_mask_sllv_epi64(__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y) {
4280   // CHECK-LABEL: @test_mm512_mask_sllv_epi64
4281   // CHECK: @llvm.x86.avx512.psllv.q.512
4282   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4283   return _mm512_mask_sllv_epi64(__W, __U, __X, __Y); 
4284 }
4285
4286 __m512i test_mm512_maskz_sllv_epi64(__mmask8 __U, __m512i __X, __m512i __Y) {
4287   // CHECK-LABEL: @test_mm512_maskz_sllv_epi64
4288   // CHECK: @llvm.x86.avx512.psllv.q.512
4289   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4290   return _mm512_maskz_sllv_epi64(__U, __X, __Y); 
4291 }
4292
4293 __m512i test_mm512_sra_epi32(__m512i __A, __m128i __B) {
4294   // CHECK-LABEL: @test_mm512_sra_epi32
4295   // CHECK: @llvm.x86.avx512.psra.d.512
4296   return _mm512_sra_epi32(__A, __B); 
4297 }
4298
4299 __m512i test_mm512_mask_sra_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m128i __B) {
4300   // CHECK-LABEL: @test_mm512_mask_sra_epi32
4301   // CHECK: @llvm.x86.avx512.psra.d.512
4302   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4303   return _mm512_mask_sra_epi32(__W, __U, __A, __B); 
4304 }
4305
4306 __m512i test_mm512_maskz_sra_epi32(__mmask16 __U, __m512i __A, __m128i __B) {
4307   // CHECK-LABEL: @test_mm512_maskz_sra_epi32
4308   // CHECK: @llvm.x86.avx512.psra.d.512
4309   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4310   return _mm512_maskz_sra_epi32(__U, __A, __B); 
4311 }
4312
4313 __m512i test_mm512_sra_epi64(__m512i __A, __m128i __B) {
4314   // CHECK-LABEL: @test_mm512_sra_epi64
4315   // CHECK: @llvm.x86.avx512.psra.q.512
4316   return _mm512_sra_epi64(__A, __B); 
4317 }
4318
4319 __m512i test_mm512_mask_sra_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m128i __B) {
4320   // CHECK-LABEL: @test_mm512_mask_sra_epi64
4321   // CHECK: @llvm.x86.avx512.psra.q.512
4322   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4323   return _mm512_mask_sra_epi64(__W, __U, __A, __B); 
4324 }
4325
4326 __m512i test_mm512_maskz_sra_epi64(__mmask8 __U, __m512i __A, __m128i __B) {
4327   // CHECK-LABEL: @test_mm512_maskz_sra_epi64
4328   // CHECK: @llvm.x86.avx512.psra.q.512
4329   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4330   return _mm512_maskz_sra_epi64(__U, __A, __B); 
4331 }
4332
4333 __m512i test_mm512_srav_epi32(__m512i __X, __m512i __Y) {
4334   // CHECK-LABEL: @test_mm512_srav_epi32
4335   // CHECK: @llvm.x86.avx512.psrav.d.512
4336   return _mm512_srav_epi32(__X, __Y); 
4337 }
4338
4339 __m512i test_mm512_mask_srav_epi32(__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y) {
4340   // CHECK-LABEL: @test_mm512_mask_srav_epi32
4341   // CHECK: @llvm.x86.avx512.psrav.d.512
4342   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4343   return _mm512_mask_srav_epi32(__W, __U, __X, __Y); 
4344 }
4345
4346 __m512i test_mm512_maskz_srav_epi32(__mmask16 __U, __m512i __X, __m512i __Y) {
4347   // CHECK-LABEL: @test_mm512_maskz_srav_epi32
4348   // CHECK: @llvm.x86.avx512.psrav.d.512
4349   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4350   return _mm512_maskz_srav_epi32(__U, __X, __Y); 
4351 }
4352
4353 __m512i test_mm512_srav_epi64(__m512i __X, __m512i __Y) {
4354   // CHECK-LABEL: @test_mm512_srav_epi64
4355   // CHECK: @llvm.x86.avx512.psrav.q.512
4356   return _mm512_srav_epi64(__X, __Y); 
4357 }
4358
4359 __m512i test_mm512_mask_srav_epi64(__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y) {
4360   // CHECK-LABEL: @test_mm512_mask_srav_epi64
4361   // CHECK: @llvm.x86.avx512.psrav.q.512
4362   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4363   return _mm512_mask_srav_epi64(__W, __U, __X, __Y); 
4364 }
4365
4366 __m512i test_mm512_maskz_srav_epi64(__mmask8 __U, __m512i __X, __m512i __Y) {
4367   // CHECK-LABEL: @test_mm512_maskz_srav_epi64
4368   // CHECK: @llvm.x86.avx512.psrav.q.512
4369   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4370   return _mm512_maskz_srav_epi64(__U, __X, __Y); 
4371 }
4372
4373 __m512i test_mm512_srl_epi32(__m512i __A, __m128i __B) {
4374   // CHECK-LABEL: @test_mm512_srl_epi32
4375   // CHECK: @llvm.x86.avx512.psrl.d.512
4376   return _mm512_srl_epi32(__A, __B); 
4377 }
4378
4379 __m512i test_mm512_mask_srl_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m128i __B) {
4380   // CHECK-LABEL: @test_mm512_mask_srl_epi32
4381   // CHECK: @llvm.x86.avx512.psrl.d.512
4382   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4383   return _mm512_mask_srl_epi32(__W, __U, __A, __B); 
4384 }
4385
4386 __m512i test_mm512_maskz_srl_epi32(__mmask16 __U, __m512i __A, __m128i __B) {
4387   // CHECK-LABEL: @test_mm512_maskz_srl_epi32
4388   // CHECK: @llvm.x86.avx512.psrl.d.512
4389   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4390   return _mm512_maskz_srl_epi32(__U, __A, __B); 
4391 }
4392
4393 __m512i test_mm512_srl_epi64(__m512i __A, __m128i __B) {
4394   // CHECK-LABEL: @test_mm512_srl_epi64
4395   // CHECK: @llvm.x86.avx512.psrl.q.512
4396   return _mm512_srl_epi64(__A, __B); 
4397 }
4398
4399 __m512i test_mm512_mask_srl_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m128i __B) {
4400   // CHECK-LABEL: @test_mm512_mask_srl_epi64
4401   // CHECK: @llvm.x86.avx512.psrl.q.512
4402   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4403   return _mm512_mask_srl_epi64(__W, __U, __A, __B); 
4404 }
4405
4406 __m512i test_mm512_maskz_srl_epi64(__mmask8 __U, __m512i __A, __m128i __B) {
4407   // CHECK-LABEL: @test_mm512_maskz_srl_epi64
4408   // CHECK: @llvm.x86.avx512.psrl.q.512
4409   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4410   return _mm512_maskz_srl_epi64(__U, __A, __B); 
4411 }
4412
4413 __m512i test_mm512_srlv_epi32(__m512i __X, __m512i __Y) {
4414   // CHECK-LABEL: @test_mm512_srlv_epi32
4415   // CHECK: @llvm.x86.avx512.psrlv.d.512
4416   return _mm512_srlv_epi32(__X, __Y); 
4417 }
4418
4419 __m512i test_mm512_mask_srlv_epi32(__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y) {
4420   // CHECK-LABEL: @test_mm512_mask_srlv_epi32
4421   // CHECK: @llvm.x86.avx512.psrlv.d.512
4422   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4423   return _mm512_mask_srlv_epi32(__W, __U, __X, __Y); 
4424 }
4425
4426 __m512i test_mm512_maskz_srlv_epi32(__mmask16 __U, __m512i __X, __m512i __Y) {
4427   // CHECK-LABEL: @test_mm512_maskz_srlv_epi32
4428   // CHECK: @llvm.x86.avx512.psrlv.d.512
4429   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4430   return _mm512_maskz_srlv_epi32(__U, __X, __Y); 
4431 }
4432
4433 __m512i test_mm512_srlv_epi64(__m512i __X, __m512i __Y) {
4434   // CHECK-LABEL: @test_mm512_srlv_epi64
4435   // CHECK: @llvm.x86.avx512.psrlv.q.512
4436   return _mm512_srlv_epi64(__X, __Y); 
4437 }
4438
4439 __m512i test_mm512_mask_srlv_epi64(__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y) {
4440   // CHECK-LABEL: @test_mm512_mask_srlv_epi64
4441   // CHECK: @llvm.x86.avx512.psrlv.q.512
4442   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4443   return _mm512_mask_srlv_epi64(__W, __U, __X, __Y); 
4444 }
4445
4446 __m512i test_mm512_maskz_srlv_epi64(__mmask8 __U, __m512i __X, __m512i __Y) {
4447   // CHECK-LABEL: @test_mm512_maskz_srlv_epi64
4448   // CHECK: @llvm.x86.avx512.psrlv.q.512
4449   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4450   return _mm512_maskz_srlv_epi64(__U, __X, __Y); 
4451 }
4452
4453 __m512i test_mm512_ternarylogic_epi32(__m512i __A, __m512i __B, __m512i __C) {
4454   // CHECK-LABEL: @test_mm512_ternarylogic_epi32
4455   // CHECK: @llvm.x86.avx512.mask.pternlog.d.512
4456   return _mm512_ternarylogic_epi32(__A, __B, __C, 4); 
4457 }
4458
4459 __m512i test_mm512_mask_ternarylogic_epi32(__m512i __A, __mmask16 __U, __m512i __B, __m512i __C) {
4460   // CHECK-LABEL: @test_mm512_mask_ternarylogic_epi32
4461   // CHECK: @llvm.x86.avx512.mask.pternlog.d.512
4462   return _mm512_mask_ternarylogic_epi32(__A, __U, __B, __C, 4); 
4463 }
4464
4465 __m512i test_mm512_maskz_ternarylogic_epi32(__mmask16 __U, __m512i __A, __m512i __B, __m512i __C) {
4466   // CHECK-LABEL: @test_mm512_maskz_ternarylogic_epi32
4467   // CHECK: @llvm.x86.avx512.maskz.pternlog.d.512
4468   return _mm512_maskz_ternarylogic_epi32(__U, __A, __B, __C, 4); 
4469 }
4470
4471 __m512i test_mm512_ternarylogic_epi64(__m512i __A, __m512i __B, __m512i __C) {
4472   // CHECK-LABEL: @test_mm512_ternarylogic_epi64
4473   // CHECK: @llvm.x86.avx512.mask.pternlog.q.512
4474   return _mm512_ternarylogic_epi64(__A, __B, __C, 4); 
4475 }
4476
4477 __m512i test_mm512_mask_ternarylogic_epi64(__m512i __A, __mmask8 __U, __m512i __B, __m512i __C) {
4478   // CHECK-LABEL: @test_mm512_mask_ternarylogic_epi64
4479   // CHECK: @llvm.x86.avx512.mask.pternlog.q.512
4480   return _mm512_mask_ternarylogic_epi64(__A, __U, __B, __C, 4); 
4481 }
4482
4483 __m512i test_mm512_maskz_ternarylogic_epi64(__mmask8 __U, __m512i __A, __m512i __B, __m512i __C) {
4484   // CHECK-LABEL: @test_mm512_maskz_ternarylogic_epi64
4485   // CHECK: @llvm.x86.avx512.maskz.pternlog.q.512
4486   return _mm512_maskz_ternarylogic_epi64(__U, __A, __B, __C, 4); 
4487 }
4488
4489 __m512 test_mm512_shuffle_f32x4(__m512 __A, __m512 __B) {
4490   // CHECK-LABEL: @test_mm512_shuffle_f32x4
4491   // CHECK: @llvm.x86.avx512.mask.shuf.f32x4
4492   return _mm512_shuffle_f32x4(__A, __B, 4); 
4493 }
4494
4495 __m512 test_mm512_mask_shuffle_f32x4(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
4496   // CHECK-LABEL: @test_mm512_mask_shuffle_f32x4
4497   // CHECK: @llvm.x86.avx512.mask.shuf.f32x4
4498   return _mm512_mask_shuffle_f32x4(__W, __U, __A, __B, 4); 
4499 }
4500
4501 __m512 test_mm512_maskz_shuffle_f32x4(__mmask16 __U, __m512 __A, __m512 __B) {
4502   // CHECK-LABEL: @test_mm512_maskz_shuffle_f32x4
4503   // CHECK: @llvm.x86.avx512.mask.shuf.f32x4
4504   return _mm512_maskz_shuffle_f32x4(__U, __A, __B, 4); 
4505 }
4506
4507 __m512d test_mm512_shuffle_f64x2(__m512d __A, __m512d __B) {
4508   // CHECK-LABEL: @test_mm512_shuffle_f64x2
4509   // CHECK: @llvm.x86.avx512.mask.shuf.f64x2
4510   return _mm512_shuffle_f64x2(__A, __B, 4); 
4511 }
4512
4513 __m512d test_mm512_mask_shuffle_f64x2(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
4514   // CHECK-LABEL: @test_mm512_mask_shuffle_f64x2
4515   // CHECK: @llvm.x86.avx512.mask.shuf.f64x2
4516   return _mm512_mask_shuffle_f64x2(__W, __U, __A, __B, 4); 
4517 }
4518
4519 __m512d test_mm512_maskz_shuffle_f64x2(__mmask8 __U, __m512d __A, __m512d __B) {
4520   // CHECK-LABEL: @test_mm512_maskz_shuffle_f64x2
4521   // CHECK: @llvm.x86.avx512.mask.shuf.f64x2
4522   return _mm512_maskz_shuffle_f64x2(__U, __A, __B, 4); 
4523 }
4524
4525 __m512i test_mm512_shuffle_i32x4(__m512i __A, __m512i __B) {
4526   // CHECK-LABEL: @test_mm512_shuffle_i32x4
4527   // CHECK: @llvm.x86.avx512.mask.shuf.i32x4
4528   return _mm512_shuffle_i32x4(__A, __B, 4); 
4529 }
4530
4531 __m512i test_mm512_mask_shuffle_i32x4(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {
4532   // CHECK-LABEL: @test_mm512_mask_shuffle_i32x4
4533   // CHECK: @llvm.x86.avx512.mask.shuf.i32x4
4534   return _mm512_mask_shuffle_i32x4(__W, __U, __A, __B, 4); 
4535 }
4536
4537 __m512i test_mm512_maskz_shuffle_i32x4(__mmask16 __U, __m512i __A, __m512i __B) {
4538   // CHECK-LABEL: @test_mm512_maskz_shuffle_i32x4
4539   // CHECK: @llvm.x86.avx512.mask.shuf.i32x4
4540   return _mm512_maskz_shuffle_i32x4(__U, __A, __B, 4); 
4541 }
4542
4543 __m512i test_mm512_shuffle_i64x2(__m512i __A, __m512i __B) {
4544   // CHECK-LABEL: @test_mm512_shuffle_i64x2
4545   // CHECK: @llvm.x86.avx512.mask.shuf.i64x2
4546   return _mm512_shuffle_i64x2(__A, __B, 4); 
4547 }
4548
4549 __m512i test_mm512_mask_shuffle_i64x2(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
4550   // CHECK-LABEL: @test_mm512_mask_shuffle_i64x2
4551   // CHECK: @llvm.x86.avx512.mask.shuf.i64x2
4552   return _mm512_mask_shuffle_i64x2(__W, __U, __A, __B, 4); 
4553 }
4554
4555 __m512i test_mm512_maskz_shuffle_i64x2(__mmask8 __U, __m512i __A, __m512i __B) {
4556   // CHECK-LABEL: @test_mm512_maskz_shuffle_i64x2
4557   // CHECK: @llvm.x86.avx512.mask.shuf.i64x2
4558   return _mm512_maskz_shuffle_i64x2(__U, __A, __B, 4); 
4559 }
4560
4561 __m512d test_mm512_shuffle_pd(__m512d __M, __m512d __V) {
4562   // CHECK-LABEL: @test_mm512_shuffle_pd
4563   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 3, i32 10, i32 4, i32 12, i32 6, i32 14>
4564   return _mm512_shuffle_pd(__M, __V, 4); 
4565 }
4566
4567 __m512d test_mm512_mask_shuffle_pd(__m512d __W, __mmask8 __U, __m512d __M, __m512d __V) {
4568   // CHECK-LABEL: @test_mm512_mask_shuffle_pd
4569   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 3, i32 10, i32 4, i32 12, i32 6, i32 14>
4570   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4571   return _mm512_mask_shuffle_pd(__W, __U, __M, __V, 4); 
4572 }
4573
4574 __m512d test_mm512_maskz_shuffle_pd(__mmask8 __U, __m512d __M, __m512d __V) {
4575   // CHECK-LABEL: @test_mm512_maskz_shuffle_pd
4576   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 3, i32 10, i32 4, i32 12, i32 6, i32 14>
4577   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4578   return _mm512_maskz_shuffle_pd(__U, __M, __V, 4); 
4579 }
4580
4581 __m512 test_mm512_shuffle_ps(__m512 __M, __m512 __V) {
4582   // CHECK-LABEL: @test_mm512_shuffle_ps
4583   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 16, i32 16, i32 4, i32 5, i32 20, i32 20, i32 8, i32 9, i32 24, i32 24, i32 12, i32 13, i32 28, i32 28>
4584   return _mm512_shuffle_ps(__M, __V, 4); 
4585 }
4586
4587 __m512 test_mm512_mask_shuffle_ps(__m512 __W, __mmask16 __U, __m512 __M, __m512 __V) {
4588   // CHECK-LABEL: @test_mm512_mask_shuffle_ps
4589   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 16, i32 16, i32 4, i32 5, i32 20, i32 20, i32 8, i32 9, i32 24, i32 24, i32 12, i32 13, i32 28, i32 28>
4590   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
4591   return _mm512_mask_shuffle_ps(__W, __U, __M, __V, 4); 
4592 }
4593
4594 __m512 test_mm512_maskz_shuffle_ps(__mmask16 __U, __m512 __M, __m512 __V) {
4595   // CHECK-LABEL: @test_mm512_maskz_shuffle_ps
4596   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 16, i32 16, i32 4, i32 5, i32 20, i32 20, i32 8, i32 9, i32 24, i32 24, i32 12, i32 13, i32 28, i32 28>
4597   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
4598   return _mm512_maskz_shuffle_ps(__U, __M, __V, 4); 
4599 }
4600
4601 __m128d test_mm_sqrt_round_sd(__m128d __A, __m128d __B) {
4602   // CHECK-LABEL: @test_mm_sqrt_round_sd
4603   // CHECK: @llvm.x86.avx512.mask.sqrt.sd
4604   return _mm_sqrt_round_sd(__A, __B, 4); 
4605 }
4606
4607 __m128d test_mm_mask_sqrt_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
4608   // CHECK: @llvm.x86.avx512.mask.sqrt.sd
4609     return _mm_mask_sqrt_sd(__W,__U,__A,__B);
4610 }
4611
4612 __m128d test_mm_mask_sqrt_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
4613   // CHECK: @llvm.x86.avx512.mask.sqrt.sd
4614     return _mm_mask_sqrt_round_sd(__W,__U,__A,__B,_MM_FROUND_CUR_DIRECTION);
4615 }
4616
4617 __m128d test_mm_maskz_sqrt_sd(__mmask8 __U, __m128d __A, __m128d __B){
4618   // CHECK: @llvm.x86.avx512.mask.sqrt.sd
4619     return _mm_maskz_sqrt_sd(__U,__A,__B);
4620 }
4621
4622 __m128d test_mm_maskz_sqrt_round_sd(__mmask8 __U, __m128d __A, __m128d __B){
4623   // CHECK: @llvm.x86.avx512.mask.sqrt.sd
4624     return _mm_maskz_sqrt_round_sd(__U,__A,__B,_MM_FROUND_CUR_DIRECTION);
4625 }
4626
4627 __m128 test_mm_sqrt_round_ss(__m128 __A, __m128 __B) {
4628   // CHECK-LABEL: @test_mm_sqrt_round_ss
4629   // CHECK: @llvm.x86.avx512.mask.sqrt.ss
4630   return _mm_sqrt_round_ss(__A, __B, 4); 
4631 }
4632
4633 __m128 test_mm_mask_sqrt_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
4634   // CHECK: @llvm.x86.avx512.mask.sqrt.ss
4635     return _mm_mask_sqrt_ss(__W,__U,__A,__B);
4636 }
4637
4638 __m128 test_mm_mask_sqrt_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
4639   // CHECK: @llvm.x86.avx512.mask.sqrt.ss
4640     return _mm_mask_sqrt_round_ss(__W,__U,__A,__B,_MM_FROUND_CUR_DIRECTION);
4641 }
4642
4643 __m128 test_mm_maskz_sqrt_ss(__mmask8 __U, __m128 __A, __m128 __B){
4644   // CHECK: @llvm.x86.avx512.mask.sqrt.ss
4645     return _mm_maskz_sqrt_ss(__U,__A,__B);
4646 }
4647
4648 __m128 test_mm_maskz_sqrt_round_ss(__mmask8 __U, __m128 __A, __m128 __B){
4649   // CHECK: @llvm.x86.avx512.mask.sqrt.ss
4650     return _mm_maskz_sqrt_round_ss(__U,__A,__B,_MM_FROUND_CUR_DIRECTION);
4651 }
4652
4653 __m512 test_mm512_broadcast_f32x4(float const* __A) {
4654   // CHECK-LABEL: @test_mm512_broadcast_f32x4
4655   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
4656   return _mm512_broadcast_f32x4(_mm_loadu_ps(__A)); 
4657 }
4658
4659 __m512 test_mm512_mask_broadcast_f32x4(__m512 __O, __mmask16 __M, float const* __A) {
4660   // CHECK-LABEL: @test_mm512_mask_broadcast_f32x4
4661   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
4662   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
4663   return _mm512_mask_broadcast_f32x4(__O, __M, _mm_loadu_ps(__A)); 
4664 }
4665
4666 __m512 test_mm512_maskz_broadcast_f32x4(__mmask16 __M, float const* __A) {
4667   // CHECK-LABEL: @test_mm512_maskz_broadcast_f32x4
4668   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
4669   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
4670   return _mm512_maskz_broadcast_f32x4(__M, _mm_loadu_ps(__A)); 
4671 }
4672
4673 __m512d test_mm512_broadcast_f64x4(float const* __A) {
4674   // CHECK-LABEL: @test_mm512_broadcast_f64x4
4675   // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
4676   return _mm512_broadcast_f64x4(_mm256_loadu_ps(__A)); 
4677 }
4678
4679 __m512d test_mm512_mask_broadcast_f64x4(__m512d __O, __mmask8 __M, float const* __A) {
4680   // CHECK-LABEL: @test_mm512_mask_broadcast_f64x4
4681   // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
4682   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4683   return _mm512_mask_broadcast_f64x4(__O, __M, _mm256_loadu_ps(__A)); 
4684 }
4685
4686 __m512d test_mm512_maskz_broadcast_f64x4(__mmask8 __M, float const* __A) {
4687   // CHECK-LABEL: @test_mm512_maskz_broadcast_f64x4
4688   // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
4689   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4690   return _mm512_maskz_broadcast_f64x4(__M, _mm256_loadu_ps(__A)); 
4691 }
4692
4693 __m512i test_mm512_broadcast_i32x4(__m128i const* __A) {
4694   // CHECK-LABEL: @test_mm512_broadcast_i32x4
4695   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
4696   return _mm512_broadcast_i32x4(_mm_loadu_si128(__A)); 
4697 }
4698
4699 __m512i test_mm512_mask_broadcast_i32x4(__m512i __O, __mmask16 __M, __m128i const* __A) {
4700   // CHECK-LABEL: @test_mm512_mask_broadcast_i32x4
4701   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
4702   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4703   return _mm512_mask_broadcast_i32x4(__O, __M, _mm_loadu_si128(__A)); 
4704 }
4705
4706 __m512i test_mm512_maskz_broadcast_i32x4(__mmask16 __M, __m128i const* __A) {
4707   // CHECK-LABEL: @test_mm512_maskz_broadcast_i32x4
4708   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
4709   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4710   return _mm512_maskz_broadcast_i32x4(__M, _mm_loadu_si128(__A)); 
4711 }
4712
4713 __m512i test_mm512_broadcast_i64x4(__m256i const* __A) {
4714   // CHECK-LABEL: @test_mm512_broadcast_i64x4
4715   // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
4716   return _mm512_broadcast_i64x4(_mm256_loadu_si256(__A)); 
4717 }
4718
4719 __m512i test_mm512_mask_broadcast_i64x4(__m512i __O, __mmask8 __M, __m256i const* __A) {
4720   // CHECK-LABEL: @test_mm512_mask_broadcast_i64x4
4721   // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
4722   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4723   return _mm512_mask_broadcast_i64x4(__O, __M, _mm256_loadu_si256(__A)); 
4724 }
4725
4726 __m512i test_mm512_maskz_broadcast_i64x4(__mmask8 __M, __m256i const* __A) {
4727   // CHECK-LABEL: @test_mm512_maskz_broadcast_i64x4
4728   // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
4729   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4730   return _mm512_maskz_broadcast_i64x4(__M, _mm256_loadu_si256(__A)); 
4731 }
4732
4733 __m512d test_mm512_broadcastsd_pd(__m128d __A) {
4734   // CHECK-LABEL: @test_mm512_broadcastsd_pd
4735   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> zeroinitializer, <8 x i32> zeroinitializer
4736   return _mm512_broadcastsd_pd(__A);
4737 }
4738
4739 __m512d test_mm512_mask_broadcastsd_pd(__m512d __O, __mmask8 __M, __m128d __A) {
4740   // CHECK-LABEL: @test_mm512_mask_broadcastsd_pd
4741   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> zeroinitializer, <8 x i32> zeroinitializer
4742   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4743   return _mm512_mask_broadcastsd_pd(__O, __M, __A);
4744 }
4745
4746 __m512d test_mm512_maskz_broadcastsd_pd(__mmask8 __M, __m128d __A) {
4747   // CHECK-LABEL: @test_mm512_maskz_broadcastsd_pd
4748   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> zeroinitializer, <8 x i32> zeroinitializer
4749   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4750   return _mm512_maskz_broadcastsd_pd(__M, __A);
4751 }
4752
4753 __m512 test_mm512_broadcastss_ps(__m128 __A) {
4754   // CHECK-LABEL: @test_mm512_broadcastss_ps
4755   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> zeroinitializer, <16 x i32> zeroinitializer
4756   return _mm512_broadcastss_ps(__A);
4757 }
4758
4759 __m512 test_mm512_mask_broadcastss_ps(__m512 __O, __mmask16 __M, __m128 __A) {
4760   // CHECK-LABEL: @test_mm512_mask_broadcastss_ps
4761   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> zeroinitializer, <16 x i32> zeroinitializer
4762   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
4763   return _mm512_mask_broadcastss_ps(__O, __M, __A);
4764 }
4765
4766 __m512 test_mm512_maskz_broadcastss_ps(__mmask16 __M, __m128 __A) {
4767   // CHECK-LABEL: @test_mm512_maskz_broadcastss_ps
4768   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> zeroinitializer, <16 x i32> zeroinitializer
4769   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
4770   return _mm512_maskz_broadcastss_ps(__M, __A);
4771 }
4772
4773 __m512i test_mm512_broadcastd_epi32(__m128i __A) {
4774   // CHECK-LABEL: @test_mm512_broadcastd_epi32
4775   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> zeroinitializer, <16 x i32> zeroinitializer
4776   return _mm512_broadcastd_epi32(__A);
4777 }
4778
4779 __m512i test_mm512_mask_broadcastd_epi32(__m512i __O, __mmask16 __M, __m128i __A) {
4780   // CHECK-LABEL: @test_mm512_mask_broadcastd_epi32
4781   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> zeroinitializer, <16 x i32> zeroinitializer
4782   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4783   return _mm512_mask_broadcastd_epi32(__O, __M, __A);
4784 }
4785
4786 __m512i test_mm512_maskz_broadcastd_epi32(__mmask16 __M, __m128i __A) {
4787   // CHECK-LABEL: @test_mm512_maskz_broadcastd_epi32
4788   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> zeroinitializer, <16 x i32> zeroinitializer
4789   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4790   return _mm512_maskz_broadcastd_epi32(__M, __A);
4791 }
4792
4793 __m512i test_mm512_broadcastq_epi64(__m128i __A) {
4794   // CHECK-LABEL: @test_mm512_broadcastq_epi64
4795   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> zeroinitializer, <8 x i32> zeroinitializer
4796   return _mm512_broadcastq_epi64(__A);
4797 }
4798
4799 __m512i test_mm512_mask_broadcastq_epi64(__m512i __O, __mmask8 __M, __m128i __A) {
4800   // CHECK-LABEL: @test_mm512_mask_broadcastq_epi64
4801   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> zeroinitializer, <8 x i32> zeroinitializer
4802   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4803   return _mm512_mask_broadcastq_epi64(__O, __M, __A);
4804 }
4805
4806 __m512i test_mm512_maskz_broadcastq_epi64(__mmask8 __M, __m128i __A) {
4807   // CHECK-LABEL: @test_mm512_maskz_broadcastq_epi64
4808   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> zeroinitializer, <8 x i32> zeroinitializer
4809   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4810   return _mm512_maskz_broadcastq_epi64(__M, __A);
4811 }
4812
4813 __m128i test_mm512_cvtsepi32_epi8(__m512i __A) {
4814   // CHECK-LABEL: @test_mm512_cvtsepi32_epi8
4815   // CHECK: @llvm.x86.avx512.mask.pmovs.db.512
4816   return _mm512_cvtsepi32_epi8(__A); 
4817 }
4818
4819 __m128i test_mm512_mask_cvtsepi32_epi8(__m128i __O, __mmask16 __M, __m512i __A) {
4820   // CHECK-LABEL: @test_mm512_mask_cvtsepi32_epi8
4821   // CHECK: @llvm.x86.avx512.mask.pmovs.db.512
4822   return _mm512_mask_cvtsepi32_epi8(__O, __M, __A); 
4823 }
4824
4825 __m128i test_mm512_maskz_cvtsepi32_epi8(__mmask16 __M, __m512i __A) {
4826   // CHECK-LABEL: @test_mm512_maskz_cvtsepi32_epi8
4827   // CHECK: @llvm.x86.avx512.mask.pmovs.db.512
4828   return _mm512_maskz_cvtsepi32_epi8(__M, __A); 
4829 }
4830
4831 void test_mm512_mask_cvtsepi32_storeu_epi8(void * __P, __mmask16 __M, __m512i __A) {
4832   // CHECK-LABEL: @test_mm512_mask_cvtsepi32_storeu_epi8
4833   // CHECK: @llvm.x86.avx512.mask.pmovs.db.mem.512
4834   return _mm512_mask_cvtsepi32_storeu_epi8(__P, __M, __A); 
4835 }
4836
4837 __m256i test_mm512_cvtsepi32_epi16(__m512i __A) {
4838   // CHECK-LABEL: @test_mm512_cvtsepi32_epi16
4839   // CHECK: @llvm.x86.avx512.mask.pmovs.dw.512
4840   return _mm512_cvtsepi32_epi16(__A); 
4841 }
4842
4843 __m256i test_mm512_mask_cvtsepi32_epi16(__m256i __O, __mmask16 __M, __m512i __A) {
4844   // CHECK-LABEL: @test_mm512_mask_cvtsepi32_epi16
4845   // CHECK: @llvm.x86.avx512.mask.pmovs.dw.512
4846   return _mm512_mask_cvtsepi32_epi16(__O, __M, __A); 
4847 }
4848
4849 __m256i test_mm512_maskz_cvtsepi32_epi16(__mmask16 __M, __m512i __A) {
4850   // CHECK-LABEL: @test_mm512_maskz_cvtsepi32_epi16
4851   // CHECK: @llvm.x86.avx512.mask.pmovs.dw.512
4852   return _mm512_maskz_cvtsepi32_epi16(__M, __A); 
4853 }
4854
4855 void test_mm512_mask_cvtsepi32_storeu_epi16(void *__P, __mmask16 __M, __m512i __A) {
4856   // CHECK-LABEL: @test_mm512_mask_cvtsepi32_storeu_epi16
4857   // CHECK: @llvm.x86.avx512.mask.pmovs.dw.mem.512
4858   return _mm512_mask_cvtsepi32_storeu_epi16(__P, __M, __A); 
4859 }
4860
4861 __m128i test_mm512_cvtsepi64_epi8(__m512i __A) {
4862   // CHECK-LABEL: @test_mm512_cvtsepi64_epi8
4863   // CHECK: @llvm.x86.avx512.mask.pmovs.qb.512
4864   return _mm512_cvtsepi64_epi8(__A); 
4865 }
4866
4867 __m128i test_mm512_mask_cvtsepi64_epi8(__m128i __O, __mmask8 __M, __m512i __A) {
4868   // CHECK-LABEL: @test_mm512_mask_cvtsepi64_epi8
4869   // CHECK: @llvm.x86.avx512.mask.pmovs.qb.512
4870   return _mm512_mask_cvtsepi64_epi8(__O, __M, __A); 
4871 }
4872
4873 __m128i test_mm512_maskz_cvtsepi64_epi8(__mmask8 __M, __m512i __A) {
4874   // CHECK-LABEL: @test_mm512_maskz_cvtsepi64_epi8
4875   // CHECK: @llvm.x86.avx512.mask.pmovs.qb.512
4876   return _mm512_maskz_cvtsepi64_epi8(__M, __A); 
4877 }
4878
4879 void test_mm512_mask_cvtsepi64_storeu_epi8(void * __P, __mmask8 __M, __m512i __A) {
4880   // CHECK-LABEL: @test_mm512_mask_cvtsepi64_storeu_epi8
4881   // CHECK: @llvm.x86.avx512.mask.pmovs.qb.mem.512
4882   return _mm512_mask_cvtsepi64_storeu_epi8(__P, __M, __A); 
4883 }
4884
4885 __m256i test_mm512_cvtsepi64_epi32(__m512i __A) {
4886   // CHECK-LABEL: @test_mm512_cvtsepi64_epi32
4887   // CHECK: @llvm.x86.avx512.mask.pmovs.qd.512
4888   return _mm512_cvtsepi64_epi32(__A); 
4889 }
4890
4891 __m256i test_mm512_mask_cvtsepi64_epi32(__m256i __O, __mmask8 __M, __m512i __A) {
4892   // CHECK-LABEL: @test_mm512_mask_cvtsepi64_epi32
4893   // CHECK: @llvm.x86.avx512.mask.pmovs.qd.512
4894   return _mm512_mask_cvtsepi64_epi32(__O, __M, __A); 
4895 }
4896
4897 __m256i test_mm512_maskz_cvtsepi64_epi32(__mmask8 __M, __m512i __A) {
4898   // CHECK-LABEL: @test_mm512_maskz_cvtsepi64_epi32
4899   // CHECK: @llvm.x86.avx512.mask.pmovs.qd.512
4900   return _mm512_maskz_cvtsepi64_epi32(__M, __A); 
4901 }
4902
4903 void test_mm512_mask_cvtsepi64_storeu_epi32(void *__P, __mmask8 __M, __m512i __A) {
4904   // CHECK-LABEL: @test_mm512_mask_cvtsepi64_storeu_epi32
4905   // CHECK: @llvm.x86.avx512.mask.pmovs.qd.mem.512
4906   return _mm512_mask_cvtsepi64_storeu_epi32(__P, __M, __A); 
4907 }
4908
4909 __m128i test_mm512_cvtsepi64_epi16(__m512i __A) {
4910   // CHECK-LABEL: @test_mm512_cvtsepi64_epi16
4911   // CHECK: @llvm.x86.avx512.mask.pmovs.qw.512
4912   return _mm512_cvtsepi64_epi16(__A); 
4913 }
4914
4915 __m128i test_mm512_mask_cvtsepi64_epi16(__m128i __O, __mmask8 __M, __m512i __A) {
4916   // CHECK-LABEL: @test_mm512_mask_cvtsepi64_epi16
4917   // CHECK: @llvm.x86.avx512.mask.pmovs.qw.512
4918   return _mm512_mask_cvtsepi64_epi16(__O, __M, __A); 
4919 }
4920
4921 __m128i test_mm512_maskz_cvtsepi64_epi16(__mmask8 __M, __m512i __A) {
4922   // CHECK-LABEL: @test_mm512_maskz_cvtsepi64_epi16
4923   // CHECK: @llvm.x86.avx512.mask.pmovs.qw.512
4924   return _mm512_maskz_cvtsepi64_epi16(__M, __A); 
4925 }
4926
4927 void test_mm512_mask_cvtsepi64_storeu_epi16(void * __P, __mmask8 __M, __m512i __A) {
4928   // CHECK-LABEL: @test_mm512_mask_cvtsepi64_storeu_epi16
4929   // CHECK: @llvm.x86.avx512.mask.pmovs.qw.mem.512
4930   return _mm512_mask_cvtsepi64_storeu_epi16(__P, __M, __A); 
4931 }
4932
4933 __m128i test_mm512_cvtusepi32_epi8(__m512i __A) {
4934   // CHECK-LABEL: @test_mm512_cvtusepi32_epi8
4935   // CHECK: @llvm.x86.avx512.mask.pmovus.db.512
4936   return _mm512_cvtusepi32_epi8(__A); 
4937 }
4938
4939 __m128i test_mm512_mask_cvtusepi32_epi8(__m128i __O, __mmask16 __M, __m512i __A) {
4940   // CHECK-LABEL: @test_mm512_mask_cvtusepi32_epi8
4941   // CHECK: @llvm.x86.avx512.mask.pmovus.db.512
4942   return _mm512_mask_cvtusepi32_epi8(__O, __M, __A); 
4943 }
4944
4945 __m128i test_mm512_maskz_cvtusepi32_epi8(__mmask16 __M, __m512i __A) {
4946   // CHECK-LABEL: @test_mm512_maskz_cvtusepi32_epi8
4947   // CHECK: @llvm.x86.avx512.mask.pmovus.db.512
4948   return _mm512_maskz_cvtusepi32_epi8(__M, __A); 
4949 }
4950
4951 void test_mm512_mask_cvtusepi32_storeu_epi8(void * __P, __mmask16 __M, __m512i __A) {
4952   // CHECK-LABEL: @test_mm512_mask_cvtusepi32_storeu_epi8
4953   // CHECK: @llvm.x86.avx512.mask.pmovus.db.mem.512
4954   return _mm512_mask_cvtusepi32_storeu_epi8(__P, __M, __A); 
4955 }
4956
4957 __m256i test_mm512_cvtusepi32_epi16(__m512i __A) {
4958   // CHECK-LABEL: @test_mm512_cvtusepi32_epi16
4959   // CHECK: @llvm.x86.avx512.mask.pmovus.dw.512
4960   return _mm512_cvtusepi32_epi16(__A); 
4961 }
4962
4963 __m256i test_mm512_mask_cvtusepi32_epi16(__m256i __O, __mmask16 __M, __m512i __A) {
4964   // CHECK-LABEL: @test_mm512_mask_cvtusepi32_epi16
4965   // CHECK: @llvm.x86.avx512.mask.pmovus.dw.512
4966   return _mm512_mask_cvtusepi32_epi16(__O, __M, __A); 
4967 }
4968
4969 __m256i test_mm512_maskz_cvtusepi32_epi16(__mmask16 __M, __m512i __A) {
4970   // CHECK-LABEL: @test_mm512_maskz_cvtusepi32_epi16
4971   // CHECK: @llvm.x86.avx512.mask.pmovus.dw.512
4972   return _mm512_maskz_cvtusepi32_epi16(__M, __A); 
4973 }
4974
4975 void test_mm512_mask_cvtusepi32_storeu_epi16(void *__P, __mmask16 __M, __m512i __A) {
4976   // CHECK-LABEL: @test_mm512_mask_cvtusepi32_storeu_epi16
4977   // CHECK: @llvm.x86.avx512.mask.pmovus.dw.mem.512
4978   return _mm512_mask_cvtusepi32_storeu_epi16(__P, __M, __A); 
4979 }
4980
4981 __m128i test_mm512_cvtusepi64_epi8(__m512i __A) {
4982   // CHECK-LABEL: @test_mm512_cvtusepi64_epi8
4983   // CHECK: @llvm.x86.avx512.mask.pmovus.qb.512
4984   return _mm512_cvtusepi64_epi8(__A); 
4985 }
4986
4987 __m128i test_mm512_mask_cvtusepi64_epi8(__m128i __O, __mmask8 __M, __m512i __A) {
4988   // CHECK-LABEL: @test_mm512_mask_cvtusepi64_epi8
4989   // CHECK: @llvm.x86.avx512.mask.pmovus.qb.512
4990   return _mm512_mask_cvtusepi64_epi8(__O, __M, __A); 
4991 }
4992
4993 __m128i test_mm512_maskz_cvtusepi64_epi8(__mmask8 __M, __m512i __A) {
4994   // CHECK-LABEL: @test_mm512_maskz_cvtusepi64_epi8
4995   // CHECK: @llvm.x86.avx512.mask.pmovus.qb.512
4996   return _mm512_maskz_cvtusepi64_epi8(__M, __A); 
4997 }
4998
4999 void test_mm512_mask_cvtusepi64_storeu_epi8(void * __P, __mmask8 __M, __m512i __A) {
5000   // CHECK-LABEL: @test_mm512_mask_cvtusepi64_storeu_epi8
5001   // CHECK: @llvm.x86.avx512.mask.pmovus.qb.mem.512
5002   return _mm512_mask_cvtusepi64_storeu_epi8(__P, __M, __A); 
5003 }
5004
5005 __m256i test_mm512_cvtusepi64_epi32(__m512i __A) {
5006   // CHECK-LABEL: @test_mm512_cvtusepi64_epi32
5007   // CHECK: @llvm.x86.avx512.mask.pmovus.qd.512
5008   return _mm512_cvtusepi64_epi32(__A); 
5009 }
5010
5011 __m256i test_mm512_mask_cvtusepi64_epi32(__m256i __O, __mmask8 __M, __m512i __A) {
5012   // CHECK-LABEL: @test_mm512_mask_cvtusepi64_epi32
5013   // CHECK: @llvm.x86.avx512.mask.pmovus.qd.512
5014   return _mm512_mask_cvtusepi64_epi32(__O, __M, __A); 
5015 }
5016
5017 __m256i test_mm512_maskz_cvtusepi64_epi32(__mmask8 __M, __m512i __A) {
5018   // CHECK-LABEL: @test_mm512_maskz_cvtusepi64_epi32
5019   // CHECK: @llvm.x86.avx512.mask.pmovus.qd.512
5020   return _mm512_maskz_cvtusepi64_epi32(__M, __A); 
5021 }
5022
5023 void test_mm512_mask_cvtusepi64_storeu_epi32(void* __P, __mmask8 __M, __m512i __A) {
5024   // CHECK-LABEL: @test_mm512_mask_cvtusepi64_storeu_epi32
5025   // CHECK: @llvm.x86.avx512.mask.pmovus.qd.mem.512
5026   return _mm512_mask_cvtusepi64_storeu_epi32(__P, __M, __A); 
5027 }
5028
5029 __m128i test_mm512_cvtusepi64_epi16(__m512i __A) {
5030   // CHECK-LABEL: @test_mm512_cvtusepi64_epi16
5031   // CHECK: @llvm.x86.avx512.mask.pmovus.qw.512
5032   return _mm512_cvtusepi64_epi16(__A); 
5033 }
5034
5035 __m128i test_mm512_mask_cvtusepi64_epi16(__m128i __O, __mmask8 __M, __m512i __A) {
5036   // CHECK-LABEL: @test_mm512_mask_cvtusepi64_epi16
5037   // CHECK: @llvm.x86.avx512.mask.pmovus.qw.512
5038   return _mm512_mask_cvtusepi64_epi16(__O, __M, __A); 
5039 }
5040
5041 __m128i test_mm512_maskz_cvtusepi64_epi16(__mmask8 __M, __m512i __A) {
5042   // CHECK-LABEL: @test_mm512_maskz_cvtusepi64_epi16
5043   // CHECK: @llvm.x86.avx512.mask.pmovus.qw.512
5044   return _mm512_maskz_cvtusepi64_epi16(__M, __A); 
5045 }
5046
5047 void test_mm512_mask_cvtusepi64_storeu_epi16(void *__P, __mmask8 __M, __m512i __A) {
5048   // CHECK-LABEL: @test_mm512_mask_cvtusepi64_storeu_epi16
5049   // CHECK: @llvm.x86.avx512.mask.pmovus.qw.mem.512
5050   return _mm512_mask_cvtusepi64_storeu_epi16(__P, __M, __A); 
5051 }
5052
5053 __m128i test_mm512_cvtepi32_epi8(__m512i __A) {
5054   // CHECK-LABEL: @test_mm512_cvtepi32_epi8
5055   // CHECK: @llvm.x86.avx512.mask.pmov.db.512
5056   return _mm512_cvtepi32_epi8(__A); 
5057 }
5058
5059 __m128i test_mm512_mask_cvtepi32_epi8(__m128i __O, __mmask16 __M, __m512i __A) {
5060   // CHECK-LABEL: @test_mm512_mask_cvtepi32_epi8
5061   // CHECK: @llvm.x86.avx512.mask.pmov.db.512
5062   return _mm512_mask_cvtepi32_epi8(__O, __M, __A); 
5063 }
5064
5065 __m128i test_mm512_maskz_cvtepi32_epi8(__mmask16 __M, __m512i __A) {
5066   // CHECK-LABEL: @test_mm512_maskz_cvtepi32_epi8
5067   // CHECK: @llvm.x86.avx512.mask.pmov.db.512
5068   return _mm512_maskz_cvtepi32_epi8(__M, __A); 
5069 }
5070
5071 void test_mm512_mask_cvtepi32_storeu_epi8(void * __P, __mmask16 __M, __m512i __A) {
5072   // CHECK-LABEL: @test_mm512_mask_cvtepi32_storeu_epi8
5073   // CHECK: @llvm.x86.avx512.mask.pmov.db.mem.512
5074   return _mm512_mask_cvtepi32_storeu_epi8(__P, __M, __A); 
5075 }
5076
5077 __m256i test_mm512_cvtepi32_epi16(__m512i __A) {
5078   // CHECK-LABEL: @test_mm512_cvtepi32_epi16
5079   // CHECK: @llvm.x86.avx512.mask.pmov.dw.512
5080   return _mm512_cvtepi32_epi16(__A); 
5081 }
5082
5083 __m256i test_mm512_mask_cvtepi32_epi16(__m256i __O, __mmask16 __M, __m512i __A) {
5084   // CHECK-LABEL: @test_mm512_mask_cvtepi32_epi16
5085   // CHECK: @llvm.x86.avx512.mask.pmov.dw.512
5086   return _mm512_mask_cvtepi32_epi16(__O, __M, __A); 
5087 }
5088
5089 __m256i test_mm512_maskz_cvtepi32_epi16(__mmask16 __M, __m512i __A) {
5090   // CHECK-LABEL: @test_mm512_maskz_cvtepi32_epi16
5091   // CHECK: @llvm.x86.avx512.mask.pmov.dw.512
5092   return _mm512_maskz_cvtepi32_epi16(__M, __A); 
5093 }
5094
5095 void test_mm512_mask_cvtepi32_storeu_epi16(void * __P, __mmask16 __M, __m512i __A) {
5096   // CHECK-LABEL: @test_mm512_mask_cvtepi32_storeu_epi16
5097   // CHECK: @llvm.x86.avx512.mask.pmov.dw.mem.512
5098   return _mm512_mask_cvtepi32_storeu_epi16(__P, __M, __A); 
5099 }
5100
5101 __m128i test_mm512_cvtepi64_epi8(__m512i __A) {
5102   // CHECK-LABEL: @test_mm512_cvtepi64_epi8
5103   // CHECK: @llvm.x86.avx512.mask.pmov.qb.512
5104   return _mm512_cvtepi64_epi8(__A); 
5105 }
5106
5107 __m128i test_mm512_mask_cvtepi64_epi8(__m128i __O, __mmask8 __M, __m512i __A) {
5108   // CHECK-LABEL: @test_mm512_mask_cvtepi64_epi8
5109   // CHECK: @llvm.x86.avx512.mask.pmov.qb.512
5110   return _mm512_mask_cvtepi64_epi8(__O, __M, __A); 
5111 }
5112
5113 __m128i test_mm512_maskz_cvtepi64_epi8(__mmask8 __M, __m512i __A) {
5114   // CHECK-LABEL: @test_mm512_maskz_cvtepi64_epi8
5115   // CHECK: @llvm.x86.avx512.mask.pmov.qb.512
5116   return _mm512_maskz_cvtepi64_epi8(__M, __A); 
5117 }
5118
5119 void test_mm512_mask_cvtepi64_storeu_epi8(void * __P, __mmask8 __M, __m512i __A) {
5120   // CHECK-LABEL: @test_mm512_mask_cvtepi64_storeu_epi8
5121   // CHECK: @llvm.x86.avx512.mask.pmov.qb.mem.512
5122   return _mm512_mask_cvtepi64_storeu_epi8(__P, __M, __A); 
5123 }
5124
5125 __m256i test_mm512_cvtepi64_epi32(__m512i __A) {
5126   // CHECK-LABEL: @test_mm512_cvtepi64_epi32
5127   // CHECK: @llvm.x86.avx512.mask.pmov.qd.512
5128   return _mm512_cvtepi64_epi32(__A); 
5129 }
5130
5131 __m256i test_mm512_mask_cvtepi64_epi32(__m256i __O, __mmask8 __M, __m512i __A) {
5132   // CHECK-LABEL: @test_mm512_mask_cvtepi64_epi32
5133   // CHECK: @llvm.x86.avx512.mask.pmov.qd.512
5134   return _mm512_mask_cvtepi64_epi32(__O, __M, __A); 
5135 }
5136
5137 __m256i test_mm512_maskz_cvtepi64_epi32(__mmask8 __M, __m512i __A) {
5138   // CHECK-LABEL: @test_mm512_maskz_cvtepi64_epi32
5139   // CHECK: @llvm.x86.avx512.mask.pmov.qd.512
5140   return _mm512_maskz_cvtepi64_epi32(__M, __A); 
5141 }
5142
5143 void test_mm512_mask_cvtepi64_storeu_epi32(void* __P, __mmask8 __M, __m512i __A) {
5144   // CHECK-LABEL: @test_mm512_mask_cvtepi64_storeu_epi32
5145   // CHECK: @llvm.x86.avx512.mask.pmov.qd.mem.512
5146   return _mm512_mask_cvtepi64_storeu_epi32(__P, __M, __A); 
5147 }
5148
5149 __m128i test_mm512_cvtepi64_epi16(__m512i __A) {
5150   // CHECK-LABEL: @test_mm512_cvtepi64_epi16
5151   // CHECK: @llvm.x86.avx512.mask.pmov.qw.512
5152   return _mm512_cvtepi64_epi16(__A); 
5153 }
5154
5155 __m128i test_mm512_mask_cvtepi64_epi16(__m128i __O, __mmask8 __M, __m512i __A) {
5156   // CHECK-LABEL: @test_mm512_mask_cvtepi64_epi16
5157   // CHECK: @llvm.x86.avx512.mask.pmov.qw.512
5158   return _mm512_mask_cvtepi64_epi16(__O, __M, __A); 
5159 }
5160
5161 __m128i test_mm512_maskz_cvtepi64_epi16(__mmask8 __M, __m512i __A) {
5162   // CHECK-LABEL: @test_mm512_maskz_cvtepi64_epi16
5163   // CHECK: @llvm.x86.avx512.mask.pmov.qw.512
5164   return _mm512_maskz_cvtepi64_epi16(__M, __A); 
5165 }
5166
5167 void test_mm512_mask_cvtepi64_storeu_epi16(void *__P, __mmask8 __M, __m512i __A) {
5168   // CHECK-LABEL: @test_mm512_mask_cvtepi64_storeu_epi16
5169   // CHECK: @llvm.x86.avx512.mask.pmov.qw.mem.512
5170   return _mm512_mask_cvtepi64_storeu_epi16(__P, __M, __A); 
5171 }
5172
5173 __m128i test_mm512_extracti32x4_epi32(__m512i __A) {
5174   // CHECK-LABEL: @test_mm512_extracti32x4_epi32
5175   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <4 x i32> <i32 12, i32 13, i32 14, i32 15>
5176   return _mm512_extracti32x4_epi32(__A, 3); 
5177 }
5178
5179 __m128i test_mm512_mask_extracti32x4_epi32(__m128i __W, __mmask8 __U, __m512i __A) {
5180   // CHECK-LABEL: @test_mm512_mask_extracti32x4_epi32
5181   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <4 x i32> <i32 12, i32 13, i32 14, i32 15>
5182   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5183   return _mm512_mask_extracti32x4_epi32(__W, __U, __A, 3); 
5184 }
5185
5186 __m128i test_mm512_maskz_extracti32x4_epi32(__mmask8 __U, __m512i __A) {
5187   // CHECK-LABEL: @test_mm512_maskz_extracti32x4_epi32
5188   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <4 x i32> <i32 12, i32 13, i32 14, i32 15>
5189   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5190   return _mm512_maskz_extracti32x4_epi32(__U, __A, 3); 
5191 }
5192
5193 __m256i test_mm512_extracti64x4_epi64(__m512i __A) {
5194   // CHECK-LABEL: @test_mm512_extracti64x4_epi64
5195   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> zeroinitializer, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
5196   return _mm512_extracti64x4_epi64(__A, 1); 
5197 }
5198
5199 __m256i test_mm512_mask_extracti64x4_epi64(__m256i __W, __mmask8 __U, __m512i __A) {
5200   // CHECK-LABEL: @test_mm512_mask_extracti64x4_epi64
5201   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> zeroinitializer, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
5202   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5203   return _mm512_mask_extracti64x4_epi64(__W, __U, __A, 1); 
5204 }
5205
5206 __m256i test_mm512_maskz_extracti64x4_epi64(__mmask8 __U, __m512i __A) {
5207   // CHECK-LABEL: @test_mm512_maskz_extracti64x4_epi64
5208   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> zeroinitializer, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
5209   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5210   return _mm512_maskz_extracti64x4_epi64(__U, __A, 1); 
5211 }
5212
5213 __m512d test_mm512_insertf64x4(__m512d __A, __m256d __B) {
5214   // CHECK-LABEL: @test_mm512_insertf64x4
5215   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
5216   return _mm512_insertf64x4(__A, __B, 1);
5217 }
5218
5219 __m512d test_mm512_mask_insertf64x4(__m512d __W, __mmask8 __U, __m512d __A, __m256d __B) {
5220   // CHECK-LABEL: @test_mm512_mask_insertf64x4
5221   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
5222   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
5223   return _mm512_mask_insertf64x4(__W, __U, __A, __B, 1); 
5224 }
5225
5226 __m512d test_mm512_maskz_insertf64x4(__mmask8 __U, __m512d __A, __m256d __B) {
5227   // CHECK-LABEL: @test_mm512_maskz_insertf64x4
5228   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
5229   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
5230   return _mm512_maskz_insertf64x4(__U, __A, __B, 1); 
5231 }
5232
5233 __m512i test_mm512_inserti64x4(__m512i __A, __m256i __B) {
5234   // CHECK-LABEL: @test_mm512_inserti64x4
5235   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
5236   return _mm512_inserti64x4(__A, __B, 1); 
5237 }
5238
5239 __m512i test_mm512_mask_inserti64x4(__m512i __W, __mmask8 __U, __m512i __A, __m256i __B) {
5240   // CHECK-LABEL: @test_mm512_mask_inserti64x4
5241   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
5242   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5243   return _mm512_mask_inserti64x4(__W, __U, __A, __B, 1); 
5244 }
5245
5246 __m512i test_mm512_maskz_inserti64x4(__mmask8 __U, __m512i __A, __m256i __B) {
5247   // CHECK-LABEL: @test_mm512_maskz_inserti64x4
5248   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
5249   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5250   return _mm512_maskz_inserti64x4(__U, __A, __B, 1); 
5251 }
5252
5253 __m512 test_mm512_insertf32x4(__m512 __A, __m128 __B) {
5254   // CHECK-LABEL: @test_mm512_insertf32x4
5255   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 16, i32 17, i32 18, i32 19, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
5256   return _mm512_insertf32x4(__A, __B, 1);
5257 }
5258
5259 __m512 test_mm512_mask_insertf32x4(__m512 __W, __mmask16 __U, __m512 __A, __m128 __B) {
5260   // CHECK-LABEL: @test_mm512_mask_insertf32x4
5261   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 16, i32 17, i32 18, i32 19, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
5262   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5263   return _mm512_mask_insertf32x4(__W, __U, __A, __B, 1); 
5264 }
5265
5266 __m512 test_mm512_maskz_insertf32x4(__mmask16 __U, __m512 __A, __m128 __B) {
5267   // CHECK-LABEL: @test_mm512_maskz_insertf32x4
5268   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 16, i32 17, i32 18, i32 19, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
5269   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5270   return _mm512_maskz_insertf32x4(__U, __A, __B, 1); 
5271 }
5272
5273 __m512i test_mm512_inserti32x4(__m512i __A, __m128i __B) {
5274   // CHECK-LABEL: @test_mm512_inserti32x4
5275   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 16, i32 17, i32 18, i32 19, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
5276   return _mm512_inserti32x4(__A, __B, 1); 
5277 }
5278
5279 __m512i test_mm512_mask_inserti32x4(__m512i __W, __mmask16 __U, __m512i __A, __m128i __B) {
5280   // CHECK-LABEL: @test_mm512_mask_inserti32x4
5281   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 16, i32 17, i32 18, i32 19, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
5282   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5283   return _mm512_mask_inserti32x4(__W, __U, __A, __B, 1); 
5284 }
5285
5286 __m512i test_mm512_maskz_inserti32x4(__mmask16 __U, __m512i __A, __m128i __B) {
5287   // CHECK-LABEL: @test_mm512_maskz_inserti32x4
5288   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 16, i32 17, i32 18, i32 19, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
5289   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5290   return _mm512_maskz_inserti32x4(__U, __A, __B, 1); 
5291 }
5292
5293 __m512d test_mm512_getmant_round_pd(__m512d __A) {
5294   // CHECK-LABEL: @test_mm512_getmant_round_pd
5295   // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
5296   return _mm512_getmant_round_pd(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_CUR_DIRECTION); 
5297 }
5298
5299 __m512d test_mm512_mask_getmant_round_pd(__m512d __W, __mmask8 __U, __m512d __A) {
5300   // CHECK-LABEL: @test_mm512_mask_getmant_round_pd
5301   // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
5302   return _mm512_mask_getmant_round_pd(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_CUR_DIRECTION); 
5303 }
5304
5305 __m512d test_mm512_maskz_getmant_round_pd(__mmask8 __U, __m512d __A) {
5306   // CHECK-LABEL: @test_mm512_maskz_getmant_round_pd
5307   // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
5308   return _mm512_maskz_getmant_round_pd(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_CUR_DIRECTION); 
5309 }
5310
5311 __m512d test_mm512_getmant_pd(__m512d __A) {
5312   // CHECK-LABEL: @test_mm512_getmant_pd
5313   // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
5314   return _mm512_getmant_pd(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 
5315 }
5316
5317 __m512d test_mm512_mask_getmant_pd(__m512d __W, __mmask8 __U, __m512d __A) {
5318   // CHECK-LABEL: @test_mm512_mask_getmant_pd
5319   // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
5320   return _mm512_mask_getmant_pd(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 
5321 }
5322
5323 __m512d test_mm512_maskz_getmant_pd(__mmask8 __U, __m512d __A) {
5324   // CHECK-LABEL: @test_mm512_maskz_getmant_pd
5325   // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
5326   return _mm512_maskz_getmant_pd(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 
5327 }
5328
5329 __m512 test_mm512_getmant_round_ps(__m512 __A) {
5330   // CHECK-LABEL: @test_mm512_getmant_round_ps
5331   // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
5332   return _mm512_getmant_round_ps(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_CUR_DIRECTION); 
5333 }
5334
5335 __m512 test_mm512_mask_getmant_round_ps(__m512 __W, __mmask16 __U, __m512 __A) {
5336   // CHECK-LABEL: @test_mm512_mask_getmant_round_ps
5337   // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
5338   return _mm512_mask_getmant_round_ps(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_CUR_DIRECTION); 
5339 }
5340
5341 __m512 test_mm512_maskz_getmant_round_ps(__mmask16 __U, __m512 __A) {
5342   // CHECK-LABEL: @test_mm512_maskz_getmant_round_ps
5343   // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
5344   return _mm512_maskz_getmant_round_ps(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_CUR_DIRECTION); 
5345 }
5346
5347 __m512 test_mm512_getmant_ps(__m512 __A) {
5348   // CHECK-LABEL: @test_mm512_getmant_ps
5349   // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
5350   return _mm512_getmant_ps(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 
5351 }
5352
5353 __m512 test_mm512_mask_getmant_ps(__m512 __W, __mmask16 __U, __m512 __A) {
5354   // CHECK-LABEL: @test_mm512_mask_getmant_ps
5355   // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
5356   return _mm512_mask_getmant_ps(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 
5357 }
5358
5359 __m512 test_mm512_maskz_getmant_ps(__mmask16 __U, __m512 __A) {
5360   // CHECK-LABEL: @test_mm512_maskz_getmant_ps
5361   // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
5362   return _mm512_maskz_getmant_ps(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 
5363 }
5364
5365 __m512d test_mm512_getexp_round_pd(__m512d __A) {
5366   // CHECK-LABEL: @test_mm512_getexp_round_pd
5367   // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
5368   return _mm512_getexp_round_pd(__A, _MM_FROUND_CUR_DIRECTION); 
5369 }
5370
5371 __m512d test_mm512_mask_getexp_round_pd(__m512d __W, __mmask8 __U, __m512d __A) {
5372   // CHECK-LABEL: @test_mm512_mask_getexp_round_pd
5373   // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
5374   return _mm512_mask_getexp_round_pd(__W, __U, __A, _MM_FROUND_CUR_DIRECTION); 
5375 }
5376
5377 __m512d test_mm512_maskz_getexp_round_pd(__mmask8 __U, __m512d __A) {
5378   // CHECK-LABEL: @test_mm512_maskz_getexp_round_pd
5379   // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
5380   return _mm512_maskz_getexp_round_pd(__U, __A, _MM_FROUND_CUR_DIRECTION); 
5381 }
5382
5383 __m512d test_mm512_getexp_pd(__m512d __A) {
5384   // CHECK-LABEL: @test_mm512_getexp_pd
5385   // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
5386   return _mm512_getexp_pd(__A); 
5387 }
5388
5389 __m512d test_mm512_mask_getexp_pd(__m512d __W, __mmask8 __U, __m512d __A) {
5390   // CHECK-LABEL: @test_mm512_mask_getexp_pd
5391   // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
5392   return _mm512_mask_getexp_pd(__W, __U, __A); 
5393 }
5394
5395 __m512d test_mm512_maskz_getexp_pd(__mmask8 __U, __m512d __A) {
5396   // CHECK-LABEL: @test_mm512_maskz_getexp_pd
5397   // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
5398   return _mm512_maskz_getexp_pd(__U, __A); 
5399 }
5400
5401 __m512 test_mm512_getexp_round_ps(__m512 __A) {
5402   // CHECK-LABEL: @test_mm512_getexp_round_ps
5403   // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
5404   return _mm512_getexp_round_ps(__A, _MM_FROUND_CUR_DIRECTION); 
5405 }
5406
5407 __m512 test_mm512_mask_getexp_round_ps(__m512 __W, __mmask16 __U, __m512 __A) {
5408   // CHECK-LABEL: @test_mm512_mask_getexp_round_ps
5409   // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
5410   return _mm512_mask_getexp_round_ps(__W, __U, __A, _MM_FROUND_CUR_DIRECTION); 
5411 }
5412
5413 __m512 test_mm512_maskz_getexp_round_ps(__mmask16 __U, __m512 __A) {
5414   // CHECK-LABEL: @test_mm512_maskz_getexp_round_ps
5415   // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
5416   return _mm512_maskz_getexp_round_ps(__U, __A, _MM_FROUND_CUR_DIRECTION); 
5417 }
5418
5419 __m512 test_mm512_getexp_ps(__m512 __A) {
5420   // CHECK-LABEL: @test_mm512_getexp_ps
5421   // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
5422   return _mm512_getexp_ps(__A); 
5423 }
5424
5425 __m512 test_mm512_mask_getexp_ps(__m512 __W, __mmask16 __U, __m512 __A) {
5426   // CHECK-LABEL: @test_mm512_mask_getexp_ps
5427   // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
5428   return _mm512_mask_getexp_ps(__W, __U, __A); 
5429 }
5430
5431 __m512 test_mm512_maskz_getexp_ps(__mmask16 __U, __m512 __A) {
5432   // CHECK-LABEL: @test_mm512_maskz_getexp_ps
5433   // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
5434   return _mm512_maskz_getexp_ps(__U, __A); 
5435 }
5436
5437 __m256 test_mm512_i64gather_ps(__m512i __index, void const *__addr) {
5438   // CHECK-LABEL: @test_mm512_i64gather_ps
5439   // CHECK: @llvm.x86.avx512.gather.qps.512
5440   return _mm512_i64gather_ps(__index, __addr, 2); 
5441 }
5442
5443 __m256 test_mm512_mask_i64gather_ps(__m256 __v1_old, __mmask8 __mask, __m512i __index, void const *__addr) {
5444   // CHECK-LABEL: @test_mm512_mask_i64gather_ps
5445   // CHECK: @llvm.x86.avx512.gather.qps.512
5446   return _mm512_mask_i64gather_ps(__v1_old, __mask, __index, __addr, 2); 
5447 }
5448
5449 __m256i test_mm512_i64gather_epi32(__m512i __index, void const *__addr) {
5450   // CHECK-LABEL: @test_mm512_i64gather_epi32
5451   // CHECK: @llvm.x86.avx512.gather.qpi.512
5452   return _mm512_i64gather_epi32(__index, __addr, 2); 
5453 }
5454
5455 __m256i test_mm512_mask_i64gather_epi32(__m256i __v1_old, __mmask8 __mask, __m512i __index, void const *__addr) {
5456   // CHECK-LABEL: @test_mm512_mask_i64gather_epi32
5457   // CHECK: @llvm.x86.avx512.gather.qpi.512
5458   return _mm512_mask_i64gather_epi32(__v1_old, __mask, __index, __addr, 2); 
5459 }
5460
5461 __m512d test_mm512_i64gather_pd(__m512i __index, void const *__addr) {
5462   // CHECK-LABEL: @test_mm512_i64gather_pd
5463   // CHECK: @llvm.x86.avx512.gather.qpd.512
5464   return _mm512_i64gather_pd(__index, __addr, 2); 
5465 }
5466
5467 __m512d test_mm512_mask_i64gather_pd(__m512d __v1_old, __mmask8 __mask, __m512i __index, void const *__addr) {
5468   // CHECK-LABEL: @test_mm512_mask_i64gather_pd
5469   // CHECK: @llvm.x86.avx512.gather.qpd.512
5470   return _mm512_mask_i64gather_pd(__v1_old, __mask, __index, __addr, 2); 
5471 }
5472
5473 __m512i test_mm512_i64gather_epi64(__m512i __index, void const *__addr) {
5474   // CHECK-LABEL: @test_mm512_i64gather_epi64
5475   // CHECK: @llvm.x86.avx512.gather.qpq.512
5476   return _mm512_i64gather_epi64(__index, __addr, 2); 
5477 }
5478
5479 __m512i test_mm512_mask_i64gather_epi64(__m512i __v1_old, __mmask8 __mask, __m512i __index, void const *__addr) {
5480   // CHECK-LABEL: @test_mm512_mask_i64gather_epi64
5481   // CHECK: @llvm.x86.avx512.gather.qpq.512
5482   return _mm512_mask_i64gather_epi64(__v1_old, __mask, __index, __addr, 2); 
5483 }
5484
5485 __m512 test_mm512_i32gather_ps(__m512i __index, void const *__addr) {
5486   // CHECK-LABEL: @test_mm512_i32gather_ps
5487   // CHECK: @llvm.x86.avx512.gather.dps.512
5488   return _mm512_i32gather_ps(__index, __addr, 2); 
5489 }
5490
5491 __m512 test_mm512_mask_i32gather_ps(__m512 v1_old, __mmask16 __mask, __m512i __index, void const *__addr) {
5492   // CHECK-LABEL: @test_mm512_mask_i32gather_ps
5493   // CHECK: @llvm.x86.avx512.gather.dps.512
5494   return _mm512_mask_i32gather_ps(v1_old, __mask, __index, __addr, 2); 
5495 }
5496
5497 __m512i test_mm512_i32gather_epi32(__m512i __index, void const *__addr) {
5498   // CHECK-LABEL: @test_mm512_i32gather_epi32
5499   // CHECK: @llvm.x86.avx512.gather.dpi.512
5500   return _mm512_i32gather_epi32(__index, __addr, 2); 
5501 }
5502
5503 __m512i test_mm512_mask_i32gather_epi32(__m512i __v1_old, __mmask16 __mask, __m512i __index, void const *__addr) {
5504   // CHECK-LABEL: @test_mm512_mask_i32gather_epi32
5505   // CHECK: @llvm.x86.avx512.gather.dpi.512
5506   return _mm512_mask_i32gather_epi32(__v1_old, __mask, __index, __addr, 2); 
5507 }
5508
5509 __m512d test_mm512_i32gather_pd(__m256i __index, void const *__addr) {
5510   // CHECK-LABEL: @test_mm512_i32gather_pd
5511   // CHECK: @llvm.x86.avx512.gather.dpd.512
5512   return _mm512_i32gather_pd(__index, __addr, 2); 
5513 }
5514
5515 __m512d test_mm512_mask_i32gather_pd(__m512d __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
5516   // CHECK-LABEL: @test_mm512_mask_i32gather_pd
5517   // CHECK: @llvm.x86.avx512.gather.dpd.512
5518   return _mm512_mask_i32gather_pd(__v1_old, __mask, __index, __addr, 2); 
5519 }
5520
5521 __m512i test_mm512_i32gather_epi64(__m256i __index, void const *__addr) {
5522   // CHECK-LABEL: @test_mm512_i32gather_epi64
5523   // CHECK: @llvm.x86.avx512.gather.dpq.512
5524   return _mm512_i32gather_epi64(__index, __addr, 2); 
5525 }
5526
5527 __m512i test_mm512_mask_i32gather_epi64(__m512i __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
5528   // CHECK-LABEL: @test_mm512_mask_i32gather_epi64
5529   // CHECK: @llvm.x86.avx512.gather.dpq.512
5530   return _mm512_mask_i32gather_epi64(__v1_old, __mask, __index, __addr, 2); 
5531 }
5532
5533 void test_mm512_i64scatter_ps(void *__addr, __m512i __index, __m256 __v1) {
5534   // CHECK-LABEL: @test_mm512_i64scatter_ps
5535   // CHECK: @llvm.x86.avx512.scatter.qps.512
5536   return _mm512_i64scatter_ps(__addr, __index, __v1, 2); 
5537 }
5538
5539 void test_mm512_mask_i64scatter_ps(void *__addr, __mmask8 __mask, __m512i __index, __m256 __v1) {
5540   // CHECK-LABEL: @test_mm512_mask_i64scatter_ps
5541   // CHECK: @llvm.x86.avx512.scatter.qps.512
5542   return _mm512_mask_i64scatter_ps(__addr, __mask, __index, __v1, 2); 
5543 }
5544
5545 void test_mm512_i64scatter_epi32(void *__addr, __m512i __index, __m256i __v1) {
5546   // CHECK-LABEL: @test_mm512_i64scatter_epi32
5547   // CHECK: @llvm.x86.avx512.scatter.qpi.512
5548   return _mm512_i64scatter_epi32(__addr, __index, __v1, 2); 
5549 }
5550
5551 void test_mm512_mask_i64scatter_epi32(void *__addr, __mmask8 __mask, __m512i __index, __m256i __v1) {
5552   // CHECK-LABEL: @test_mm512_mask_i64scatter_epi32
5553   // CHECK: @llvm.x86.avx512.scatter.qpi.512
5554   return _mm512_mask_i64scatter_epi32(__addr, __mask, __index, __v1, 2); 
5555 }
5556
5557 void test_mm512_i64scatter_pd(void *__addr, __m512i __index, __m512d __v1) {
5558   // CHECK-LABEL: @test_mm512_i64scatter_pd
5559   // CHECK: @llvm.x86.avx512.scatter.qpd.512
5560   return _mm512_i64scatter_pd(__addr, __index, __v1, 2); 
5561 }
5562
5563 void test_mm512_mask_i64scatter_pd(void *__addr, __mmask8 __mask, __m512i __index, __m512d __v1) {
5564   // CHECK-LABEL: @test_mm512_mask_i64scatter_pd
5565   // CHECK: @llvm.x86.avx512.scatter.qpd.512
5566   return _mm512_mask_i64scatter_pd(__addr, __mask, __index, __v1, 2); 
5567 }
5568
5569 void test_mm512_i64scatter_epi64(void *__addr, __m512i __index, __m512i __v1) {
5570   // CHECK-LABEL: @test_mm512_i64scatter_epi64
5571   // CHECK: @llvm.x86.avx512.scatter.qpq.512
5572   return _mm512_i64scatter_epi64(__addr, __index, __v1, 2); 
5573 }
5574
5575 void test_mm512_mask_i64scatter_epi64(void *__addr, __mmask8 __mask, __m512i __index, __m512i __v1) {
5576   // CHECK-LABEL: @test_mm512_mask_i64scatter_epi64
5577   // CHECK: @llvm.x86.avx512.scatter.qpq.512
5578   return _mm512_mask_i64scatter_epi64(__addr, __mask, __index, __v1, 2); 
5579 }
5580
5581 void test_mm512_i32scatter_ps(void *__addr, __m512i __index, __m512 __v1) {
5582   // CHECK-LABEL: @test_mm512_i32scatter_ps
5583   // CHECK: @llvm.x86.avx512.scatter.dps.512
5584   return _mm512_i32scatter_ps(__addr, __index, __v1, 2); 
5585 }
5586
5587 void test_mm512_mask_i32scatter_ps(void *__addr, __mmask16 __mask, __m512i __index, __m512 __v1) {
5588   // CHECK-LABEL: @test_mm512_mask_i32scatter_ps
5589   // CHECK: @llvm.x86.avx512.scatter.dps.512
5590   return _mm512_mask_i32scatter_ps(__addr, __mask, __index, __v1, 2); 
5591 }
5592
5593 void test_mm512_i32scatter_epi32(void *__addr, __m512i __index, __m512i __v1) {
5594   // CHECK-LABEL: @test_mm512_i32scatter_epi32
5595   // CHECK: @llvm.x86.avx512.scatter.dpi.512
5596   return _mm512_i32scatter_epi32(__addr, __index, __v1, 2); 
5597 }
5598
5599 void test_mm512_mask_i32scatter_epi32(void *__addr, __mmask16 __mask, __m512i __index, __m512i __v1) {
5600   // CHECK-LABEL: @test_mm512_mask_i32scatter_epi32
5601   // CHECK: @llvm.x86.avx512.scatter.dpi.512
5602   return _mm512_mask_i32scatter_epi32(__addr, __mask, __index, __v1, 2); 
5603 }
5604
5605 void test_mm512_i32scatter_pd(void *__addr, __m256i __index, __m512d __v1) {
5606   // CHECK-LABEL: @test_mm512_i32scatter_pd
5607   // CHECK: @llvm.x86.avx512.scatter.dpd.512
5608   return _mm512_i32scatter_pd(__addr, __index, __v1, 2); 
5609 }
5610
5611 void test_mm512_mask_i32scatter_pd(void *__addr, __mmask8 __mask, __m256i __index, __m512d __v1) {
5612   // CHECK-LABEL: @test_mm512_mask_i32scatter_pd
5613   // CHECK: @llvm.x86.avx512.scatter.dpd.512
5614   return _mm512_mask_i32scatter_pd(__addr, __mask, __index, __v1, 2); 
5615 }
5616
5617 void test_mm512_i32scatter_epi64(void *__addr, __m256i __index, __m512i __v1) {
5618   // CHECK-LABEL: @test_mm512_i32scatter_epi64
5619   // CHECK: @llvm.x86.avx512.scatter.dpq.512
5620   return _mm512_i32scatter_epi64(__addr, __index, __v1, 2); 
5621 }
5622
5623 void test_mm512_mask_i32scatter_epi64(void *__addr, __mmask8 __mask, __m256i __index, __m512i __v1) {
5624   // CHECK-LABEL: @test_mm512_mask_i32scatter_epi64
5625   // CHECK: @llvm.x86.avx512.scatter.dpq.512
5626   return _mm512_mask_i32scatter_epi64(__addr, __mask, __index, __v1, 2); 
5627 }
5628
5629 __m128d test_mm_mask_rsqrt14_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
5630   // CHECK-LABEL: @test_mm_mask_rsqrt14_sd
5631   // CHECK: @llvm.x86.avx512.rsqrt14.sd
5632   return _mm_mask_rsqrt14_sd(__W, __U, __A, __B);
5633 }
5634
5635 __m128d test_mm_maskz_rsqrt14_sd(__mmask8 __U, __m128d __A, __m128d __B){
5636   // CHECK-LABEL: @test_mm_maskz_rsqrt14_sd
5637   // CHECK: @llvm.x86.avx512.rsqrt14.sd
5638   return _mm_maskz_rsqrt14_sd(__U, __A, __B);
5639 }
5640
5641 __m128 test_mm_mask_rsqrt14_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
5642   // CHECK-LABEL: @test_mm_mask_rsqrt14_ss
5643   // CHECK: @llvm.x86.avx512.rsqrt14.ss
5644   return _mm_mask_rsqrt14_ss(__W, __U, __A, __B);
5645 }
5646
5647 __m128 test_mm_maskz_rsqrt14_ss(__mmask8 __U, __m128 __A, __m128 __B){
5648   // CHECK-LABEL: @test_mm_maskz_rsqrt14_ss
5649   // CHECK: @llvm.x86.avx512.rsqrt14.ss
5650   return _mm_maskz_rsqrt14_ss(__U, __A, __B);
5651 }
5652
5653 __m512d test_mm512_mask_rcp14_pd (__m512d __W, __mmask8 __U, __m512d __A)
5654 {
5655   // CHECK-LABEL: @test_mm512_mask_rcp14_pd 
5656   // CHECK: @llvm.x86.avx512.rcp14.pd.512
5657   return _mm512_mask_rcp14_pd (__W,__U,__A);
5658 }
5659
5660 __m512d test_mm512_maskz_rcp14_pd (__mmask8 __U, __m512d __A)
5661 {
5662   // CHECK-LABEL: @test_mm512_maskz_rcp14_pd 
5663   // CHECK: @llvm.x86.avx512.rcp14.pd.512
5664   return _mm512_maskz_rcp14_pd (__U,__A);
5665 }
5666
5667 __m512 test_mm512_mask_rcp14_ps (__m512 __W, __mmask16 __U, __m512 __A)
5668 {
5669   // CHECK-LABEL: @test_mm512_mask_rcp14_ps 
5670   // CHECK: @llvm.x86.avx512.rcp14.ps.512
5671   return _mm512_mask_rcp14_ps (__W,__U,__A);
5672 }
5673
5674 __m512 test_mm512_maskz_rcp14_ps (__mmask16 __U, __m512 __A)
5675 {
5676   // CHECK-LABEL: @test_mm512_maskz_rcp14_ps 
5677   // CHECK: @llvm.x86.avx512.rcp14.ps.512
5678   return _mm512_maskz_rcp14_ps (__U,__A);
5679 }
5680
5681 __m128d test_mm_mask_rcp14_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
5682   // CHECK-LABEL: @test_mm_mask_rcp14_sd
5683   // CHECK: @llvm.x86.avx512.rcp14.sd
5684   return _mm_mask_rcp14_sd(__W, __U, __A, __B);
5685 }
5686
5687 __m128d test_mm_maskz_rcp14_sd(__mmask8 __U, __m128d __A, __m128d __B){
5688   // CHECK-LABEL: @test_mm_maskz_rcp14_sd
5689   // CHECK: @llvm.x86.avx512.rcp14.sd
5690   return _mm_maskz_rcp14_sd(__U, __A, __B);
5691 }
5692
5693 __m128 test_mm_mask_rcp14_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
5694   // CHECK-LABEL: @test_mm_mask_rcp14_ss
5695   // CHECK: @llvm.x86.avx512.rcp14.ss
5696   return _mm_mask_rcp14_ss(__W, __U, __A, __B);
5697 }
5698
5699 __m128 test_mm_maskz_rcp14_ss(__mmask8 __U, __m128 __A, __m128 __B){
5700   // CHECK-LABEL: @test_mm_maskz_rcp14_ss
5701   // CHECK: @llvm.x86.avx512.rcp14.ss
5702   return _mm_maskz_rcp14_ss(__U, __A, __B);
5703 }
5704
5705 __m128d test_mm_mask_getexp_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
5706   // CHECK-LABEL: @test_mm_mask_getexp_sd
5707   // CHECK: @llvm.x86.avx512.mask.getexp.sd
5708   return _mm_mask_getexp_sd(__W, __U, __A, __B);
5709 }
5710
5711 __m128d test_mm_mask_getexp_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
5712   // CHECK-LABEL: @test_mm_mask_getexp_round_sd
5713   // CHECK: @llvm.x86.avx512.mask.getexp.sd
5714   return _mm_mask_getexp_round_sd(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION);
5715 }
5716
5717 __m128d test_mm_maskz_getexp_sd(__mmask8 __U, __m128d __A, __m128d __B){
5718   // CHECK-LABEL: @test_mm_maskz_getexp_sd
5719   // CHECK: @llvm.x86.avx512.mask.getexp.sd
5720   return _mm_maskz_getexp_sd(__U, __A, __B);
5721 }
5722
5723 __m128d test_mm_maskz_getexp_round_sd(__mmask8 __U, __m128d __A, __m128d __B){
5724   // CHECK-LABEL: @test_mm_maskz_getexp_round_sd
5725   // CHECK: @llvm.x86.avx512.mask.getexp.sd
5726   return _mm_maskz_getexp_round_sd(__U, __A, __B, _MM_FROUND_CUR_DIRECTION);
5727 }
5728
5729 __m128 test_mm_mask_getexp_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
5730   // CHECK-LABEL: @test_mm_mask_getexp_ss
5731   // CHECK: @llvm.x86.avx512.mask.getexp.ss
5732   return _mm_mask_getexp_ss(__W, __U, __A, __B);
5733 }
5734
5735 __m128 test_mm_mask_getexp_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
5736   // CHECK-LABEL: @test_mm_mask_getexp_round_ss
5737   // CHECK: @llvm.x86.avx512.mask.getexp.ss
5738   return _mm_mask_getexp_round_ss(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION);
5739 }
5740
5741 __m128 test_mm_maskz_getexp_ss(__mmask8 __U, __m128 __A, __m128 __B){
5742   // CHECK-LABEL: @test_mm_maskz_getexp_ss
5743   // CHECK: @llvm.x86.avx512.mask.getexp.ss
5744   return _mm_maskz_getexp_ss(__U, __A, __B);
5745 }
5746
5747 __m128 test_mm_maskz_getexp_round_ss(__mmask8 __U, __m128 __A, __m128 __B){
5748   // CHECK-LABEL: @test_mm_maskz_getexp_round_ss
5749   // CHECK: @llvm.x86.avx512.mask.getexp.ss
5750   return _mm_maskz_getexp_round_ss(__U, __A, __B, _MM_FROUND_CUR_DIRECTION);
5751 }
5752
5753 __m128d test_mm_mask_getmant_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
5754   // CHECK-LABEL: @test_mm_mask_getmant_sd
5755   // CHECK: @llvm.x86.avx512.mask.getmant.sd
5756   return _mm_mask_getmant_sd(__W, __U, __A, __B, 1, 2);
5757 }
5758
5759 __m128d test_mm_mask_getmant_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
5760   // CHECK-LABEL: @test_mm_mask_getmant_round_sd
5761   // CHECK: @llvm.x86.avx512.mask.getmant.sd
5762   return _mm_mask_getmant_round_sd(__W, __U, __A, __B, 1, 2, _MM_FROUND_CUR_DIRECTION);
5763 }
5764
5765 __m128d test_mm_maskz_getmant_sd(__mmask8 __U, __m128d __A, __m128d __B){
5766   // CHECK-LABEL: @test_mm_maskz_getmant_sd
5767   // CHECK: @llvm.x86.avx512.mask.getmant.sd
5768   return _mm_maskz_getmant_sd(__U, __A, __B, 1, 2);
5769 }
5770
5771 __m128d test_mm_maskz_getmant_round_sd(__mmask8 __U, __m128d __A, __m128d __B){
5772   // CHECK-LABEL: @test_mm_maskz_getmant_round_sd
5773   // CHECK: @llvm.x86.avx512.mask.getmant.sd
5774   return _mm_maskz_getmant_round_sd(__U, __A, __B, 1, 2, _MM_FROUND_CUR_DIRECTION);
5775 }
5776
5777 __m128 test_mm_mask_getmant_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
5778   // CHECK-LABEL: @test_mm_mask_getmant_ss
5779   // CHECK: @llvm.x86.avx512.mask.getmant.ss
5780   return _mm_mask_getmant_ss(__W, __U, __A, __B, 1, 2);
5781 }
5782
5783 __m128 test_mm_mask_getmant_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
5784   // CHECK-LABEL: @test_mm_mask_getmant_round_ss
5785   // CHECK: @llvm.x86.avx512.mask.getmant.ss
5786   return _mm_mask_getmant_round_ss(__W, __U, __A, __B, 1, 2, _MM_FROUND_CUR_DIRECTION);
5787 }
5788
5789 __m128 test_mm_maskz_getmant_ss(__mmask8 __U, __m128 __A, __m128 __B){
5790   // CHECK-LABEL: @test_mm_maskz_getmant_ss
5791   // CHECK: @llvm.x86.avx512.mask.getmant.ss
5792   return _mm_maskz_getmant_ss(__U, __A, __B, 1, 2);
5793 }
5794
5795 __m128 test_mm_maskz_getmant_round_ss(__mmask8 __U, __m128 __A, __m128 __B){
5796   // CHECK-LABEL: @test_mm_maskz_getmant_round_ss
5797   // CHECK: @llvm.x86.avx512.mask.getmant.ss
5798   return _mm_maskz_getmant_round_ss(__U, __A, __B, 1, 2, _MM_FROUND_CUR_DIRECTION);
5799 }
5800
5801 __m128 test_mm_mask_fmadd_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
5802   // CHECK-LABEL: @test_mm_mask_fmadd_ss
5803   // CHECK: @llvm.x86.avx512.mask.vfmadd.ss
5804   return _mm_mask_fmadd_ss(__W, __U, __A, __B);
5805 }
5806
5807 __m128 test_mm_mask_fmadd_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
5808   // CHECK-LABEL: @test_mm_mask_fmadd_round_ss
5809   // CHECK: @llvm.x86.avx512.mask.vfmadd.ss
5810   return _mm_mask_fmadd_round_ss(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION);
5811 }
5812
5813 __m128 test_mm_maskz_fmadd_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
5814   // CHECK-LABEL: @test_mm_maskz_fmadd_ss
5815   // CHECK: @llvm.x86.avx512.maskz.vfmadd.ss
5816   return _mm_maskz_fmadd_ss(__U, __A, __B, __C);
5817 }
5818
5819 __m128 test_mm_maskz_fmadd_round_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
5820   // CHECK-LABEL: @test_mm_maskz_fmadd_round_ss
5821   // CHECK: @llvm.x86.avx512.maskz.vfmadd.ss
5822   return _mm_maskz_fmadd_round_ss(__U, __A, __B, __C, _MM_FROUND_CUR_DIRECTION);
5823 }
5824
5825 __m128 test_mm_mask3_fmadd_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
5826   // CHECK-LABEL: @test_mm_mask3_fmadd_ss
5827   // CHECK: @llvm.x86.avx512.mask3.vfmadd.ss
5828   return _mm_mask3_fmadd_ss(__W, __X, __Y, __U);
5829 }
5830
5831 __m128 test_mm_mask3_fmadd_round_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
5832   // CHECK-LABEL: @test_mm_mask3_fmadd_round_ss
5833   // CHECK: @llvm.x86.avx512.mask3.vfmadd.ss
5834   return _mm_mask3_fmadd_round_ss(__W, __X, __Y, __U, _MM_FROUND_CUR_DIRECTION);
5835 }
5836
5837 __m128 test_mm_mask_fmsub_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
5838   // CHECK-LABEL: @test_mm_mask_fmsub_ss
5839   // CHECK: @llvm.x86.avx512.mask.vfmadd.ss
5840   return _mm_mask_fmsub_ss(__W, __U, __A, __B);
5841 }
5842
5843 __m128 test_mm_mask_fmsub_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
5844   // CHECK-LABEL: @test_mm_mask_fmsub_round_ss
5845   // CHECK: @llvm.x86.avx512.mask.vfmadd.ss
5846   return _mm_mask_fmsub_round_ss(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION);
5847 }
5848
5849 __m128 test_mm_maskz_fmsub_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
5850   // CHECK-LABEL: @test_mm_maskz_fmsub_ss
5851   // CHECK: @llvm.x86.avx512.maskz.vfmadd.ss
5852   return _mm_maskz_fmsub_ss(__U, __A, __B, __C);
5853 }
5854
5855 __m128 test_mm_maskz_fmsub_round_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
5856   // CHECK-LABEL: @test_mm_maskz_fmsub_round_ss
5857   // CHECK: @llvm.x86.avx512.maskz.vfmadd.ss
5858   return _mm_maskz_fmsub_round_ss(__U, __A, __B, __C, _MM_FROUND_CUR_DIRECTION);
5859 }
5860
5861 __m128 test_mm_mask3_fmsub_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
5862   // CHECK-LABEL: @test_mm_mask3_fmsub_ss
5863   // CHECK: @llvm.x86.avx512.mask3.vfmsub.ss
5864   return _mm_mask3_fmsub_ss(__W, __X, __Y, __U);
5865 }
5866
5867 __m128 test_mm_mask3_fmsub_round_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
5868   // CHECK-LABEL: @test_mm_mask3_fmsub_round_ss
5869   // CHECK: @llvm.x86.avx512.mask3.vfmsub.ss
5870   return _mm_mask3_fmsub_round_ss(__W, __X, __Y, __U, _MM_FROUND_CUR_DIRECTION);
5871 }
5872
5873 __m128 test_mm_mask_fnmadd_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
5874   // CHECK-LABEL: @test_mm_mask_fnmadd_ss
5875   // CHECK: @llvm.x86.avx512.mask.vfmadd.ss
5876   return _mm_mask_fnmadd_ss(__W, __U, __A, __B);
5877 }
5878
5879 __m128 test_mm_mask_fnmadd_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
5880   // CHECK-LABEL: @test_mm_mask_fnmadd_round_ss
5881   // CHECK: @llvm.x86.avx512.mask.vfmadd.ss
5882   return _mm_mask_fnmadd_round_ss(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION);
5883 }
5884
5885 __m128 test_mm_maskz_fnmadd_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
5886   // CHECK-LABEL: @test_mm_maskz_fnmadd_ss
5887   // CHECK: @llvm.x86.avx512.maskz.vfmadd.ss
5888   return _mm_maskz_fnmadd_ss(__U, __A, __B, __C);
5889 }
5890
5891 __m128 test_mm_maskz_fnmadd_round_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
5892   // CHECK-LABEL: @test_mm_maskz_fnmadd_round_ss
5893   // CHECK: @llvm.x86.avx512.maskz.vfmadd.ss
5894   return _mm_maskz_fnmadd_round_ss(__U, __A, __B, __C, _MM_FROUND_CUR_DIRECTION);
5895 }
5896
5897 __m128 test_mm_mask3_fnmadd_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
5898   // CHECK-LABEL: @test_mm_mask3_fnmadd_ss
5899   // CHECK: @llvm.x86.avx512.mask3.vfmadd.ss
5900   return _mm_mask3_fnmadd_ss(__W, __X, __Y, __U);
5901 }
5902
5903 __m128 test_mm_mask3_fnmadd_round_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
5904   // CHECK-LABEL: @test_mm_mask3_fnmadd_round_ss
5905   // CHECK: @llvm.x86.avx512.mask3.vfmadd.ss
5906   return _mm_mask3_fnmadd_round_ss(__W, __X, __Y, __U, _MM_FROUND_CUR_DIRECTION);
5907 }
5908
5909 __m128 test_mm_mask_fnmsub_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
5910   // CHECK-LABEL: @test_mm_mask_fnmsub_ss
5911   // CHECK: @llvm.x86.avx512.mask.vfmadd.ss
5912   return _mm_mask_fnmsub_ss(__W, __U, __A, __B);
5913 }
5914
5915 __m128 test_mm_mask_fnmsub_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
5916   // CHECK-LABEL: @test_mm_mask_fnmsub_round_ss
5917   // CHECK: @llvm.x86.avx512.mask.vfmadd.ss
5918   return _mm_mask_fnmsub_round_ss(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION);
5919 }
5920
5921 __m128 test_mm_maskz_fnmsub_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
5922   // CHECK-LABEL: @test_mm_maskz_fnmsub_ss
5923   // CHECK: @llvm.x86.avx512.maskz.vfmadd.ss
5924   return _mm_maskz_fnmsub_ss(__U, __A, __B, __C);
5925 }
5926
5927 __m128 test_mm_maskz_fnmsub_round_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
5928   // CHECK-LABEL: @test_mm_maskz_fnmsub_round_ss
5929   // CHECK: @llvm.x86.avx512.maskz.vfmadd.ss
5930   return _mm_maskz_fnmsub_round_ss(__U, __A, __B, __C, _MM_FROUND_CUR_DIRECTION);
5931 }
5932
5933 __m128 test_mm_mask3_fnmsub_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
5934   // CHECK-LABEL: @test_mm_mask3_fnmsub_ss
5935   // CHECK: @llvm.x86.avx512.mask3.vfnmsub.ss
5936   return _mm_mask3_fnmsub_ss(__W, __X, __Y, __U);
5937 }
5938
5939 __m128 test_mm_mask3_fnmsub_round_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
5940   // CHECK-LABEL: @test_mm_mask3_fnmsub_round_ss
5941   // CHECK: @llvm.x86.avx512.mask3.vfnmsub.ss
5942   return _mm_mask3_fnmsub_round_ss(__W, __X, __Y, __U, _MM_FROUND_CUR_DIRECTION);
5943 }
5944
5945 __m128d test_mm_mask_fmadd_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
5946   // CHECK-LABEL: @test_mm_mask_fmadd_sd
5947   // CHECK: @llvm.x86.avx512.mask.vfmadd.sd
5948   return _mm_mask_fmadd_sd(__W, __U, __A, __B);
5949 }
5950
5951 __m128d test_mm_mask_fmadd_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
5952   // CHECK-LABEL: @test_mm_mask_fmadd_round_sd
5953   // CHECK: @llvm.x86.avx512.mask.vfmadd.sd
5954   return _mm_mask_fmadd_round_sd(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION);
5955 }
5956
5957 __m128d test_mm_maskz_fmadd_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
5958   // CHECK-LABEL: @test_mm_maskz_fmadd_sd
5959   // CHECK: @llvm.x86.avx512.maskz.vfmadd.sd
5960   return _mm_maskz_fmadd_sd(__U, __A, __B, __C);
5961 }
5962
5963 __m128d test_mm_maskz_fmadd_round_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
5964   // CHECK-LABEL: @test_mm_maskz_fmadd_round_sd
5965   // CHECK: @llvm.x86.avx512.maskz.vfmadd.sd
5966   return _mm_maskz_fmadd_round_sd(__U, __A, __B, __C, _MM_FROUND_CUR_DIRECTION);
5967 }
5968
5969 __m128d test_mm_mask3_fmadd_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
5970   // CHECK-LABEL: @test_mm_mask3_fmadd_sd
5971   // CHECK: @llvm.x86.avx512.mask3.vfmadd.sd
5972   return _mm_mask3_fmadd_sd(__W, __X, __Y, __U);
5973 }
5974
5975 __m128d test_mm_mask3_fmadd_round_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
5976   // CHECK-LABEL: @test_mm_mask3_fmadd_round_sd
5977   // CHECK: @llvm.x86.avx512.mask3.vfmadd.sd
5978   return _mm_mask3_fmadd_round_sd(__W, __X, __Y, __U, _MM_FROUND_CUR_DIRECTION);
5979 }
5980
5981 __m128d test_mm_mask_fmsub_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
5982   // CHECK-LABEL: @test_mm_mask_fmsub_sd
5983   // CHECK: @llvm.x86.avx512.mask.vfmadd.sd
5984   return _mm_mask_fmsub_sd(__W, __U, __A, __B);
5985 }
5986
5987 __m128d test_mm_mask_fmsub_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
5988   // CHECK-LABEL: @test_mm_mask_fmsub_round_sd
5989   // CHECK: @llvm.x86.avx512.mask.vfmadd.sd
5990   return _mm_mask_fmsub_round_sd(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION);
5991 }
5992
5993 __m128d test_mm_maskz_fmsub_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
5994   // CHECK-LABEL: @test_mm_maskz_fmsub_sd
5995   // CHECK: @llvm.x86.avx512.maskz.vfmadd.sd
5996   return _mm_maskz_fmsub_sd(__U, __A, __B, __C);
5997 }
5998
5999 __m128d test_mm_maskz_fmsub_round_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
6000   // CHECK-LABEL: @test_mm_maskz_fmsub_round_sd
6001   // CHECK: @llvm.x86.avx512.maskz.vfmadd.sd
6002   return _mm_maskz_fmsub_round_sd(__U, __A, __B, __C, _MM_FROUND_CUR_DIRECTION);
6003 }
6004
6005 __m128d test_mm_mask3_fmsub_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
6006   // CHECK-LABEL: @test_mm_mask3_fmsub_sd
6007   // CHECK: @llvm.x86.avx512.mask3.vfmsub.sd
6008   return _mm_mask3_fmsub_sd(__W, __X, __Y, __U);
6009 }
6010
6011 __m128d test_mm_mask3_fmsub_round_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
6012   // CHECK-LABEL: @test_mm_mask3_fmsub_round_sd
6013   // CHECK: @llvm.x86.avx512.mask3.vfmsub.sd
6014   return _mm_mask3_fmsub_round_sd(__W, __X, __Y, __U, _MM_FROUND_CUR_DIRECTION);
6015 }
6016
6017 __m128d test_mm_mask_fnmadd_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
6018   // CHECK-LABEL: @test_mm_mask_fnmadd_sd
6019   // CHECK: @llvm.x86.avx512.mask.vfmadd.sd
6020   return _mm_mask_fnmadd_sd(__W, __U, __A, __B);
6021 }
6022
6023 __m128d test_mm_mask_fnmadd_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
6024   // CHECK-LABEL: @test_mm_mask_fnmadd_round_sd
6025   // CHECK: @llvm.x86.avx512.mask.vfmadd.sd
6026   return _mm_mask_fnmadd_round_sd(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION);
6027 }
6028
6029 __m128d test_mm_maskz_fnmadd_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
6030   // CHECK-LABEL: @test_mm_maskz_fnmadd_sd
6031   // CHECK: @llvm.x86.avx512.maskz.vfmadd.sd
6032   return _mm_maskz_fnmadd_sd(__U, __A, __B, __C);
6033 }
6034
6035 __m128d test_mm_maskz_fnmadd_round_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
6036   // CHECK-LABEL: @test_mm_maskz_fnmadd_round_sd
6037   // CHECK: @llvm.x86.avx512.maskz.vfmadd.sd
6038   return _mm_maskz_fnmadd_round_sd(__U, __A, __B, __C, _MM_FROUND_CUR_DIRECTION);
6039 }
6040
6041 __m128d test_mm_mask3_fnmadd_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
6042   // CHECK-LABEL: @test_mm_mask3_fnmadd_sd
6043   // CHECK: @llvm.x86.avx512.mask3.vfmadd.sd
6044   return _mm_mask3_fnmadd_sd(__W, __X, __Y, __U);
6045 }
6046
6047 __m128d test_mm_mask3_fnmadd_round_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
6048   // CHECK-LABEL: @test_mm_mask3_fnmadd_round_sd
6049   // CHECK: @llvm.x86.avx512.mask3.vfmadd.sd
6050   return _mm_mask3_fnmadd_round_sd(__W, __X, __Y, __U, _MM_FROUND_CUR_DIRECTION);
6051 }
6052
6053 __m128d test_mm_mask_fnmsub_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
6054   // CHECK-LABEL: @test_mm_mask_fnmsub_sd
6055   // CHECK: @llvm.x86.avx512.mask.vfmadd.sd
6056   return _mm_mask_fnmsub_sd(__W, __U, __A, __B);
6057 }
6058
6059 __m128d test_mm_mask_fnmsub_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
6060   // CHECK-LABEL: @test_mm_mask_fnmsub_round_sd
6061   // CHECK: @llvm.x86.avx512.mask.vfmadd.sd
6062   return _mm_mask_fnmsub_round_sd(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION);
6063 }
6064
6065 __m128d test_mm_maskz_fnmsub_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
6066   // CHECK-LABEL: @test_mm_maskz_fnmsub_sd
6067   // CHECK: @llvm.x86.avx512.maskz.vfmadd.sd
6068   return _mm_maskz_fnmsub_sd(__U, __A, __B, __C);
6069 }
6070
6071 __m128d test_mm_maskz_fnmsub_round_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
6072   // CHECK-LABEL: @test_mm_maskz_fnmsub_round_sd
6073   // CHECK: @llvm.x86.avx512.maskz.vfmadd.sd
6074   return _mm_maskz_fnmsub_round_sd(__U, __A, __B, __C, _MM_FROUND_CUR_DIRECTION);
6075 }
6076
6077 __m128d test_mm_mask3_fnmsub_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
6078   // CHECK-LABEL: @test_mm_mask3_fnmsub_sd
6079   // CHECK: @llvm.x86.avx512.mask3.vfnmsub.sd
6080   return _mm_mask3_fnmsub_sd(__W, __X, __Y, __U);
6081 }
6082
6083 __m128d test_mm_mask3_fnmsub_round_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
6084   // CHECK-LABEL: @test_mm_mask3_fnmsub_round_sd
6085   // CHECK: @llvm.x86.avx512.mask3.vfnmsub.sd
6086   return _mm_mask3_fnmsub_round_sd(__W, __X, __Y, __U, _MM_FROUND_CUR_DIRECTION);
6087 }
6088
6089 __m512d test_mm512_permutex_pd(__m512d __X) {
6090   // CHECK-LABEL: @test_mm512_permutex_pd
6091   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> zeroinitializer, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
6092   return _mm512_permutex_pd(__X, 0);
6093 }
6094
6095 __m512d test_mm512_mask_permutex_pd(__m512d __W, __mmask8 __U, __m512d __X) {
6096   // CHECK-LABEL: @test_mm512_mask_permutex_pd
6097   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> zeroinitializer, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
6098   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6099   return _mm512_mask_permutex_pd(__W, __U, __X, 0);
6100 }
6101
6102 __m512d test_mm512_maskz_permutex_pd(__mmask8 __U, __m512d __X) {
6103   // CHECK-LABEL: @test_mm512_maskz_permutex_pd
6104   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> zeroinitializer, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
6105   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6106   return _mm512_maskz_permutex_pd(__U, __X, 0);
6107 }
6108
6109 __m512i test_mm512_permutex_epi64(__m512i __X) {
6110   // CHECK-LABEL: @test_mm512_permutex_epi64
6111   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> zeroinitializer, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
6112   return _mm512_permutex_epi64(__X, 0);
6113 }
6114
6115 __m512i test_mm512_mask_permutex_epi64(__m512i __W, __mmask8 __M, __m512i __X) {
6116   // CHECK-LABEL: @test_mm512_mask_permutex_epi64
6117   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> zeroinitializer, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
6118   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6119   return _mm512_mask_permutex_epi64(__W, __M, __X, 0);
6120 }
6121
6122 __m512i test_mm512_maskz_permutex_epi64(__mmask8 __M, __m512i __X) {
6123   // CHECK-LABEL: @test_mm512_maskz_permutex_epi64
6124   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> zeroinitializer, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
6125   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6126   return _mm512_maskz_permutex_epi64(__M, __X, 0);
6127 }
6128
6129 __m512d test_mm512_permutexvar_pd(__m512i __X, __m512d __Y) {
6130   // CHECK-LABEL: @test_mm512_permutexvar_pd
6131   // CHECK: @llvm.x86.avx512.mask.permvar.df.512
6132   return _mm512_permutexvar_pd(__X, __Y); 
6133 }
6134
6135 __m512d test_mm512_mask_permutexvar_pd(__m512d __W, __mmask8 __U, __m512i __X, __m512d __Y) {
6136   // CHECK-LABEL: @test_mm512_mask_permutexvar_pd
6137   // CHECK: @llvm.x86.avx512.mask.permvar.df.512
6138   return _mm512_mask_permutexvar_pd(__W, __U, __X, __Y); 
6139 }
6140
6141 __m512d test_mm512_maskz_permutexvar_pd(__mmask8 __U, __m512i __X, __m512d __Y) {
6142   // CHECK-LABEL: @test_mm512_maskz_permutexvar_pd
6143   // CHECK: @llvm.x86.avx512.mask.permvar.df.512
6144   return _mm512_maskz_permutexvar_pd(__U, __X, __Y); 
6145 }
6146
6147 __m512i test_mm512_maskz_permutexvar_epi64(__mmask8 __M, __m512i __X, __m512i __Y) {
6148   // CHECK-LABEL: @test_mm512_maskz_permutexvar_epi64
6149   // CHECK: @llvm.x86.avx512.mask.permvar.di.512
6150   return _mm512_maskz_permutexvar_epi64(__M, __X, __Y); 
6151 }
6152
6153 __m512i test_mm512_permutexvar_epi64(__m512i __X, __m512i __Y) {
6154   // CHECK-LABEL: @test_mm512_permutexvar_epi64
6155   // CHECK: @llvm.x86.avx512.mask.permvar.di.512
6156   return _mm512_permutexvar_epi64(__X, __Y); 
6157 }
6158
6159 __m512i test_mm512_mask_permutexvar_epi64(__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y) {
6160   // CHECK-LABEL: @test_mm512_mask_permutexvar_epi64
6161   // CHECK: @llvm.x86.avx512.mask.permvar.di.512
6162   return _mm512_mask_permutexvar_epi64(__W, __M, __X, __Y); 
6163 }
6164
6165 __m512 test_mm512_permutexvar_ps(__m512i __X, __m512 __Y) {
6166   // CHECK-LABEL: @test_mm512_permutexvar_ps
6167   // CHECK: @llvm.x86.avx512.mask.permvar.sf.512
6168   return _mm512_permutexvar_ps(__X, __Y); 
6169 }
6170
6171 __m512 test_mm512_mask_permutexvar_ps(__m512 __W, __mmask16 __U, __m512i __X, __m512 __Y) {
6172   // CHECK-LABEL: @test_mm512_mask_permutexvar_ps
6173   // CHECK: @llvm.x86.avx512.mask.permvar.sf.512
6174   return _mm512_mask_permutexvar_ps(__W, __U, __X, __Y); 
6175 }
6176
6177 __m512 test_mm512_maskz_permutexvar_ps(__mmask16 __U, __m512i __X, __m512 __Y) {
6178   // CHECK-LABEL: @test_mm512_maskz_permutexvar_ps
6179   // CHECK: @llvm.x86.avx512.mask.permvar.sf.512
6180   return _mm512_maskz_permutexvar_ps(__U, __X, __Y); 
6181 }
6182
6183 __m512i test_mm512_maskz_permutexvar_epi32(__mmask16 __M, __m512i __X, __m512i __Y) {
6184   // CHECK-LABEL: @test_mm512_maskz_permutexvar_epi32
6185   // CHECK: @llvm.x86.avx512.mask.permvar.si.512
6186   return _mm512_maskz_permutexvar_epi32(__M, __X, __Y); 
6187 }
6188
6189 __m512i test_mm512_permutexvar_epi32(__m512i __X, __m512i __Y) {
6190   // CHECK-LABEL: @test_mm512_permutexvar_epi32
6191   // CHECK: @llvm.x86.avx512.mask.permvar.si.512
6192   return _mm512_permutexvar_epi32(__X, __Y); 
6193 }
6194
6195 __m512i test_mm512_mask_permutexvar_epi32(__m512i __W, __mmask16 __M, __m512i __X, __m512i __Y) {
6196   // CHECK-LABEL: @test_mm512_mask_permutexvar_epi32
6197   // CHECK: @llvm.x86.avx512.mask.permvar.si.512
6198   return _mm512_mask_permutexvar_epi32(__W, __M, __X, __Y); 
6199 }
6200
6201 __mmask16 test_mm512_kand(__mmask16 __A, __mmask16 __B) {
6202   // CHECK-LABEL: @test_mm512_kand
6203   // CHECK: @llvm.x86.avx512.kand.w
6204   return _mm512_kand(__A, __B); 
6205 }
6206
6207 __mmask16 test_mm512_kandn(__mmask16 __A, __mmask16 __B) {
6208   // CHECK-LABEL: @test_mm512_kandn
6209   // CHECK: @llvm.x86.avx512.kandn.w
6210   return _mm512_kandn(__A, __B); 
6211 }
6212
6213 __mmask16 test_mm512_kor(__mmask16 __A, __mmask16 __B) {
6214   // CHECK-LABEL: @test_mm512_kor
6215   // CHECK: @llvm.x86.avx512.kor.w
6216   return _mm512_kor(__A, __B); 
6217 }
6218
6219 int test_mm512_kortestc(__mmask16 __A, __mmask16 __B) {
6220   // CHECK-LABEL: @test_mm512_kortestc
6221   // CHECK: @llvm.x86.avx512.kortestc.w
6222   return _mm512_kortestc(__A, __B); 
6223 }
6224
6225 int test_mm512_kortestz(__mmask16 __A, __mmask16 __B) {
6226   // CHECK-LABEL: @test_mm512_kortestz
6227   // CHECK: @llvm.x86.avx512.kortestz.w
6228   return _mm512_kortestz(__A, __B); 
6229 }
6230
6231 __mmask16 test_mm512_kunpackb(__mmask16 __A, __mmask16 __B) {
6232   // CHECK-LABEL: @test_mm512_kunpackb
6233   // CHECK: @llvm.x86.avx512.kunpck.bw
6234   return _mm512_kunpackb(__A, __B); 
6235 }
6236
6237 __mmask16 test_mm512_kxnor(__mmask16 __A, __mmask16 __B) {
6238   // CHECK-LABEL: @test_mm512_kxnor
6239   // CHECK: @llvm.x86.avx512.kxnor.w
6240   return _mm512_kxnor(__A, __B); 
6241 }
6242
6243 __mmask16 test_mm512_kxor(__mmask16 __A, __mmask16 __B) {
6244   // CHECK-LABEL: @test_mm512_kxor
6245   // CHECK: @llvm.x86.avx512.kxor.w
6246   return _mm512_kxor(__A, __B); 
6247 }
6248
6249 void test_mm512_stream_si512(__m512i * __P, __m512i __A) {
6250   // CHECK-LABEL: @test_mm512_stream_si512
6251   // CHECK: store <8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, align 64, !nontemporal
6252   _mm512_stream_si512(__P, __A); 
6253 }
6254
6255 __m512i test_mm512_stream_load_si512(void *__P) {
6256   // CHECK-LABEL: @test_mm512_stream_load_si512
6257   // CHECK: load <8 x i64>, <8 x i64>* %{{.*}}, align 64, !nontemporal
6258   return _mm512_stream_load_si512(__P); 
6259 }
6260
6261 void test_mm512_stream_pd(double *__P, __m512d __A) {
6262   // CHECK-LABEL: @test_mm512_stream_pd
6263   // CHECK: store <8 x double> %{{.*}}, <8 x double>* %{{.*}}, align 64, !nontemporal
6264   return _mm512_stream_pd(__P, __A); 
6265 }
6266
6267 void test_mm512_stream_ps(float *__P, __m512 __A) {
6268   // CHECK-LABEL: @test_mm512_stream_ps
6269   // CHECK: store <16 x float> %{{.*}}, <16 x float>* %{{.*}}, align 64, !nontemporal
6270   _mm512_stream_ps(__P, __A); 
6271 }
6272
6273 __m512d test_mm512_mask_compress_pd(__m512d __W, __mmask8 __U, __m512d __A) {
6274   // CHECK-LABEL: @test_mm512_mask_compress_pd
6275   // CHECK: @llvm.x86.avx512.mask.compress.pd.512
6276   return _mm512_mask_compress_pd(__W, __U, __A); 
6277 }
6278
6279 __m512d test_mm512_maskz_compress_pd(__mmask8 __U, __m512d __A) {
6280   // CHECK-LABEL: @test_mm512_maskz_compress_pd
6281   // CHECK: @llvm.x86.avx512.mask.compress.pd.512
6282   return _mm512_maskz_compress_pd(__U, __A); 
6283 }
6284
6285 __m512i test_mm512_mask_compress_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
6286   // CHECK-LABEL: @test_mm512_mask_compress_epi64
6287   // CHECK: @llvm.x86.avx512.mask.compress.q.512
6288   return _mm512_mask_compress_epi64(__W, __U, __A); 
6289 }
6290
6291 __m512i test_mm512_maskz_compress_epi64(__mmask8 __U, __m512i __A) {
6292   // CHECK-LABEL: @test_mm512_maskz_compress_epi64
6293   // CHECK: @llvm.x86.avx512.mask.compress.q.512
6294   return _mm512_maskz_compress_epi64(__U, __A); 
6295 }
6296
6297 __m512 test_mm512_mask_compress_ps(__m512 __W, __mmask16 __U, __m512 __A) {
6298   // CHECK-LABEL: @test_mm512_mask_compress_ps
6299   // CHECK: @llvm.x86.avx512.mask.compress.ps.512
6300   return _mm512_mask_compress_ps(__W, __U, __A); 
6301 }
6302
6303 __m512 test_mm512_maskz_compress_ps(__mmask16 __U, __m512 __A) {
6304   // CHECK-LABEL: @test_mm512_maskz_compress_ps
6305   // CHECK: @llvm.x86.avx512.mask.compress.ps.512
6306   return _mm512_maskz_compress_ps(__U, __A); 
6307 }
6308
6309 __m512i test_mm512_mask_compress_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
6310   // CHECK-LABEL: @test_mm512_mask_compress_epi32
6311   // CHECK: @llvm.x86.avx512.mask.compress.d.512
6312   return _mm512_mask_compress_epi32(__W, __U, __A); 
6313 }
6314
6315 __m512i test_mm512_maskz_compress_epi32(__mmask16 __U, __m512i __A) {
6316   // CHECK-LABEL: @test_mm512_maskz_compress_epi32
6317   // CHECK: @llvm.x86.avx512.mask.compress.d.512
6318   return _mm512_maskz_compress_epi32(__U, __A); 
6319 }
6320
6321 __mmask8 test_mm_cmp_round_ss_mask(__m128 __X, __m128 __Y) {
6322   // CHECK-LABEL: @test_mm_cmp_round_ss_mask
6323   // CHECK: @llvm.x86.avx512.mask.cmp
6324   return _mm_cmp_round_ss_mask(__X, __Y, 5, _MM_FROUND_CUR_DIRECTION); 
6325 }
6326
6327 __mmask8 test_mm_mask_cmp_round_ss_mask(__mmask8 __M, __m128 __X, __m128 __Y) {
6328   // CHECK-LABEL: @test_mm_mask_cmp_round_ss_mask
6329   // CHECK: @llvm.x86.avx512.mask.cmp
6330   return _mm_mask_cmp_round_ss_mask(__M, __X, __Y, 5, _MM_FROUND_CUR_DIRECTION); 
6331 }
6332
6333 __mmask8 test_mm_cmp_ss_mask(__m128 __X, __m128 __Y) {
6334   // CHECK-LABEL: @test_mm_cmp_ss_mask
6335   // CHECK: @llvm.x86.avx512.mask.cmp
6336   return _mm_cmp_ss_mask(__X, __Y, 5); 
6337 }
6338
6339 __mmask8 test_mm_mask_cmp_ss_mask(__mmask8 __M, __m128 __X, __m128 __Y) {
6340   // CHECK-LABEL: @test_mm_mask_cmp_ss_mask
6341   // CHECK: @llvm.x86.avx512.mask.cmp
6342   return _mm_mask_cmp_ss_mask(__M, __X, __Y, 5); 
6343 }
6344
6345 __mmask8 test_mm_cmp_round_sd_mask(__m128d __X, __m128d __Y) {
6346   // CHECK-LABEL: @test_mm_cmp_round_sd_mask
6347   // CHECK: @llvm.x86.avx512.mask.cmp
6348   return _mm_cmp_round_sd_mask(__X, __Y, 5, _MM_FROUND_CUR_DIRECTION); 
6349 }
6350
6351 __mmask8 test_mm_mask_cmp_round_sd_mask(__mmask8 __M, __m128d __X, __m128d __Y) {
6352   // CHECK-LABEL: @test_mm_mask_cmp_round_sd_mask
6353   // CHECK: @llvm.x86.avx512.mask.cmp
6354   return _mm_mask_cmp_round_sd_mask(__M, __X, __Y, 5, _MM_FROUND_CUR_DIRECTION); 
6355 }
6356
6357 __mmask8 test_mm_cmp_sd_mask(__m128d __X, __m128d __Y) {
6358   // CHECK-LABEL: @test_mm_cmp_sd_mask
6359   // CHECK: @llvm.x86.avx512.mask.cmp
6360   return _mm_cmp_sd_mask(__X, __Y, 5); 
6361 }
6362
6363 __mmask8 test_mm_mask_cmp_sd_mask(__mmask8 __M, __m128d __X, __m128d __Y) {
6364   // CHECK-LABEL: @test_mm_mask_cmp_sd_mask
6365   // CHECK: @llvm.x86.avx512.mask.cmp
6366   return _mm_mask_cmp_sd_mask(__M, __X, __Y, 5); 
6367 }
6368
6369 __m512 test_mm512_movehdup_ps(__m512 __A) {
6370   // CHECK-LABEL: @test_mm512_movehdup_ps
6371   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7, i32 9, i32 9, i32 11, i32 11, i32 13, i32 13, i32 15, i32 15>
6372   return _mm512_movehdup_ps(__A);
6373 }
6374
6375 __m512 test_mm512_mask_movehdup_ps(__m512 __W, __mmask16 __U, __m512 __A) {
6376   // CHECK-LABEL: @test_mm512_mask_movehdup_ps
6377   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7, i32 9, i32 9, i32 11, i32 11, i32 13, i32 13, i32 15, i32 15>
6378   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6379   return _mm512_mask_movehdup_ps(__W, __U, __A);
6380 }
6381
6382 __m512 test_mm512_maskz_movehdup_ps(__mmask16 __U, __m512 __A) {
6383   // CHECK-LABEL: @test_mm512_maskz_movehdup_ps
6384   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7, i32 9, i32 9, i32 11, i32 11, i32 13, i32 13, i32 15, i32 15>
6385   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6386   return _mm512_maskz_movehdup_ps(__U, __A);
6387 }
6388
6389 __m512 test_mm512_moveldup_ps(__m512 __A) {
6390   // CHECK-LABEL: @test_mm512_moveldup_ps
6391   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6, i32 8, i32 8, i32 10, i32 10, i32 12, i32 12, i32 14, i32 14>
6392   return _mm512_moveldup_ps(__A);
6393 }
6394
6395 __m512 test_mm512_mask_moveldup_ps(__m512 __W, __mmask16 __U, __m512 __A) {
6396   // CHECK-LABEL: @test_mm512_mask_moveldup_ps
6397   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6, i32 8, i32 8, i32 10, i32 10, i32 12, i32 12, i32 14, i32 14>
6398   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6399   return _mm512_mask_moveldup_ps(__W, __U, __A);
6400 }
6401
6402 __m512 test_mm512_maskz_moveldup_ps(__mmask16 __U, __m512 __A) {
6403   // CHECK-LABEL: @test_mm512_maskz_moveldup_ps
6404   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6, i32 8, i32 8, i32 10, i32 10, i32 12, i32 12, i32 14, i32 14>
6405   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6406   return _mm512_maskz_moveldup_ps(__U, __A);
6407 }
6408
6409 __m512i test_mm512_shuffle_epi32(__m512i __A) {
6410   // CHECK-LABEL: @test_mm512_shuffle_epi32
6411   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 1, i32 0, i32 0, i32 0, i32 5, i32 4, i32 4, i32 4, i32 9, i32 8, i32 8, i32 8, i32 13, i32 12, i32 12, i32 12>
6412   return _mm512_shuffle_epi32(__A, 1); 
6413 }
6414
6415 __m512i test_mm512_mask_shuffle_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
6416   // CHECK-LABEL: @test_mm512_mask_shuffle_epi32
6417   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 1, i32 0, i32 0, i32 0, i32 5, i32 4, i32 4, i32 4, i32 9, i32 8, i32 8, i32 8, i32 13, i32 12, i32 12, i32 12>
6418   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6419   return _mm512_mask_shuffle_epi32(__W, __U, __A, 1); 
6420 }
6421
6422 __m512i test_mm512_maskz_shuffle_epi32(__mmask16 __U, __m512i __A) {
6423   // CHECK-LABEL: @test_mm512_maskz_shuffle_epi32
6424   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 1, i32 0, i32 0, i32 0, i32 5, i32 4, i32 4, i32 4, i32 9, i32 8, i32 8, i32 8, i32 13, i32 12, i32 12, i32 12>
6425   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6426   return _mm512_maskz_shuffle_epi32(__U, __A, 1); 
6427 }
6428
6429 __m512d test_mm512_mask_expand_pd(__m512d __W, __mmask8 __U, __m512d __A) {
6430   // CHECK-LABEL: @test_mm512_mask_expand_pd
6431   // CHECK: @llvm.x86.avx512.mask.expand.pd.512
6432   return _mm512_mask_expand_pd(__W, __U, __A); 
6433 }
6434
6435 __m512d test_mm512_maskz_expand_pd(__mmask8 __U, __m512d __A) {
6436   // CHECK-LABEL: @test_mm512_maskz_expand_pd
6437   // CHECK: @llvm.x86.avx512.mask.expand.pd.512
6438   return _mm512_maskz_expand_pd(__U, __A); 
6439 }
6440
6441 __m512i test_mm512_mask_expand_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
6442   // CHECK-LABEL: @test_mm512_mask_expand_epi64
6443   // CHECK: @llvm.x86.avx512.mask.expand.q.512
6444   return _mm512_mask_expand_epi64(__W, __U, __A); 
6445 }
6446
6447 __m512i test_mm512_maskz_expand_epi64(__mmask8 __U, __m512i __A) {
6448   // CHECK-LABEL: @test_mm512_maskz_expand_epi64
6449   // CHECK: @llvm.x86.avx512.mask.expand.q.512
6450   return _mm512_maskz_expand_epi64(__U, __A); 
6451 }
6452 __m512i test_mm512_mask_expandloadu_epi64(__m512i __W, __mmask8 __U, void const *__P) {
6453   // CHECK-LABEL: @test_mm512_mask_expandloadu_epi64
6454   // CHECK: @llvm.x86.avx512.mask.expand.load.q.512
6455   return _mm512_mask_expandloadu_epi64(__W, __U, __P); 
6456 }
6457
6458 __m512i test_mm512_maskz_expandloadu_epi64(__mmask8 __U, void const *__P) {
6459   // CHECK-LABEL: @test_mm512_maskz_expandloadu_epi64
6460   // CHECK: @llvm.x86.avx512.mask.expand.load.q.512
6461   return _mm512_maskz_expandloadu_epi64(__U, __P); 
6462 }
6463
6464 __m512d test_mm512_mask_expandloadu_pd(__m512d __W, __mmask8 __U, void const *__P) {
6465   // CHECK-LABEL: @test_mm512_mask_expandloadu_pd
6466   // CHECK: @llvm.x86.avx512.mask.expand.load.pd.512
6467   return _mm512_mask_expandloadu_pd(__W, __U, __P); 
6468 }
6469
6470 __m512d test_mm512_maskz_expandloadu_pd(__mmask8 __U, void const *__P) {
6471   // CHECK-LABEL: @test_mm512_maskz_expandloadu_pd
6472   // CHECK: @llvm.x86.avx512.mask.expand.load.pd.512
6473   return _mm512_maskz_expandloadu_pd(__U, __P); 
6474 }
6475
6476 __m512i test_mm512_mask_expandloadu_epi32(__m512i __W, __mmask16 __U, void const *__P) {
6477   // CHECK-LABEL: @test_mm512_mask_expandloadu_epi32
6478   // CHECK: @llvm.x86.avx512.mask.expand.load.d.512
6479   return _mm512_mask_expandloadu_epi32(__W, __U, __P); 
6480 }
6481
6482 __m512i test_mm512_maskz_expandloadu_epi32(__mmask16 __U, void const *__P) {
6483   // CHECK-LABEL: @test_mm512_maskz_expandloadu_epi32
6484   // CHECK: @llvm.x86.avx512.mask.expand.load.d.512
6485   return _mm512_maskz_expandloadu_epi32(__U, __P); 
6486 }
6487
6488 __m512 test_mm512_mask_expand_ps(__m512 __W, __mmask16 __U, __m512 __A) {
6489   // CHECK-LABEL: @test_mm512_mask_expand_ps
6490   // CHECK: @llvm.x86.avx512.mask.expand.ps.512
6491   return _mm512_mask_expand_ps(__W, __U, __A); 
6492 }
6493
6494 __m512 test_mm512_maskz_expand_ps(__mmask16 __U, __m512 __A) {
6495   // CHECK-LABEL: @test_mm512_maskz_expand_ps
6496   // CHECK: @llvm.x86.avx512.mask.expand.ps.512
6497   return _mm512_maskz_expand_ps(__U, __A); 
6498 }
6499
6500 __m512i test_mm512_mask_expand_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
6501   // CHECK-LABEL: @test_mm512_mask_expand_epi32
6502   // CHECK: @llvm.x86.avx512.mask.expand.d.512
6503   return _mm512_mask_expand_epi32(__W, __U, __A); 
6504 }
6505
6506 __m512i test_mm512_maskz_expand_epi32(__mmask16 __U, __m512i __A) {
6507   // CHECK-LABEL: @test_mm512_maskz_expand_epi32
6508   // CHECK: @llvm.x86.avx512.mask.expand.d.512
6509   return _mm512_maskz_expand_epi32(__U, __A); 
6510 }
6511 __m512d test_mm512_cvt_roundps_pd(__m256 __A) {
6512   // CHECK-LABEL: @test_mm512_cvt_roundps_pd
6513   // CHECK: @llvm.x86.avx512.mask.cvtps2pd.512
6514   return _mm512_cvt_roundps_pd(__A, _MM_FROUND_CUR_DIRECTION); 
6515 }
6516
6517 __m512d test_mm512_mask_cvt_roundps_pd(__m512d __W, __mmask8 __U, __m256 __A) {
6518   // CHECK-LABEL: @test_mm512_mask_cvt_roundps_pd
6519   // CHECK: @llvm.x86.avx512.mask.cvtps2pd.512
6520   return _mm512_mask_cvt_roundps_pd(__W, __U, __A, _MM_FROUND_CUR_DIRECTION); 
6521 }
6522
6523 __m512d test_mm512_maskz_cvt_roundps_pd(__mmask8 __U, __m256 __A) {
6524   // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_pd
6525   // CHECK: @llvm.x86.avx512.mask.cvtps2pd.512
6526   return _mm512_maskz_cvt_roundps_pd(__U, __A, _MM_FROUND_CUR_DIRECTION); 
6527 }
6528
6529 __m512d test_mm512_cvtps_pd(__m256 __A) {
6530   // CHECK-LABEL: @test_mm512_cvtps_pd
6531   // CHECK: @llvm.x86.avx512.mask.cvtps2pd.512
6532   return _mm512_cvtps_pd(__A); 
6533 }
6534
6535 __m512d test_mm512_cvtpslo_pd(__m512 __A) {
6536   // CHECK-LABEL: @test_mm512_cvtpslo_pd
6537   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
6538   // CHECK: @llvm.x86.avx512.mask.cvtps2pd.512
6539   return _mm512_cvtpslo_pd(__A);
6540 }
6541
6542 __m512d test_mm512_mask_cvtps_pd(__m512d __W, __mmask8 __U, __m256 __A) {
6543   // CHECK-LABEL: @test_mm512_mask_cvtps_pd
6544   // CHECK: @llvm.x86.avx512.mask.cvtps2pd.512
6545   return _mm512_mask_cvtps_pd(__W, __U, __A); 
6546 }
6547
6548 __m512d test_mm512_mask_cvtpslo_pd(__m512d __W, __mmask8 __U, __m512 __A) {
6549   // CHECK-LABEL: @test_mm512_mask_cvtpslo_pd
6550   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
6551   // CHECK: @llvm.x86.avx512.mask.cvtps2pd.512
6552   return _mm512_mask_cvtpslo_pd(__W, __U, __A);
6553 }
6554
6555 __m512d test_mm512_maskz_cvtps_pd(__mmask8 __U, __m256 __A) {
6556   // CHECK-LABEL: @test_mm512_maskz_cvtps_pd
6557   // CHECK: @llvm.x86.avx512.mask.cvtps2pd.512
6558   return _mm512_maskz_cvtps_pd(__U, __A); 
6559 }
6560 __m512d test_mm512_mask_mov_pd(__m512d __W, __mmask8 __U, __m512d __A) {
6561   // CHECK-LABEL: @test_mm512_mask_mov_pd
6562   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6563   return _mm512_mask_mov_pd(__W, __U, __A); 
6564 }
6565
6566 __m512d test_mm512_maskz_mov_pd(__mmask8 __U, __m512d __A) {
6567   // CHECK-LABEL: @test_mm512_maskz_mov_pd
6568   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6569   return _mm512_maskz_mov_pd(__U, __A); 
6570 }
6571
6572 __m512 test_mm512_mask_mov_ps(__m512 __W, __mmask16 __U, __m512 __A) {
6573   // CHECK-LABEL: @test_mm512_mask_mov_ps
6574   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6575   return _mm512_mask_mov_ps(__W, __U, __A); 
6576 }
6577
6578 __m512 test_mm512_maskz_mov_ps(__mmask16 __U, __m512 __A) {
6579   // CHECK-LABEL: @test_mm512_maskz_mov_ps
6580   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6581   return _mm512_maskz_mov_ps(__U, __A); 
6582 }
6583
6584 void test_mm512_mask_compressstoreu_pd(void *__P, __mmask8 __U, __m512d __A) {
6585   // CHECK-LABEL: @test_mm512_mask_compressstoreu_pd
6586   // CHECK: @llvm.x86.avx512.mask.compress.store.pd.512
6587   return _mm512_mask_compressstoreu_pd(__P, __U, __A); 
6588 }
6589
6590 void test_mm512_mask_compressstoreu_epi64(void *__P, __mmask8 __U, __m512i __A) {
6591   // CHECK-LABEL: @test_mm512_mask_compressstoreu_epi64
6592   // CHECK: @llvm.x86.avx512.mask.compress.store.q.512
6593   return _mm512_mask_compressstoreu_epi64(__P, __U, __A); 
6594 }
6595
6596 void test_mm512_mask_compressstoreu_ps(void *__P, __mmask16 __U, __m512 __A) {
6597   // CHECK-LABEL: @test_mm512_mask_compressstoreu_ps
6598   // CHECK: @llvm.x86.avx512.mask.compress.store.ps.512
6599   return _mm512_mask_compressstoreu_ps(__P, __U, __A); 
6600 }
6601
6602 void test_mm512_mask_compressstoreu_epi32(void *__P, __mmask16 __U, __m512i __A) {
6603   // CHECK-LABEL: @test_mm512_mask_compressstoreu_epi32
6604   // CHECK: @llvm.x86.avx512.mask.compress.store.d.512
6605   return _mm512_mask_compressstoreu_epi32(__P, __U, __A); 
6606 }
6607
6608 __m256i test_mm512_cvtt_roundpd_epu32(__m512d __A) {
6609   // CHECK-LABEL: @test_mm512_cvtt_roundpd_epu32
6610   // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
6611   return _mm512_cvtt_roundpd_epu32(__A, _MM_FROUND_CUR_DIRECTION); 
6612 }
6613
6614 __m256i test_mm512_mask_cvtt_roundpd_epu32(__m256i __W, __mmask8 __U, __m512d __A) {
6615   // CHECK-LABEL: @test_mm512_mask_cvtt_roundpd_epu32
6616   // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
6617   return _mm512_mask_cvtt_roundpd_epu32(__W, __U, __A, _MM_FROUND_CUR_DIRECTION); 
6618 }
6619
6620 __m256i test_mm512_maskz_cvtt_roundpd_epu32(__mmask8 __U, __m512d __A) {
6621   // CHECK-LABEL: @test_mm512_maskz_cvtt_roundpd_epu32
6622   // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
6623   return _mm512_maskz_cvtt_roundpd_epu32(__U, __A, _MM_FROUND_CUR_DIRECTION); 
6624 }
6625
6626 __m256i test_mm512_cvttpd_epu32(__m512d __A) {
6627   // CHECK-LABEL: @test_mm512_cvttpd_epu32
6628   // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
6629   return _mm512_cvttpd_epu32(__A); 
6630 }
6631
6632 __m256i test_mm512_mask_cvttpd_epu32(__m256i __W, __mmask8 __U, __m512d __A) {
6633   // CHECK-LABEL: @test_mm512_mask_cvttpd_epu32
6634   // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
6635   return _mm512_mask_cvttpd_epu32(__W, __U, __A); 
6636 }
6637
6638 __m256i test_mm512_maskz_cvttpd_epu32(__mmask8 __U, __m512d __A) {
6639   // CHECK-LABEL: @test_mm512_maskz_cvttpd_epu32
6640   // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
6641   return _mm512_maskz_cvttpd_epu32(__U, __A); 
6642 }
6643
6644 __m512 test_mm512_castpd_ps (__m512d __A)
6645 {
6646   // CHECK-LABEL: @test_mm512_castpd_ps 
6647   // CHECK: bitcast <8 x double> %{{.}} to <16 x float>
6648   return _mm512_castpd_ps (__A);
6649 }
6650
6651 __m512d test_mm512_castps_pd (__m512 __A)
6652 {
6653   // CHECK-LABEL: @test_mm512_castps_pd 
6654   // CHECK: bitcast <16 x float> %{{.}} to <8 x double>
6655   return _mm512_castps_pd (__A);
6656 }
6657
6658 __m512i test_mm512_castpd_si512 (__m512d __A)
6659 {
6660   // CHECK-LABEL: @test_mm512_castpd_si512 
6661   // CHECK: bitcast <8 x double> %{{.}} to <8 x i64>
6662   return _mm512_castpd_si512 (__A);
6663 }
6664
6665 __m512 test_mm512_castps128_ps512(__m128 __A) {
6666   // CHECK-LABEL: @test_mm512_castps128_ps512
6667   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
6668   return _mm512_castps128_ps512(__A); 
6669 }
6670
6671 __m512d test_mm512_castpd128_pd512(__m128d __A) {
6672   // CHECK-LABEL: @test_mm512_castpd128_pd512
6673   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
6674   return _mm512_castpd128_pd512(__A); 
6675 }
6676
6677 __m512d test_mm512_set1_epi8(char d)
6678 {
6679   // CHECK-LABEL: @test_mm512_set1_epi8
6680   // CHECK: insertelement <64 x i8> {{.*}}, i32 0
6681   // CHECK: insertelement <64 x i8> {{.*}}, i32 1
6682   // CHECK: insertelement <64 x i8> {{.*}}, i32 2
6683   // CHECK: insertelement <64 x i8> {{.*}}, i32 3
6684   // CHECK: insertelement <64 x i8> {{.*}}, i32 4
6685   // CHECK: insertelement <64 x i8> {{.*}}, i32 5
6686   // CHECK: insertelement <64 x i8> {{.*}}, i32 6
6687   // CHECK: insertelement <64 x i8> {{.*}}, i32 7
6688   // CHECK: insertelement <64 x i8> {{.*}}, i32 63
6689   return _mm512_set1_epi8(d);
6690 }
6691
6692 __m512d test_mm512_set1_epi16(short d)
6693 {
6694   // CHECK-LABEL: @test_mm512_set1_epi16
6695   // CHECK: insertelement <32 x i16> {{.*}}, i32 0
6696   // CHECK: insertelement <32 x i16> {{.*}}, i32 1
6697   // CHECK: insertelement <32 x i16> {{.*}}, i32 2
6698   // CHECK: insertelement <32 x i16> {{.*}}, i32 3
6699   // CHECK: insertelement <32 x i16> {{.*}}, i32 4
6700   // CHECK: insertelement <32 x i16> {{.*}}, i32 5
6701   // CHECK: insertelement <32 x i16> {{.*}}, i32 6
6702   // CHECK: insertelement <32 x i16> {{.*}}, i32 7
6703   // CHECK: insertelement <32 x i16> {{.*}}, i32 31
6704   return _mm512_set1_epi16(d);
6705 }
6706
6707 __m512i test_mm512_set4_epi32 (int __A, int __B, int __C, int __D)
6708 {
6709   // CHECK-LABEL: @test_mm512_set4_epi32 
6710   // CHECK: insertelement <16 x i32> {{.*}}, i32 15
6711   return _mm512_set4_epi32 (__A,__B,__C,__D);
6712 }
6713
6714 __m512i test_mm512_set4_epi64 (long long __A, long long __B, long long __C, long long __D)
6715 {
6716   // CHECK-LABEL: @test_mm512_set4_epi64 
6717   // CHECK: insertelement <8 x i64> {{.*}}, i32 7
6718   return _mm512_set4_epi64 (__A,__B,__C,__D);
6719 }
6720
6721 __m512d test_mm512_set4_pd (double __A, double __B, double __C, double __D)
6722 {
6723   // CHECK-LABEL: @test_mm512_set4_pd 
6724   // CHECK: insertelement <8 x double> {{.*}}, i32 7
6725   return _mm512_set4_pd (__A,__B,__C,__D);
6726 }
6727
6728 __m512 test_mm512_set4_ps (float __A, float __B, float __C, float __D)
6729 {
6730   // CHECK-LABEL: @test_mm512_set4_ps 
6731   // CHECK: insertelement <16 x float> {{.*}}, i32 15
6732   return _mm512_set4_ps (__A,__B,__C,__D);
6733 }
6734
6735 __m512i test_mm512_setr4_epi32(int e0, int e1, int e2, int e3)
6736 {
6737   // CHECK-LABEL: @test_mm512_setr4_epi32
6738   // CHECK: insertelement <16 x i32> {{.*}}, i32 15
6739   return _mm512_setr4_epi32(e0, e1, e2, e3);
6740 }
6741
6742  __m512i test_mm512_setr4_epi64(long long e0, long long e1, long long e2, long long e3)
6743 {
6744   // CHECK-LABEL: @test_mm512_setr4_epi64
6745   // CHECK: insertelement <8 x i64> {{.*}}, i32 7
6746   return _mm512_setr4_epi64(e0, e1, e2, e3);
6747 }
6748
6749 __m512i test_mm512_setr4_pd(double e0, double e1, double e2, double e3)
6750 {
6751   // CHECK-LABEL: @test_mm512_setr4_pd
6752   // CHECK: insertelement <8 x double> {{.*}}, i32 7
6753   return _mm512_setr4_pd(e0,e1,e2,e3);
6754 }
6755
6756  __m512i test_mm512_setr4_ps(float e0, float e1, float e2, float e3)
6757 {
6758   // CHECK-LABEL: @test_mm512_setr4_ps
6759   // CHECK: insertelement <16 x float> {{.*}}, i32 15
6760   return _mm512_setr4_ps(e0,e1,e2,e3);
6761 }
6762
6763 __m512d test_mm512_castpd256_pd512(__m256d a)
6764 {
6765   // CHECK-LABEL: @test_mm512_castpd256_pd512
6766   // CHECK: shufflevector <4 x double> {{.*}} <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef>
6767   return _mm512_castpd256_pd512(a);
6768 }
6769
6770 __m256d test_mm512_castpd512_pd256 (__m512d __A)
6771 {
6772   // CHECK-LABEL: @test_mm512_castpd512_pd256 
6773   // CHECK: shufflevector <8 x double> %{{.}}, <8 x double> %{{.}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
6774   return _mm512_castpd512_pd256 (__A);
6775 }
6776
6777 __m256 test_mm512_castps512_ps256 (__m512 __A)
6778 {
6779   // CHECK-LABEL: @test_mm512_castps512_ps256 
6780   // CHECK: shufflevector <16 x float> %{{.}}, <16 x float> %{{.}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
6781   return _mm512_castps512_ps256 (__A);
6782 }
6783
6784 __m512i test_mm512_castps_si512 (__m512 __A)
6785 {
6786   // CHECK-LABEL: @test_mm512_castps_si512 
6787   // CHECK: bitcast <16 x float> %{{.}} to <8 x i64>
6788   return _mm512_castps_si512 (__A);
6789 }
6790 __m512i test_mm512_castsi128_si512(__m128i __A) {
6791   // CHECK-LABEL: @test_mm512_castsi128_si512
6792   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
6793   return _mm512_castsi128_si512(__A); 
6794 }
6795
6796 __m512i test_mm512_castsi256_si512(__m256i __A) {
6797   // CHECK-LABEL: @test_mm512_castsi256_si512
6798   // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef>
6799   return _mm512_castsi256_si512(__A); 
6800 }
6801
6802 __m512 test_mm512_castsi512_ps (__m512i __A)
6803 {
6804   // CHECK-LABEL: @test_mm512_castsi512_ps 
6805   // CHECK: bitcast <8 x i64> %{{.}} to <16 x float>
6806   return _mm512_castsi512_ps (__A);
6807 }
6808
6809 __m512d test_mm512_castsi512_pd (__m512i __A)
6810 {
6811   // CHECK-LABEL: @test_mm512_castsi512_pd 
6812   // CHECK: bitcast <8 x i64> %{{.}} to <8 x double>
6813   return _mm512_castsi512_pd (__A);
6814 }
6815
6816 __m128i test_mm512_castsi512_si128 (__m512i __A)
6817 {
6818   // CHECK-LABEL: @test_mm512_castsi512_si128 
6819   // CHECK: shufflevector <8 x i64> %{{.}}, <8 x i64> %{{.}}, <2 x i32> <i32 0, i32 1>
6820   return _mm512_castsi512_si128 (__A);
6821 }
6822
6823 __m256i test_mm512_castsi512_si256 (__m512i __A)
6824 {
6825   // CHECK-LABEL: @test_mm512_castsi512_si256 
6826   // CHECK: shufflevector <8 x i64> %{{.}}, <8 x i64> %{{.}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
6827   return _mm512_castsi512_si256 (__A);
6828 }
6829
6830 __m128 test_mm_cvt_roundsd_ss(__m128 __A, __m128d __B) {
6831   // CHECK-LABEL: @test_mm_cvt_roundsd_ss
6832   // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round
6833   return _mm_cvt_roundsd_ss(__A, __B, _MM_FROUND_CUR_DIRECTION); 
6834 }
6835
6836 __m128 test_mm_mask_cvt_roundsd_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128d __B) {
6837   // CHECK-LABEL: @test_mm_mask_cvt_roundsd_ss
6838   // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round
6839   return _mm_mask_cvt_roundsd_ss(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION); 
6840 }
6841
6842 __m128 test_mm_maskz_cvt_roundsd_ss(__mmask8 __U, __m128 __A, __m128d __B) {
6843   // CHECK-LABEL: @test_mm_maskz_cvt_roundsd_ss
6844   // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round
6845   return _mm_maskz_cvt_roundsd_ss(__U, __A, __B, _MM_FROUND_CUR_DIRECTION); 
6846 }
6847
6848 #ifdef __x86_64__
6849 __m128d test_mm_cvt_roundi64_sd(__m128d __A, long long __B) {
6850   // CHECK-LABEL: @test_mm_cvt_roundi64_sd
6851   // CHECK: @llvm.x86.avx512.cvtsi2sd64
6852   return _mm_cvt_roundi64_sd(__A, __B, _MM_FROUND_CUR_DIRECTION); 
6853 }
6854
6855 __m128d test_mm_cvt_roundsi64_sd(__m128d __A, long long __B) {
6856   // CHECK-LABEL: @test_mm_cvt_roundsi64_sd
6857   // CHECK: @llvm.x86.avx512.cvtsi2sd64
6858   return _mm_cvt_roundsi64_sd(__A, __B, _MM_FROUND_CUR_DIRECTION); 
6859 }
6860 #endif
6861
6862 __m128 test_mm_cvt_roundsi32_ss(__m128 __A, int __B) {
6863   // CHECK-LABEL: @test_mm_cvt_roundsi32_ss
6864   // CHECK: @llvm.x86.avx512.cvtsi2ss32
6865   return _mm_cvt_roundsi32_ss(__A, __B, _MM_FROUND_CUR_DIRECTION); 
6866 }
6867
6868 __m128 test_mm_cvt_roundi32_ss(__m128 __A, int __B) {
6869   // CHECK-LABEL: @test_mm_cvt_roundi32_ss
6870   // CHECK: @llvm.x86.avx512.cvtsi2ss32
6871   return _mm_cvt_roundi32_ss(__A, __B, _MM_FROUND_CUR_DIRECTION); 
6872 }
6873
6874 #ifdef __x86_64__
6875 __m128 test_mm_cvt_roundsi64_ss(__m128 __A, long long __B) {
6876   // CHECK-LABEL: @test_mm_cvt_roundsi64_ss
6877   // CHECK: @llvm.x86.avx512.cvtsi2ss64
6878   return _mm_cvt_roundsi64_ss(__A, __B, _MM_FROUND_CUR_DIRECTION); 
6879 }
6880
6881 __m128 test_mm_cvt_roundi64_ss(__m128 __A, long long __B) {
6882   // CHECK-LABEL: @test_mm_cvt_roundi64_ss
6883   // CHECK: @llvm.x86.avx512.cvtsi2ss64
6884   return _mm_cvt_roundi64_ss(__A, __B, _MM_FROUND_CUR_DIRECTION); 
6885 }
6886 #endif
6887
6888 __m128d test_mm_cvt_roundss_sd(__m128d __A, __m128 __B) {
6889   // CHECK-LABEL: @test_mm_cvt_roundss_sd
6890   // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round
6891   return _mm_cvt_roundss_sd(__A, __B, _MM_FROUND_CUR_DIRECTION); 
6892 }
6893
6894 __m128d test_mm_mask_cvt_roundss_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128 __B) {
6895   // CHECK-LABEL: @test_mm_mask_cvt_roundss_sd
6896   // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round
6897   return _mm_mask_cvt_roundss_sd(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION); 
6898 }
6899
6900 __m128d test_mm_maskz_cvt_roundss_sd( __mmask8 __U, __m128d __A, __m128 __B) {
6901   // CHECK-LABEL: @test_mm_maskz_cvt_roundss_sd
6902   // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round
6903   return _mm_maskz_cvt_roundss_sd( __U, __A, __B, _MM_FROUND_CUR_DIRECTION); 
6904 }
6905
6906 __m128d test_mm_cvtu32_sd(__m128d __A, unsigned __B) {
6907   // CHECK-LABEL: @test_mm_cvtu32_sd
6908   // CHECK: @llvm.x86.avx512.cvtusi2sd
6909   return _mm_cvtu32_sd(__A, __B); 
6910 }
6911
6912 #ifdef __x86_64__
6913 __m128d test_mm_cvt_roundu64_sd(__m128d __A, unsigned long long __B) {
6914   // CHECK-LABEL: @test_mm_cvt_roundu64_sd
6915   // CHECK: @llvm.x86.avx512.cvtusi642sd
6916   return _mm_cvt_roundu64_sd(__A, __B, _MM_FROUND_CUR_DIRECTION); 
6917 }
6918
6919 __m128d test_mm_cvtu64_sd(__m128d __A, unsigned long long __B) {
6920   // CHECK-LABEL: @test_mm_cvtu64_sd
6921   // CHECK: @llvm.x86.avx512.cvtusi642sd
6922   return _mm_cvtu64_sd(__A, __B); 
6923 }
6924 #endif
6925
6926 __m128 test_mm_cvt_roundu32_ss(__m128 __A, unsigned __B) {
6927   // CHECK-LABEL: @test_mm_cvt_roundu32_ss
6928   // CHECK: @llvm.x86.avx512.cvtusi2ss
6929   return _mm_cvt_roundu32_ss(__A, __B, _MM_FROUND_CUR_DIRECTION); 
6930 }
6931
6932 __m128 test_mm_cvtu32_ss(__m128 __A, unsigned __B) {
6933   // CHECK-LABEL: @test_mm_cvtu32_ss
6934   // CHECK: @llvm.x86.avx512.cvtusi2ss
6935   return _mm_cvtu32_ss(__A, __B); 
6936 }
6937
6938 #ifdef __x86_64__
6939 __m128 test_mm_cvt_roundu64_ss(__m128 __A, unsigned long long __B) {
6940   // CHECK-LABEL: @test_mm_cvt_roundu64_ss
6941   // CHECK: @llvm.x86.avx512.cvtusi642ss
6942     return _mm_cvt_roundu64_ss(__A, __B, _MM_FROUND_CUR_DIRECTION); 
6943 }
6944
6945 __m128 test_mm_cvtu64_ss(__m128 __A, unsigned long long __B) {
6946   // CHECK-LABEL: @test_mm_cvtu64_ss
6947   // CHECK: @llvm.x86.avx512.cvtusi642ss
6948   return _mm_cvtu64_ss(__A, __B); 
6949 }
6950 #endif
6951
6952 __m512i test_mm512_mask_cvttps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
6953 {
6954   // CHECK-LABEL: @test_mm512_mask_cvttps_epu32 
6955   // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512
6956   return _mm512_mask_cvttps_epu32 (__W,__U,__A);
6957 }
6958
6959 __m512i test_mm512_maskz_cvttps_epu32 (__mmask16 __U, __m512 __A)
6960 {
6961   // CHECK-LABEL: @test_mm512_maskz_cvttps_epu32 
6962   // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512
6963   return _mm512_maskz_cvttps_epu32 (__U,__A);
6964 }
6965
6966 __m512 test_mm512_cvtepu32_ps (__m512i __A)
6967 {
6968   // CHECK-LABEL: @test_mm512_cvtepu32_ps 
6969   // CHECK:  @llvm.x86.avx512.mask.cvtudq2ps.512
6970   return _mm512_cvtepu32_ps (__A);
6971 }
6972
6973 __m512 test_mm512_mask_cvtepu32_ps (__m512 __W, __mmask16 __U, __m512i __A)
6974 {
6975   // CHECK-LABEL: @test_mm512_mask_cvtepu32_ps 
6976   // CHECK: @llvm.x86.avx512.mask.cvtudq2ps.512
6977   return _mm512_mask_cvtepu32_ps (__W,__U,__A);
6978 }
6979
6980 __m512 test_mm512_maskz_cvtepu32_ps (__mmask16 __U, __m512i __A)
6981 {
6982   // CHECK-LABEL: @test_mm512_maskz_cvtepu32_ps 
6983   // CHECK: @llvm.x86.avx512.mask.cvtudq2ps.512
6984   return _mm512_maskz_cvtepu32_ps (__U,__A);
6985 }
6986
6987 __m512d test_mm512_cvtepi32_pd (__m256i __A)
6988 {
6989   // CHECK-LABEL: @test_mm512_cvtepi32_pd
6990   // CHECK: sitofp <8 x i32> %{{.*}} to <8 x double>
6991   return _mm512_cvtepi32_pd (__A);
6992 }
6993
6994 __m512d test_mm512_mask_cvtepi32_pd (__m512d __W, __mmask8 __U, __m256i __A)
6995 {
6996   // CHECK-LABEL: @test_mm512_mask_cvtepi32_pd
6997   // CHECK: sitofp <8 x i32> %{{.*}} to <8 x double>
6998   // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
6999   return _mm512_mask_cvtepi32_pd (__W,__U,__A);
7000 }
7001
7002 __m512d test_mm512_maskz_cvtepi32_pd (__mmask8 __U, __m256i __A)
7003 {
7004   // CHECK-LABEL: @test_mm512_maskz_cvtepi32_pd
7005   // CHECK: sitofp <8 x i32> %{{.*}} to <8 x double>
7006   // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
7007   return _mm512_maskz_cvtepi32_pd (__U,__A);
7008 }
7009
7010 __m512d test_mm512_cvtepi32lo_pd (__m512i __A)
7011 {
7012   // CHECK-LABEL: @test_mm512_cvtepi32lo_pd
7013   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
7014   // CHECK: sitofp <8 x i32> %{{.*}} to <8 x double>
7015   return _mm512_cvtepi32lo_pd (__A);
7016 }
7017
7018 __m512d test_mm512_mask_cvtepi32lo_pd (__m512d __W, __mmask8 __U, __m512i __A)
7019 {
7020   // CHECK-LABEL: @test_mm512_mask_cvtepi32lo_pd
7021   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
7022   // CHECK: sitofp <8 x i32> %{{.*}} to <8 x double>
7023   // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
7024   return _mm512_mask_cvtepi32lo_pd (__W, __U, __A);
7025 }
7026
7027 __m512 test_mm512_cvtepi32_ps (__m512i __A)
7028 {
7029   // CHECK-LABEL: @test_mm512_cvtepi32_ps 
7030   // CHECK:  @llvm.x86.avx512.mask.cvtdq2ps.512
7031   return _mm512_cvtepi32_ps (__A);
7032 }
7033
7034 __m512 test_mm512_mask_cvtepi32_ps (__m512 __W, __mmask16 __U, __m512i __A)
7035 {
7036   // CHECK-LABEL: @test_mm512_mask_cvtepi32_ps 
7037   // CHECK: @llvm.x86.avx512.mask.cvtdq2ps.512
7038   return _mm512_mask_cvtepi32_ps (__W,__U,__A);
7039 }
7040
7041 __m512 test_mm512_maskz_cvtepi32_ps (__mmask16 __U, __m512i __A)
7042 {
7043   // CHECK-LABEL: @test_mm512_maskz_cvtepi32_ps 
7044   // CHECK: @llvm.x86.avx512.mask.cvtdq2ps.512
7045   return _mm512_maskz_cvtepi32_ps (__U,__A);
7046 }
7047
7048 __m512d test_mm512_cvtepu32_pd(__m256i __A)
7049 {
7050   // CHECK-LABEL: @test_mm512_cvtepu32_pd
7051   // CHECK: uitofp <8 x i32> %{{.*}} to <8 x double>
7052   return _mm512_cvtepu32_pd(__A);
7053 }
7054
7055 __m512d test_mm512_mask_cvtepu32_pd (__m512d __W, __mmask8 __U, __m256i __A)
7056 {
7057   // CHECK-LABEL: @test_mm512_mask_cvtepu32_pd
7058   // CHECK: uitofp <8 x i32> %{{.*}} to <8 x double>
7059   // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
7060   return _mm512_mask_cvtepu32_pd (__W,__U,__A);
7061 }
7062
7063 __m512d test_mm512_maskz_cvtepu32_pd (__mmask8 __U, __m256i __A)
7064 {
7065   // CHECK-LABEL: @test_mm512_maskz_cvtepu32_pd
7066   // CHECK: uitofp <8 x i32> %{{.*}} to <8 x double>
7067   // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
7068   return _mm512_maskz_cvtepu32_pd (__U,__A);
7069 }
7070
7071 __m512d test_mm512_cvtepu32lo_pd (__m512i __A)
7072 {
7073   // CHECK-LABEL: @test_mm512_cvtepu32lo_pd
7074   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
7075   // CHECK: uitofp <8 x i32> %{{.*}} to <8 x double>
7076   return _mm512_cvtepu32lo_pd (__A);
7077 }
7078
7079 __m512d test_mm512_mask_cvtepu32lo_pd (__m512d __W, __mmask8 __U, __m512i __A)
7080 {
7081   // CHECK-LABEL: @test_mm512_mask_cvtepu32lo_pd
7082   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
7083   // CHECK: uitofp <8 x i32> %{{.*}} to <8 x double>
7084   // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
7085   return _mm512_mask_cvtepu32lo_pd (__W, __U, __A);
7086 }
7087
7088 __m256 test_mm512_cvtpd_ps (__m512d __A)
7089 {
7090   // CHECK-LABEL: @test_mm512_cvtpd_ps 
7091   // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
7092   return _mm512_cvtpd_ps (__A);
7093 }
7094
7095 __m256 test_mm512_mask_cvtpd_ps (__m256 __W, __mmask8 __U, __m512d __A)
7096 {
7097   // CHECK-LABEL: @test_mm512_mask_cvtpd_ps 
7098   // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
7099   return _mm512_mask_cvtpd_ps (__W,__U,__A);
7100 }
7101
7102 __m512d test_mm512_cvtpd_pslo(__m512 __A) 
7103 {
7104   // CHECK-LABEL: @test_mm512_cvtpd_pslo
7105   // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
7106   // CHECK: zeroinitializer
7107   // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <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>
7108   return _mm512_cvtpd_pslo(__A);
7109 }
7110
7111 __m512d test_mm512_mask_cvtpd_pslo(__m512 __W, __mmask8 __U, __m512d __A) {
7112   // CHECK-LABEL: @test_mm512_mask_cvtpd_pslo
7113   // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
7114   // CHECK: zeroinitializer
7115   // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <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>
7116   return _mm512_mask_cvtpd_pslo(__W, __U, __A);
7117 }
7118
7119 __m256 test_mm512_maskz_cvtpd_ps (__mmask8 __U, __m512d __A)
7120 {
7121   // CHECK-LABEL: @test_mm512_maskz_cvtpd_ps 
7122   // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
7123   return _mm512_maskz_cvtpd_ps (__U,__A);
7124 }
7125
7126 __m512 test_mm512_mask_cvtph_ps (__m512 __W, __mmask16 __U, __m256i __A)
7127 {
7128   // CHECK-LABEL: @test_mm512_mask_cvtph_ps 
7129   // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.512
7130   return _mm512_mask_cvtph_ps (__W,__U,__A);
7131 }
7132
7133 __m512 test_mm512_maskz_cvtph_ps (__mmask16 __U, __m256i __A)
7134 {
7135   // CHECK-LABEL: @test_mm512_maskz_cvtph_ps 
7136   // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.512
7137   return _mm512_maskz_cvtph_ps (__U,__A);
7138 }
7139
7140 __m256i test_mm512_mask_cvttpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
7141 {
7142   // CHECK-LABEL: @test_mm512_mask_cvttpd_epi32 
7143   // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.512
7144   return _mm512_mask_cvttpd_epi32 (__W,__U,__A);
7145 }
7146
7147 __m256i test_mm512_maskz_cvttpd_epi32 (__mmask8 __U, __m512d __A)
7148 {
7149   // CHECK-LABEL: @test_mm512_maskz_cvttpd_epi32 
7150   // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.512
7151   return _mm512_maskz_cvttpd_epi32 (__U,__A);
7152 }
7153
7154 __m512i test_mm512_mask_cvttps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
7155 {
7156   // CHECK-LABEL: @test_mm512_mask_cvttps_epi32 
7157   // CHECK: @llvm.x86.avx512.mask.cvttps2dq.512
7158   return _mm512_mask_cvttps_epi32 (__W,__U,__A);
7159 }
7160
7161 __m512i test_mm512_maskz_cvttps_epi32 (__mmask16 __U, __m512 __A)
7162 {
7163   // CHECK-LABEL: @test_mm512_maskz_cvttps_epi32 
7164   // CHECK: @llvm.x86.avx512.mask.cvttps2dq.512
7165   return _mm512_maskz_cvttps_epi32 (__U,__A);
7166 }
7167
7168 __m512i test_mm512_cvtps_epi32 (__m512 __A)
7169 {
7170   // CHECK-LABEL: @test_mm512_cvtps_epi32 
7171   // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512
7172   return _mm512_cvtps_epi32 (__A);
7173 }
7174
7175 __m512i test_mm512_mask_cvtps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
7176 {
7177   // CHECK-LABEL: @test_mm512_mask_cvtps_epi32 
7178   // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512
7179   return _mm512_mask_cvtps_epi32 (__W,__U,__A);
7180 }
7181
7182 __m512i test_mm512_maskz_cvtps_epi32 (__mmask16 __U, __m512 __A)
7183 {
7184   // CHECK-LABEL: @test_mm512_maskz_cvtps_epi32 
7185   // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512
7186   return _mm512_maskz_cvtps_epi32 (__U,__A);
7187 }
7188
7189 __m256i test_mm512_cvtpd_epi32 (__m512d __A)
7190 {
7191   // CHECK-LABEL: @test_mm512_cvtpd_epi32 
7192   // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512
7193   return _mm512_cvtpd_epi32 (__A);
7194 }
7195
7196 __m256i test_mm512_mask_cvtpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
7197 {
7198   // CHECK-LABEL: @test_mm512_mask_cvtpd_epi32 
7199   // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512
7200   return _mm512_mask_cvtpd_epi32 (__W,__U,__A);
7201 }
7202
7203 __m256i test_mm512_maskz_cvtpd_epi32 (__mmask8 __U, __m512d __A)
7204 {
7205   // CHECK-LABEL: @test_mm512_maskz_cvtpd_epi32 
7206   // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512
7207   return _mm512_maskz_cvtpd_epi32 (__U,__A);
7208 }
7209
7210 __m256i test_mm512_cvtpd_epu32 (__m512d __A)
7211 {
7212   // CHECK-LABEL: @test_mm512_cvtpd_epu32 
7213   // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512
7214   return _mm512_cvtpd_epu32 (__A);
7215 }
7216
7217 __m256i test_mm512_mask_cvtpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
7218 {
7219   // CHECK-LABEL: @test_mm512_mask_cvtpd_epu32 
7220   // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512
7221   return _mm512_mask_cvtpd_epu32 (__W,__U,__A);
7222 }
7223
7224 __m256i test_mm512_maskz_cvtpd_epu32 (__mmask8 __U, __m512d __A)
7225 {
7226   // CHECK-LABEL: @test_mm512_maskz_cvtpd_epu32 
7227   // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512
7228   return _mm512_maskz_cvtpd_epu32 (__U,__A);
7229 }
7230
7231 __m256i test_mm512_mask_cvtps_ph(__m256i src, __mmask16 k, __m512 a) 
7232 {
7233   // CHECK-LABEL: @test_mm512_mask_cvtps_ph
7234   // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512
7235   return _mm512_mask_cvtps_ph(src, k, a,_MM_FROUND_CUR_DIRECTION);
7236 }
7237
7238 __m256i test_mm512_maskz_cvtps_ph (__mmask16 k, __m512 a) 
7239 {
7240   // CHECK-LABEL: @test_mm512_maskz_cvtps_ph
7241   // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512
7242   return _mm512_maskz_cvtps_ph( k, a,_MM_FROUND_CUR_DIRECTION);
7243 }
7244
7245 __m512i test_mm512_cvtps_epu32 ( __m512 __A) 
7246 {
7247   // CHECK-LABEL: @test_mm512_cvtps_epu32
7248   // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512
7249   return _mm512_cvtps_epu32(__A);
7250 }
7251
7252 __m512i test_mm512_mask_cvtps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
7253 {
7254   // CHECK-LABEL: @test_mm512_mask_cvtps_epu32
7255   // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512
7256   return _mm512_mask_cvtps_epu32( __W, __U, __A);
7257 }
7258 __m512i test_mm512_maskz_cvtps_epu32 (__mmask16 __U, __m512 __A)
7259 {
7260   // CHECK-LABEL: @test_mm512_maskz_cvtps_epu32
7261   // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512
7262   return _mm512_maskz_cvtps_epu32( __U, __A);
7263 }
7264
7265 double test_mm512_cvtsd_f64(__m512d A) {
7266   // CHECK-LABEL: test_mm512_cvtsd_f64
7267   // CHECK: extractelement <8 x double> %{{.*}}, i32 0
7268   return _mm512_cvtsd_f64(A);
7269 }
7270
7271 float test_mm512_cvtss_f32(__m512 A) {
7272   // CHECK-LABEL: test_mm512_cvtss_f32
7273   // CHECK: extractelement <16 x float> %{{.*}}, i32 0
7274   return _mm512_cvtss_f32(A);
7275 }
7276
7277 __m512d test_mm512_mask_max_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
7278 {
7279   // CHECK-LABEL: @test_mm512_mask_max_pd 
7280   // CHECK: @llvm.x86.avx512.mask.max.pd.512
7281   return _mm512_mask_max_pd (__W,__U,__A,__B);
7282 }
7283
7284 __m512d test_mm512_maskz_max_pd (__mmask8 __U, __m512d __A, __m512d __B)
7285 {
7286   // CHECK-LABEL: @test_mm512_maskz_max_pd 
7287   // CHECK: @llvm.x86.avx512.mask.max.pd.512
7288   return _mm512_maskz_max_pd (__U,__A,__B);
7289 }
7290
7291 __m512 test_mm512_mask_max_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
7292 {
7293   // CHECK-LABEL: @test_mm512_mask_max_ps 
7294   // CHECK: @llvm.x86.avx512.mask.max.ps.512
7295   return _mm512_mask_max_ps (__W,__U,__A,__B);
7296 }
7297
7298 __m512d test_mm512_mask_max_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)
7299 {
7300   // CHECK-LABEL: @test_mm512_mask_max_round_pd
7301   // CHECK: @llvm.x86.avx512.mask.max.pd.512
7302   return _mm512_mask_max_round_pd(__W,__U,__A,__B,_MM_FROUND_CUR_DIRECTION);
7303 }
7304
7305 __m512d test_mm512_maskz_max_round_pd(__mmask8 __U,__m512d __A,__m512d __B)
7306 {
7307   // CHECK-LABEL: @test_mm512_maskz_max_round_pd
7308   // CHECK: @llvm.x86.avx512.mask.max.pd.512
7309   return _mm512_maskz_max_round_pd(__U,__A,__B,_MM_FROUND_CUR_DIRECTION);
7310 }
7311
7312 __m512d test_mm512_max_round_pd(__m512d __A,__m512d __B)
7313 {
7314   // CHECK-LABEL: @test_mm512_max_round_pd
7315   // CHECK: @llvm.x86.avx512.mask.max.pd.512
7316   return _mm512_max_round_pd(__A,__B,_MM_FROUND_CUR_DIRECTION);
7317 }
7318
7319 __m512 test_mm512_maskz_max_ps (__mmask16 __U, __m512 __A, __m512 __B)
7320 {
7321   // CHECK-LABEL: @test_mm512_maskz_max_ps 
7322   // CHECK: @llvm.x86.avx512.mask.max.ps.512
7323   return _mm512_maskz_max_ps (__U,__A,__B);
7324 }
7325
7326 __m512 test_mm512_mask_max_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)
7327 {
7328   // CHECK-LABEL: @test_mm512_mask_max_round_ps
7329   // CHECK: @llvm.x86.avx512.mask.max.ps.512
7330   return _mm512_mask_max_round_ps(__W,__U,__A,__B,_MM_FROUND_CUR_DIRECTION);
7331 }
7332
7333 __m512 test_mm512_maskz_max_round_ps(__mmask16 __U,__m512 __A,__m512 __B)
7334 {
7335   // CHECK-LABEL: @test_mm512_maskz_max_round_ps
7336   // CHECK: @llvm.x86.avx512.mask.max.ps.512
7337   return _mm512_maskz_max_round_ps(__U,__A,__B,_MM_FROUND_CUR_DIRECTION);
7338 }
7339
7340 __m512 test_mm512_max_round_ps(__m512 __A,__m512 __B)
7341 {
7342   // CHECK-LABEL: @test_mm512_max_round_ps
7343   // CHECK: @llvm.x86.avx512.mask.max.ps.512
7344   return _mm512_max_round_ps(__A,__B,_MM_FROUND_CUR_DIRECTION);
7345 }
7346
7347 __m512d test_mm512_mask_min_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
7348 {
7349   // CHECK-LABEL: @test_mm512_mask_min_pd 
7350   // CHECK: @llvm.x86.avx512.mask.min.pd.512
7351   return _mm512_mask_min_pd (__W,__U,__A,__B);
7352 }
7353
7354 __m512d test_mm512_maskz_min_pd (__mmask8 __U, __m512d __A, __m512d __B)
7355 {
7356   // CHECK-LABEL: @test_mm512_maskz_min_pd 
7357   // CHECK: @llvm.x86.avx512.mask.min.pd.512
7358   return _mm512_maskz_min_pd (__U,__A,__B);
7359 }
7360
7361 __m512d test_mm512_mask_min_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)
7362 {
7363   // CHECK-LABEL: @test_mm512_mask_min_round_pd
7364   // CHECK: @llvm.x86.avx512.mask.min.pd.512
7365   return _mm512_mask_min_round_pd(__W,__U,__A,__B,_MM_FROUND_CUR_DIRECTION);
7366 }
7367
7368 __m512d test_mm512_maskz_min_round_pd(__mmask8 __U,__m512d __A,__m512d __B)
7369 {
7370   // CHECK-LABEL: @test_mm512_maskz_min_round_pd
7371   // CHECK: @llvm.x86.avx512.mask.min.pd.512
7372   return _mm512_maskz_min_round_pd(__U,__A,__B,_MM_FROUND_CUR_DIRECTION);
7373 }
7374
7375 __m512d test_mm512_min_round_pd( __m512d __A,__m512d __B)
7376 {
7377   // CHECK-LABEL: @test_mm512_min_round_pd
7378   // CHECK: @llvm.x86.avx512.mask.min.pd.512
7379   return _mm512_min_round_pd(__A,__B,_MM_FROUND_CUR_DIRECTION);
7380 }
7381
7382 __m512 test_mm512_mask_min_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
7383 {
7384   // CHECK-LABEL: @test_mm512_mask_min_ps 
7385   // CHECK: @llvm.x86.avx512.mask.min.ps.512
7386   return _mm512_mask_min_ps (__W,__U,__A,__B);
7387 }
7388
7389 __m512 test_mm512_maskz_min_ps (__mmask16 __U, __m512 __A, __m512 __B)
7390 {
7391   // CHECK-LABEL: @test_mm512_maskz_min_ps 
7392   // CHECK: @llvm.x86.avx512.mask.min.ps.512
7393   return _mm512_maskz_min_ps (__U,__A,__B);
7394 }
7395
7396 __m512 test_mm512_mask_min_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)
7397 {
7398   // CHECK-LABEL: @test_mm512_mask_min_round_ps
7399   // CHECK: @llvm.x86.avx512.mask.min.ps.512
7400   return _mm512_mask_min_round_ps(__W,__U,__A,__B,_MM_FROUND_CUR_DIRECTION);
7401 }
7402
7403 __m512 test_mm512_maskz_min_round_ps(__mmask16 __U,__m512 __A,__m512 __B)
7404 {
7405   // CHECK-LABEL: @test_mm512_maskz_min_round_ps
7406   // CHECK: @llvm.x86.avx512.mask.min.ps.512
7407   return _mm512_maskz_min_round_ps(__U,__A,__B,_MM_FROUND_CUR_DIRECTION);
7408 }
7409
7410 __m512 test_mm512_min_round_ps(__m512 __A,__m512 __B)
7411 {
7412   // CHECK-LABEL: @test_mm512_min_round_ps
7413   // CHECK: @llvm.x86.avx512.mask.min.ps.512
7414   return _mm512_min_round_ps(__A,__B,_MM_FROUND_CUR_DIRECTION);
7415 }
7416
7417 __m512 test_mm512_mask_floor_ps (__m512 __W, __mmask16 __U, __m512 __A)
7418 {
7419   // CHECK-LABEL: @test_mm512_mask_floor_ps 
7420   // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
7421   return _mm512_mask_floor_ps (__W,__U,__A);
7422 }
7423
7424 __m512d test_mm512_mask_floor_pd (__m512d __W, __mmask8 __U, __m512d __A)
7425 {
7426   // CHECK-LABEL: @test_mm512_mask_floor_pd 
7427   // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
7428   return _mm512_mask_floor_pd (__W,__U,__A);
7429 }
7430
7431 __m512 test_mm512_mask_ceil_ps (__m512 __W, __mmask16 __U, __m512 __A)
7432 {
7433   // CHECK-LABEL: @test_mm512_mask_ceil_ps 
7434   // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
7435   return _mm512_mask_ceil_ps (__W,__U,__A);
7436 }
7437
7438 __m512d test_mm512_mask_ceil_pd (__m512d __W, __mmask8 __U, __m512d __A)
7439 {
7440   // CHECK-LABEL: @test_mm512_mask_ceil_pd 
7441   // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
7442   return _mm512_mask_ceil_pd (__W,__U,__A);
7443 }
7444
7445 __m512 test_mm512_mask_roundscale_ps(__m512 __W, __mmask16 __U, __m512 __A) 
7446 {
7447   // CHECK-LABEL: @test_mm512_mask_roundscale_ps
7448   // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
7449   return _mm512_mask_roundscale_ps(__W,__U,__A, 1);
7450 }
7451
7452 __m512 test_mm512_maskz_roundscale_ps(__mmask16 __U, __m512 __A) 
7453 {
7454   // CHECK-LABEL: @test_mm512_maskz_roundscale_ps
7455   // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
7456   return _mm512_maskz_roundscale_ps(__U,__A, 1);
7457 }
7458
7459 __m512 test_mm512_mask_roundscale_round_ps(__m512 __A,__mmask16 __U,__m512 __C)
7460 {
7461   // CHECK-LABEL: @test_mm512_mask_roundscale_round_ps
7462   // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
7463   return _mm512_mask_roundscale_round_ps(__A,__U,__C,3,_MM_FROUND_CUR_DIRECTION);
7464 }
7465
7466 __m512 test_mm512_maskz_roundscale_round_ps(__m512 __A,__mmask16 __U) 
7467 {
7468   // CHECK-LABEL: @test_mm512_maskz_roundscale_round_ps
7469   // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
7470   return _mm512_maskz_roundscale_round_ps(__U,__A,3,_MM_FROUND_CUR_DIRECTION);
7471 }
7472
7473 __m512 test_mm512_roundscale_round_ps(__m512 __A)
7474 {
7475   // CHECK-LABEL: @test_mm512_roundscale_round_ps
7476   // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
7477   return _mm512_roundscale_round_ps(__A,3,_MM_FROUND_CUR_DIRECTION);
7478 }
7479
7480 __m512d test_mm512_mask_roundscale_pd(__m512d __W, __mmask8 __U, __m512d __A) 
7481 {
7482   // CHECK-LABEL: @test_mm512_mask_roundscale_pd
7483   // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
7484   return _mm512_mask_roundscale_pd(__W,__U,__A, 1);
7485 }
7486
7487 __m512d test_mm512_maskz_roundscale_pd(__mmask8 __U, __m512d __A) 
7488 {
7489   // CHECK-LABEL: @test_mm512_maskz_roundscale_pd
7490   // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
7491   return _mm512_maskz_roundscale_pd(__U,__A, 1);
7492 }
7493
7494 __m512d test_mm512_mask_roundscale_round_pd(__m512d __A,__mmask8 __U,__m512d __C)
7495 {
7496   // CHECK-LABEL: @test_mm512_mask_roundscale_round_pd
7497   // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
7498   return _mm512_mask_roundscale_round_pd(__A,__U,__C,3,_MM_FROUND_CUR_DIRECTION);
7499 }
7500
7501 __m512d test_mm512_maskz_roundscale_round_pd(__m512d __A,__mmask8 __U)
7502 {
7503   // CHECK-LABEL: @test_mm512_maskz_roundscale_round_pd
7504   // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
7505   return _mm512_maskz_roundscale_round_pd(__U,__A,3,_MM_FROUND_CUR_DIRECTION);
7506 }
7507
7508 __m512d test_mm512_roundscale_round_pd(__m512d __A)
7509 {
7510   // CHECK-LABEL: @test_mm512_roundscale_round_pd
7511   // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
7512   return _mm512_roundscale_round_pd(__A,3,_MM_FROUND_CUR_DIRECTION);
7513 }
7514
7515 __m512i test_mm512_max_epi32 (__m512i __A, __m512i __B)
7516 {
7517   // CHECK-LABEL: @test_mm512_max_epi32 
7518   // CHECK:       [[CMP:%.*]] = icmp sgt <16 x i32> [[X:%.*]], [[Y:%.*]]
7519   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
7520   return _mm512_max_epi32 (__A,__B);
7521 }
7522
7523 __m512i test_mm512_mask_max_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
7524 {
7525   // CHECK-LABEL: @test_mm512_mask_max_epi32 
7526   // CHECK:       [[CMP:%.*]] = icmp sgt <16 x i32> [[X:%.*]], [[Y:%.*]]
7527   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
7528   // CHECK:       select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
7529   return _mm512_mask_max_epi32 (__W,__M,__A,__B);
7530 }
7531
7532 __m512i test_mm512_maskz_max_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
7533 {
7534   // CHECK-LABEL: @test_mm512_maskz_max_epi32 
7535   // CHECK:       [[CMP:%.*]] = icmp sgt <16 x i32> [[X:%.*]], [[Y:%.*]]
7536   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
7537   // CHECK:       select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
7538   return _mm512_maskz_max_epi32 (__M,__A,__B);
7539 }
7540
7541 __m512i test_mm512_max_epi64 (__m512i __A, __m512i __B)
7542 {
7543   // CHECK-LABEL: @test_mm512_max_epi64 
7544   // CHECK:       [[CMP:%.*]] = icmp sgt <8 x i64> [[X:%.*]], [[Y:%.*]]
7545   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
7546   return _mm512_max_epi64 (__A,__B);
7547 }
7548
7549 __m512i test_mm512_mask_max_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
7550 {
7551   // CHECK-LABEL: @test_mm512_mask_max_epi64 
7552   // CHECK:       [[CMP:%.*]] = icmp sgt <8 x i64> [[X:%.*]], [[Y:%.*]]
7553   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
7554   // CHECK:       select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
7555   return _mm512_mask_max_epi64 (__W,__M,__A,__B);
7556 }
7557
7558 __m512i test_mm512_maskz_max_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
7559 {
7560   // CHECK-LABEL: @test_mm512_maskz_max_epi64 
7561   // CHECK:       [[CMP:%.*]] = icmp sgt <8 x i64> [[X:%.*]], [[Y:%.*]]
7562   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
7563   // CHECK:       select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
7564   return _mm512_maskz_max_epi64 (__M,__A,__B);
7565 }
7566
7567 __m512i test_mm512_max_epu64 (__m512i __A, __m512i __B)
7568 {
7569   // CHECK-LABEL: @test_mm512_max_epu64 
7570   // CHECK:       [[CMP:%.*]] = icmp ugt <8 x i64> [[X:%.*]], [[Y:%.*]]
7571   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
7572   return _mm512_max_epu64 (__A,__B);
7573 }
7574
7575 __m512i test_mm512_mask_max_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
7576 {
7577   // CHECK-LABEL: @test_mm512_mask_max_epu64 
7578   // CHECK:       [[CMP:%.*]] = icmp ugt <8 x i64> [[X:%.*]], [[Y:%.*]]
7579   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
7580   // CHECK:       select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
7581   return _mm512_mask_max_epu64 (__W,__M,__A,__B);
7582 }
7583
7584 __m512i test_mm512_maskz_max_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
7585 {
7586   // CHECK-LABEL: @test_mm512_maskz_max_epu64 
7587   // CHECK:       [[CMP:%.*]] = icmp ugt <8 x i64> [[X:%.*]], [[Y:%.*]]
7588   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
7589   // CHECK:       select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
7590   return _mm512_maskz_max_epu64 (__M,__A,__B);
7591 }
7592
7593 __m512i test_mm512_max_epu32 (__m512i __A, __m512i __B)
7594 {
7595   // CHECK-LABEL: @test_mm512_max_epu32 
7596   // CHECK:       [[CMP:%.*]] = icmp ugt <16 x i32> [[X:%.*]], [[Y:%.*]]
7597   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
7598   return _mm512_max_epu32 (__A,__B);
7599 }
7600
7601 __m512i test_mm512_mask_max_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
7602 {
7603   // CHECK-LABEL: @test_mm512_mask_max_epu32 
7604   // CHECK:       [[CMP:%.*]] = icmp ugt <16 x i32> [[X:%.*]], [[Y:%.*]]
7605   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
7606   // CHECK:       select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
7607   return _mm512_mask_max_epu32 (__W,__M,__A,__B);
7608 }
7609
7610 __m512i test_mm512_maskz_max_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
7611 {
7612   // CHECK-LABEL: @test_mm512_maskz_max_epu32 
7613   // CHECK:       [[CMP:%.*]] = icmp ugt <16 x i32> [[X:%.*]], [[Y:%.*]]
7614   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
7615   // CHECK:       select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
7616   return _mm512_maskz_max_epu32 (__M,__A,__B);
7617 }
7618
7619 __m512i test_mm512_min_epi32 (__m512i __A, __m512i __B)
7620 {
7621   // CHECK-LABEL: @test_mm512_min_epi32 
7622   // CHECK:       [[CMP:%.*]] = icmp slt <16 x i32> [[X:%.*]], [[Y:%.*]]
7623   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
7624   return _mm512_min_epi32 (__A,__B);
7625 }
7626
7627 __m512i test_mm512_mask_min_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
7628 {
7629   // CHECK-LABEL: @test_mm512_mask_min_epi32 
7630   // CHECK:       [[CMP:%.*]] = icmp slt <16 x i32> [[X:%.*]], [[Y:%.*]]
7631   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
7632   // CHECK:       select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
7633   return _mm512_mask_min_epi32 (__W,__M,__A,__B);
7634 }
7635
7636 __m512i test_mm512_maskz_min_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
7637 {
7638   // CHECK-LABEL: @test_mm512_maskz_min_epi32 
7639   // CHECK:       [[CMP:%.*]] = icmp slt <16 x i32> [[X:%.*]], [[Y:%.*]]
7640   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
7641   // CHECK:       select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
7642   return _mm512_maskz_min_epi32 (__M,__A,__B);
7643 }
7644
7645 __m512i test_mm512_min_epu32 (__m512i __A, __m512i __B)
7646 {
7647   // CHECK-LABEL: @test_mm512_min_epu32 
7648   // CHECK:       [[CMP:%.*]] = icmp ult <16 x i32> [[X:%.*]], [[Y:%.*]]
7649   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
7650   return _mm512_min_epu32 (__A,__B);
7651 }
7652
7653 __m512i test_mm512_mask_min_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
7654 {
7655   // CHECK-LABEL: @test_mm512_mask_min_epu32 
7656   // CHECK:       [[CMP:%.*]] = icmp ult <16 x i32> [[X:%.*]], [[Y:%.*]]
7657   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
7658   // CHECK:       select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
7659   return _mm512_mask_min_epu32 (__W,__M,__A,__B);
7660 }
7661
7662 __m512i test_mm512_maskz_min_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
7663 {
7664   // CHECK-LABEL: @test_mm512_maskz_min_epu32 
7665   // CHECK:       [[CMP:%.*]] = icmp ult <16 x i32> [[X:%.*]], [[Y:%.*]]
7666   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
7667   // CHECK:       select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
7668   return _mm512_maskz_min_epu32 (__M,__A,__B);
7669 }
7670
7671 __m512i test_mm512_min_epi64 (__m512i __A, __m512i __B)
7672 {
7673   // CHECK-LABEL: @test_mm512_min_epi64 
7674   // CHECK:       [[CMP:%.*]] = icmp slt <8 x i64> [[X:%.*]], [[Y:%.*]]
7675   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
7676   return _mm512_min_epi64 (__A,__B);
7677 }
7678
7679 __m512i test_mm512_mask_min_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
7680 {
7681   // CHECK-LABEL: @test_mm512_mask_min_epi64 
7682   // CHECK:       [[CMP:%.*]] = icmp slt <8 x i64> [[X:%.*]], [[Y:%.*]]
7683   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
7684   // CHECK:       select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
7685   return _mm512_mask_min_epi64 (__W,__M,__A,__B);
7686 }
7687
7688 __m512i test_mm512_maskz_min_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
7689 {
7690   // CHECK-LABEL: @test_mm512_maskz_min_epi64 
7691   // CHECK:       [[CMP:%.*]] = icmp slt <8 x i64> [[X:%.*]], [[Y:%.*]]
7692   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
7693   // CHECK:       select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
7694   return _mm512_maskz_min_epi64 (__M,__A,__B);
7695 }
7696
7697 __m512i test_mm512_min_epu64 (__m512i __A, __m512i __B)
7698 {
7699   // CHECK-LABEL: @test_mm512_min_epu64 
7700   // CHECK:       [[CMP:%.*]] = icmp ult <8 x i64> [[X:%.*]], [[Y:%.*]]
7701   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
7702   return _mm512_min_epu64 (__A,__B);
7703 }
7704
7705 __m512i test_mm512_mask_min_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
7706 {
7707   // CHECK-LABEL: @test_mm512_mask_min_epu64 
7708   // CHECK:       [[CMP:%.*]] = icmp ult <8 x i64> [[X:%.*]], [[Y:%.*]]
7709   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
7710   // CHECK:       select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
7711   return _mm512_mask_min_epu64 (__W,__M,__A,__B);
7712 }
7713
7714 __m512i test_mm512_maskz_min_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
7715 {
7716   // CHECK-LABEL: @test_mm512_maskz_min_epu64 
7717   // CHECK:       [[CMP:%.*]] = icmp ult <8 x i64> [[X:%.*]], [[Y:%.*]]
7718   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
7719   // CHECK:       select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
7720   return _mm512_maskz_min_epu64 (__M,__A,__B);
7721 }
7722
7723 __m512i test_mm512_mask_set1_epi32 (__m512i __O, __mmask16 __M, int __A)
7724 {
7725     //CHECK-LABEL: @test_mm512_mask_set1_epi32
7726     //CHECK: @llvm.x86.avx512.mask.pbroadcast.d.gpr.512
7727   return _mm512_mask_set1_epi32 ( __O, __M, __A);
7728 }
7729
7730 __m512i test_mm512_set_epi8(char e63, char e62, char e61, char e60, char e59,
7731     char e58, char e57, char e56, char e55, char e54, char e53, char e52,
7732     char e51, char e50, char e49, char e48, char e47, char e46, char e45,
7733     char e44, char e43, char e42, char e41, char e40, char e39, char e38,
7734     char e37, char e36, char e35, char e34, char e33, char e32, char e31,
7735     char e30, char e29, char e28, char e27, char e26, char e25, char e24,
7736     char e23, char e22, char e21, char e20, char e19, char e18, char e17,
7737     char e16, char e15, char e14, char e13, char e12, char e11, char e10,
7738     char e9, char e8, char e7, char e6, char e5, char e4, char e3, char e2,
7739     char e1, char e0) {
7740
7741   //CHECK-LABEL: @test_mm512_set_epi8
7742   //CHECK: load i8, i8* %e63.addr, align 1
7743    //CHECK: load i8, i8* %e62.addr, align 1
7744    //CHECK: load i8, i8* %e61.addr, align 1
7745    //CHECK: load i8, i8* %e60.addr, align 1
7746    //CHECK: load i8, i8* %e59.addr, align 1
7747    //CHECK: load i8, i8* %e58.addr, align 1
7748    //CHECK: load i8, i8* %e57.addr, align 1
7749    //CHECK: load i8, i8* %e56.addr, align 1
7750    //CHECK: load i8, i8* %e55.addr, align 1
7751    //CHECK: load i8, i8* %e54.addr, align 1
7752    //CHECK: load i8, i8* %e53.addr, align 1
7753    //CHECK: load i8, i8* %e52.addr, align 1
7754    //CHECK: load i8, i8* %e51.addr, align 1
7755    //CHECK: load i8, i8* %e50.addr, align 1
7756    //CHECK: load i8, i8* %e49.addr, align 1
7757    //CHECK: load i8, i8* %e48.addr, align 1
7758    //CHECK: load i8, i8* %e47.addr, align 1
7759    //CHECK: load i8, i8* %e46.addr, align 1
7760    //CHECK: load i8, i8* %e45.addr, align 1
7761    //CHECK: load i8, i8* %e44.addr, align 1
7762    //CHECK: load i8, i8* %e43.addr, align 1
7763    //CHECK: load i8, i8* %e42.addr, align 1
7764    //CHECK: load i8, i8* %e41.addr, align 1
7765    //CHECK: load i8, i8* %e40.addr, align 1
7766    //CHECK: load i8, i8* %e39.addr, align 1
7767    //CHECK: load i8, i8* %e38.addr, align 1
7768    //CHECK: load i8, i8* %e37.addr, align 1
7769    //CHECK: load i8, i8* %e36.addr, align 1
7770    //CHECK: load i8, i8* %e35.addr, align 1
7771    //CHECK: load i8, i8* %e34.addr, align 1
7772    //CHECK: load i8, i8* %e33.addr, align 1
7773    //CHECK: load i8, i8* %e32.addr, align 1
7774    //CHECK: load i8, i8* %e31.addr, align 1
7775    //CHECK: load i8, i8* %e30.addr, align 1
7776    //CHECK: load i8, i8* %e29.addr, align 1
7777    //CHECK: load i8, i8* %e28.addr, align 1
7778    //CHECK: load i8, i8* %e27.addr, align 1
7779    //CHECK: load i8, i8* %e26.addr, align 1
7780    //CHECK: load i8, i8* %e25.addr, align 1
7781    //CHECK: load i8, i8* %e24.addr, align 1
7782    //CHECK: load i8, i8* %e23.addr, align 1
7783    //CHECK: load i8, i8* %e22.addr, align 1
7784    //CHECK: load i8, i8* %e21.addr, align 1
7785    //CHECK: load i8, i8* %e20.addr, align 1
7786    //CHECK: load i8, i8* %e19.addr, align 1
7787    //CHECK: load i8, i8* %e18.addr, align 1
7788    //CHECK: load i8, i8* %e17.addr, align 1
7789    //CHECK: load i8, i8* %e16.addr, align 1
7790    //CHECK: load i8, i8* %e15.addr, align 1
7791    //CHECK: load i8, i8* %e14.addr, align 1
7792    //CHECK: load i8, i8* %e13.addr, align 1
7793    //CHECK: load i8, i8* %e12.addr, align 1
7794    //CHECK: load i8, i8* %e11.addr, align 1
7795    //CHECK: load i8, i8* %e10.addr, align 1
7796    //CHECK: load i8, i8* %e9.addr, align 1
7797    //CHECK: load i8, i8* %e8.addr, align 1
7798    //CHECK: load i8, i8* %e7.addr, align 1
7799    //CHECK: load i8, i8* %e6.addr, align 1
7800    //CHECK: load i8, i8* %e5.addr, align 1
7801    //CHECK: load i8, i8* %e4.addr, align 1
7802    //CHECK: load i8, i8* %e3.addr, align 1
7803    //CHECK: load i8, i8* %e2.addr, align 1
7804    //CHECK: load i8, i8* %e1.addr, align 1
7805    //CHECK: load i8, i8* %e0.addr, align 1
7806   return _mm512_set_epi8(e63, e62, e61, e60, e59, e58, e57, e56, e55, e54,
7807       e53, e52, e51, e50, e49, e48,e47, e46, e45, e44, e43, e42, e41, e40,
7808       e39, e38, e37, e36, e35, e34, e33, e32,e31, e30, e29, e28, e27, e26,
7809       e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12,
7810       e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0);
7811 }
7812
7813 __m512i test_mm512_set_epi16(short e31, short e30, short e29, short e28,
7814     short e27, short e26, short e25, short e24, short e23, short e22,
7815     short e21, short e20, short e19, short e18, short e17,
7816     short e16, short e15, short e14, short e13, short e12,
7817     short e11, short e10, short e9, short e8, short e7,
7818     short e6, short e5, short e4, short e3, short e2, short e1, short e0) {
7819   //CHECK-LABEL: @test_mm512_set_epi16
7820   //CHECK: insertelement{{.*}}i32 0
7821   //CHECK: insertelement{{.*}}i32 1
7822   //CHECK: insertelement{{.*}}i32 2
7823   //CHECK: insertelement{{.*}}i32 3
7824   //CHECK: insertelement{{.*}}i32 4
7825   //CHECK: insertelement{{.*}}i32 5
7826   //CHECK: insertelement{{.*}}i32 6
7827   //CHECK: insertelement{{.*}}i32 7
7828   //CHECK: insertelement{{.*}}i32 8
7829   //CHECK: insertelement{{.*}}i32 9
7830   //CHECK: insertelement{{.*}}i32 10
7831   //CHECK: insertelement{{.*}}i32 11
7832   //CHECK: insertelement{{.*}}i32 12
7833   //CHECK: insertelement{{.*}}i32 13
7834   //CHECK: insertelement{{.*}}i32 14
7835   //CHECK: insertelement{{.*}}i32 15
7836   //CHECK: insertelement{{.*}}i32 16
7837   //CHECK: insertelement{{.*}}i32 17
7838   //CHECK: insertelement{{.*}}i32 18
7839   //CHECK: insertelement{{.*}}i32 19
7840   //CHECK: insertelement{{.*}}i32 20
7841   //CHECK: insertelement{{.*}}i32 21
7842   //CHECK: insertelement{{.*}}i32 22
7843   //CHECK: insertelement{{.*}}i32 23
7844   //CHECK: insertelement{{.*}}i32 24
7845   //CHECK: insertelement{{.*}}i32 25
7846   //CHECK: insertelement{{.*}}i32 26
7847   //CHECK: insertelement{{.*}}i32 27
7848   //CHECK: insertelement{{.*}}i32 28
7849   //CHECK: insertelement{{.*}}i32 29
7850   //CHECK: insertelement{{.*}}i32 30
7851   //CHECK: insertelement{{.*}}i32 31
7852   return _mm512_set_epi16(e31, e30, e29, e28, e27, e26, e25, e24, e23, e22,
7853       e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7,
7854       e6, e5, e4, e3, e2, e1, e0);
7855
7856 }
7857 __m512i test_mm512_set_epi32 (int __A, int __B, int __C, int __D,
7858                int __E, int __F, int __G, int __H,
7859                int __I, int __J, int __K, int __L,
7860                int __M, int __N, int __O, int __P)
7861 {
7862  //CHECK-LABEL: @test_mm512_set_epi32
7863  //CHECK: insertelement{{.*}}i32 0
7864     //CHECK: insertelement{{.*}}i32 1
7865     //CHECK: insertelement{{.*}}i32 2
7866     //CHECK: insertelement{{.*}}i32 3
7867     //CHECK: insertelement{{.*}}i32 4
7868     //CHECK: insertelement{{.*}}i32 5
7869     //CHECK: insertelement{{.*}}i32 6
7870     //CHECK: insertelement{{.*}}i32 7
7871     //CHECK: insertelement{{.*}}i32 8
7872     //CHECK: insertelement{{.*}}i32 9
7873     //CHECK: insertelement{{.*}}i32 10
7874     //CHECK: insertelement{{.*}}i32 11
7875     //CHECK: insertelement{{.*}}i32 12
7876     //CHECK: insertelement{{.*}}i32 13
7877     //CHECK: insertelement{{.*}}i32 14
7878     //CHECK: insertelement{{.*}}i32 15
7879  return _mm512_set_epi32( __A, __B, __C, __D,__E, __F, __G, __H,
7880               __I, __J, __K, __L,__M, __N, __O, __P);
7881 }
7882
7883 __m512i test_mm512_setr_epi32 (int __A, int __B, int __C, int __D,
7884                int __E, int __F, int __G, int __H,
7885                int __I, int __J, int __K, int __L,
7886                int __M, int __N, int __O, int __P)
7887 {
7888     //CHECK-LABEL: @test_mm512_setr_epi32
7889     //CHECK: load{{.*}}%__P.addr, align 4
7890     //CHECK: load{{.*}}%__O.addr, align 4
7891     //CHECK: load{{.*}}%__N.addr, align 4
7892     //CHECK: load{{.*}}%__M.addr, align 4
7893     //CHECK: load{{.*}}%__L.addr, align 4
7894     //CHECK: load{{.*}}%__K.addr, align 4
7895     //CHECK: load{{.*}}%__J.addr, align 4
7896     //CHECK: load{{.*}}%__I.addr, align 4
7897     //CHECK: load{{.*}}%__H.addr, align 4
7898     //CHECK: load{{.*}}%__G.addr, align 4
7899     //CHECK: load{{.*}}%__F.addr, align 4
7900     //CHECK: load{{.*}}%__E.addr, align 4
7901     //CHECK: load{{.*}}%__D.addr, align 4
7902     //CHECK: load{{.*}}%__C.addr, align 4
7903     //CHECK: load{{.*}}%__B.addr, align 4
7904     //CHECK: load{{.*}}%__A.addr, align 4
7905     //CHECK: insertelement{{.*}}i32 0
7906     //CHECK: insertelement{{.*}}i32 1
7907     //CHECK: insertelement{{.*}}i32 2
7908     //CHECK: insertelement{{.*}}i32 3
7909     //CHECK: insertelement{{.*}}i32 4
7910     //CHECK: insertelement{{.*}}i32 5
7911     //CHECK: insertelement{{.*}}i32 6
7912     //CHECK: insertelement{{.*}}i32 7
7913     //CHECK: insertelement{{.*}}i32 8
7914     //CHECK: insertelement{{.*}}i32 9
7915     //CHECK: insertelement{{.*}}i32 10
7916     //CHECK: insertelement{{.*}}i32 11
7917     //CHECK: insertelement{{.*}}i32 12
7918     //CHECK: insertelement{{.*}}i32 13
7919     //CHECK: insertelement{{.*}}i32 14
7920     //CHECK: insertelement{{.*}}i32 15
7921  return _mm512_setr_epi32( __A, __B, __C, __D,__E, __F, __G, __H,
7922               __I, __J, __K, __L,__M, __N, __O, __P);
7923 }
7924
7925 #ifdef __x86_64__
7926 __m512i test_mm512_mask_set1_epi64 (__m512i __O, __mmask8 __M, long long __A)
7927 {
7928     //CHECK-LABEL: @test_mm512_mask_set1_epi64
7929     //CHECK: @llvm.x86.avx512.mask.pbroadcast.q.gpr.512
7930   return _mm512_mask_set1_epi64 (__O, __M, __A);
7931 }
7932 #endif
7933
7934 __m512i test_mm512_set_epi64 (long long __A, long long __B, long long __C,
7935                               long long __D, long long __E, long long __F,
7936                               long long __G, long long __H)
7937 {
7938     //CHECK-LABEL: @test_mm512_set_epi64
7939     //CHECK: insertelement{{.*}}i32 0
7940     //CHECK: insertelement{{.*}}i32 1
7941     //CHECK: insertelement{{.*}}i32 2
7942     //CHECK: insertelement{{.*}}i32 3
7943     //CHECK: insertelement{{.*}}i32 4
7944     //CHECK: insertelement{{.*}}i32 5
7945     //CHECK: insertelement{{.*}}i32 6
7946     //CHECK: insertelement{{.*}}i32 7
7947   return _mm512_set_epi64(__A, __B, __C, __D, __E, __F, __G, __H );
7948 }
7949
7950 __m512i test_mm512_setr_epi64 (long long __A, long long __B, long long __C,
7951                               long long __D, long long __E, long long __F,
7952                               long long __G, long long __H)
7953 {
7954     //CHECK-LABEL: @test_mm512_setr_epi64
7955     //CHECK: load{{.*}}%__H.addr, align 8
7956     //CHECK: load{{.*}}%__G.addr, align 8
7957     //CHECK: load{{.*}}%__F.addr, align 8
7958     //CHECK: load{{.*}}%__E.addr, align 8
7959     //CHECK: load{{.*}}%__D.addr, align 8
7960     //CHECK: load{{.*}}%__C.addr, align 8
7961     //CHECK: load{{.*}}%__B.addr, align 8
7962     //CHECK: load{{.*}}%__A.addr, align 8
7963     //CHECK: insertelement{{.*}}i32 0
7964     //CHECK: insertelement{{.*}}i32 1
7965     //CHECK: insertelement{{.*}}i32 2
7966     //CHECK: insertelement{{.*}}i32 3
7967     //CHECK: insertelement{{.*}}i32 4
7968     //CHECK: insertelement{{.*}}i32 5
7969     //CHECK: insertelement{{.*}}i32 6
7970     //CHECK: insertelement{{.*}}i32 7
7971   return _mm512_setr_epi64(__A, __B, __C, __D, __E, __F, __G, __H );
7972 }
7973
7974 __m512d test_mm512_set_pd (double __A, double __B, double __C, double __D,
7975                            double __E, double __F, double __G, double __H)
7976 {
7977     //CHECK-LABEL: @test_mm512_set_pd
7978     //CHECK: insertelement{{.*}}i32 0
7979     //CHECK: insertelement{{.*}}i32 1
7980     //CHECK: insertelement{{.*}}i32 2
7981     //CHECK: insertelement{{.*}}i32 3
7982     //CHECK: insertelement{{.*}}i32 4
7983     //CHECK: insertelement{{.*}}i32 5
7984     //CHECK: insertelement{{.*}}i32 6
7985     //CHECK: insertelement{{.*}}i32 7
7986   return _mm512_set_pd( __A, __B, __C, __D, __E, __F, __G, __H);
7987 }
7988
7989 __m512d test_mm512_setr_pd (double __A, double __B, double __C, double __D,
7990                            double __E, double __F, double __G, double __H)
7991 {
7992     //CHECK-LABEL: @test_mm512_setr_pd
7993     //CHECK: load{{.*}}%__H.addr, align 8
7994     //CHECK: load{{.*}}%__G.addr, align 8
7995     //CHECK: load{{.*}}%__F.addr, align 8
7996     //CHECK: load{{.*}}%__E.addr, align 8
7997     //CHECK: load{{.*}}%__D.addr, align 8
7998     //CHECK: load{{.*}}%__C.addr, align 8
7999     //CHECK: load{{.*}}%__B.addr, align 8
8000     //CHECK: load{{.*}}%__A.addr, align 8
8001     //CHECK: insertelement{{.*}}i32 0
8002     //CHECK: insertelement{{.*}}i32 1
8003     //CHECK: insertelement{{.*}}i32 2
8004     //CHECK: insertelement{{.*}}i32 3
8005     //CHECK: insertelement{{.*}}i32 4
8006     //CHECK: insertelement{{.*}}i32 5
8007     //CHECK: insertelement{{.*}}i32 6
8008     //CHECK: insertelement{{.*}}i32 7
8009   return _mm512_setr_pd( __A, __B, __C, __D, __E, __F, __G, __H);
8010 }
8011
8012 __m512 test_mm512_set_ps (float __A, float __B, float __C, float __D,
8013                           float __E, float __F, float __G, float __H,
8014                           float __I, float __J, float __K, float __L,
8015                           float __M, float __N, float __O, float __P)
8016 {
8017     //CHECK-LABEL: @test_mm512_set_ps
8018     //CHECK: insertelement{{.*}}i32 0
8019     //CHECK: insertelement{{.*}}i32 1
8020     //CHECK: insertelement{{.*}}i32 2
8021     //CHECK: insertelement{{.*}}i32 3
8022     //CHECK: insertelement{{.*}}i32 4
8023     //CHECK: insertelement{{.*}}i32 5
8024     //CHECK: insertelement{{.*}}i32 6
8025     //CHECK: insertelement{{.*}}i32 7
8026     //CHECK: insertelement{{.*}}i32 8
8027     //CHECK: insertelement{{.*}}i32 9
8028     //CHECK: insertelement{{.*}}i32 10
8029     //CHECK: insertelement{{.*}}i32 11
8030     //CHECK: insertelement{{.*}}i32 12
8031     //CHECK: insertelement{{.*}}i32 13
8032     //CHECK: insertelement{{.*}}i32 14
8033     //CHECK: insertelement{{.*}}i32 15
8034     return _mm512_set_ps( __A, __B, __C, __D, __E, __F, __G, __H,
8035                           __I, __J, __K, __L, __M, __N, __O, __P);
8036 }
8037
8038 __m512i test_mm512_mask_abs_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
8039 {
8040   // CHECK-LABEL: @test_mm512_mask_abs_epi64 
8041   // CHECK: @llvm.x86.avx512.mask.pabs.q.512
8042   return _mm512_mask_abs_epi64 (__W,__U,__A);
8043 }
8044
8045 __m512i test_mm512_maskz_abs_epi64 (__mmask8 __U, __m512i __A)
8046 {
8047   // CHECK-LABEL: @test_mm512_maskz_abs_epi64 
8048   // CHECK: @llvm.x86.avx512.mask.pabs.q.512
8049   return _mm512_maskz_abs_epi64 (__U,__A);
8050 }
8051
8052 __m512i test_mm512_mask_abs_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
8053 {
8054   // CHECK-LABEL: @test_mm512_mask_abs_epi32 
8055   // CHECK: @llvm.x86.avx512.mask.pabs.d.512
8056   return _mm512_mask_abs_epi32 (__W,__U,__A);
8057 }
8058
8059 __m512i test_mm512_maskz_abs_epi32 (__mmask16 __U, __m512i __A)
8060 {
8061   // CHECK-LABEL: @test_mm512_maskz_abs_epi32 
8062   // CHECK: @llvm.x86.avx512.mask.pabs.d.512
8063   return _mm512_maskz_abs_epi32 (__U,__A);
8064 }
8065
8066 __m512 test_mm512_setr_ps (float __A, float __B, float __C, float __D,
8067                           float __E, float __F, float __G, float __H,
8068                           float __I, float __J, float __K, float __L,
8069                           float __M, float __N, float __O, float __P)
8070 {
8071     //CHECK-LABEL: @test_mm512_setr_ps
8072     //CHECK: load{{.*}}%__P.addr, align 4
8073     //CHECK: load{{.*}}%__O.addr, align 4
8074     //CHECK: load{{.*}}%__N.addr, align 4
8075     //CHECK: load{{.*}}%__M.addr, align 4
8076     //CHECK: load{{.*}}%__L.addr, align 4
8077     //CHECK: load{{.*}}%__K.addr, align 4
8078     //CHECK: load{{.*}}%__J.addr, align 4
8079     //CHECK: load{{.*}}%__I.addr, align 4
8080     //CHECK: load{{.*}}%__H.addr, align 4
8081     //CHECK: load{{.*}}%__G.addr, align 4
8082     //CHECK: load{{.*}}%__F.addr, align 4
8083     //CHECK: load{{.*}}%__E.addr, align 4
8084     //CHECK: load{{.*}}%__D.addr, align 4
8085     //CHECK: load{{.*}}%__C.addr, align 4
8086     //CHECK: load{{.*}}%__B.addr, align 4
8087     //CHECK: load{{.*}}%__A.addr, align 4
8088     //CHECK: insertelement{{.*}}i32 0
8089     //CHECK: insertelement{{.*}}i32 1
8090     //CHECK: insertelement{{.*}}i32 2
8091     //CHECK: insertelement{{.*}}i32 3
8092     //CHECK: insertelement{{.*}}i32 4
8093     //CHECK: insertelement{{.*}}i32 5
8094     //CHECK: insertelement{{.*}}i32 6
8095     //CHECK: insertelement{{.*}}i32 7
8096     //CHECK: insertelement{{.*}}i32 8
8097     //CHECK: insertelement{{.*}}i32 9
8098     //CHECK: insertelement{{.*}}i32 10
8099     //CHECK: insertelement{{.*}}i32 11
8100     //CHECK: insertelement{{.*}}i32 12
8101     //CHECK: insertelement{{.*}}i32 13
8102     //CHECK: insertelement{{.*}}i32 14
8103     //CHECK: insertelement{{.*}}i32 15
8104     return _mm512_setr_ps( __A, __B, __C, __D, __E, __F, __G, __H,
8105                           __I, __J, __K, __L, __M, __N, __O, __P);
8106 }
8107
8108 int test_mm_cvtss_i32(__m128 A) {
8109   // CHECK-LABEL: test_mm_cvtss_i32
8110   // CHECK: call i32 @llvm.x86.sse.cvtss2si(<4 x float> %{{.*}})
8111   return _mm_cvtss_i32(A);
8112 }
8113
8114 #ifdef __x86_64__
8115 long long test_mm_cvtss_i64(__m128 A) {
8116   // CHECK-LABEL: test_mm_cvtss_i64
8117   // CHECK: call i64 @llvm.x86.sse.cvtss2si64(<4 x float> %{{.*}})
8118   return _mm_cvtss_i64(A);
8119 }
8120 #endif
8121
8122 __m128d test_mm_cvti32_sd(__m128d A, int B) {
8123   // CHECK-LABEL: test_mm_cvti32_sd
8124   // CHECK: sitofp i32 %{{.*}} to double
8125   // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0
8126   return _mm_cvti32_sd(A, B);
8127 }
8128
8129 #ifdef __x86_64__
8130 __m128d test_mm_cvti64_sd(__m128d A, long long B) {
8131   // CHECK-LABEL: test_mm_cvti64_sd
8132   // CHECK: sitofp i64 %{{.*}} to double
8133   // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0
8134   return _mm_cvti64_sd(A, B);
8135 }
8136 #endif
8137
8138 __m128 test_mm_cvti32_ss(__m128 A, int B) {
8139   // CHECK-LABEL: test_mm_cvti32_ss
8140   // CHECK: sitofp i32 %{{.*}} to float
8141   // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0
8142   return _mm_cvti32_ss(A, B);
8143 }
8144
8145 #ifdef __x86_64__
8146 __m128 test_mm_cvti64_ss(__m128 A, long long B) {
8147   // CHECK-LABEL: test_mm_cvti64_ss
8148   // CHECK: sitofp i64 %{{.*}} to float
8149   // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0
8150   return _mm_cvti64_ss(A, B);
8151 }
8152 #endif
8153
8154 int test_mm_cvtsd_i32(__m128d A) {
8155   // CHECK-LABEL: test_mm_cvtsd_i32
8156   // CHECK: call i32 @llvm.x86.sse2.cvtsd2si(<2 x double> %{{.*}})
8157   return _mm_cvtsd_i32(A);
8158 }
8159
8160 #ifdef __x86_64__
8161 long long test_mm_cvtsd_i64(__m128d A) {
8162   // CHECK-LABEL: test_mm_cvtsd_i64
8163   // CHECK: call i64 @llvm.x86.sse2.cvtsd2si64(<2 x double> %{{.*}})
8164   return _mm_cvtsd_i64(A);
8165 }
8166 #endif
8167
8168 __m128d test_mm_mask_cvtss_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128 __B) {
8169   // CHECK-LABEL: @test_mm_mask_cvtss_sd
8170   // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round
8171   return _mm_mask_cvtss_sd(__W, __U, __A, __B); 
8172 }
8173
8174 __m128d test_mm_maskz_cvtss_sd( __mmask8 __U, __m128d __A, __m128 __B) {
8175   // CHECK-LABEL: @test_mm_maskz_cvtss_sd
8176   // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round
8177   return _mm_maskz_cvtss_sd( __U, __A, __B); 
8178 }
8179
8180 __m128 test_mm_mask_cvtsd_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128d __B) {
8181   // CHECK-LABEL: @test_mm_mask_cvtsd_ss
8182   // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round
8183   return _mm_mask_cvtsd_ss(__W, __U, __A, __B); 
8184 }
8185
8186 __m128 test_mm_maskz_cvtsd_ss(__mmask8 __U, __m128 __A, __m128d __B) {
8187   // CHECK-LABEL: @test_mm_maskz_cvtsd_ss
8188   // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round
8189   return _mm_maskz_cvtsd_ss(__U, __A, __B); 
8190 }
8191
8192
8193 __m512i test_mm512_setzero_epi32()
8194 {
8195   // CHECK-LABEL: @test_mm512_setzero_epi32
8196   // CHECK: zeroinitializer
8197   return _mm512_setzero_epi32();
8198 }
8199
8200 __m512i test_mm512_setzero()
8201 {
8202   // CHECK-LABEL: @test_mm512_setzero
8203   // CHECK: zeroinitializer
8204   return _mm512_setzero();
8205 }
8206
8207 __m512i test_mm512_setzero_si512()
8208 {
8209   // CHECK-LABEL: @test_mm512_setzero_si512
8210   // CHECK: zeroinitializer
8211   return _mm512_setzero_si512();
8212 }
8213
8214 __m512i test_mm512_setzero_ps()
8215 {
8216   // CHECK-LABEL: @test_mm512_setzero_ps
8217   // CHECK: zeroinitializer
8218   return _mm512_setzero_ps();
8219 }
8220
8221 __m512d test_mm512_setzero_pd()
8222 {
8223   // CHECK-LABEL: @test_mm512_setzero_pd
8224   // CHECK: zeroinitializer
8225   return _mm512_setzero_pd();
8226 }
8227
8228 __mmask16 test_mm512_int2mask(int __a)
8229 {
8230   // O2-LABEL: test_mm512_int2mask
8231   // O2: trunc i32 %__a to i16
8232   return _mm512_int2mask(__a);
8233 }
8234
8235 int test_mm512_mask2int(__mmask16 __a)
8236 {
8237   // O2-LABEL: test_mm512_mask2int
8238   // O2: zext i16 %__a to i32
8239   return _mm512_mask2int(__a);
8240 }
8241
8242 __m128 test_mm_mask_move_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
8243 {
8244   // O2-LABEL: @test_mm_mask_move_ss
8245   // O2: %[[M:.*]] = and i8 %__U, 1
8246   // O2: %[[M2:.*]] = icmp 
8247   // O2: %[[ELM1:.*]] = extractelement <4 x float> 
8248   // O2: %[[ELM2:.*]] = extractelement <4 x float> 
8249   // O2: %[[SEL:.*]] = select i1 %[[M2]]
8250   // O2: %[[RES:.*]] = insertelement <4 x float> %__A, float %[[SEL]], i32 0
8251   // O2: ret <4 x float> %[[RES]]
8252   return _mm_mask_move_ss ( __W,  __U,  __A,  __B);
8253 }
8254
8255 __m128 test_mm_maskz_move_ss (__mmask8 __U, __m128 __A, __m128 __B)
8256 {
8257   // O2-LABEL: @test_mm_maskz_move_ss
8258   // O2: %[[M:.*]] = and i8 %__U, 1
8259   // O2: %[[M2:.*]] = icmp
8260   // O2: %[[ELM1:.*]] = extractelement <4 x float> %__B, i32 0
8261   // O2: %[[SEL:.*]] = select i1 %[[M2]] 
8262   // O2: %[[RES:.*]] = insertelement <4 x float> %__A, float %[[SEL]], i32 0
8263   // O2: ret <4 x float> %[[RES]]
8264   return _mm_maskz_move_ss (__U, __A, __B);
8265 }
8266
8267 __m128d test_mm_mask_move_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
8268 {
8269   // O2-LABEL: @test_mm_mask_move_sd
8270   // O2: %[[M:.*]] = and i8 %__U, 1
8271   // O2: %[[M2:.*]] = icmp
8272   // O2: %[[ELM1:.*]] = extractelement <2 x double>
8273   // O2: %[[ELM2:.*]] = extractelement <2 x double>
8274   // O2: %[[SEL:.*]] = select i1 %[[M2]]
8275   // O2: %[[RES:.*]] = insertelement <2 x double> %__A, double %[[SEL]], i32 0
8276   // O2: ret <2 x double> %[[RES]]
8277   return _mm_mask_move_sd ( __W,  __U,  __A,  __B);
8278 }
8279
8280 __m128d test_mm_maskz_move_sd (__mmask8 __U, __m128d __A, __m128d __B)
8281 {
8282   // O2-LABEL: @test_mm_maskz_move_sd
8283   // O2: %[[M:.*]] = and i8 %__U, 1
8284   // O2: %[[M2:.*]] = icmp
8285   // O2: %[[ELM1:.*]] = extractelement <2 x double> %__B, i32 0
8286   // O2: %[[SEL:.*]] = select i1 %[[M2]]
8287   // O2: %[[RES:.*]] = insertelement <2 x double> %__A, double %[[SEL]], i32 0
8288   // O2: ret <2 x double> %[[RES]]
8289   return _mm_maskz_move_sd (__U, __A, __B);
8290 }
8291
8292 void test_mm_mask_store_ss(float * __P, __mmask8 __U, __m128 __A)
8293 {
8294   // O2-LABEL: @test_mm_mask_store_ss
8295   // O2: %[[CAST:.*]] = bitcast float* %__P to <16 x float>*
8296   // O2: %[[SHUFFLE:.*]] = shufflevector <4 x float> %__A, <4 x float> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
8297   // O2: %[[MASK1:.*]] = and i8 %__U, 1
8298   // O2: %[[MASK2:.*]] = zext i8 %[[MASK1]] to i16
8299   // O2: %[[MASK3:.*]] = bitcast i16 %[[MASK2]] to <16 x i1>
8300   // O2: tail call void @llvm.masked.store.v16f32.p0v16f32(<16 x float> %[[SHUFFLE]], <16 x float>* %[[CAST]], i32 16, <16 x i1> %[[MASK3]])
8301   _mm_mask_store_ss(__P, __U, __A);
8302 }
8303
8304 void test_mm_mask_store_sd(double * __P, __mmask8 __U, __m128d __A)
8305 {
8306   // O2-LABEL: @test_mm_mask_store_sd
8307   // O2: %[[CAST:.*]] = bitcast double* %__P to <8 x double>*
8308   // O2: %[[SHUFFLE:.*]] = shufflevector <2 x double> %__A, <2 x double> undef, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
8309   // O2: %[[MASK1:.*]] = and i8 %__U, 1
8310   // O2: %[[MASK2:.*]] = bitcast i8 %[[MASK1]] to <8 x i1>
8311   // O2: tail call void @llvm.masked.store.v8f64.p0v8f64(<8 x double> %[[SHUFFLE]], <8 x double>* %[[CAST]], i32 16, <8 x i1> %[[MASK2]])
8312   _mm_mask_store_sd(__P, __U, __A);
8313 }
8314
8315 __m128 test_mm_mask_load_ss(__m128 __A, __mmask8 __U, const float* __W)
8316 {
8317   // O2-LABEL: @test_mm_mask_load_ss
8318   // O2: %[[SHUF:.*]] = shufflevector <4 x float> %__A, <4 x float> <float 0.000000e+00, float undef, float undef, float undef>, <4 x i32> <i32 0, i32 4, i32 4, i32 4>
8319   // O2: %[[PTR:.*]] = bitcast float* %__W to <16 x float>*
8320   // O2: %[[SHUF2:.*]] = shufflevector <4 x float> %[[SHUF]], <4 x float> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
8321   // O2: %[[AND:.*]] = and i8 %__U, 1
8322   // O2: %[[MASK:.*]] = zext i8 %[[AND]] to i16
8323   // O2: %[[MASK2:.*]] = bitcast i16 %[[MASK]] to <16 x i1>
8324   // O2: %[[RES:.*]] = tail call <16 x float> @llvm.masked.load.v16f32.p0v16f32(<16 x float>* %[[PTR]], i32 16, <16 x i1> %[[MASK2]], <16 x float> %[[SHUF2]]) 
8325   // O2: shufflevector <16 x float> %[[RES]], <16 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
8326   return _mm_mask_load_ss(__A, __U, __W);
8327 }
8328
8329 __m128 test_mm_maskz_load_ss (__mmask8 __U, const float * __W)
8330 {
8331   // O2-LABEL: @test_mm_maskz_load_ss
8332   // O2: %[[PTR:.*]] = bitcast float* %__W to <16 x float>*
8333   // O2: %[[AND:.*]] = and i8 %__U, 1
8334   // O2: %[[MASK:.*]] = zext i8 %[[AND]] to i16
8335   // O2: %[[MASK2:.*]] = bitcast i16 %[[MASK]] to <16 x i1>
8336   // O2: %[[RES:.*]] = tail call <16 x float> @llvm.masked.load.v16f32.p0v16f32(<16 x float>* %[[PTR]], i32 16, <16 x i1> %[[MASK2]], <16 x float> zeroinitializer) 
8337   // O2: shufflevector <16 x float> %[[RES]], <16 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
8338   return _mm_maskz_load_ss (__U, __W);
8339 }
8340
8341 __m128d test_mm_mask_load_sd (__m128d __A, __mmask8 __U, const double * __W)
8342 {
8343   // O2-LABEL: @test_mm_mask_load_sd
8344   // O2: %[[SHUF:.*]] = insertelement <2 x double> %__A, double 0.000000e+00, i32 1
8345   // O2: %[[PTR:.*]] = bitcast double* %__W to <8 x double>*
8346   // O2: %[[SHUF2:.*]] = shufflevector <2 x double> %[[SHUF]], <2 x double> undef, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
8347   // O2: %[[AND:.*]] = and i8 %__U, 1
8348   // O2: %[[MASK:.*]] = bitcast i8 %[[AND]] to <8 x i1>
8349   // O2: %[[RES:.*]] = tail call <8 x double> @llvm.masked.load.v8f64.p0v8f64(<8 x double>* %[[PTR]], i32 16, <8 x i1> %[[MASK]], <8 x double> %[[SHUF2]]) 
8350   // O2: shufflevector <8 x double> %[[RES]], <8 x double> undef, <2 x i32> <i32 0, i32 1>
8351   return _mm_mask_load_sd (__A, __U, __W);
8352 }
8353
8354 __m128d test_mm_maskz_load_sd (__mmask8 __U, const double * __W)
8355 {
8356   // O2-LABEL: @test_mm_maskz_load_sd
8357   // O2: %[[PTR:.*]] = bitcast double* %__W to <8 x double>*
8358   // O2: %[[AND:.*]] = and i8 %__U, 1
8359   // O2: %[[MASK:.*]] = bitcast i8 %[[AND]] to <8 x i1>
8360   // O2: %[[RES:.*]] = tail call <8 x double> @llvm.masked.load.v8f64.p0v8f64(<8 x double>* %[[PTR]], i32 16, <8 x i1> %[[MASK]], <8 x double> zeroinitializer) 
8361   // O2: shufflevector <8 x double> %[[RES]], <8 x double> undef, <2 x i32> <i32 0, i32 1>
8362   return _mm_maskz_load_sd (__U, __W);
8363 }
8364
8365 __m512d test_mm512_abs_pd(__m512d a){
8366   // CHECK-LABEL: @test_mm512_abs_pd
8367   // CHECK: and <8 x i64> 
8368   return _mm512_abs_pd(a);
8369 }
8370
8371 __m512d test_mm512_mask_abs_pd (__m512d __W, __mmask8 __U, __m512d __A){
8372   // CHECK-LABEL: @test_mm512_mask_abs_pd 
8373   // CHECK: %[[AND_RES:.*]] = and <8 x i64>
8374   // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
8375   // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[AND_RES]], <8 x i64> %{{.*}}
8376   return _mm512_mask_abs_pd (__W,__U,__A);
8377 }
8378
8379 __m512 test_mm512_abs_ps(__m512 a){
8380   // CHECK-LABEL: @test_mm512_abs_ps
8381   // CHECK: and <16 x i32> 
8382   return _mm512_abs_ps(a);
8383 }
8384
8385 __m512 test_mm512_mask_abs_ps(__m512 __W, __mmask16 __U, __m512 __A){
8386   // CHECK-LABEL: @test_mm512_mask_abs_ps
8387   // CHECK: and <16 x i32> 
8388   // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
8389   // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
8390   return _mm512_mask_abs_ps( __W, __U, __A);
8391 }
8392
8393 __m512d test_mm512_zextpd128_pd512(__m128d A) {
8394   // CHECK-LABEL: test_mm512_zextpd128_pd512
8395   // CHECK: store <2 x double> zeroinitializer
8396   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>
8397   return _mm512_zextpd128_pd512(A);
8398 }
8399
8400 __m512d test_mm512_zextpd256_pd512(__m256d A) {
8401   // CHECK-LABEL: test_mm512_zextpd256_pd512
8402   // CHECK: store <4 x double> zeroinitializer
8403   // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
8404   return _mm512_zextpd256_pd512(A);
8405 }
8406
8407 __m512 test_mm512_zextps128_ps512(__m128 A) {
8408   // CHECK-LABEL: test_mm512_zextps128_ps512
8409   // CHECK: store <4 x float> zeroinitializer
8410   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 4, i32 5, i32 6, i32 7, i32 4, i32 5, i32 6, i32 7>
8411   return _mm512_zextps128_ps512(A);
8412 }
8413
8414 __m512 test_mm512_zextps256_ps512(__m256 A) {
8415   // CHECK-LABEL: test_mm512_zextps256_ps512
8416   // CHECK: store <8 x float> zeroinitializer
8417   // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <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>
8418   return _mm512_zextps256_ps512(A);
8419 }
8420
8421 __m512i test_mm512_zextsi128_si512(__m128i A) {
8422   // CHECK-LABEL: test_mm512_zextsi128_si512
8423   // CHECK: store <2 x i64> zeroinitializer
8424   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>
8425   return _mm512_zextsi128_si512(A);
8426 }
8427
8428 __m512i test_mm512_zextsi256_si512(__m256i A) {
8429   // CHECK-LABEL: test_mm512_zextsi256_si512
8430   // CHECK: store <4 x i64> zeroinitializer
8431   // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
8432   return _mm512_zextsi256_si512(A);
8433 }