]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CodeGen/avx512dq-builtins.c
Vendor import of clang trunk r290819:
[FreeBSD/FreeBSD.git] / test / CodeGen / avx512dq-builtins.c
1 // RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512dq -emit-llvm -o - -Wall -Werror | FileCheck %s
2
3
4 #include <immintrin.h>
5
6 __m512i test_mm512_mullo_epi64 (__m512i __A, __m512i __B) {
7   // CHECK-LABEL: @test_mm512_mullo_epi64
8   // CHECK: mul <8 x i64>
9   return (__m512i) ((__v8di) __A * (__v8di) __B);
10 }
11
12 __m512i test_mm512_mask_mullo_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
13   // CHECK-LABEL: @test_mm512_mask_mullo_epi64
14   // CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
15   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
16   return (__m512i) _mm512_mask_mullo_epi64(__W, __U, __A, __B);
17 }
18
19 __m512i test_mm512_maskz_mullo_epi64 (__mmask8 __U, __m512i __A, __m512i __B) {
20   // CHECK-LABEL: @test_mm512_maskz_mullo_epi64
21   // CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
22   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
23   return (__m512i) _mm512_maskz_mullo_epi64(__U, __A, __B);
24 }
25
26 __m512d test_mm512_xor_pd (__m512d __A, __m512d __B) {
27   // CHECK-LABEL: @test_mm512_xor_pd
28   // CHECK: xor <8 x i64>
29   return (__m512d) _mm512_xor_pd(__A, __B);
30 }
31
32 __m512d test_mm512_mask_xor_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
33   // CHECK-LABEL: @test_mm512_mask_xor_pd
34   // CHECK: xor <8 x i64>
35   // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
36   // CHECK: select <8 x i1> %[[MASK]], <8 x double> %{{.*}}, <8 x double> %{{.*}}
37   return (__m512d) _mm512_mask_xor_pd(__W, __U, __A, __B);
38 }
39
40 __m512d test_mm512_maskz_xor_pd (__mmask8 __U, __m512d __A, __m512d __B) {
41   // CHECK-LABEL: @test_mm512_maskz_xor_pd
42   // CHECK: xor <8 x i64>
43   // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
44   // CHECK: select <8 x i1> %[[MASK]], <8 x double> %{{.*}}, <8 x double> %{{.*}}
45   return (__m512d) _mm512_maskz_xor_pd(__U, __A, __B);
46 }
47
48 __m512 test_mm512_xor_ps (__m512 __A, __m512 __B) {
49   // CHECK-LABEL: @test_mm512_xor_ps
50   // CHECK: xor <16 x i32>
51   return (__m512) _mm512_xor_ps(__A, __B);
52 }
53
54 __m512 test_mm512_mask_xor_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
55   // CHECK-LABEL: @test_mm512_mask_xor_ps
56   // CHECK: xor <16 x i32>
57   // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
58   // CHECK: select <16 x i1> %[[MASK]], <16 x float> %{{.*}}, <16 x float> %{{.*}}
59   return (__m512) _mm512_mask_xor_ps(__W, __U, __A, __B);
60 }
61
62 __m512 test_mm512_maskz_xor_ps (__mmask16 __U, __m512 __A, __m512 __B) {
63   // CHECK-LABEL: @test_mm512_maskz_xor_ps
64   // CHECK: xor <16 x i32>
65   // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
66   // CHECK: select <16 x i1> %[[MASK]], <16 x float> %{{.*}}, <16 x float> %{{.*}}
67   return (__m512) _mm512_maskz_xor_ps(__U, __A, __B);
68 }
69
70 __m512d test_mm512_or_pd (__m512d __A, __m512d __B) {
71   // CHECK-LABEL: @test_mm512_or_pd
72   // CHECK: or <8 x i64>
73   return (__m512d) _mm512_or_pd(__A, __B);
74 }
75
76 __m512d test_mm512_mask_or_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
77   // CHECK-LABEL: @test_mm512_mask_or_pd
78   // CHECK: or <8 x i64>
79   // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
80   // CHECK: select <8 x i1> %[[MASK]], <8 x double> %{{.*}}, <8 x double> %{{.*}}
81   return (__m512d) _mm512_mask_or_pd(__W, __U, __A, __B);
82 }
83
84 __m512d test_mm512_maskz_or_pd (__mmask8 __U, __m512d __A, __m512d __B) {
85   // CHECK-LABEL: @test_mm512_maskz_or_pd
86   // CHECK: or <8 x i64>
87   // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
88   // CHECK: select <8 x i1> %[[MASK]], <8 x double> %{{.*}}, <8 x double> %{{.*}}
89   return (__m512d) _mm512_maskz_or_pd(__U, __A, __B);
90 }
91
92 __m512 test_mm512_or_ps (__m512 __A, __m512 __B) {
93   // CHECK-LABEL: @test_mm512_or_ps
94   // CHECK: or <16 x i32>
95   return (__m512) _mm512_or_ps(__A, __B);
96 }
97
98 __m512 test_mm512_mask_or_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
99   // CHECK-LABEL: @test_mm512_mask_or_ps
100   // CHECK: or <16 x i32>
101   // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
102   // CHECK: select <16 x i1> %[[MASK]], <16 x float> %{{.*}}, <16 x float> %{{.*}}
103   return (__m512) _mm512_mask_or_ps(__W, __U, __A, __B);
104 }
105
106 __m512 test_mm512_maskz_or_ps (__mmask16 __U, __m512 __A, __m512 __B) {
107   // CHECK-LABEL: @test_mm512_maskz_or_ps
108   // CHECK: or <16 x i32>
109   // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
110   // CHECK: select <16 x i1> %[[MASK]], <16 x float> %{{.*}}, <16 x float> %{{.*}}
111   return (__m512) _mm512_maskz_or_ps(__U, __A, __B);
112 }
113
114 __m512d test_mm512_and_pd (__m512d __A, __m512d __B) {
115   // CHECK-LABEL: @test_mm512_and_pd
116   // CHECK: and <8 x i64>
117   return (__m512d) _mm512_and_pd(__A, __B);
118 }
119
120 __m512d test_mm512_mask_and_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
121   // CHECK-LABEL: @test_mm512_mask_and_pd
122   // CHECK: and <8 x i64>
123   // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
124   // CHECK: select <8 x i1> %[[MASK]], <8 x double> %{{.*}}, <8 x double> %{{.*}}
125   return (__m512d) _mm512_mask_and_pd(__W, __U, __A, __B);
126 }
127
128 __m512d test_mm512_maskz_and_pd (__mmask8 __U, __m512d __A, __m512d __B) {
129   // CHECK-LABEL: @test_mm512_maskz_and_pd
130   // CHECK: and <8 x i64>
131   // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
132   // CHECK: select <8 x i1> %[[MASK]], <8 x double> %{{.*}}, <8 x double> %{{.*}}
133   return (__m512d) _mm512_maskz_and_pd(__U, __A, __B);
134 }
135
136 __m512 test_mm512_and_ps (__m512 __A, __m512 __B) {
137   // CHECK-LABEL: @test_mm512_and_ps
138   // CHECK: and <16 x i32>
139   return (__m512) _mm512_and_ps(__A, __B);
140 }
141
142 __m512 test_mm512_mask_and_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
143   // CHECK-LABEL: @test_mm512_mask_and_ps
144   // CHECK: and <16 x i32>
145   // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
146   // CHECK: select <16 x i1> %[[MASK]], <16 x float> %{{.*}}, <16 x float> %{{.*}}
147   return (__m512) _mm512_mask_and_ps(__W, __U, __A, __B);
148 }
149
150 __m512 test_mm512_maskz_and_ps (__mmask16 __U, __m512 __A, __m512 __B) {
151   // CHECK-LABEL: @test_mm512_maskz_and_ps
152   // CHECK: and <16 x i32>
153   // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
154   // CHECK: select <16 x i1> %[[MASK]], <16 x float> %{{.*}}, <16 x float> %{{.*}}
155   return (__m512) _mm512_maskz_and_ps(__U, __A, __B);
156 }
157
158 __m512d test_mm512_andnot_pd (__m512d __A, __m512d __B) {
159   // CHECK-LABEL: @test_mm512_andnot_pd
160   // CHECK: xor <8 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
161   // CHECK: and <8 x i64>
162   return (__m512d) _mm512_andnot_pd(__A, __B);
163 }
164
165 __m512d test_mm512_mask_andnot_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
166   // CHECK-LABEL: @test_mm512_mask_andnot_pd
167   // CHECK: xor <8 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
168   // CHECK: and <8 x i64> %{{.*}}, %{{.*}}
169   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
170   return (__m512d) _mm512_mask_andnot_pd(__W, __U, __A, __B);
171 }
172
173 __m512d test_mm512_maskz_andnot_pd (__mmask8 __U, __m512d __A, __m512d __B) {
174   // CHECK-LABEL: @test_mm512_maskz_andnot_pd
175   // CHECK: xor <8 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
176   // CHECK: and <8 x i64> %{{.*}}, %{{.*}}
177   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
178   return (__m512d) _mm512_maskz_andnot_pd(__U, __A, __B);
179 }
180
181 __m512 test_mm512_andnot_ps (__m512 __A, __m512 __B) {
182   // CHECK-LABEL: @test_mm512_andnot_ps
183   // 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>
184   // CHECK: and <16 x i32>
185   return (__m512) _mm512_andnot_ps(__A, __B);
186 }
187
188 __m512 test_mm512_mask_andnot_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
189   // CHECK-LABEL: @test_mm512_mask_andnot_ps
190   // 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>
191   // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
192   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
193   return (__m512) _mm512_mask_andnot_ps(__W, __U, __A, __B);
194 }
195
196 __m512 test_mm512_maskz_andnot_ps (__mmask16 __U, __m512 __A, __m512 __B) {
197   // CHECK-LABEL: @test_mm512_maskz_andnot_ps
198   // 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>
199   // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
200   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
201   return (__m512) _mm512_maskz_andnot_ps(__U, __A, __B);
202 }
203
204 __m512i test_mm512_cvtpd_epi64(__m512d __A) {
205   // CHECK-LABEL: @test_mm512_cvtpd_epi64
206   // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.512
207   return _mm512_cvtpd_epi64(__A); 
208 }
209
210 __m512i test_mm512_mask_cvtpd_epi64(__m512i __W, __mmask8 __U, __m512d __A) {
211   // CHECK-LABEL: @test_mm512_mask_cvtpd_epi64
212   // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.512
213   return _mm512_mask_cvtpd_epi64(__W, __U, __A); 
214 }
215
216 __m512i test_mm512_maskz_cvtpd_epi64(__mmask8 __U, __m512d __A) {
217   // CHECK-LABEL: @test_mm512_maskz_cvtpd_epi64
218   // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.512
219   return _mm512_maskz_cvtpd_epi64(__U, __A); 
220 }
221
222 __m512i test_mm512_cvt_roundpd_epi64(__m512d __A) {
223   // CHECK-LABEL: @test_mm512_cvt_roundpd_epi64
224   // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.512
225   return _mm512_cvt_roundpd_epi64(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
226 }
227
228 __m512i test_mm512_mask_cvt_roundpd_epi64(__m512i __W, __mmask8 __U, __m512d __A) {
229   // CHECK-LABEL: @test_mm512_mask_cvt_roundpd_epi64
230   // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.512
231   return _mm512_mask_cvt_roundpd_epi64(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
232 }
233
234 __m512i test_mm512_maskz_cvt_roundpd_epi64(__mmask8 __U, __m512d __A) {
235   // CHECK-LABEL: @test_mm512_maskz_cvt_roundpd_epi64
236   // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.512
237   return _mm512_maskz_cvt_roundpd_epi64(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
238 }
239
240 __m512i test_mm512_cvtpd_epu64(__m512d __A) {
241   // CHECK-LABEL: @test_mm512_cvtpd_epu64
242   // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.512
243   return _mm512_cvtpd_epu64(__A); 
244 }
245
246 __m512i test_mm512_mask_cvtpd_epu64(__m512i __W, __mmask8 __U, __m512d __A) {
247   // CHECK-LABEL: @test_mm512_mask_cvtpd_epu64
248   // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.512
249   return _mm512_mask_cvtpd_epu64(__W, __U, __A); 
250 }
251
252 __m512i test_mm512_maskz_cvtpd_epu64(__mmask8 __U, __m512d __A) {
253   // CHECK-LABEL: @test_mm512_maskz_cvtpd_epu64
254   // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.512
255   return _mm512_maskz_cvtpd_epu64(__U, __A); 
256 }
257
258 __m512i test_mm512_cvt_roundpd_epu64(__m512d __A) {
259   // CHECK-LABEL: @test_mm512_cvt_roundpd_epu64
260   // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.512
261   return _mm512_cvt_roundpd_epu64(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
262 }
263
264 __m512i test_mm512_mask_cvt_roundpd_epu64(__m512i __W, __mmask8 __U, __m512d __A) {
265   // CHECK-LABEL: @test_mm512_mask_cvt_roundpd_epu64
266   // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.512
267   return _mm512_mask_cvt_roundpd_epu64(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
268 }
269
270 __m512i test_mm512_maskz_cvt_roundpd_epu64(__mmask8 __U, __m512d __A) {
271   // CHECK-LABEL: @test_mm512_maskz_cvt_roundpd_epu64
272   // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.512
273   return _mm512_maskz_cvt_roundpd_epu64(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
274 }
275
276 __m512i test_mm512_cvtps_epi64(__m256 __A) {
277   // CHECK-LABEL: @test_mm512_cvtps_epi64
278   // CHECK: @llvm.x86.avx512.mask.cvtps2qq.512
279   return _mm512_cvtps_epi64(__A); 
280 }
281
282 __m512i test_mm512_mask_cvtps_epi64(__m512i __W, __mmask8 __U, __m256 __A) {
283   // CHECK-LABEL: @test_mm512_mask_cvtps_epi64
284   // CHECK: @llvm.x86.avx512.mask.cvtps2qq.512
285   return _mm512_mask_cvtps_epi64(__W, __U, __A); 
286 }
287
288 __m512i test_mm512_maskz_cvtps_epi64(__mmask8 __U, __m256 __A) {
289   // CHECK-LABEL: @test_mm512_maskz_cvtps_epi64
290   // CHECK: @llvm.x86.avx512.mask.cvtps2qq.512
291   return _mm512_maskz_cvtps_epi64(__U, __A); 
292 }
293
294 __m512i test_mm512_cvt_roundps_epi64(__m256 __A) {
295   // CHECK-LABEL: @test_mm512_cvt_roundps_epi64
296   // CHECK: @llvm.x86.avx512.mask.cvtps2qq.512
297   return _mm512_cvt_roundps_epi64(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
298 }
299
300 __m512i test_mm512_mask_cvt_roundps_epi64(__m512i __W, __mmask8 __U, __m256 __A) {
301   // CHECK-LABEL: @test_mm512_mask_cvt_roundps_epi64
302   // CHECK: @llvm.x86.avx512.mask.cvtps2qq.512
303   return _mm512_mask_cvt_roundps_epi64(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
304 }
305
306 __m512i test_mm512_maskz_cvt_roundps_epi64(__mmask8 __U, __m256 __A) {
307   // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_epi64
308   // CHECK: @llvm.x86.avx512.mask.cvtps2qq.512
309   return _mm512_maskz_cvt_roundps_epi64(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
310 }
311
312 __m512i test_mm512_cvtps_epu64(__m256 __A) {
313   // CHECK-LABEL: @test_mm512_cvtps_epu64
314   // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.512
315   return _mm512_cvtps_epu64(__A); 
316 }
317
318 __m512i test_mm512_mask_cvtps_epu64(__m512i __W, __mmask8 __U, __m256 __A) {
319   // CHECK-LABEL: @test_mm512_mask_cvtps_epu64
320   // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.512
321   return _mm512_mask_cvtps_epu64(__W, __U, __A); 
322 }
323
324 __m512i test_mm512_maskz_cvtps_epu64(__mmask8 __U, __m256 __A) {
325   // CHECK-LABEL: @test_mm512_maskz_cvtps_epu64
326   // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.512
327   return _mm512_maskz_cvtps_epu64(__U, __A); 
328 }
329
330 __m512i test_mm512_cvt_roundps_epu64(__m256 __A) {
331   // CHECK-LABEL: @test_mm512_cvt_roundps_epu64
332   // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.512
333   return _mm512_cvt_roundps_epu64(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
334 }
335
336 __m512i test_mm512_mask_cvt_roundps_epu64(__m512i __W, __mmask8 __U, __m256 __A) {
337   // CHECK-LABEL: @test_mm512_mask_cvt_roundps_epu64
338   // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.512
339   return _mm512_mask_cvt_roundps_epu64(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
340 }
341
342 __m512i test_mm512_maskz_cvt_roundps_epu64(__mmask8 __U, __m256 __A) {
343   // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_epu64
344   // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.512
345   return _mm512_maskz_cvt_roundps_epu64(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
346 }
347
348 __m512d test_mm512_cvtepi64_pd(__m512i __A) {
349   // CHECK-LABEL: @test_mm512_cvtepi64_pd
350   // CHECK: @llvm.x86.avx512.mask.cvtqq2pd.512
351   return _mm512_cvtepi64_pd(__A); 
352 }
353
354 __m512d test_mm512_mask_cvtepi64_pd(__m512d __W, __mmask8 __U, __m512i __A) {
355   // CHECK-LABEL: @test_mm512_mask_cvtepi64_pd
356   // CHECK: @llvm.x86.avx512.mask.cvtqq2pd.512
357   return _mm512_mask_cvtepi64_pd(__W, __U, __A); 
358 }
359
360 __m512d test_mm512_maskz_cvtepi64_pd(__mmask8 __U, __m512i __A) {
361   // CHECK-LABEL: @test_mm512_maskz_cvtepi64_pd
362   // CHECK: @llvm.x86.avx512.mask.cvtqq2pd.512
363   return _mm512_maskz_cvtepi64_pd(__U, __A); 
364 }
365
366 __m512d test_mm512_cvt_roundepi64_pd(__m512i __A) {
367   // CHECK-LABEL: @test_mm512_cvt_roundepi64_pd
368   // CHECK: @llvm.x86.avx512.mask.cvtqq2pd.512
369   return _mm512_cvt_roundepi64_pd(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
370 }
371
372 __m512d test_mm512_mask_cvt_roundepi64_pd(__m512d __W, __mmask8 __U, __m512i __A) {
373   // CHECK-LABEL: @test_mm512_mask_cvt_roundepi64_pd
374   // CHECK: @llvm.x86.avx512.mask.cvtqq2pd.512
375   return _mm512_mask_cvt_roundepi64_pd(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
376 }
377
378 __m512d test_mm512_maskz_cvt_roundepi64_pd(__mmask8 __U, __m512i __A) {
379   // CHECK-LABEL: @test_mm512_maskz_cvt_roundepi64_pd
380   // CHECK: @llvm.x86.avx512.mask.cvtqq2pd.512
381   return _mm512_maskz_cvt_roundepi64_pd(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
382 }
383
384 __m256 test_mm512_cvtepi64_ps(__m512i __A) {
385   // CHECK-LABEL: @test_mm512_cvtepi64_ps
386   // CHECK: @llvm.x86.avx512.mask.cvtqq2ps.512
387   return _mm512_cvtepi64_ps(__A); 
388 }
389
390 __m256 test_mm512_mask_cvtepi64_ps(__m256 __W, __mmask8 __U, __m512i __A) {
391   // CHECK-LABEL: @test_mm512_mask_cvtepi64_ps
392   // CHECK: @llvm.x86.avx512.mask.cvtqq2ps.512
393   return _mm512_mask_cvtepi64_ps(__W, __U, __A); 
394 }
395
396 __m256 test_mm512_maskz_cvtepi64_ps(__mmask8 __U, __m512i __A) {
397   // CHECK-LABEL: @test_mm512_maskz_cvtepi64_ps
398   // CHECK: @llvm.x86.avx512.mask.cvtqq2ps.512
399   return _mm512_maskz_cvtepi64_ps(__U, __A); 
400 }
401
402 __m256 test_mm512_cvt_roundepi64_ps(__m512i __A) {
403   // CHECK-LABEL: @test_mm512_cvt_roundepi64_ps
404   // CHECK: @llvm.x86.avx512.mask.cvtqq2ps.512
405   return _mm512_cvt_roundepi64_ps(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
406 }
407
408 __m256 test_mm512_mask_cvt_roundepi64_ps(__m256 __W, __mmask8 __U, __m512i __A) {
409   // CHECK-LABEL: @test_mm512_mask_cvt_roundepi64_ps
410   // CHECK: @llvm.x86.avx512.mask.cvtqq2ps.512
411   return _mm512_mask_cvt_roundepi64_ps(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
412 }
413
414 __m256 test_mm512_maskz_cvt_roundepi64_ps(__mmask8 __U, __m512i __A) {
415   // CHECK-LABEL: @test_mm512_maskz_cvt_roundepi64_ps
416   // CHECK: @llvm.x86.avx512.mask.cvtqq2ps.512
417   return _mm512_maskz_cvt_roundepi64_ps(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
418 }
419
420 __m512i test_mm512_cvttpd_epi64(__m512d __A) {
421   // CHECK-LABEL: @test_mm512_cvttpd_epi64
422   // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.512
423   return _mm512_cvttpd_epi64(__A); 
424 }
425
426 __m512i test_mm512_mask_cvttpd_epi64(__m512i __W, __mmask8 __U, __m512d __A) {
427   // CHECK-LABEL: @test_mm512_mask_cvttpd_epi64
428   // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.512
429   return _mm512_mask_cvttpd_epi64(__W, __U, __A); 
430 }
431
432 __m512i test_mm512_maskz_cvttpd_epi64(__mmask8 __U, __m512d __A) {
433   // CHECK-LABEL: @test_mm512_maskz_cvttpd_epi64
434   // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.512
435   return _mm512_maskz_cvttpd_epi64(__U, __A); 
436 }
437
438 __m512i test_mm512_cvtt_roundpd_epi64(__m512d __A) {
439   // CHECK-LABEL: @test_mm512_cvtt_roundpd_epi64
440   // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.512
441   return _mm512_cvtt_roundpd_epi64(__A, _MM_FROUND_CUR_DIRECTION); 
442 }
443
444 __m512i test_mm512_mask_cvtt_roundpd_epi64(__m512i __W, __mmask8 __U, __m512d __A) {
445   // CHECK-LABEL: @test_mm512_mask_cvtt_roundpd_epi64
446   // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.512
447   return _mm512_mask_cvtt_roundpd_epi64(__W, __U, __A, _MM_FROUND_CUR_DIRECTION); 
448 }
449
450 __m512i test_mm512_maskz_cvtt_roundpd_epi64(__mmask8 __U, __m512d __A) {
451   // CHECK-LABEL: @test_mm512_maskz_cvtt_roundpd_epi64
452   // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.512
453   return _mm512_maskz_cvtt_roundpd_epi64(__U, __A, _MM_FROUND_CUR_DIRECTION); 
454 }
455
456 __m512i test_mm512_cvttpd_epu64(__m512d __A) {
457   // CHECK-LABEL: @test_mm512_cvttpd_epu64
458   // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.512
459   return _mm512_cvttpd_epu64(__A); 
460 }
461
462 __m512i test_mm512_mask_cvttpd_epu64(__m512i __W, __mmask8 __U, __m512d __A) {
463   // CHECK-LABEL: @test_mm512_mask_cvttpd_epu64
464   // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.512
465   return _mm512_mask_cvttpd_epu64(__W, __U, __A); 
466 }
467
468 __m512i test_mm512_maskz_cvttpd_epu64(__mmask8 __U, __m512d __A) {
469   // CHECK-LABEL: @test_mm512_maskz_cvttpd_epu64
470   // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.512
471   return _mm512_maskz_cvttpd_epu64(__U, __A); 
472 }
473
474 __m512i test_mm512_cvtt_roundpd_epu64(__m512d __A) {
475   // CHECK-LABEL: @test_mm512_cvtt_roundpd_epu64
476   // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.512
477   return _mm512_cvtt_roundpd_epu64(__A, _MM_FROUND_CUR_DIRECTION); 
478 }
479
480 __m512i test_mm512_mask_cvtt_roundpd_epu64(__m512i __W, __mmask8 __U, __m512d __A) {
481   // CHECK-LABEL: @test_mm512_mask_cvtt_roundpd_epu64
482   // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.512
483   return _mm512_mask_cvtt_roundpd_epu64(__W, __U, __A, _MM_FROUND_CUR_DIRECTION); 
484 }
485
486 __m512i test_mm512_maskz_cvtt_roundpd_epu64(__mmask8 __U, __m512d __A) {
487   // CHECK-LABEL: @test_mm512_maskz_cvtt_roundpd_epu64
488   // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.512
489   return _mm512_maskz_cvtt_roundpd_epu64(__U, __A, _MM_FROUND_CUR_DIRECTION); 
490 }
491
492 __m512i test_mm512_cvttps_epi64(__m256 __A) {
493   // CHECK-LABEL: @test_mm512_cvttps_epi64
494   // CHECK: @llvm.x86.avx512.mask.cvttps2qq.512
495   return _mm512_cvttps_epi64(__A); 
496 }
497
498 __m512i test_mm512_mask_cvttps_epi64(__m512i __W, __mmask8 __U, __m256 __A) {
499   // CHECK-LABEL: @test_mm512_mask_cvttps_epi64
500   // CHECK: @llvm.x86.avx512.mask.cvttps2qq.512
501   return _mm512_mask_cvttps_epi64(__W, __U, __A); 
502 }
503
504 __m512i test_mm512_maskz_cvttps_epi64(__mmask8 __U, __m256 __A) {
505   // CHECK-LABEL: @test_mm512_maskz_cvttps_epi64
506   // CHECK: @llvm.x86.avx512.mask.cvttps2qq.512
507   return _mm512_maskz_cvttps_epi64(__U, __A); 
508 }
509
510 __m512i test_mm512_cvtt_roundps_epi64(__m256 __A) {
511   // CHECK-LABEL: @test_mm512_cvtt_roundps_epi64
512   // CHECK: @llvm.x86.avx512.mask.cvttps2qq.512
513   return _mm512_cvtt_roundps_epi64(__A, _MM_FROUND_CUR_DIRECTION); 
514 }
515
516 __m512i test_mm512_mask_cvtt_roundps_epi64(__m512i __W, __mmask8 __U, __m256 __A) {
517   // CHECK-LABEL: @test_mm512_mask_cvtt_roundps_epi64
518   // CHECK: @llvm.x86.avx512.mask.cvttps2qq.512
519   return _mm512_mask_cvtt_roundps_epi64(__W, __U, __A, _MM_FROUND_CUR_DIRECTION); 
520 }
521
522 __m512i test_mm512_maskz_cvtt_roundps_epi64(__mmask8 __U, __m256 __A) {
523   // CHECK-LABEL: @test_mm512_maskz_cvtt_roundps_epi64
524   // CHECK: @llvm.x86.avx512.mask.cvttps2qq.512
525   return _mm512_maskz_cvtt_roundps_epi64(__U, __A, _MM_FROUND_CUR_DIRECTION); 
526 }
527
528 __m512i test_mm512_cvttps_epu64(__m256 __A) {
529   // CHECK-LABEL: @test_mm512_cvttps_epu64
530   // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.512
531   return _mm512_cvttps_epu64(__A); 
532 }
533
534 __m512i test_mm512_mask_cvttps_epu64(__m512i __W, __mmask8 __U, __m256 __A) {
535   // CHECK-LABEL: @test_mm512_mask_cvttps_epu64
536   // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.512
537   return _mm512_mask_cvttps_epu64(__W, __U, __A); 
538 }
539
540 __m512i test_mm512_maskz_cvttps_epu64(__mmask8 __U, __m256 __A) {
541   // CHECK-LABEL: @test_mm512_maskz_cvttps_epu64
542   // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.512
543   return _mm512_maskz_cvttps_epu64(__U, __A); 
544 }
545
546 __m512i test_mm512_cvtt_roundps_epu64(__m256 __A) {
547   // CHECK-LABEL: @test_mm512_cvtt_roundps_epu64
548   // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.512
549   return _mm512_cvtt_roundps_epu64(__A, _MM_FROUND_CUR_DIRECTION); 
550 }
551
552 __m512i test_mm512_mask_cvtt_roundps_epu64(__m512i __W, __mmask8 __U, __m256 __A) {
553   // CHECK-LABEL: @test_mm512_mask_cvtt_roundps_epu64
554   // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.512
555   return _mm512_mask_cvtt_roundps_epu64(__W, __U, __A, _MM_FROUND_CUR_DIRECTION); 
556 }
557
558 __m512i test_mm512_maskz_cvtt_roundps_epu64(__mmask8 __U, __m256 __A) {
559   // CHECK-LABEL: @test_mm512_maskz_cvtt_roundps_epu64
560   // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.512
561   return _mm512_maskz_cvtt_roundps_epu64(__U, __A, _MM_FROUND_CUR_DIRECTION); 
562 }
563
564 __m512d test_mm512_cvtepu64_pd(__m512i __A) {
565   // CHECK-LABEL: @test_mm512_cvtepu64_pd
566   // CHECK: @llvm.x86.avx512.mask.cvtuqq2pd.512
567   return _mm512_cvtepu64_pd(__A); 
568 }
569
570 __m512d test_mm512_mask_cvtepu64_pd(__m512d __W, __mmask8 __U, __m512i __A) {
571   // CHECK-LABEL: @test_mm512_mask_cvtepu64_pd
572   // CHECK: @llvm.x86.avx512.mask.cvtuqq2pd.512
573   return _mm512_mask_cvtepu64_pd(__W, __U, __A); 
574 }
575
576 __m512d test_mm512_maskz_cvtepu64_pd(__mmask8 __U, __m512i __A) {
577   // CHECK-LABEL: @test_mm512_maskz_cvtepu64_pd
578   // CHECK: @llvm.x86.avx512.mask.cvtuqq2pd.512
579   return _mm512_maskz_cvtepu64_pd(__U, __A); 
580 }
581
582 __m512d test_mm512_cvt_roundepu64_pd(__m512i __A) {
583   // CHECK-LABEL: @test_mm512_cvt_roundepu64_pd
584   // CHECK: @llvm.x86.avx512.mask.cvtuqq2pd.512
585   return _mm512_cvt_roundepu64_pd(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
586 }
587
588 __m512d test_mm512_mask_cvt_roundepu64_pd(__m512d __W, __mmask8 __U, __m512i __A) {
589   // CHECK-LABEL: @test_mm512_mask_cvt_roundepu64_pd
590   // CHECK: @llvm.x86.avx512.mask.cvtuqq2pd.512
591   return _mm512_mask_cvt_roundepu64_pd(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
592 }
593
594 __m512d test_mm512_maskz_cvt_roundepu64_pd(__mmask8 __U, __m512i __A) {
595   // CHECK-LABEL: @test_mm512_maskz_cvt_roundepu64_pd
596   // CHECK: @llvm.x86.avx512.mask.cvtuqq2pd.512
597   return _mm512_maskz_cvt_roundepu64_pd(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
598 }
599
600 __m256 test_mm512_cvtepu64_ps(__m512i __A) {
601   // CHECK-LABEL: @test_mm512_cvtepu64_ps
602   // CHECK: @llvm.x86.avx512.mask.cvtuqq2ps.512
603   return _mm512_cvtepu64_ps(__A); 
604 }
605
606 __m256 test_mm512_mask_cvtepu64_ps(__m256 __W, __mmask8 __U, __m512i __A) {
607   // CHECK-LABEL: @test_mm512_mask_cvtepu64_ps
608   // CHECK: @llvm.x86.avx512.mask.cvtuqq2ps.512
609   return _mm512_mask_cvtepu64_ps(__W, __U, __A); 
610 }
611
612 __m256 test_mm512_maskz_cvtepu64_ps(__mmask8 __U, __m512i __A) {
613   // CHECK-LABEL: @test_mm512_maskz_cvtepu64_ps
614   // CHECK: @llvm.x86.avx512.mask.cvtuqq2ps.512
615   return _mm512_maskz_cvtepu64_ps(__U, __A); 
616 }
617
618 __m256 test_mm512_cvt_roundepu64_ps(__m512i __A) {
619   // CHECK-LABEL: @test_mm512_cvt_roundepu64_ps
620   // CHECK: @llvm.x86.avx512.mask.cvtuqq2ps.512
621   return _mm512_cvt_roundepu64_ps(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
622 }
623
624 __m256 test_mm512_mask_cvt_roundepu64_ps(__m256 __W, __mmask8 __U, __m512i __A) {
625   // CHECK-LABEL: @test_mm512_mask_cvt_roundepu64_ps
626   // CHECK: @llvm.x86.avx512.mask.cvtuqq2ps.512
627   return _mm512_mask_cvt_roundepu64_ps(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
628 }
629
630 __m256 test_mm512_maskz_cvt_roundepu64_ps(__mmask8 __U, __m512i __A) {
631   // CHECK-LABEL: @test_mm512_maskz_cvt_roundepu64_ps
632   // CHECK: @llvm.x86.avx512.mask.cvtuqq2ps.512
633   return _mm512_maskz_cvt_roundepu64_ps(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
634 }
635
636 __m512d test_mm512_range_pd(__m512d __A, __m512d __B) {
637   // CHECK-LABEL: @test_mm512_range_pd
638   // CHECK: @llvm.x86.avx512.mask.range.pd.512
639   return _mm512_range_pd(__A, __B, 4); 
640 }
641
642 __m512d test_mm512_mask_range_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
643   // CHECK-LABEL: @test_mm512_mask_range_pd
644   // CHECK: @llvm.x86.avx512.mask.range.pd.512
645   return _mm512_mask_range_pd(__W, __U, __A, __B, 4); 
646 }
647
648 __m512d test_mm512_maskz_range_pd(__mmask8 __U, __m512d __A, __m512d __B) {
649   // CHECK-LABEL: @test_mm512_maskz_range_pd
650   // CHECK: @llvm.x86.avx512.mask.range.pd.512
651   return _mm512_maskz_range_pd(__U, __A, __B, 4); 
652 }
653
654 __m512d test_mm512_range_round_pd(__m512d __A, __m512d __B) {
655   // CHECK-LABEL: @test_mm512_range_round_pd
656   // CHECK: @llvm.x86.avx512.mask.range.pd.512
657   return _mm512_range_round_pd(__A, __B, 4, 8); 
658 }
659
660 __m512d test_mm512_mask_range_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
661   // CHECK-LABEL: @test_mm512_mask_range_round_pd
662   // CHECK: @llvm.x86.avx512.mask.range.pd.512
663   return _mm512_mask_range_round_pd(__W, __U, __A, __B, 4, 8); 
664 }
665
666 __m512d test_mm512_maskz_range_round_pd(__mmask8 __U, __m512d __A, __m512d __B) {
667   // CHECK-LABEL: @test_mm512_maskz_range_round_pd
668   // CHECK: @llvm.x86.avx512.mask.range.pd.512
669   return _mm512_maskz_range_round_pd(__U, __A, __B, 4, 8); 
670 }
671
672 __m128d test_mm512_range_round_sd(__m128d __A, __m128d __B) {
673   // CHECK-LABEL: @test_mm512_range_round_sd
674   // CHECK: @llvm.x86.avx512.mask.range.sd
675   return _mm_range_round_sd(__A, __B, 4, 8); 
676 }
677
678 __m128d test_mm512_mask_range_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
679   // CHECK-LABEL: test_mm512_mask_range_round_sd
680   // CHECK: @llvm.x86.avx512.mask.range.sd
681   return _mm_mask_range_round_sd(__W, __U, __A, __B, 4, 8); 
682 }
683
684 __m128d test_mm512_maskz_range_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
685   // CHECK-LABEL: @test_mm512_maskz_range_round_sd
686   // CHECK: @llvm.x86.avx512.mask.range.sd
687   return _mm_maskz_range_round_sd(__U, __A, __B, 4, 8); 
688 }
689
690 __m128d test_mm512_range_round_ss(__m128d __A, __m128d __B) {
691   // CHECK-LABEL: @test_mm512_range_round_ss
692   // CHECK: @llvm.x86.avx512.mask.range.ss
693   return _mm_range_round_ss(__A, __B, 4, 8); 
694 }
695
696 __m128d test_mm512_mask_range_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
697   // CHECK-LABEL: @test_mm512_mask_range_round_ss
698   // CHECK: @llvm.x86.avx512.mask.range.ss
699   return _mm_mask_range_round_ss(__W, __U, __A, __B, 4, 8); 
700 }
701
702 __m128 test_mm512_maskz_range_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
703   // CHECK-LABEL: @test_mm512_maskz_range_round_ss
704   // CHECK: @llvm.x86.avx512.mask.range.ss
705   return _mm_maskz_range_round_ss(__U, __A, __B, 4, 8); 
706 }
707
708 __m128d test_mm_range_sd(__m128d __A, __m128d __B) {
709   // CHECK-LABEL: @test_mm_range_sd
710   // CHECK: @llvm.x86.avx512.mask.range.sd
711   return _mm_range_sd(__A, __B, 4); 
712 }
713
714 __m128d test_mm_mask_range_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
715   // CHECK-LABEL: test_mm_mask_range_sd
716   // CHECK: @llvm.x86.avx512.mask.range.sd
717   return _mm_mask_range_sd(__W, __U, __A, __B, 4); 
718 }
719
720 __m128d test_mm_maskz_range_sd(__mmask8 __U, __m128d __A, __m128d __B) {
721   // CHECK-LABEL: @test_mm_maskz_range_sd
722   // CHECK: @llvm.x86.avx512.mask.range.sd
723   return _mm_maskz_range_sd(__U, __A, __B, 4); 
724 }
725
726 __m128d test_mm_range_ss(__m128d __A, __m128d __B) {
727   // CHECK-LABEL: @test_mm_range_ss
728   // CHECK: @llvm.x86.avx512.mask.range.ss
729   return _mm_range_ss(__A, __B, 4); 
730 }
731
732 __m128d test_mm_mask_range_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
733   // CHECK-LABEL: @test_mm_mask_range_ss
734   // CHECK: @llvm.x86.avx512.mask.range.ss
735   return _mm_mask_range_ss(__W, __U, __A, __B, 4); 
736 }
737
738 __m128 test_mm_maskz_range_ss(__mmask8 __U, __m128 __A, __m128 __B) {
739   // CHECK-LABEL: @test_mm_maskz_range_ss
740   // CHECK: @llvm.x86.avx512.mask.range.ss
741   return _mm_maskz_range_ss(__U, __A, __B, 4); 
742 }
743
744 __m512 test_mm512_range_ps(__m512 __A, __m512 __B) {
745   // CHECK-LABEL: @test_mm512_range_ps
746   // CHECK: @llvm.x86.avx512.mask.range.ps.512
747   return _mm512_range_ps(__A, __B, 4); 
748 }
749
750 __m512 test_mm512_mask_range_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
751   // CHECK-LABEL: @test_mm512_mask_range_ps
752   // CHECK: @llvm.x86.avx512.mask.range.ps.512
753   return _mm512_mask_range_ps(__W, __U, __A, __B, 4); 
754 }
755
756 __m512 test_mm512_maskz_range_ps(__mmask16 __U, __m512 __A, __m512 __B) {
757   // CHECK-LABEL: @test_mm512_maskz_range_ps
758   // CHECK: @llvm.x86.avx512.mask.range.ps.512
759   return _mm512_maskz_range_ps(__U, __A, __B, 4); 
760 }
761
762 __m512 test_mm512_range_round_ps(__m512 __A, __m512 __B) {
763   // CHECK-LABEL: @test_mm512_range_round_ps
764   // CHECK: @llvm.x86.avx512.mask.range.ps.512
765   return _mm512_range_round_ps(__A, __B, 4, 8); 
766 }
767
768 __m512 test_mm512_mask_range_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
769   // CHECK-LABEL: @test_mm512_mask_range_round_ps
770   // CHECK: @llvm.x86.avx512.mask.range.ps.512
771   return _mm512_mask_range_round_ps(__W, __U, __A, __B, 4, 8); 
772 }
773
774 __m512 test_mm512_maskz_range_round_ps(__mmask16 __U, __m512 __A, __m512 __B) {
775   // CHECK-LABEL: @test_mm512_maskz_range_round_ps
776   // CHECK: @llvm.x86.avx512.mask.range.ps.512
777   return _mm512_maskz_range_round_ps(__U, __A, __B, 4, 8); 
778 }
779
780 __m512d test_mm512_reduce_pd(__m512d __A) {
781   // CHECK-LABEL: @test_mm512_reduce_pd
782   // CHECK: @llvm.x86.avx512.mask.reduce.pd.512
783   return _mm512_reduce_pd(__A, 4); 
784 }
785
786 __m512d test_mm512_mask_reduce_pd(__m512d __W, __mmask8 __U, __m512d __A) {
787   // CHECK-LABEL: @test_mm512_mask_reduce_pd
788   // CHECK: @llvm.x86.avx512.mask.reduce.pd.512
789   return _mm512_mask_reduce_pd(__W, __U, __A, 4); 
790 }
791
792 __m512d test_mm512_maskz_reduce_pd(__mmask8 __U, __m512d __A) {
793   // CHECK-LABEL: @test_mm512_maskz_reduce_pd
794   // CHECK: @llvm.x86.avx512.mask.reduce.pd.512
795   return _mm512_maskz_reduce_pd(__U, __A, 4); 
796 }
797
798 __m512 test_mm512_reduce_ps(__m512 __A) {
799   // CHECK-LABEL: @test_mm512_reduce_ps
800   // CHECK: @llvm.x86.avx512.mask.reduce.ps.512
801   return _mm512_reduce_ps(__A, 4); 
802 }
803
804 __m512 test_mm512_mask_reduce_ps(__m512 __W, __mmask16 __U, __m512 __A) {
805   // CHECK-LABEL: @test_mm512_mask_reduce_ps
806   // CHECK: @llvm.x86.avx512.mask.reduce.ps.512
807   return _mm512_mask_reduce_ps(__W, __U, __A, 4); 
808 }
809
810 __m512 test_mm512_maskz_reduce_ps(__mmask16 __U, __m512 __A) {
811   // CHECK-LABEL: @test_mm512_maskz_reduce_ps
812   // CHECK: @llvm.x86.avx512.mask.reduce.ps.512
813   return _mm512_maskz_reduce_ps(__U, __A, 4); 
814 }
815
816 __m512d test_mm512_reduce_round_pd(__m512d __A) {
817   // CHECK-LABEL: @test_mm512_reduce_round_pd
818   // CHECK: @llvm.x86.avx512.mask.reduce.pd.512
819   return _mm512_reduce_round_pd(__A, 4, 8); 
820 }
821
822 __m512d test_mm512_mask_reduce_round_pd(__m512d __W, __mmask8 __U, __m512d __A) {
823   // CHECK-LABEL: @test_mm512_mask_reduce_round_pd
824   // CHECK: @llvm.x86.avx512.mask.reduce.pd.512
825   return _mm512_mask_reduce_round_pd(__W, __U, __A, 4, 8); 
826 }
827
828 __m512d test_mm512_maskz_reduce_round_pd(__mmask8 __U, __m512d __A) {
829   // CHECK-LABEL: @test_mm512_maskz_reduce_round_pd
830   // CHECK: @llvm.x86.avx512.mask.reduce.pd.512
831   return _mm512_maskz_reduce_round_pd(__U, __A, 4, 8);
832 }
833
834 __m512 test_mm512_reduce_round_ps(__m512 __A) {
835   // CHECK-LABEL: @test_mm512_reduce_round_ps
836   // CHECK: @llvm.x86.avx512.mask.reduce.ps.512
837   return _mm512_reduce_round_ps(__A, 4, 8); 
838 }
839
840 __m512 test_mm512_mask_reduce_round_ps(__m512 __W, __mmask16 __U, __m512 __A) {
841   // CHECK-LABEL: @test_mm512_mask_reduce_round_ps
842   // CHECK: @llvm.x86.avx512.mask.reduce.ps.512
843   return _mm512_mask_reduce_round_ps(__W, __U, __A, 4, 8); 
844 }
845
846 __m512 test_mm512_maskz_reduce_round_ps(__mmask16 __U, __m512 __A) {
847   // CHECK-LABEL: @test_mm512_maskz_reduce_round_ps
848   // CHECK: @llvm.x86.avx512.mask.reduce.ps.512
849   return _mm512_maskz_reduce_round_ps(__U, __A, 4, 8); 
850 }
851
852 __m128 test_mm_reduce_ss(__m128 __A, __m128 __B) {
853   // CHECK-LABEL: @test_mm_reduce_ss
854   // CHECK: @llvm.x86.avx512.mask.reduce.ss
855   return _mm_reduce_ss(__A, __B, 4);
856 }
857
858 __m128 test_mm_mask_reduce_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
859   // CHECK-LABEL: @test_mm_mask_reduce_ss
860   // CHECK: @llvm.x86.avx512.mask.reduce.ss
861   return _mm_mask_reduce_ss(__W, __U, __A, __B, 4);
862 }
863
864 __m128 test_mm_maskz_reduce_ss(__mmask8 __U, __m128 __A, __m128 __B) {
865   // CHECK-LABEL: @test_mm_maskz_reduce_ss
866   // CHECK: @llvm.x86.avx512.mask.reduce.ss
867   return _mm_maskz_reduce_ss(__U, __A, __B, 4);
868 }
869
870 __m128 test_mm_reduce_round_ss(__m128 __A, __m128 __B) {
871   // CHECK-LABEL: @test_mm_reduce_round_ss
872   // CHECK: @llvm.x86.avx512.mask.reduce.ss
873   return _mm_reduce_round_ss(__A, __B, 4, 8);
874 }
875
876 __m128 test_mm_mask_reduce_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
877   // CHECK-LABEL: @test_mm_mask_reduce_round_ss
878   // CHECK: @llvm.x86.avx512.mask.reduce.ss
879   return _mm_mask_reduce_round_ss(__W, __U, __A, __B, 4, 8);
880 }
881
882 __m128 test_mm_maskz_reduce_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
883   // CHECK-LABEL: @test_mm_maskz_reduce_round_ss
884   // CHECK: @llvm.x86.avx512.mask.reduce.ss
885   return _mm_maskz_reduce_round_ss(__U, __A, __B, 4, 8);
886 }
887
888 __m128d test_mm_reduce_sd(__m128d __A, __m128d __B) {
889   // CHECK-LABEL: @test_mm_reduce_sd
890   // CHECK: @llvm.x86.avx512.mask.reduce.sd
891   return _mm_reduce_sd(__A, __B, 4);
892 }
893
894 __m128d test_mm_mask_reduce_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
895   // CHECK-LABEL: @test_mm_mask_reduce_sd
896   // CHECK: @llvm.x86.avx512.mask.reduce.sd
897   return _mm_mask_reduce_sd(__W, __U, __A, __B, 4);
898 }
899
900 __m128d test_mm_maskz_reduce_sd(__mmask8 __U, __m128d __A, __m128d __B) {
901   // CHECK-LABEL: @test_mm_maskz_reduce_sd
902   // CHECK: @llvm.x86.avx512.mask.reduce.sd
903   return _mm_maskz_reduce_sd(__U, __A, __B, 4);
904 }
905
906 __m128d test_mm_reduce_round_sd(__m128d __A, __m128d __B) {
907   // CHECK-LABEL: @test_mm_reduce_round_sd
908   // CHECK: @llvm.x86.avx512.mask.reduce.sd
909   return _mm_reduce_round_sd(__A, __B, 4, 8);
910 }
911
912 __m128d test_mm_mask_reduce_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
913   // CHECK-LABEL: @test_mm_mask_reduce_round_sd
914   // CHECK: @llvm.x86.avx512.mask.reduce.sd
915   return _mm_mask_reduce_round_sd(__W, __U, __A, __B, 4, 8);
916 }
917
918 __m128d test_mm_maskz_reduce_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
919   // CHECK-LABEL: @test_mm_maskz_reduce_round_sd
920   // CHECK: @llvm.x86.avx512.mask.reduce.sd
921   return _mm_maskz_reduce_round_sd(__U, __A, __B, 4, 8);
922 }
923
924 __mmask16 test_mm512_movepi32_mask(__m512i __A) {
925   // CHECK-LABEL: @test_mm512_movepi32_mask
926   // CHECK: @llvm.x86.avx512.cvtd2mask.512
927   return _mm512_movepi32_mask(__A); 
928 }
929
930 __m512i test_mm512_movm_epi32(__mmask16 __A) {
931   // CHECK-LABEL: @test_mm512_movm_epi32
932   // CHECK: @llvm.x86.avx512.cvtmask2d.512
933   return _mm512_movm_epi32(__A); 
934 }
935
936 __m512i test_mm512_movm_epi64(__mmask8 __A) {
937   // CHECK-LABEL: @test_mm512_movm_epi64
938   // CHECK: @llvm.x86.avx512.cvtmask2q.512
939   return _mm512_movm_epi64(__A); 
940 }
941
942 __mmask8 test_mm512_movepi64_mask(__m512i __A) {
943   // CHECK-LABEL: @test_mm512_movepi64_mask
944   // CHECK: @llvm.x86.avx512.cvtq2mask.512
945   return _mm512_movepi64_mask(__A); 
946 }
947
948 __m512 test_mm512_broadcast_f32x2(__m128 __A) {
949   // CHECK-LABEL: @test_mm512_broadcast_f32x2
950   // CHECK: @llvm.x86.avx512.mask.broadcastf32x2
951   return _mm512_broadcast_f32x2(__A); 
952 }
953
954 __m512 test_mm512_mask_broadcast_f32x2(__m512 __O, __mmask16 __M, __m128 __A) {
955   // CHECK-LABEL: @test_mm512_mask_broadcast_f32x2
956   // CHECK: @llvm.x86.avx512.mask.broadcastf32x2
957   return _mm512_mask_broadcast_f32x2(__O, __M, __A); 
958 }
959
960 __m512 test_mm512_maskz_broadcast_f32x2(__mmask16 __M, __m128 __A) {
961   // CHECK-LABEL: @test_mm512_maskz_broadcast_f32x2
962   // CHECK: @llvm.x86.avx512.mask.broadcastf32x2
963   return _mm512_maskz_broadcast_f32x2(__M, __A); 
964 }
965
966 __m512 test_mm512_broadcast_f32x8(__m256 __A) {
967   // CHECK-LABEL: @test_mm512_broadcast_f32x8
968   // CHECK: @llvm.x86.avx512.mask.broadcastf32x8
969   return _mm512_broadcast_f32x8(__A); 
970 }
971
972 __m512 test_mm512_mask_broadcast_f32x8(__m512 __O, __mmask16 __M, __m256 __A) {
973   // CHECK-LABEL: @test_mm512_mask_broadcast_f32x8
974   // CHECK: @llvm.x86.avx512.mask.broadcastf32x8
975   return _mm512_mask_broadcast_f32x8(__O, __M, __A); 
976 }
977
978 __m512 test_mm512_maskz_broadcast_f32x8(__mmask16 __M, __m256 __A) {
979   // CHECK-LABEL: @test_mm512_maskz_broadcast_f32x8
980   // CHECK: @llvm.x86.avx512.mask.broadcastf32x8
981   return _mm512_maskz_broadcast_f32x8(__M, __A); 
982 }
983
984 __m512d test_mm512_broadcast_f64x2(__m128d __A) {
985   // CHECK-LABEL: @test_mm512_broadcast_f64x2
986   // CHECK: @llvm.x86.avx512.mask.broadcastf64x2
987   return _mm512_broadcast_f64x2(__A); 
988 }
989
990 __m512d test_mm512_mask_broadcast_f64x2(__m512d __O, __mmask8 __M, __m128d __A) {
991   // CHECK-LABEL: @test_mm512_mask_broadcast_f64x2
992   // CHECK: @llvm.x86.avx512.mask.broadcastf64x2
993   return _mm512_mask_broadcast_f64x2(__O, __M, __A); 
994 }
995
996 __m512d test_mm512_maskz_broadcast_f64x2(__mmask8 __M, __m128d __A) {
997   // CHECK-LABEL: @test_mm512_maskz_broadcast_f64x2
998   // CHECK: @llvm.x86.avx512.mask.broadcastf64x2
999   return _mm512_maskz_broadcast_f64x2(__M, __A); 
1000 }
1001
1002 __m512i test_mm512_broadcast_i32x2(__m128i __A) {
1003   // CHECK-LABEL: @test_mm512_broadcast_i32x2
1004   // CHECK: @llvm.x86.avx512.mask.broadcasti32x2
1005   return _mm512_broadcast_i32x2(__A); 
1006 }
1007
1008 __m512i test_mm512_mask_broadcast_i32x2(__m512i __O, __mmask16 __M, __m128i __A) {
1009   // CHECK-LABEL: @test_mm512_mask_broadcast_i32x2
1010   // CHECK: @llvm.x86.avx512.mask.broadcasti32x2
1011   return _mm512_mask_broadcast_i32x2(__O, __M, __A); 
1012 }
1013
1014 __m512i test_mm512_maskz_broadcast_i32x2(__mmask16 __M, __m128i __A) {
1015   // CHECK-LABEL: @test_mm512_maskz_broadcast_i32x2
1016   // CHECK: @llvm.x86.avx512.mask.broadcasti32x2
1017   return _mm512_maskz_broadcast_i32x2(__M, __A); 
1018 }
1019
1020 __m512i test_mm512_broadcast_i32x8(__m256i __A) {
1021   // CHECK-LABEL: @test_mm512_broadcast_i32x8
1022   // CHECK: @llvm.x86.avx512.mask.broadcasti32x8
1023   return _mm512_broadcast_i32x8(__A); 
1024 }
1025
1026 __m512i test_mm512_mask_broadcast_i32x8(__m512i __O, __mmask16 __M, __m256i __A) {
1027   // CHECK-LABEL: @test_mm512_mask_broadcast_i32x8
1028   // CHECK: @llvm.x86.avx512.mask.broadcasti32x8
1029   return _mm512_mask_broadcast_i32x8(__O, __M, __A); 
1030 }
1031
1032 __m512i test_mm512_maskz_broadcast_i32x8(__mmask16 __M, __m256i __A) {
1033   // CHECK-LABEL: @test_mm512_maskz_broadcast_i32x8
1034   // CHECK: @llvm.x86.avx512.mask.broadcasti32x8
1035   return _mm512_maskz_broadcast_i32x8(__M, __A); 
1036 }
1037
1038 __m512i test_mm512_broadcast_i64x2(__m128i __A) {
1039   // CHECK-LABEL: @test_mm512_broadcast_i64x2
1040   // CHECK: @llvm.x86.avx512.mask.broadcasti64x2
1041   return _mm512_broadcast_i64x2(__A); 
1042 }
1043
1044 __m512i test_mm512_mask_broadcast_i64x2(__m512i __O, __mmask8 __M, __m128i __A) {
1045   // CHECK-LABEL: @test_mm512_mask_broadcast_i64x2
1046   // CHECK: @llvm.x86.avx512.mask.broadcasti64x2
1047   return _mm512_mask_broadcast_i64x2(__O, __M, __A); 
1048 }
1049
1050 __m512i test_mm512_maskz_broadcast_i64x2(__mmask8 __M, __m128i __A) {
1051   // CHECK-LABEL: @test_mm512_maskz_broadcast_i64x2
1052   // CHECK: @llvm.x86.avx512.mask.broadcasti64x2
1053   return _mm512_maskz_broadcast_i64x2(__M, __A); 
1054 }
1055 __m256 test_mm512_extractf32x8_ps(__m512 __A) {
1056   // CHECK-LABEL: @test_mm512_extractf32x8_ps
1057   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> undef, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
1058   return _mm512_extractf32x8_ps(__A, 1); 
1059 }
1060
1061 __m256 test_mm512_mask_extractf32x8_ps(__m256 __W, __mmask8 __U, __m512 __A) {
1062   // CHECK-LABEL: @test_mm512_mask_extractf32x8_ps
1063   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> undef, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
1064   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
1065   return _mm512_mask_extractf32x8_ps(__W, __U, __A, 1); 
1066 }
1067
1068 __m256 test_mm512_maskz_extractf32x8_ps(__mmask8 __U, __m512 __A) {
1069   // CHECK-LABEL: @test_mm512_maskz_extractf32x8_ps
1070   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> undef, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
1071   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
1072   return _mm512_maskz_extractf32x8_ps(__U, __A, 1); 
1073 }
1074
1075 __m128d test_mm512_extractf64x2_pd(__m512d __A) {
1076   // CHECK-LABEL: @test_mm512_extractf64x2_pd
1077   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <2 x i32> <i32 6, i32 7>
1078   return _mm512_extractf64x2_pd(__A, 3); 
1079 }
1080
1081 __m128d test_mm512_mask_extractf64x2_pd(__m128d __W, __mmask8 __U, __m512d __A) {
1082   // CHECK-LABEL: @test_mm512_mask_extractf64x2_pd
1083   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <2 x i32> <i32 6, i32 7>
1084   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
1085   return _mm512_mask_extractf64x2_pd(__W, __U, __A, 3); 
1086 }
1087
1088 __m128d test_mm512_maskz_extractf64x2_pd(__mmask8 __U, __m512d __A) {
1089   // CHECK-LABEL: @test_mm512_maskz_extractf64x2_pd
1090   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <2 x i32> <i32 6, i32 7>
1091   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
1092   return _mm512_maskz_extractf64x2_pd(__U, __A, 3); 
1093 }
1094
1095 __m256i test_mm512_extracti32x8_epi32(__m512i __A) {
1096   // CHECK-LABEL: @test_mm512_extracti32x8_epi32
1097   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
1098   return _mm512_extracti32x8_epi32(__A, 1); 
1099 }
1100
1101 __m256i test_mm512_mask_extracti32x8_epi32(__m256i __W, __mmask8 __U, __m512i __A) {
1102   // CHECK-LABEL: @test_mm512_mask_extracti32x8_epi32
1103   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
1104   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
1105   return _mm512_mask_extracti32x8_epi32(__W, __U, __A, 1); 
1106 }
1107
1108 __m256i test_mm512_maskz_extracti32x8_epi32(__mmask8 __U, __m512i __A) {
1109   // CHECK-LABEL: @test_mm512_maskz_extracti32x8_epi32
1110   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
1111   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
1112   return _mm512_maskz_extracti32x8_epi32(__U, __A, 1); 
1113 }
1114
1115 __m128i test_mm512_extracti64x2_epi64(__m512i __A) {
1116   // CHECK-LABEL: @test_mm512_extracti64x2_epi64
1117   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> undef, <2 x i32> <i32 6, i32 7>
1118   return _mm512_extracti64x2_epi64(__A, 3); 
1119 }
1120
1121 __m128i test_mm512_mask_extracti64x2_epi64(__m128i __W, __mmask8 __U, __m512i __A) {
1122   // CHECK-LABEL: @test_mm512_mask_extracti64x2_epi64
1123   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> undef, <2 x i32> <i32 6, i32 7>
1124   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
1125   return _mm512_mask_extracti64x2_epi64(__W, __U, __A, 3); 
1126 }
1127
1128 __m128i test_mm512_maskz_extracti64x2_epi64(__mmask8 __U, __m512i __A) {
1129   // CHECK-LABEL: @test_mm512_maskz_extracti64x2_epi64
1130   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> undef, <2 x i32> <i32 6, i32 7>
1131   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
1132   return _mm512_maskz_extracti64x2_epi64(__U, __A, 3); 
1133 }
1134
1135 __m512 test_mm512_insertf32x8(__m512 __A, __m256 __B) {
1136   // CHECK-LABEL: @test_mm512_insertf32x8
1137   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23>
1138   return _mm512_insertf32x8(__A, __B, 1); 
1139 }
1140
1141 __m512 test_mm512_mask_insertf32x8(__m512 __W, __mmask16 __U, __m512 __A, __m256 __B) {
1142   // CHECK-LABEL: @test_mm512_mask_insertf32x8
1143   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23>
1144   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1145   return _mm512_mask_insertf32x8(__W, __U, __A, __B, 1); 
1146 }
1147
1148 __m512 test_mm512_maskz_insertf32x8(__mmask16 __U, __m512 __A, __m256 __B) {
1149   // CHECK-LABEL: @test_mm512_maskz_insertf32x8
1150   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23>
1151   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1152   return _mm512_maskz_insertf32x8(__U, __A, __B, 1); 
1153 }
1154
1155 __m512d test_mm512_insertf64x2(__m512d __A, __m128d __B) {
1156   // CHECK-LABEL: @test_mm512_insertf64x2
1157   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 8, i32 9>
1158   return _mm512_insertf64x2(__A, __B, 3); 
1159 }
1160
1161 __m512d test_mm512_mask_insertf64x2(__m512d __W, __mmask8 __U, __m512d __A, __m128d __B) {
1162   // CHECK-LABEL: @test_mm512_mask_insertf64x2
1163   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 8, i32 9>
1164   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1165   return _mm512_mask_insertf64x2(__W, __U, __A, __B, 3); 
1166 }
1167
1168 __m512d test_mm512_maskz_insertf64x2(__mmask8 __U, __m512d __A, __m128d __B) {
1169   // CHECK-LABEL: @test_mm512_maskz_insertf64x2
1170   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 8, i32 9>
1171   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1172   return _mm512_maskz_insertf64x2(__U, __A, __B, 3); 
1173 }
1174
1175 __m512i test_mm512_inserti32x8(__m512i __A, __m256i __B) {
1176   // CHECK-LABEL: @test_mm512_inserti32x8
1177   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23>
1178   return _mm512_inserti32x8(__A, __B, 1); 
1179 }
1180
1181 __m512i test_mm512_mask_inserti32x8(__m512i __W, __mmask16 __U, __m512i __A, __m256i __B) {
1182   // CHECK-LABEL: @test_mm512_mask_inserti32x8
1183   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23>
1184   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1185   return _mm512_mask_inserti32x8(__W, __U, __A, __B, 1); 
1186 }
1187
1188 __m512i test_mm512_maskz_inserti32x8(__mmask16 __U, __m512i __A, __m256i __B) {
1189   // CHECK-LABEL: @test_mm512_maskz_inserti32x8
1190   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23>
1191   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1192   return _mm512_maskz_inserti32x8(__U, __A, __B, 1); 
1193 }
1194
1195 __m512i test_mm512_inserti64x2(__m512i __A, __m128i __B) {
1196   // CHECK-LABEL: @test_mm512_inserti64x2
1197   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 8, i32 9, i32 4, i32 5, i32 6, i32 7>
1198   return _mm512_inserti64x2(__A, __B, 1); 
1199 }
1200
1201 __m512i test_mm512_mask_inserti64x2(__m512i __W, __mmask8 __U, __m512i __A, __m128i __B) {
1202   // CHECK-LABEL: @test_mm512_mask_inserti64x2
1203   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 8, i32 9, i32 4, i32 5, i32 6, i32 7>
1204   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
1205   return _mm512_mask_inserti64x2(__W, __U, __A, __B, 1); 
1206 }
1207
1208 __m512i test_mm512_maskz_inserti64x2(__mmask8 __U, __m512i __A, __m128i __B) {
1209   // CHECK-LABEL: @test_mm512_maskz_inserti64x2
1210   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 8, i32 9, i32 4, i32 5, i32 6, i32 7>
1211   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
1212   return _mm512_maskz_inserti64x2(__U, __A, __B, 1); 
1213 }
1214 __mmask8 test_mm512_mask_fpclass_pd_mask(__mmask8 __U, __m512d __A) {
1215   // CHECK-LABEL: @test_mm512_mask_fpclass_pd_mask
1216   // CHECK: @llvm.x86.avx512.mask.fpclass.pd.512
1217   return _mm512_mask_fpclass_pd_mask(__U, __A, 4); 
1218 }
1219
1220 __mmask8 test_mm512_fpclass_pd_mask(__m512d __A) {
1221   // CHECK-LABEL: @test_mm512_fpclass_pd_mask
1222   // CHECK: @llvm.x86.avx512.mask.fpclass.pd.512
1223   return _mm512_fpclass_pd_mask(__A, 4); 
1224 }
1225
1226 __mmask16 test_mm512_mask_fpclass_ps_mask(__mmask16 __U, __m512 __A) {
1227   // CHECK-LABEL: @test_mm512_mask_fpclass_ps_mask
1228   // CHECK: @llvm.x86.avx512.mask.fpclass.ps.512
1229   return _mm512_mask_fpclass_ps_mask(__U, __A, 4); 
1230 }
1231
1232 __mmask16 test_mm512_fpclass_ps_mask(__m512 __A) {
1233   // CHECK-LABEL: @test_mm512_fpclass_ps_mask
1234   // CHECK: @llvm.x86.avx512.mask.fpclass.ps.512
1235   return _mm512_fpclass_ps_mask(__A, 4); 
1236 }
1237
1238 __mmask8 test_mm_fpclass_sd_mask(__m128 __A)  { 
1239   // CHECK-LABEL: @test_mm_fpclass_sd_mask
1240   // CHECK: @llvm.x86.avx512.mask.fpclass.sd
1241  return _mm_fpclass_sd_mask (__A, 2);
1242 }
1243
1244 __mmask8 test_mm_mask_fpclass_sd_mask(__mmask8 __U, __m128 __A)  {
1245  // CHECK-LABEL: @test_mm_mask_fpclass_sd_mask
1246  // CHECK: @llvm.x86.avx512.mask.fpclass.sd
1247  return _mm_mask_fpclass_sd_mask (__U,  __A, 2);
1248 }
1249
1250 __mmask8 test_mm_fpclass_ss_mask(__m128 __A)  { 
1251  // CHECK-LABEL: @test_mm_fpclass_ss_mask
1252  // CHECK: @llvm.x86.avx512.mask.fpclass.ss
1253  return _mm_fpclass_ss_mask ( __A, 2);
1254 }
1255
1256 __mmask8 test_mm_mask_fpclass_ss_mask(__mmask8 __U, __m128 __A)  {
1257  // CHECK-LABEL: @test_mm_mask_fpclass_ss_mask
1258  // CHECK: @llvm.x86.avx512.mask.fpclass.ss
1259  return _mm_mask_fpclass_ss_mask (__U, __A, 2);
1260 }
1261