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