]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CodeGen/avx512dq-builtins.c
Vendor import of clang trunk r338150:
[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) _mm512_mullo_epi64(__A, __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: sitofp <8 x i64> %{{.*}} to <8 x double>
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: sitofp <8 x i64> %{{.*}} to <8 x double>
357   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
358   return _mm512_mask_cvtepi64_pd(__W, __U, __A); 
359 }
360
361 __m512d test_mm512_maskz_cvtepi64_pd(__mmask8 __U, __m512i __A) {
362   // CHECK-LABEL: @test_mm512_maskz_cvtepi64_pd
363   // CHECK: sitofp <8 x i64> %{{.*}} to <8 x double>
364   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
365   return _mm512_maskz_cvtepi64_pd(__U, __A); 
366 }
367
368 __m512d test_mm512_cvt_roundepi64_pd(__m512i __A) {
369   // CHECK-LABEL: @test_mm512_cvt_roundepi64_pd
370   // CHECK: @llvm.x86.avx512.mask.cvtqq2pd.512
371   return _mm512_cvt_roundepi64_pd(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
372 }
373
374 __m512d test_mm512_mask_cvt_roundepi64_pd(__m512d __W, __mmask8 __U, __m512i __A) {
375   // CHECK-LABEL: @test_mm512_mask_cvt_roundepi64_pd
376   // CHECK: @llvm.x86.avx512.mask.cvtqq2pd.512
377   return _mm512_mask_cvt_roundepi64_pd(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
378 }
379
380 __m512d test_mm512_maskz_cvt_roundepi64_pd(__mmask8 __U, __m512i __A) {
381   // CHECK-LABEL: @test_mm512_maskz_cvt_roundepi64_pd
382   // CHECK: @llvm.x86.avx512.mask.cvtqq2pd.512
383   return _mm512_maskz_cvt_roundepi64_pd(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
384 }
385
386 __m256 test_mm512_cvtepi64_ps(__m512i __A) {
387   // CHECK-LABEL: @test_mm512_cvtepi64_ps
388   // CHECK: @llvm.x86.avx512.mask.cvtqq2ps.512
389   return _mm512_cvtepi64_ps(__A); 
390 }
391
392 __m256 test_mm512_mask_cvtepi64_ps(__m256 __W, __mmask8 __U, __m512i __A) {
393   // CHECK-LABEL: @test_mm512_mask_cvtepi64_ps
394   // CHECK: @llvm.x86.avx512.mask.cvtqq2ps.512
395   return _mm512_mask_cvtepi64_ps(__W, __U, __A); 
396 }
397
398 __m256 test_mm512_maskz_cvtepi64_ps(__mmask8 __U, __m512i __A) {
399   // CHECK-LABEL: @test_mm512_maskz_cvtepi64_ps
400   // CHECK: @llvm.x86.avx512.mask.cvtqq2ps.512
401   return _mm512_maskz_cvtepi64_ps(__U, __A); 
402 }
403
404 __m256 test_mm512_cvt_roundepi64_ps(__m512i __A) {
405   // CHECK-LABEL: @test_mm512_cvt_roundepi64_ps
406   // CHECK: @llvm.x86.avx512.mask.cvtqq2ps.512
407   return _mm512_cvt_roundepi64_ps(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
408 }
409
410 __m256 test_mm512_mask_cvt_roundepi64_ps(__m256 __W, __mmask8 __U, __m512i __A) {
411   // CHECK-LABEL: @test_mm512_mask_cvt_roundepi64_ps
412   // CHECK: @llvm.x86.avx512.mask.cvtqq2ps.512
413   return _mm512_mask_cvt_roundepi64_ps(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
414 }
415
416 __m256 test_mm512_maskz_cvt_roundepi64_ps(__mmask8 __U, __m512i __A) {
417   // CHECK-LABEL: @test_mm512_maskz_cvt_roundepi64_ps
418   // CHECK: @llvm.x86.avx512.mask.cvtqq2ps.512
419   return _mm512_maskz_cvt_roundepi64_ps(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
420 }
421
422 __m512i test_mm512_cvttpd_epi64(__m512d __A) {
423   // CHECK-LABEL: @test_mm512_cvttpd_epi64
424   // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.512
425   return _mm512_cvttpd_epi64(__A); 
426 }
427
428 __m512i test_mm512_mask_cvttpd_epi64(__m512i __W, __mmask8 __U, __m512d __A) {
429   // CHECK-LABEL: @test_mm512_mask_cvttpd_epi64
430   // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.512
431   return _mm512_mask_cvttpd_epi64(__W, __U, __A); 
432 }
433
434 __m512i test_mm512_maskz_cvttpd_epi64(__mmask8 __U, __m512d __A) {
435   // CHECK-LABEL: @test_mm512_maskz_cvttpd_epi64
436   // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.512
437   return _mm512_maskz_cvttpd_epi64(__U, __A); 
438 }
439
440 __m512i test_mm512_cvtt_roundpd_epi64(__m512d __A) {
441   // CHECK-LABEL: @test_mm512_cvtt_roundpd_epi64
442   // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.512
443   return _mm512_cvtt_roundpd_epi64(__A, _MM_FROUND_CUR_DIRECTION); 
444 }
445
446 __m512i test_mm512_mask_cvtt_roundpd_epi64(__m512i __W, __mmask8 __U, __m512d __A) {
447   // CHECK-LABEL: @test_mm512_mask_cvtt_roundpd_epi64
448   // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.512
449   return _mm512_mask_cvtt_roundpd_epi64(__W, __U, __A, _MM_FROUND_CUR_DIRECTION); 
450 }
451
452 __m512i test_mm512_maskz_cvtt_roundpd_epi64(__mmask8 __U, __m512d __A) {
453   // CHECK-LABEL: @test_mm512_maskz_cvtt_roundpd_epi64
454   // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.512
455   return _mm512_maskz_cvtt_roundpd_epi64(__U, __A, _MM_FROUND_CUR_DIRECTION); 
456 }
457
458 __m512i test_mm512_cvttpd_epu64(__m512d __A) {
459   // CHECK-LABEL: @test_mm512_cvttpd_epu64
460   // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.512
461   return _mm512_cvttpd_epu64(__A); 
462 }
463
464 __m512i test_mm512_mask_cvttpd_epu64(__m512i __W, __mmask8 __U, __m512d __A) {
465   // CHECK-LABEL: @test_mm512_mask_cvttpd_epu64
466   // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.512
467   return _mm512_mask_cvttpd_epu64(__W, __U, __A); 
468 }
469
470 __m512i test_mm512_maskz_cvttpd_epu64(__mmask8 __U, __m512d __A) {
471   // CHECK-LABEL: @test_mm512_maskz_cvttpd_epu64
472   // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.512
473   return _mm512_maskz_cvttpd_epu64(__U, __A); 
474 }
475
476 __m512i test_mm512_cvtt_roundpd_epu64(__m512d __A) {
477   // CHECK-LABEL: @test_mm512_cvtt_roundpd_epu64
478   // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.512
479   return _mm512_cvtt_roundpd_epu64(__A, _MM_FROUND_CUR_DIRECTION); 
480 }
481
482 __m512i test_mm512_mask_cvtt_roundpd_epu64(__m512i __W, __mmask8 __U, __m512d __A) {
483   // CHECK-LABEL: @test_mm512_mask_cvtt_roundpd_epu64
484   // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.512
485   return _mm512_mask_cvtt_roundpd_epu64(__W, __U, __A, _MM_FROUND_CUR_DIRECTION); 
486 }
487
488 __m512i test_mm512_maskz_cvtt_roundpd_epu64(__mmask8 __U, __m512d __A) {
489   // CHECK-LABEL: @test_mm512_maskz_cvtt_roundpd_epu64
490   // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.512
491   return _mm512_maskz_cvtt_roundpd_epu64(__U, __A, _MM_FROUND_CUR_DIRECTION); 
492 }
493
494 __m512i test_mm512_cvttps_epi64(__m256 __A) {
495   // CHECK-LABEL: @test_mm512_cvttps_epi64
496   // CHECK: @llvm.x86.avx512.mask.cvttps2qq.512
497   return _mm512_cvttps_epi64(__A); 
498 }
499
500 __m512i test_mm512_mask_cvttps_epi64(__m512i __W, __mmask8 __U, __m256 __A) {
501   // CHECK-LABEL: @test_mm512_mask_cvttps_epi64
502   // CHECK: @llvm.x86.avx512.mask.cvttps2qq.512
503   return _mm512_mask_cvttps_epi64(__W, __U, __A); 
504 }
505
506 __m512i test_mm512_maskz_cvttps_epi64(__mmask8 __U, __m256 __A) {
507   // CHECK-LABEL: @test_mm512_maskz_cvttps_epi64
508   // CHECK: @llvm.x86.avx512.mask.cvttps2qq.512
509   return _mm512_maskz_cvttps_epi64(__U, __A); 
510 }
511
512 __m512i test_mm512_cvtt_roundps_epi64(__m256 __A) {
513   // CHECK-LABEL: @test_mm512_cvtt_roundps_epi64
514   // CHECK: @llvm.x86.avx512.mask.cvttps2qq.512
515   return _mm512_cvtt_roundps_epi64(__A, _MM_FROUND_CUR_DIRECTION); 
516 }
517
518 __m512i test_mm512_mask_cvtt_roundps_epi64(__m512i __W, __mmask8 __U, __m256 __A) {
519   // CHECK-LABEL: @test_mm512_mask_cvtt_roundps_epi64
520   // CHECK: @llvm.x86.avx512.mask.cvttps2qq.512
521   return _mm512_mask_cvtt_roundps_epi64(__W, __U, __A, _MM_FROUND_CUR_DIRECTION); 
522 }
523
524 __m512i test_mm512_maskz_cvtt_roundps_epi64(__mmask8 __U, __m256 __A) {
525   // CHECK-LABEL: @test_mm512_maskz_cvtt_roundps_epi64
526   // CHECK: @llvm.x86.avx512.mask.cvttps2qq.512
527   return _mm512_maskz_cvtt_roundps_epi64(__U, __A, _MM_FROUND_CUR_DIRECTION); 
528 }
529
530 __m512i test_mm512_cvttps_epu64(__m256 __A) {
531   // CHECK-LABEL: @test_mm512_cvttps_epu64
532   // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.512
533   return _mm512_cvttps_epu64(__A); 
534 }
535
536 __m512i test_mm512_mask_cvttps_epu64(__m512i __W, __mmask8 __U, __m256 __A) {
537   // CHECK-LABEL: @test_mm512_mask_cvttps_epu64
538   // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.512
539   return _mm512_mask_cvttps_epu64(__W, __U, __A); 
540 }
541
542 __m512i test_mm512_maskz_cvttps_epu64(__mmask8 __U, __m256 __A) {
543   // CHECK-LABEL: @test_mm512_maskz_cvttps_epu64
544   // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.512
545   return _mm512_maskz_cvttps_epu64(__U, __A); 
546 }
547
548 __m512i test_mm512_cvtt_roundps_epu64(__m256 __A) {
549   // CHECK-LABEL: @test_mm512_cvtt_roundps_epu64
550   // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.512
551   return _mm512_cvtt_roundps_epu64(__A, _MM_FROUND_CUR_DIRECTION); 
552 }
553
554 __m512i test_mm512_mask_cvtt_roundps_epu64(__m512i __W, __mmask8 __U, __m256 __A) {
555   // CHECK-LABEL: @test_mm512_mask_cvtt_roundps_epu64
556   // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.512
557   return _mm512_mask_cvtt_roundps_epu64(__W, __U, __A, _MM_FROUND_CUR_DIRECTION); 
558 }
559
560 __m512i test_mm512_maskz_cvtt_roundps_epu64(__mmask8 __U, __m256 __A) {
561   // CHECK-LABEL: @test_mm512_maskz_cvtt_roundps_epu64
562   // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.512
563   return _mm512_maskz_cvtt_roundps_epu64(__U, __A, _MM_FROUND_CUR_DIRECTION); 
564 }
565
566 __m512d test_mm512_cvtepu64_pd(__m512i __A) {
567   // CHECK-LABEL: @test_mm512_cvtepu64_pd
568   // CHECK: uitofp <8 x i64> %{{.*}} to <8 x double>
569   return _mm512_cvtepu64_pd(__A); 
570 }
571
572 __m512d test_mm512_mask_cvtepu64_pd(__m512d __W, __mmask8 __U, __m512i __A) {
573   // CHECK-LABEL: @test_mm512_mask_cvtepu64_pd
574   // CHECK: uitofp <8 x i64> %{{.*}} to <8 x double>
575   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
576   return _mm512_mask_cvtepu64_pd(__W, __U, __A); 
577 }
578
579 __m512d test_mm512_maskz_cvtepu64_pd(__mmask8 __U, __m512i __A) {
580   // CHECK-LABEL: @test_mm512_maskz_cvtepu64_pd
581   // CHECK: uitofp <8 x i64> %{{.*}} to <8 x double>
582   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
583   return _mm512_maskz_cvtepu64_pd(__U, __A); 
584 }
585
586 __m512d test_mm512_cvt_roundepu64_pd(__m512i __A) {
587   // CHECK-LABEL: @test_mm512_cvt_roundepu64_pd
588   // CHECK: @llvm.x86.avx512.mask.cvtuqq2pd.512
589   return _mm512_cvt_roundepu64_pd(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
590 }
591
592 __m512d test_mm512_mask_cvt_roundepu64_pd(__m512d __W, __mmask8 __U, __m512i __A) {
593   // CHECK-LABEL: @test_mm512_mask_cvt_roundepu64_pd
594   // CHECK: @llvm.x86.avx512.mask.cvtuqq2pd.512
595   return _mm512_mask_cvt_roundepu64_pd(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
596 }
597
598 __m512d test_mm512_maskz_cvt_roundepu64_pd(__mmask8 __U, __m512i __A) {
599   // CHECK-LABEL: @test_mm512_maskz_cvt_roundepu64_pd
600   // CHECK: @llvm.x86.avx512.mask.cvtuqq2pd.512
601   return _mm512_maskz_cvt_roundepu64_pd(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
602 }
603
604 __m256 test_mm512_cvtepu64_ps(__m512i __A) {
605   // CHECK-LABEL: @test_mm512_cvtepu64_ps
606   // CHECK: @llvm.x86.avx512.mask.cvtuqq2ps.512
607   return _mm512_cvtepu64_ps(__A); 
608 }
609
610 __m256 test_mm512_mask_cvtepu64_ps(__m256 __W, __mmask8 __U, __m512i __A) {
611   // CHECK-LABEL: @test_mm512_mask_cvtepu64_ps
612   // CHECK: @llvm.x86.avx512.mask.cvtuqq2ps.512
613   return _mm512_mask_cvtepu64_ps(__W, __U, __A); 
614 }
615
616 __m256 test_mm512_maskz_cvtepu64_ps(__mmask8 __U, __m512i __A) {
617   // CHECK-LABEL: @test_mm512_maskz_cvtepu64_ps
618   // CHECK: @llvm.x86.avx512.mask.cvtuqq2ps.512
619   return _mm512_maskz_cvtepu64_ps(__U, __A); 
620 }
621
622 __m256 test_mm512_cvt_roundepu64_ps(__m512i __A) {
623   // CHECK-LABEL: @test_mm512_cvt_roundepu64_ps
624   // CHECK: @llvm.x86.avx512.mask.cvtuqq2ps.512
625   return _mm512_cvt_roundepu64_ps(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
626 }
627
628 __m256 test_mm512_mask_cvt_roundepu64_ps(__m256 __W, __mmask8 __U, __m512i __A) {
629   // CHECK-LABEL: @test_mm512_mask_cvt_roundepu64_ps
630   // CHECK: @llvm.x86.avx512.mask.cvtuqq2ps.512
631   return _mm512_mask_cvt_roundepu64_ps(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
632 }
633
634 __m256 test_mm512_maskz_cvt_roundepu64_ps(__mmask8 __U, __m512i __A) {
635   // CHECK-LABEL: @test_mm512_maskz_cvt_roundepu64_ps
636   // CHECK: @llvm.x86.avx512.mask.cvtuqq2ps.512
637   return _mm512_maskz_cvt_roundepu64_ps(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 
638 }
639
640 __m512d test_mm512_range_pd(__m512d __A, __m512d __B) {
641   // CHECK-LABEL: @test_mm512_range_pd
642   // CHECK: @llvm.x86.avx512.mask.range.pd.512
643   return _mm512_range_pd(__A, __B, 4); 
644 }
645
646 __m512d test_mm512_mask_range_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
647   // CHECK-LABEL: @test_mm512_mask_range_pd
648   // CHECK: @llvm.x86.avx512.mask.range.pd.512
649   return _mm512_mask_range_pd(__W, __U, __A, __B, 4); 
650 }
651
652 __m512d test_mm512_maskz_range_pd(__mmask8 __U, __m512d __A, __m512d __B) {
653   // CHECK-LABEL: @test_mm512_maskz_range_pd
654   // CHECK: @llvm.x86.avx512.mask.range.pd.512
655   return _mm512_maskz_range_pd(__U, __A, __B, 4); 
656 }
657
658 __m512d test_mm512_range_round_pd(__m512d __A, __m512d __B) {
659   // CHECK-LABEL: @test_mm512_range_round_pd
660   // CHECK: @llvm.x86.avx512.mask.range.pd.512
661   return _mm512_range_round_pd(__A, __B, 4, 8); 
662 }
663
664 __m512d test_mm512_mask_range_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
665   // CHECK-LABEL: @test_mm512_mask_range_round_pd
666   // CHECK: @llvm.x86.avx512.mask.range.pd.512
667   return _mm512_mask_range_round_pd(__W, __U, __A, __B, 4, 8); 
668 }
669
670 __m512d test_mm512_maskz_range_round_pd(__mmask8 __U, __m512d __A, __m512d __B) {
671   // CHECK-LABEL: @test_mm512_maskz_range_round_pd
672   // CHECK: @llvm.x86.avx512.mask.range.pd.512
673   return _mm512_maskz_range_round_pd(__U, __A, __B, 4, 8); 
674 }
675
676 __m128d test_mm512_range_round_sd(__m128d __A, __m128d __B) {
677   // CHECK-LABEL: @test_mm512_range_round_sd
678   // CHECK: @llvm.x86.avx512.mask.range.sd
679   return _mm_range_round_sd(__A, __B, 4, 8); 
680 }
681
682 __m128d test_mm512_mask_range_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
683   // CHECK-LABEL: test_mm512_mask_range_round_sd
684   // CHECK: @llvm.x86.avx512.mask.range.sd
685   return _mm_mask_range_round_sd(__W, __U, __A, __B, 4, 8); 
686 }
687
688 __m128d test_mm512_maskz_range_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
689   // CHECK-LABEL: @test_mm512_maskz_range_round_sd
690   // CHECK: @llvm.x86.avx512.mask.range.sd
691   return _mm_maskz_range_round_sd(__U, __A, __B, 4, 8); 
692 }
693
694 __m128 test_mm512_range_round_ss(__m128 __A, __m128 __B) {
695   // CHECK-LABEL: @test_mm512_range_round_ss
696   // CHECK: @llvm.x86.avx512.mask.range.ss
697   return _mm_range_round_ss(__A, __B, 4, 8); 
698 }
699
700 __m128 test_mm512_mask_range_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
701   // CHECK-LABEL: @test_mm512_mask_range_round_ss
702   // CHECK: @llvm.x86.avx512.mask.range.ss
703   return _mm_mask_range_round_ss(__W, __U, __A, __B, 4, 8); 
704 }
705
706 __m128 test_mm512_maskz_range_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
707   // CHECK-LABEL: @test_mm512_maskz_range_round_ss
708   // CHECK: @llvm.x86.avx512.mask.range.ss
709   return _mm_maskz_range_round_ss(__U, __A, __B, 4, 8); 
710 }
711
712 __m128d test_mm_range_sd(__m128d __A, __m128d __B) {
713   // CHECK-LABEL: @test_mm_range_sd
714   // CHECK: @llvm.x86.avx512.mask.range.sd
715   return _mm_range_sd(__A, __B, 4); 
716 }
717
718 __m128d test_mm_mask_range_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
719   // CHECK-LABEL: test_mm_mask_range_sd
720   // CHECK: @llvm.x86.avx512.mask.range.sd
721   return _mm_mask_range_sd(__W, __U, __A, __B, 4); 
722 }
723
724 __m128d test_mm_maskz_range_sd(__mmask8 __U, __m128d __A, __m128d __B) {
725   // CHECK-LABEL: @test_mm_maskz_range_sd
726   // CHECK: @llvm.x86.avx512.mask.range.sd
727   return _mm_maskz_range_sd(__U, __A, __B, 4); 
728 }
729
730 __m128 test_mm_range_ss(__m128 __A, __m128 __B) {
731   // CHECK-LABEL: @test_mm_range_ss
732   // CHECK: @llvm.x86.avx512.mask.range.ss
733   return _mm_range_ss(__A, __B, 4); 
734 }
735
736 __m128 test_mm_mask_range_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
737   // CHECK-LABEL: @test_mm_mask_range_ss
738   // CHECK: @llvm.x86.avx512.mask.range.ss
739   return _mm_mask_range_ss(__W, __U, __A, __B, 4); 
740 }
741
742 __m128 test_mm_maskz_range_ss(__mmask8 __U, __m128 __A, __m128 __B) {
743   // CHECK-LABEL: @test_mm_maskz_range_ss
744   // CHECK: @llvm.x86.avx512.mask.range.ss
745   return _mm_maskz_range_ss(__U, __A, __B, 4); 
746 }
747
748 __m512 test_mm512_range_ps(__m512 __A, __m512 __B) {
749   // CHECK-LABEL: @test_mm512_range_ps
750   // CHECK: @llvm.x86.avx512.mask.range.ps.512
751   return _mm512_range_ps(__A, __B, 4); 
752 }
753
754 __m512 test_mm512_mask_range_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
755   // CHECK-LABEL: @test_mm512_mask_range_ps
756   // CHECK: @llvm.x86.avx512.mask.range.ps.512
757   return _mm512_mask_range_ps(__W, __U, __A, __B, 4); 
758 }
759
760 __m512 test_mm512_maskz_range_ps(__mmask16 __U, __m512 __A, __m512 __B) {
761   // CHECK-LABEL: @test_mm512_maskz_range_ps
762   // CHECK: @llvm.x86.avx512.mask.range.ps.512
763   return _mm512_maskz_range_ps(__U, __A, __B, 4); 
764 }
765
766 __m512 test_mm512_range_round_ps(__m512 __A, __m512 __B) {
767   // CHECK-LABEL: @test_mm512_range_round_ps
768   // CHECK: @llvm.x86.avx512.mask.range.ps.512
769   return _mm512_range_round_ps(__A, __B, 4, 8); 
770 }
771
772 __m512 test_mm512_mask_range_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
773   // CHECK-LABEL: @test_mm512_mask_range_round_ps
774   // CHECK: @llvm.x86.avx512.mask.range.ps.512
775   return _mm512_mask_range_round_ps(__W, __U, __A, __B, 4, 8); 
776 }
777
778 __m512 test_mm512_maskz_range_round_ps(__mmask16 __U, __m512 __A, __m512 __B) {
779   // CHECK-LABEL: @test_mm512_maskz_range_round_ps
780   // CHECK: @llvm.x86.avx512.mask.range.ps.512
781   return _mm512_maskz_range_round_ps(__U, __A, __B, 4, 8); 
782 }
783
784 __m512d test_mm512_reduce_pd(__m512d __A) {
785   // CHECK-LABEL: @test_mm512_reduce_pd
786   // CHECK: @llvm.x86.avx512.mask.reduce.pd.512
787   return _mm512_reduce_pd(__A, 4); 
788 }
789
790 __m512d test_mm512_mask_reduce_pd(__m512d __W, __mmask8 __U, __m512d __A) {
791   // CHECK-LABEL: @test_mm512_mask_reduce_pd
792   // CHECK: @llvm.x86.avx512.mask.reduce.pd.512
793   return _mm512_mask_reduce_pd(__W, __U, __A, 4); 
794 }
795
796 __m512d test_mm512_maskz_reduce_pd(__mmask8 __U, __m512d __A) {
797   // CHECK-LABEL: @test_mm512_maskz_reduce_pd
798   // CHECK: @llvm.x86.avx512.mask.reduce.pd.512
799   return _mm512_maskz_reduce_pd(__U, __A, 4); 
800 }
801
802 __m512 test_mm512_reduce_ps(__m512 __A) {
803   // CHECK-LABEL: @test_mm512_reduce_ps
804   // CHECK: @llvm.x86.avx512.mask.reduce.ps.512
805   return _mm512_reduce_ps(__A, 4); 
806 }
807
808 __m512 test_mm512_mask_reduce_ps(__m512 __W, __mmask16 __U, __m512 __A) {
809   // CHECK-LABEL: @test_mm512_mask_reduce_ps
810   // CHECK: @llvm.x86.avx512.mask.reduce.ps.512
811   return _mm512_mask_reduce_ps(__W, __U, __A, 4); 
812 }
813
814 __m512 test_mm512_maskz_reduce_ps(__mmask16 __U, __m512 __A) {
815   // CHECK-LABEL: @test_mm512_maskz_reduce_ps
816   // CHECK: @llvm.x86.avx512.mask.reduce.ps.512
817   return _mm512_maskz_reduce_ps(__U, __A, 4); 
818 }
819
820 __m512d test_mm512_reduce_round_pd(__m512d __A) {
821   // CHECK-LABEL: @test_mm512_reduce_round_pd
822   // CHECK: @llvm.x86.avx512.mask.reduce.pd.512
823   return _mm512_reduce_round_pd(__A, 4, 8); 
824 }
825
826 __m512d test_mm512_mask_reduce_round_pd(__m512d __W, __mmask8 __U, __m512d __A) {
827   // CHECK-LABEL: @test_mm512_mask_reduce_round_pd
828   // CHECK: @llvm.x86.avx512.mask.reduce.pd.512
829   return _mm512_mask_reduce_round_pd(__W, __U, __A, 4, 8); 
830 }
831
832 __m512d test_mm512_maskz_reduce_round_pd(__mmask8 __U, __m512d __A) {
833   // CHECK-LABEL: @test_mm512_maskz_reduce_round_pd
834   // CHECK: @llvm.x86.avx512.mask.reduce.pd.512
835   return _mm512_maskz_reduce_round_pd(__U, __A, 4, 8);
836 }
837
838 __m512 test_mm512_reduce_round_ps(__m512 __A) {
839   // CHECK-LABEL: @test_mm512_reduce_round_ps
840   // CHECK: @llvm.x86.avx512.mask.reduce.ps.512
841   return _mm512_reduce_round_ps(__A, 4, 8); 
842 }
843
844 __m512 test_mm512_mask_reduce_round_ps(__m512 __W, __mmask16 __U, __m512 __A) {
845   // CHECK-LABEL: @test_mm512_mask_reduce_round_ps
846   // CHECK: @llvm.x86.avx512.mask.reduce.ps.512
847   return _mm512_mask_reduce_round_ps(__W, __U, __A, 4, 8); 
848 }
849
850 __m512 test_mm512_maskz_reduce_round_ps(__mmask16 __U, __m512 __A) {
851   // CHECK-LABEL: @test_mm512_maskz_reduce_round_ps
852   // CHECK: @llvm.x86.avx512.mask.reduce.ps.512
853   return _mm512_maskz_reduce_round_ps(__U, __A, 4, 8); 
854 }
855
856 __m128 test_mm_reduce_ss(__m128 __A, __m128 __B) {
857   // CHECK-LABEL: @test_mm_reduce_ss
858   // CHECK: @llvm.x86.avx512.mask.reduce.ss
859   return _mm_reduce_ss(__A, __B, 4);
860 }
861
862 __m128 test_mm_mask_reduce_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
863   // CHECK-LABEL: @test_mm_mask_reduce_ss
864   // CHECK: @llvm.x86.avx512.mask.reduce.ss
865   return _mm_mask_reduce_ss(__W, __U, __A, __B, 4);
866 }
867
868 __m128 test_mm_maskz_reduce_ss(__mmask8 __U, __m128 __A, __m128 __B) {
869   // CHECK-LABEL: @test_mm_maskz_reduce_ss
870   // CHECK: @llvm.x86.avx512.mask.reduce.ss
871   return _mm_maskz_reduce_ss(__U, __A, __B, 4);
872 }
873
874 __m128 test_mm_reduce_round_ss(__m128 __A, __m128 __B) {
875   // CHECK-LABEL: @test_mm_reduce_round_ss
876   // CHECK: @llvm.x86.avx512.mask.reduce.ss
877   return _mm_reduce_round_ss(__A, __B, 4, 8);
878 }
879
880 __m128 test_mm_mask_reduce_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
881   // CHECK-LABEL: @test_mm_mask_reduce_round_ss
882   // CHECK: @llvm.x86.avx512.mask.reduce.ss
883   return _mm_mask_reduce_round_ss(__W, __U, __A, __B, 4, 8);
884 }
885
886 __m128 test_mm_maskz_reduce_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
887   // CHECK-LABEL: @test_mm_maskz_reduce_round_ss
888   // CHECK: @llvm.x86.avx512.mask.reduce.ss
889   return _mm_maskz_reduce_round_ss(__U, __A, __B, 4, 8);
890 }
891
892 __m128d test_mm_reduce_sd(__m128d __A, __m128d __B) {
893   // CHECK-LABEL: @test_mm_reduce_sd
894   // CHECK: @llvm.x86.avx512.mask.reduce.sd
895   return _mm_reduce_sd(__A, __B, 4);
896 }
897
898 __m128d test_mm_mask_reduce_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
899   // CHECK-LABEL: @test_mm_mask_reduce_sd
900   // CHECK: @llvm.x86.avx512.mask.reduce.sd
901   return _mm_mask_reduce_sd(__W, __U, __A, __B, 4);
902 }
903
904 __m128d test_mm_maskz_reduce_sd(__mmask8 __U, __m128d __A, __m128d __B) {
905   // CHECK-LABEL: @test_mm_maskz_reduce_sd
906   // CHECK: @llvm.x86.avx512.mask.reduce.sd
907   return _mm_maskz_reduce_sd(__U, __A, __B, 4);
908 }
909
910 __m128d test_mm_reduce_round_sd(__m128d __A, __m128d __B) {
911   // CHECK-LABEL: @test_mm_reduce_round_sd
912   // CHECK: @llvm.x86.avx512.mask.reduce.sd
913   return _mm_reduce_round_sd(__A, __B, 4, 8);
914 }
915
916 __m128d test_mm_mask_reduce_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
917   // CHECK-LABEL: @test_mm_mask_reduce_round_sd
918   // CHECK: @llvm.x86.avx512.mask.reduce.sd
919   return _mm_mask_reduce_round_sd(__W, __U, __A, __B, 4, 8);
920 }
921
922 __m128d test_mm_maskz_reduce_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
923   // CHECK-LABEL: @test_mm_maskz_reduce_round_sd
924   // CHECK: @llvm.x86.avx512.mask.reduce.sd
925   return _mm_maskz_reduce_round_sd(__U, __A, __B, 4, 8);
926 }
927
928 __mmask16 test_mm512_movepi32_mask(__m512i __A) {
929   // CHECK-LABEL: @test_mm512_movepi32_mask
930   // CHECK: [[CMP:%.*]] = icmp slt <16 x i32> %{{.*}}, zeroinitializer
931   // CHECK: bitcast <16 x i1> [[CMP]] to i16
932   return _mm512_movepi32_mask(__A); 
933 }
934
935 __m512i test_mm512_movm_epi32(__mmask16 __A) {
936   // CHECK-LABEL: @test_mm512_movm_epi32
937   // CHECK: %{{.*}} = bitcast i16 %{{.*}} to <16 x i1>
938   // CHECK: %vpmovm2.i = sext <16 x i1> %{{.*}} to <16 x i32>
939   return _mm512_movm_epi32(__A); 
940 }
941
942 __m512i test_mm512_movm_epi64(__mmask8 __A) {
943   // CHECK-LABEL: @test_mm512_movm_epi64
944   // CHECK: %{{.*}} = bitcast i8 %{{.*}} to <8 x i1>
945   // CHECK: %vpmovm2.i = sext <8 x i1> %{{.*}} to <8 x i64>
946   return _mm512_movm_epi64(__A); 
947 }
948
949 __mmask8 test_mm512_movepi64_mask(__m512i __A) {
950   // CHECK-LABEL: @test_mm512_movepi64_mask
951   // CHECK: [[CMP:%.*]] = icmp slt <8 x i64> %{{.*}}, zeroinitializer
952   // CHECK: bitcast <8 x i1> [[CMP]] to i8
953   return _mm512_movepi64_mask(__A); 
954 }
955
956 __m512 test_mm512_broadcast_f32x2(__m128 __A) {
957   // CHECK-LABEL: @test_mm512_broadcast_f32x2
958   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>
959   return _mm512_broadcast_f32x2(__A); 
960 }
961
962 __m512 test_mm512_mask_broadcast_f32x2(__m512 __O, __mmask16 __M, __m128 __A) {
963   // CHECK-LABEL: @test_mm512_mask_broadcast_f32x2
964   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>
965   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
966   return _mm512_mask_broadcast_f32x2(__O, __M, __A); 
967 }
968
969 __m512 test_mm512_maskz_broadcast_f32x2(__mmask16 __M, __m128 __A) {
970   // CHECK-LABEL: @test_mm512_maskz_broadcast_f32x2
971   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>
972   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
973   return _mm512_maskz_broadcast_f32x2(__M, __A); 
974 }
975
976 __m512 test_mm512_broadcast_f32x8(float const* __A) {
977   // CHECK-LABEL: @test_mm512_broadcast_f32x8
978   // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
979   return _mm512_broadcast_f32x8(_mm256_loadu_ps(__A)); 
980 }
981
982 __m512 test_mm512_mask_broadcast_f32x8(__m512 __O, __mmask16 __M, float const* __A) {
983   // CHECK-LABEL: @test_mm512_mask_broadcast_f32x8
984   // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
985   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
986   return _mm512_mask_broadcast_f32x8(__O, __M, _mm256_loadu_ps(__A)); 
987 }
988
989 __m512 test_mm512_maskz_broadcast_f32x8(__mmask16 __M, float const* __A) {
990   // CHECK-LABEL: @test_mm512_maskz_broadcast_f32x8
991   // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
992   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
993   return _mm512_maskz_broadcast_f32x8(__M, _mm256_loadu_ps(__A)); 
994 }
995
996 __m512d test_mm512_broadcast_f64x2(double const* __A) {
997   // CHECK-LABEL: @test_mm512_broadcast_f64x2
998   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>
999   return _mm512_broadcast_f64x2(_mm_loadu_pd(__A)); 
1000 }
1001
1002 __m512d test_mm512_mask_broadcast_f64x2(__m512d __O, __mmask8 __M, double const* __A) {
1003   // CHECK-LABEL: @test_mm512_mask_broadcast_f64x2
1004   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>
1005   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1006   return _mm512_mask_broadcast_f64x2(__O, __M, _mm_loadu_pd(__A)); 
1007 }
1008
1009 __m512d test_mm512_maskz_broadcast_f64x2(__mmask8 __M, double const* __A) {
1010   // CHECK-LABEL: @test_mm512_maskz_broadcast_f64x2
1011   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>
1012   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1013   return _mm512_maskz_broadcast_f64x2(__M, _mm_loadu_pd(__A)); 
1014 }
1015
1016 __m512i test_mm512_broadcast_i32x2(__m128i __A) {
1017   // CHECK-LABEL: @test_mm512_broadcast_i32x2
1018   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>
1019   return _mm512_broadcast_i32x2(__A); 
1020 }
1021
1022 __m512i test_mm512_mask_broadcast_i32x2(__m512i __O, __mmask16 __M, __m128i __A) {
1023   // CHECK-LABEL: @test_mm512_mask_broadcast_i32x2
1024   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>
1025   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1026   return _mm512_mask_broadcast_i32x2(__O, __M, __A); 
1027 }
1028
1029 __m512i test_mm512_maskz_broadcast_i32x2(__mmask16 __M, __m128i __A) {
1030   // CHECK-LABEL: @test_mm512_maskz_broadcast_i32x2
1031   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>
1032   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1033   return _mm512_maskz_broadcast_i32x2(__M, __A); 
1034 }
1035
1036 __m512i test_mm512_broadcast_i32x8(__m256i const* __A) {
1037   // CHECK-LABEL: @test_mm512_broadcast_i32x8
1038   // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
1039   return _mm512_broadcast_i32x8(_mm256_loadu_si256(__A)); 
1040 }
1041
1042 __m512i test_mm512_mask_broadcast_i32x8(__m512i __O, __mmask16 __M, __m256i const* __A) {
1043   // CHECK-LABEL: @test_mm512_mask_broadcast_i32x8
1044   // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
1045   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1046   return _mm512_mask_broadcast_i32x8(__O, __M, _mm256_loadu_si256(__A)); 
1047 }
1048
1049 __m512i test_mm512_maskz_broadcast_i32x8(__mmask16 __M, __m256i const* __A) {
1050   // CHECK-LABEL: @test_mm512_maskz_broadcast_i32x8
1051   // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
1052   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1053   return _mm512_maskz_broadcast_i32x8(__M, _mm256_loadu_si256(__A)); 
1054 }
1055
1056 __m512i test_mm512_broadcast_i64x2(__m128i const* __A) {
1057   // CHECK-LABEL: @test_mm512_broadcast_i64x2
1058   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>
1059   return _mm512_broadcast_i64x2(_mm_loadu_si128(__A)); 
1060 }
1061
1062 __m512i test_mm512_mask_broadcast_i64x2(__m512i __O, __mmask8 __M, __m128i const* __A) {
1063   // CHECK-LABEL: @test_mm512_mask_broadcast_i64x2
1064   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>
1065   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
1066   return _mm512_mask_broadcast_i64x2(__O, __M, _mm_loadu_si128(__A)); 
1067 }
1068
1069 __m512i test_mm512_maskz_broadcast_i64x2(__mmask8 __M, __m128i const* __A) {
1070   // CHECK-LABEL: @test_mm512_maskz_broadcast_i64x2
1071   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>
1072   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
1073   return _mm512_maskz_broadcast_i64x2(__M, _mm_loadu_si128(__A)); 
1074 }
1075
1076 __m256 test_mm512_extractf32x8_ps(__m512 __A) {
1077   // CHECK-LABEL: @test_mm512_extractf32x8_ps
1078   // 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>
1079   return _mm512_extractf32x8_ps(__A, 1); 
1080 }
1081
1082 __m256 test_mm512_mask_extractf32x8_ps(__m256 __W, __mmask8 __U, __m512 __A) {
1083   // CHECK-LABEL: @test_mm512_mask_extractf32x8_ps
1084   // 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>
1085   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
1086   return _mm512_mask_extractf32x8_ps(__W, __U, __A, 1); 
1087 }
1088
1089 __m256 test_mm512_maskz_extractf32x8_ps(__mmask8 __U, __m512 __A) {
1090   // CHECK-LABEL: @test_mm512_maskz_extractf32x8_ps
1091   // 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>
1092   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
1093   return _mm512_maskz_extractf32x8_ps(__U, __A, 1); 
1094 }
1095
1096 __m128d test_mm512_extractf64x2_pd(__m512d __A) {
1097   // CHECK-LABEL: @test_mm512_extractf64x2_pd
1098   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <2 x i32> <i32 6, i32 7>
1099   return _mm512_extractf64x2_pd(__A, 3); 
1100 }
1101
1102 __m128d test_mm512_mask_extractf64x2_pd(__m128d __W, __mmask8 __U, __m512d __A) {
1103   // CHECK-LABEL: @test_mm512_mask_extractf64x2_pd
1104   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <2 x i32> <i32 6, i32 7>
1105   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
1106   return _mm512_mask_extractf64x2_pd(__W, __U, __A, 3); 
1107 }
1108
1109 __m128d test_mm512_maskz_extractf64x2_pd(__mmask8 __U, __m512d __A) {
1110   // CHECK-LABEL: @test_mm512_maskz_extractf64x2_pd
1111   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <2 x i32> <i32 6, i32 7>
1112   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
1113   return _mm512_maskz_extractf64x2_pd(__U, __A, 3); 
1114 }
1115
1116 __m256i test_mm512_extracti32x8_epi32(__m512i __A) {
1117   // CHECK-LABEL: @test_mm512_extracti32x8_epi32
1118   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> undef, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
1119   return _mm512_extracti32x8_epi32(__A, 1); 
1120 }
1121
1122 __m256i test_mm512_mask_extracti32x8_epi32(__m256i __W, __mmask8 __U, __m512i __A) {
1123   // CHECK-LABEL: @test_mm512_mask_extracti32x8_epi32
1124   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> undef, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
1125   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
1126   return _mm512_mask_extracti32x8_epi32(__W, __U, __A, 1); 
1127 }
1128
1129 __m256i test_mm512_maskz_extracti32x8_epi32(__mmask8 __U, __m512i __A) {
1130   // CHECK-LABEL: @test_mm512_maskz_extracti32x8_epi32
1131   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> undef, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
1132   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
1133   return _mm512_maskz_extracti32x8_epi32(__U, __A, 1); 
1134 }
1135
1136 __m128i test_mm512_extracti64x2_epi64(__m512i __A) {
1137   // CHECK-LABEL: @test_mm512_extracti64x2_epi64
1138   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> undef, <2 x i32> <i32 6, i32 7>
1139   return _mm512_extracti64x2_epi64(__A, 3); 
1140 }
1141
1142 __m128i test_mm512_mask_extracti64x2_epi64(__m128i __W, __mmask8 __U, __m512i __A) {
1143   // CHECK-LABEL: @test_mm512_mask_extracti64x2_epi64
1144   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> undef, <2 x i32> <i32 6, i32 7>
1145   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
1146   return _mm512_mask_extracti64x2_epi64(__W, __U, __A, 3); 
1147 }
1148
1149 __m128i test_mm512_maskz_extracti64x2_epi64(__mmask8 __U, __m512i __A) {
1150   // CHECK-LABEL: @test_mm512_maskz_extracti64x2_epi64
1151   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> undef, <2 x i32> <i32 6, i32 7>
1152   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
1153   return _mm512_maskz_extracti64x2_epi64(__U, __A, 3); 
1154 }
1155
1156 __m512 test_mm512_insertf32x8(__m512 __A, __m256 __B) {
1157   // CHECK-LABEL: @test_mm512_insertf32x8
1158   // 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>
1159   return _mm512_insertf32x8(__A, __B, 1); 
1160 }
1161
1162 __m512 test_mm512_mask_insertf32x8(__m512 __W, __mmask16 __U, __m512 __A, __m256 __B) {
1163   // CHECK-LABEL: @test_mm512_mask_insertf32x8
1164   // 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>
1165   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1166   return _mm512_mask_insertf32x8(__W, __U, __A, __B, 1); 
1167 }
1168
1169 __m512 test_mm512_maskz_insertf32x8(__mmask16 __U, __m512 __A, __m256 __B) {
1170   // CHECK-LABEL: @test_mm512_maskz_insertf32x8
1171   // 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>
1172   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1173   return _mm512_maskz_insertf32x8(__U, __A, __B, 1); 
1174 }
1175
1176 __m512d test_mm512_insertf64x2(__m512d __A, __m128d __B) {
1177   // CHECK-LABEL: @test_mm512_insertf64x2
1178   // 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>
1179   return _mm512_insertf64x2(__A, __B, 3); 
1180 }
1181
1182 __m512d test_mm512_mask_insertf64x2(__m512d __W, __mmask8 __U, __m512d __A, __m128d __B) {
1183   // CHECK-LABEL: @test_mm512_mask_insertf64x2
1184   // 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>
1185   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1186   return _mm512_mask_insertf64x2(__W, __U, __A, __B, 3); 
1187 }
1188
1189 __m512d test_mm512_maskz_insertf64x2(__mmask8 __U, __m512d __A, __m128d __B) {
1190   // CHECK-LABEL: @test_mm512_maskz_insertf64x2
1191   // 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>
1192   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1193   return _mm512_maskz_insertf64x2(__U, __A, __B, 3); 
1194 }
1195
1196 __m512i test_mm512_inserti32x8(__m512i __A, __m256i __B) {
1197   // CHECK-LABEL: @test_mm512_inserti32x8
1198   // 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>
1199   return _mm512_inserti32x8(__A, __B, 1); 
1200 }
1201
1202 __m512i test_mm512_mask_inserti32x8(__m512i __W, __mmask16 __U, __m512i __A, __m256i __B) {
1203   // CHECK-LABEL: @test_mm512_mask_inserti32x8
1204   // 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>
1205   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1206   return _mm512_mask_inserti32x8(__W, __U, __A, __B, 1); 
1207 }
1208
1209 __m512i test_mm512_maskz_inserti32x8(__mmask16 __U, __m512i __A, __m256i __B) {
1210   // CHECK-LABEL: @test_mm512_maskz_inserti32x8
1211   // 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>
1212   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1213   return _mm512_maskz_inserti32x8(__U, __A, __B, 1); 
1214 }
1215
1216 __m512i test_mm512_inserti64x2(__m512i __A, __m128i __B) {
1217   // CHECK-LABEL: @test_mm512_inserti64x2
1218   // 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>
1219   return _mm512_inserti64x2(__A, __B, 1); 
1220 }
1221
1222 __m512i test_mm512_mask_inserti64x2(__m512i __W, __mmask8 __U, __m512i __A, __m128i __B) {
1223   // CHECK-LABEL: @test_mm512_mask_inserti64x2
1224   // 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>
1225   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
1226   return _mm512_mask_inserti64x2(__W, __U, __A, __B, 1); 
1227 }
1228
1229 __m512i test_mm512_maskz_inserti64x2(__mmask8 __U, __m512i __A, __m128i __B) {
1230   // CHECK-LABEL: @test_mm512_maskz_inserti64x2
1231   // 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>
1232   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
1233   return _mm512_maskz_inserti64x2(__U, __A, __B, 1); 
1234 }
1235 __mmask8 test_mm512_mask_fpclass_pd_mask(__mmask8 __U, __m512d __A) {
1236   // CHECK-LABEL: @test_mm512_mask_fpclass_pd_mask
1237   // CHECK: @llvm.x86.avx512.fpclass.pd.512
1238   return _mm512_mask_fpclass_pd_mask(__U, __A, 4); 
1239 }
1240
1241 __mmask8 test_mm512_fpclass_pd_mask(__m512d __A) {
1242   // CHECK-LABEL: @test_mm512_fpclass_pd_mask
1243   // CHECK: @llvm.x86.avx512.fpclass.pd.512
1244   return _mm512_fpclass_pd_mask(__A, 4); 
1245 }
1246
1247 __mmask16 test_mm512_mask_fpclass_ps_mask(__mmask16 __U, __m512 __A) {
1248   // CHECK-LABEL: @test_mm512_mask_fpclass_ps_mask
1249   // CHECK: @llvm.x86.avx512.fpclass.ps.512
1250   return _mm512_mask_fpclass_ps_mask(__U, __A, 4); 
1251 }
1252
1253 __mmask16 test_mm512_fpclass_ps_mask(__m512 __A) {
1254   // CHECK-LABEL: @test_mm512_fpclass_ps_mask
1255   // CHECK: @llvm.x86.avx512.fpclass.ps.512
1256   return _mm512_fpclass_ps_mask(__A, 4); 
1257 }
1258
1259 __mmask8 test_mm_fpclass_sd_mask(__m128d __A)  { 
1260   // CHECK-LABEL: @test_mm_fpclass_sd_mask
1261   // CHECK: @llvm.x86.avx512.mask.fpclass.sd
1262  return _mm_fpclass_sd_mask (__A, 2);
1263 }
1264
1265 __mmask8 test_mm_mask_fpclass_sd_mask(__mmask8 __U, __m128d __A)  {
1266  // CHECK-LABEL: @test_mm_mask_fpclass_sd_mask
1267  // CHECK: @llvm.x86.avx512.mask.fpclass.sd
1268  return _mm_mask_fpclass_sd_mask (__U,  __A, 2);
1269 }
1270
1271 __mmask8 test_mm_fpclass_ss_mask(__m128 __A)  { 
1272  // CHECK-LABEL: @test_mm_fpclass_ss_mask
1273  // CHECK: @llvm.x86.avx512.mask.fpclass.ss
1274  return _mm_fpclass_ss_mask ( __A, 2);
1275 }
1276
1277 __mmask8 test_mm_mask_fpclass_ss_mask(__mmask8 __U, __m128 __A)  {
1278  // CHECK-LABEL: @test_mm_mask_fpclass_ss_mask
1279  // CHECK: @llvm.x86.avx512.mask.fpclass.ss
1280  return _mm_mask_fpclass_ss_mask (__U, __A, 2);
1281 }
1282