avx512f-builtins.c revision 3ea9e33ea25e0c2b12db56418ba3f994eb662c04
1// RUN: %clang_cc1 %s -O0 -triple=x86_64-apple-darwin -target-feature +avx512f -emit-llvm -o - -Werror | FileCheck %s
2
3// Don't include mm_malloc.h, it's system specific.
4#define __MM_MALLOC_H
5
6#include <immintrin.h>
7
8__m512d test_mm512_sqrt_pd(__m512d a)
9{
10  // CHECK-LABEL: @test_mm512_sqrt_pd
11  // CHECK: @llvm.x86.avx512.sqrt.pd.512
12  return _mm512_sqrt_pd(a);
13}
14
15__m512 test_mm512_sqrt_ps(__m512 a)
16{
17  // CHECK-LABEL: @test_mm512_sqrt_ps
18  // CHECK: @llvm.x86.avx512.sqrt.ps.512
19  return _mm512_sqrt_ps(a);
20}
21
22__m512d test_mm512_rsqrt14_pd(__m512d a)
23{
24  // CHECK-LABEL: @test_mm512_rsqrt14_pd
25  // CHECK: @llvm.x86.avx512.rsqrt14.pd.512
26  return _mm512_rsqrt14_pd(a);
27}
28
29__m512 test_mm512_rsqrt14_ps(__m512 a)
30{
31  // CHECK-LABEL: @test_mm512_rsqrt14_ps
32  // CHECK: @llvm.x86.avx512.rsqrt14.ps.512
33  return _mm512_rsqrt14_ps(a);
34}
35
36__m512 test_mm512_add_ps(__m512 a, __m512 b)
37{
38  // CHECK-LABEL: @test_mm512_add_ps
39  // CHECK: fadd <16 x float>
40  return _mm512_add_ps(a, b);
41}
42
43__m512d test_mm512_add_pd(__m512d a, __m512d b)
44{
45  // CHECK-LABEL: @test_mm512_add_pd
46  // CHECK: fadd <8 x double>
47  return _mm512_add_pd(a, b);
48}
49
50__m512 test_mm512_mul_ps(__m512 a, __m512 b)
51{
52  // CHECK-LABEL: @test_mm512_mul_ps
53  // CHECK: fmul <16 x float>
54  return _mm512_mul_ps(a, b);
55}
56
57__m512d test_mm512_mul_pd(__m512d a, __m512d b)
58{
59  // CHECK-LABEL: @test_mm512_mul_pd
60  // CHECK: fmul <8 x double>
61  return _mm512_mul_pd(a, b);
62}
63
64void test_mm512_storeu_ps(void *p, __m512 a)
65{
66  // CHECK-LABEL: @test_mm512_storeu_ps
67  // CHECK: @llvm.x86.avx512.mask.storeu.ps.512
68  _mm512_storeu_ps(p, a);
69}
70
71void test_mm512_storeu_pd(void *p, __m512d a)
72{
73  // CHECK-LABEL: @test_mm512_storeu_pd
74  // CHECK: @llvm.x86.avx512.mask.storeu.pd.512
75  _mm512_storeu_pd(p, a);
76}
77
78void test_mm512_mask_store_ps(void *p, __m512 a, __mmask16 m)
79{
80  // CHECK-LABEL: @test_mm512_mask_store_ps
81  // CHECK: @llvm.x86.avx512.mask.store.ps.512
82  _mm512_mask_store_ps(p, m, a);
83}
84
85void test_mm512_store_ps(void *p, __m512 a)
86{
87  // CHECK-LABEL: @test_mm512_store_ps
88  // CHECK: store <16 x float>
89  _mm512_store_ps(p, a);
90}
91
92void test_mm512_mask_store_pd(void *p, __m512d a, __mmask8 m)
93{
94  // CHECK-LABEL: @test_mm512_mask_store_pd
95  // CHECK: @llvm.x86.avx512.mask.store.pd.512
96  _mm512_mask_store_pd(p, m, a);
97}
98
99void test_mm512_store_pd(void *p, __m512d a)
100{
101  // CHECK-LABEL: @test_mm512_store_pd
102  // CHECK: store <8 x double>
103  _mm512_store_pd(p, a);
104}
105
106__m512 test_mm512_loadu_ps(void *p)
107{
108  // CHECK-LABEL: @test_mm512_loadu_ps
109  // CHECK: load <16 x float>, <16 x float>* {{.*}}, align 1{{$}}
110  return _mm512_loadu_ps(p);
111}
112
113__m512d test_mm512_loadu_pd(void *p)
114{
115  // CHECK-LABEL: @test_mm512_loadu_pd
116  // CHECK: load <8 x double>, <8 x double>* {{.*}}, align 1{{$}}
117  return _mm512_loadu_pd(p);
118}
119
120__m512 test_mm512_maskz_load_ps(void *p, __mmask16 m)
121{
122  // CHECK-LABEL: @test_mm512_maskz_load_ps
123  // CHECK: @llvm.x86.avx512.mask.load.ps.512
124  return _mm512_maskz_load_ps(m, p);
125}
126
127__m512 test_mm512_load_ps(void *p)
128{
129  // CHECK-LABEL: @test_mm512_load_ps
130  // CHECK: @llvm.x86.avx512.mask.load.ps.512
131  return _mm512_load_ps(p);
132}
133
134__m512d test_mm512_maskz_load_pd(void *p, __mmask8 m)
135{
136  // CHECK-LABEL: @test_mm512_maskz_load_pd
137  // CHECK: @llvm.x86.avx512.mask.load.pd.512
138  return _mm512_maskz_load_pd(m, p);
139}
140
141__m512d test_mm512_load_pd(void *p)
142{
143  // CHECK-LABEL: @test_mm512_load_pd
144  // CHECK: @llvm.x86.avx512.mask.load.pd.512
145  return _mm512_load_pd(p);
146}
147
148__m512d test_mm512_set1_pd(double d)
149{
150  // CHECK-LABEL: @test_mm512_set1_pd
151  // CHECK: insertelement <8 x double> {{.*}}, i32 0
152  // CHECK: insertelement <8 x double> {{.*}}, i32 1
153  // CHECK: insertelement <8 x double> {{.*}}, i32 2
154  // CHECK: insertelement <8 x double> {{.*}}, i32 3
155  // CHECK: insertelement <8 x double> {{.*}}, i32 4
156  // CHECK: insertelement <8 x double> {{.*}}, i32 5
157  // CHECK: insertelement <8 x double> {{.*}}, i32 6
158  // CHECK: insertelement <8 x double> {{.*}}, i32 7
159  return _mm512_set1_pd(d);
160}
161
162__m512d test_mm512_castpd256_pd512(__m256d a)
163{
164  // CHECK-LABEL: @test_mm512_castpd256_pd512
165  // CHECK: shufflevector <4 x double> {{.*}} <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef>
166  return _mm512_castpd256_pd512(a);
167}
168
169__mmask16 test_mm512_knot(__mmask16 a)
170{
171  // CHECK-LABEL: @test_mm512_knot
172  // CHECK: @llvm.x86.avx512.knot.w
173  return _mm512_knot(a);
174}
175
176__m512i test_mm512_alignr_epi32(__m512i a, __m512i b)
177{
178  // CHECK-LABEL: @test_mm512_alignr_epi32
179  // CHECK: @llvm.x86.avx512.mask.valign.d.512
180  return _mm512_alignr_epi32(a, b, 2);
181}
182
183__m512i test_mm512_alignr_epi64(__m512i a, __m512i b)
184{
185  // CHECK-LABEL: @test_mm512_alignr_epi64
186  // CHECK: @llvm.x86.avx512.mask.valign.q.512
187  return _mm512_alignr_epi64(a, b, 2);
188}
189
190__m512d test_mm512_broadcastsd_pd(__m128d a)
191{
192  // CHECK-LABEL: @test_mm512_broadcastsd_pd
193  // CHECK: insertelement <8 x double> {{.*}}, i32 0
194  // CHECK: insertelement <8 x double> {{.*}}, i32 1
195  // CHECK: insertelement <8 x double> {{.*}}, i32 2
196  // CHECK: insertelement <8 x double> {{.*}}, i32 3
197  // CHECK: insertelement <8 x double> {{.*}}, i32 4
198  // CHECK: insertelement <8 x double> {{.*}}, i32 5
199  // CHECK: insertelement <8 x double> {{.*}}, i32 6
200  // CHECK: insertelement <8 x double> {{.*}}, i32 7
201  return _mm512_broadcastsd_pd(a);
202}
203
204__m512i test_mm512_fmadd_pd(__m512d a, __m512d b, __m512d c)
205{
206  // CHECK-LABEL: @test_mm512_fmadd_pd
207  // CHECK: @llvm.x86.fma.mask.vfmadd.pd.512
208  return _mm512_fmadd_pd(a, b, c);
209}
210
211__mmask16 test_mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) {
212  // CHECK-LABEL: @test_mm512_cmpeq_epi32_mask
213  // CHECK: @llvm.x86.avx512.mask.pcmpeq.d.512
214  return (__mmask16)_mm512_cmpeq_epi32_mask(__a, __b);
215}
216
217__mmask16 test_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
218  // CHECK-LABEL: @test_mm512_mask_cmpeq_epi32_mask
219  // CHECK: @llvm.x86.avx512.mask.pcmpeq.d.512
220  return (__mmask16)_mm512_mask_cmpeq_epi32_mask(__u, __a, __b);
221}
222
223__mmask8 test_mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
224  // CHECK-LABEL: @test_mm512_mask_cmpeq_epi64_mask
225  // CHECK: @llvm.x86.avx512.mask.pcmpeq.q.512
226  return (__mmask8)_mm512_mask_cmpeq_epi64_mask(__u, __a, __b);
227}
228
229__mmask8 test_mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) {
230  // CHECK-LABEL: @test_mm512_cmpeq_epi64_mask
231  // CHECK: @llvm.x86.avx512.mask.pcmpeq.q.512
232  return (__mmask8)_mm512_cmpeq_epi64_mask(__a, __b);
233}
234
235__mmask16 test_mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) {
236  // CHECK-LABEL: @test_mm512_cmpgt_epi32_mask
237  // CHECK: @llvm.x86.avx512.mask.pcmpgt.d.512
238  return (__mmask16)_mm512_cmpgt_epi32_mask(__a, __b);
239}
240
241__mmask16 test_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
242  // CHECK-LABEL: @test_mm512_mask_cmpgt_epi32_mask
243  // CHECK: @llvm.x86.avx512.mask.pcmpgt.d.512
244  return (__mmask16)_mm512_mask_cmpgt_epi32_mask(__u, __a, __b);
245}
246
247__mmask8 test_mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
248  // CHECK-LABEL: @test_mm512_mask_cmpgt_epi64_mask
249  // CHECK: @llvm.x86.avx512.mask.pcmpgt.q.512
250  return (__mmask8)_mm512_mask_cmpgt_epi64_mask(__u, __a, __b);
251}
252
253__mmask8 test_mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) {
254  // CHECK-LABEL: @test_mm512_cmpgt_epi64_mask
255  // CHECK: @llvm.x86.avx512.mask.pcmpgt.q.512
256  return (__mmask8)_mm512_cmpgt_epi64_mask(__a, __b);
257}
258
259__m512d test_mm512_unpackhi_pd(__m512d a, __m512d b)
260{
261  // CHECK-LABEL: @test_mm512_unpackhi_pd
262  // CHECK: shufflevector <8 x double> {{.*}} <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
263  return _mm512_unpackhi_pd(a, b);
264}
265
266__m512d test_mm512_unpacklo_pd(__m512d a, __m512d b)
267{
268  // CHECK-LABEL: @test_mm512_unpacklo_pd
269  // CHECK: shufflevector <8 x double> {{.*}} <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
270  return _mm512_unpacklo_pd(a, b);
271}
272
273__m512 test_mm512_unpackhi_ps(__m512 a, __m512 b)
274{
275  // CHECK-LABEL: @test_mm512_unpackhi_ps
276  // CHECK: shufflevector <16 x float> {{.*}} <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31>
277  return _mm512_unpackhi_ps(a, b);
278}
279
280__m512 test_mm512_unpacklo_ps(__m512 a, __m512 b)
281{
282  // CHECK-LABEL: @test_mm512_unpacklo_ps
283  // CHECK: shufflevector <16 x float> {{.*}} <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29>
284  return _mm512_unpacklo_ps(a, b);
285}
286
287__mmask16 test_mm512_cmp_round_ps_mask(__m512 a, __m512 b) {
288  // CHECK-LABEL: @test_mm512_cmp_round_ps_mask
289  // CHECK: @llvm.x86.avx512.mask.cmp.ps.512
290  return _mm512_cmp_round_ps_mask(a, b, 0, _MM_FROUND_TO_NEAREST_INT);
291}
292
293__mmask16 test_mm512_mask_cmp_round_ps_mask(__mmask16 m, __m512 a, __m512 b) {
294  // CHECK-LABEL: @test_mm512_mask_cmp_round_ps_mask
295  // CHECK: @llvm.x86.avx512.mask.cmp.ps.512
296  return _mm512_mask_cmp_round_ps_mask(m, a, b, 0, _MM_FROUND_TO_NEAREST_INT);
297}
298
299__mmask16 test_mm512_cmp_ps_mask(__m512 a, __m512 b) {
300  // check-label: @test_mm512_cmp_ps_mask
301  // check: @llvm.x86.avx512.mask.cmp.ps.512
302  return _mm512_cmp_ps_mask(a, b, 0);
303}
304
305__mmask16 test_mm512_mask_cmp_ps_mask(__mmask16 m, __m512 a, __m512 b) {
306  // CHECK-LABEL: @test_mm512_mask_cmp_ps_mask
307  // CHECK: @llvm.x86.avx512.mask.cmp.ps.512
308  return _mm512_mask_cmp_ps_mask(m, a, b, 0);
309}
310
311__mmask8 test_mm512_cmp_round_pd_mask(__m512d a, __m512d b) {
312  // CHECK-LABEL: @test_mm512_cmp_round_pd_mask
313  // CHECK: @llvm.x86.avx512.mask.cmp.pd.512
314  return _mm512_cmp_round_pd_mask(a, b, 0, _MM_FROUND_TO_NEAREST_INT);
315}
316
317__mmask8 test_mm512_mask_cmp_round_pd_mask(__mmask8 m, __m512d a, __m512d b) {
318  // CHECK-LABEL: @test_mm512_mask_cmp_round_pd_mask
319  // CHECK: @llvm.x86.avx512.mask.cmp.pd.512
320  return _mm512_mask_cmp_round_pd_mask(m, a, b, 0, _MM_FROUND_TO_NEAREST_INT);
321}
322
323__mmask8 test_mm512_cmp_pd_mask(__m512d a, __m512d b) {
324  // check-label: @test_mm512_cmp_pd_mask
325  // check: @llvm.x86.avx512.mask.cmp.pd.512
326  return _mm512_cmp_pd_mask(a, b, 0);
327}
328
329__mmask8 test_mm512_mask_cmp_pd_mask(__mmask8 m, __m512d a, __m512d b) {
330  // CHECK-LABEL: @test_mm512_mask_cmp_pd_mask
331  // CHECK: @llvm.x86.avx512.mask.cmp.pd.512
332  return _mm512_mask_cmp_pd_mask(m, a, b, 0);
333}
334
335__m256d test_mm512_extractf64x4_pd(__m512d a)
336{
337  // CHECK-LABEL: @test_mm512_extractf64x4_pd
338  // CHECK: @llvm.x86.avx512.mask.vextractf64x4.512
339  return _mm512_extractf64x4_pd(a, 1);
340}
341
342__m128 test_mm512_extractf32x4_ps(__m512 a)
343{
344  // CHECK-LABEL: @test_mm512_extractf32x4_ps
345  // CHECK: @llvm.x86.avx512.mask.vextractf32x4.512
346  return _mm512_extractf32x4_ps(a, 1);
347}
348
349__mmask16 test_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) {
350  // CHECK-LABEL: @test_mm512_cmpeq_epu32_mask
351  // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 0, i16 -1)
352  return (__mmask16)_mm512_cmpeq_epu32_mask(__a, __b);
353}
354
355__mmask16 test_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
356  // CHECK-LABEL: @test_mm512_mask_cmpeq_epu32_mask
357  // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 0, i16 {{.*}})
358  return (__mmask16)_mm512_mask_cmpeq_epu32_mask(__u, __a, __b);
359}
360
361__mmask8 test_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) {
362  // CHECK-LABEL: @test_mm512_cmpeq_epu64_mask
363  // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 0, i8 -1)
364  return (__mmask8)_mm512_cmpeq_epu64_mask(__a, __b);
365}
366
367__mmask8 test_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
368  // CHECK-LABEL: @test_mm512_mask_cmpeq_epu64_mask
369  // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 0, i8 {{.*}})
370  return (__mmask8)_mm512_mask_cmpeq_epu64_mask(__u, __a, __b);
371}
372
373__mmask16 test_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) {
374  // CHECK-LABEL: @test_mm512_cmpge_epi32_mask
375  // CHECK: @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 5, i16 -1)
376  return (__mmask16)_mm512_cmpge_epi32_mask(__a, __b);
377}
378
379__mmask16 test_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
380  // CHECK-LABEL: @test_mm512_mask_cmpge_epi32_mask
381  // CHECK: @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 5, i16 {{.*}})
382  return (__mmask16)_mm512_mask_cmpge_epi32_mask(__u, __a, __b);
383}
384
385__mmask8 test_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) {
386  // CHECK-LABEL: @test_mm512_cmpge_epi64_mask
387  // CHECK: @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 5, i8 -1)
388  return (__mmask8)_mm512_cmpge_epi64_mask(__a, __b);
389}
390
391__mmask8 test_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
392  // CHECK-LABEL: @test_mm512_mask_cmpge_epi64_mask
393  // CHECK: @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 5, i8 {{.*}})
394  return (__mmask8)_mm512_mask_cmpge_epi64_mask(__u, __a, __b);
395}
396
397__mmask16 test_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) {
398  // CHECK-LABEL: @test_mm512_cmpge_epu32_mask
399  // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 5, i16 -1)
400  return (__mmask16)_mm512_cmpge_epu32_mask(__a, __b);
401}
402
403__mmask16 test_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
404  // CHECK-LABEL: @test_mm512_mask_cmpge_epu32_mask
405  // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 5, i16 {{.*}})
406  return (__mmask16)_mm512_mask_cmpge_epu32_mask(__u, __a, __b);
407}
408
409__mmask8 test_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) {
410  // CHECK-LABEL: @test_mm512_cmpge_epu64_mask
411  // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 5, i8 -1)
412  return (__mmask8)_mm512_cmpge_epu64_mask(__a, __b);
413}
414
415__mmask8 test_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
416  // CHECK-LABEL: @test_mm512_mask_cmpge_epu64_mask
417  // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 5, i8 {{.*}})
418  return (__mmask8)_mm512_mask_cmpge_epu64_mask(__u, __a, __b);
419}
420
421__mmask16 test_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) {
422  // CHECK-LABEL: @test_mm512_cmpgt_epu32_mask
423  // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 6, i16 -1)
424  return (__mmask16)_mm512_cmpgt_epu32_mask(__a, __b);
425}
426
427__mmask16 test_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
428  // CHECK-LABEL: @test_mm512_mask_cmpgt_epu32_mask
429  // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 6, i16 {{.*}})
430  return (__mmask16)_mm512_mask_cmpgt_epu32_mask(__u, __a, __b);
431}
432
433__mmask8 test_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) {
434  // CHECK-LABEL: @test_mm512_cmpgt_epu64_mask
435  // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 6, i8 -1)
436  return (__mmask8)_mm512_cmpgt_epu64_mask(__a, __b);
437}
438
439__mmask8 test_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
440  // CHECK-LABEL: @test_mm512_mask_cmpgt_epu64_mask
441  // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 6, i8 {{.*}})
442  return (__mmask8)_mm512_mask_cmpgt_epu64_mask(__u, __a, __b);
443}
444
445__mmask16 test_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) {
446  // CHECK-LABEL: @test_mm512_cmple_epi32_mask
447  // CHECK: @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 2, i16 -1)
448  return (__mmask16)_mm512_cmple_epi32_mask(__a, __b);
449}
450
451__mmask16 test_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
452  // CHECK-LABEL: @test_mm512_mask_cmple_epi32_mask
453  // CHECK: @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 2, i16 {{.*}})
454  return (__mmask16)_mm512_mask_cmple_epi32_mask(__u, __a, __b);
455}
456
457__mmask8 test_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) {
458  // CHECK-LABEL: @test_mm512_cmple_epi64_mask
459  // CHECK: @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 2, i8 -1)
460  return (__mmask8)_mm512_cmple_epi64_mask(__a, __b);
461}
462
463__mmask8 test_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
464  // CHECK-LABEL: @test_mm512_mask_cmple_epi64_mask
465  // CHECK: @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 2, i8 {{.*}})
466  return (__mmask8)_mm512_mask_cmple_epi64_mask(__u, __a, __b);
467}
468
469__mmask16 test_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) {
470  // CHECK-LABEL: @test_mm512_cmple_epu32_mask
471  // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 2, i16 -1)
472  return (__mmask16)_mm512_cmple_epu32_mask(__a, __b);
473}
474
475__mmask16 test_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
476  // CHECK-LABEL: @test_mm512_mask_cmple_epu32_mask
477  // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 2, i16 {{.*}})
478  return (__mmask16)_mm512_mask_cmple_epu32_mask(__u, __a, __b);
479}
480
481__mmask8 test_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) {
482  // CHECK-LABEL: @test_mm512_cmple_epu64_mask
483  // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 2, i8 -1)
484  return (__mmask8)_mm512_cmple_epu64_mask(__a, __b);
485}
486
487__mmask8 test_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
488  // CHECK-LABEL: @test_mm512_mask_cmple_epu64_mask
489  // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 2, i8 {{.*}})
490  return (__mmask8)_mm512_mask_cmple_epu64_mask(__u, __a, __b);
491}
492
493__mmask16 test_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) {
494  // CHECK-LABEL: @test_mm512_cmplt_epi32_mask
495  // CHECK: @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 1, i16 -1)
496  return (__mmask16)_mm512_cmplt_epi32_mask(__a, __b);
497}
498
499__mmask16 test_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
500  // CHECK-LABEL: @test_mm512_mask_cmplt_epi32_mask
501  // CHECK: @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 1, i16 {{.*}})
502  return (__mmask16)_mm512_mask_cmplt_epi32_mask(__u, __a, __b);
503}
504
505__mmask8 test_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) {
506  // CHECK-LABEL: @test_mm512_cmplt_epi64_mask
507  // CHECK: @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 1, i8 -1)
508  return (__mmask8)_mm512_cmplt_epi64_mask(__a, __b);
509}
510
511__mmask8 test_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
512  // CHECK-LABEL: @test_mm512_mask_cmplt_epi64_mask
513  // CHECK: @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 1, i8 {{.*}})
514  return (__mmask8)_mm512_mask_cmplt_epi64_mask(__u, __a, __b);
515}
516
517__mmask16 test_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) {
518  // CHECK-LABEL: @test_mm512_cmplt_epu32_mask
519  // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 1, i16 -1)
520  return (__mmask16)_mm512_cmplt_epu32_mask(__a, __b);
521}
522
523__mmask16 test_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
524  // CHECK-LABEL: @test_mm512_mask_cmplt_epu32_mask
525  // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 1, i16 {{.*}})
526  return (__mmask16)_mm512_mask_cmplt_epu32_mask(__u, __a, __b);
527}
528
529__mmask8 test_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) {
530  // CHECK-LABEL: @test_mm512_cmplt_epu64_mask
531  // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 1, i8 -1)
532  return (__mmask8)_mm512_cmplt_epu64_mask(__a, __b);
533}
534
535__mmask8 test_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
536  // CHECK-LABEL: @test_mm512_mask_cmplt_epu64_mask
537  // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 1, i8 {{.*}})
538  return (__mmask8)_mm512_mask_cmplt_epu64_mask(__u, __a, __b);
539}
540
541__mmask16 test_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) {
542  // CHECK-LABEL: @test_mm512_cmpneq_epi32_mask
543  // CHECK: @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 4, i16 -1)
544  return (__mmask16)_mm512_cmpneq_epi32_mask(__a, __b);
545}
546
547__mmask16 test_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
548  // CHECK-LABEL: @test_mm512_mask_cmpneq_epi32_mask
549  // CHECK: @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 4, i16 {{.*}})
550  return (__mmask16)_mm512_mask_cmpneq_epi32_mask(__u, __a, __b);
551}
552
553__mmask8 test_mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) {
554  // CHECK-LABEL: @test_mm512_cmpneq_epi64_mask
555  // CHECK: @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 4, i8 -1)
556  return (__mmask8)_mm512_cmpneq_epi64_mask(__a, __b);
557}
558
559__mmask8 test_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
560  // CHECK-LABEL: @test_mm512_mask_cmpneq_epi64_mask
561  // CHECK: @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 4, i8 {{.*}})
562  return (__mmask8)_mm512_mask_cmpneq_epi64_mask(__u, __a, __b);
563}
564
565__mmask16 test_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) {
566  // CHECK-LABEL: @test_mm512_cmpneq_epu32_mask
567  // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 4, i16 -1)
568  return (__mmask16)_mm512_cmpneq_epu32_mask(__a, __b);
569}
570
571__mmask16 test_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
572  // CHECK-LABEL: @test_mm512_mask_cmpneq_epu32_mask
573  // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 4, i16 {{.*}})
574  return (__mmask16)_mm512_mask_cmpneq_epu32_mask(__u, __a, __b);
575}
576
577__mmask8 test_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) {
578  // CHECK-LABEL: @test_mm512_cmpneq_epu64_mask
579  // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 4, i8 -1)
580  return (__mmask8)_mm512_cmpneq_epu64_mask(__a, __b);
581}
582
583__mmask8 test_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
584  // CHECK-LABEL: @test_mm512_mask_cmpneq_epu64_mask
585  // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 4, i8 {{.*}})
586  return (__mmask8)_mm512_mask_cmpneq_epu64_mask(__u, __a, __b);
587}
588
589__mmask16 test_mm512_cmp_epi32_mask(__m512i __a, __m512i __b) {
590  // CHECK-LABEL: @test_mm512_cmp_epi32_mask
591  // CHECK: @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 3, i16 -1)
592  return (__mmask16)_mm512_cmp_epi32_mask(__a, __b, 3);
593}
594
595__mmask16 test_mm512_mask_cmp_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
596  // CHECK-LABEL: @test_mm512_mask_cmp_epi32_mask
597  // CHECK: @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 3, i16 {{.*}})
598  return (__mmask16)_mm512_mask_cmp_epi32_mask(__u, __a, __b, 3);
599}
600
601__mmask8 test_mm512_cmp_epi64_mask(__m512i __a, __m512i __b) {
602  // CHECK-LABEL: @test_mm512_cmp_epi64_mask
603  // CHECK: @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 3, i8 -1)
604  return (__mmask8)_mm512_cmp_epi64_mask(__a, __b, 3);
605}
606
607__mmask8 test_mm512_mask_cmp_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
608  // CHECK-LABEL: @test_mm512_mask_cmp_epi64_mask
609  // CHECK: @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 3, i8 {{.*}})
610  return (__mmask8)_mm512_mask_cmp_epi64_mask(__u, __a, __b, 3);
611}
612
613__mmask16 test_mm512_cmp_epu32_mask(__m512i __a, __m512i __b) {
614  // CHECK-LABEL: @test_mm512_cmp_epu32_mask
615  // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 3, i16 -1)
616  return (__mmask16)_mm512_cmp_epu32_mask(__a, __b, 3);
617}
618
619__mmask16 test_mm512_mask_cmp_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
620  // CHECK-LABEL: @test_mm512_mask_cmp_epu32_mask
621  // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 3, i16 {{.*}})
622  return (__mmask16)_mm512_mask_cmp_epu32_mask(__u, __a, __b, 3);
623}
624
625__mmask8 test_mm512_cmp_epu64_mask(__m512i __a, __m512i __b) {
626  // CHECK-LABEL: @test_mm512_cmp_epu64_mask
627  // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 3, i8 -1)
628  return (__mmask8)_mm512_cmp_epu64_mask(__a, __b, 3);
629}
630
631__mmask8 test_mm512_mask_cmp_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
632  // CHECK-LABEL: @test_mm512_mask_cmp_epu64_mask
633  // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 3, i8 {{.*}})
634  return (__mmask8)_mm512_mask_cmp_epu64_mask(__u, __a, __b, 3);
635}
636