1 // RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512dq -emit-llvm -o - -Wall -Werror | FileCheck %s
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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));
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));
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));
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));
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));
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));
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);
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);
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);
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));
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));
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));
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));
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));
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));
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);