1 // RUN: %clang_cc1 %s -triple=x86_64-apple-darwin -target-feature +avx512cd -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 
test_mm512_conflict_epi64(__m512i __A)8 __m512i test_mm512_conflict_epi64(__m512i __A) {
9   // CHECK-LABEL: @test_mm512_conflict_epi64
10   // CHECK: @llvm.x86.avx512.mask.conflict.q.512
11   return _mm512_conflict_epi64(__A);
12 }
test_mm512_mask_conflict_epi64(__m512i __W,__mmask8 __U,__m512i __A)13 __m512i test_mm512_mask_conflict_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
14   // CHECK-LABEL: @test_mm512_mask_conflict_epi64
15   // CHECK: @llvm.x86.avx512.mask.conflict.q.512
16   return _mm512_mask_conflict_epi64(__W,__U,__A);
17 }
test_mm512_maskz_conflict_epi64(__mmask8 __U,__m512i __A)18 __m512i test_mm512_maskz_conflict_epi64(__mmask8 __U, __m512i __A) {
19   // CHECK-LABEL: @test_mm512_maskz_conflict_epi64
20   // CHECK: @llvm.x86.avx512.mask.conflict.q.512
21   return _mm512_maskz_conflict_epi64(__U,__A);
22 }
test_mm512_conflict_epi32(__m512i __A)23 __m512i test_mm512_conflict_epi32(__m512i __A) {
24   // CHECK-LABEL: @test_mm512_conflict_epi32
25   // CHECK: @llvm.x86.avx512.mask.conflict.d.512
26   return _mm512_conflict_epi32(__A);
27 }
test_mm512_mask_conflict_epi32(__m512i __W,__mmask16 __U,__m512i __A)28 __m512i test_mm512_mask_conflict_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
29   // CHECK-LABEL: @test_mm512_mask_conflict_epi32
30   // CHECK: @llvm.x86.avx512.mask.conflict.d.512
31   return _mm512_mask_conflict_epi32(__W,__U,__A);
32 }
test_mm512_maskz_conflict_epi32(__mmask16 __U,__m512i __A)33 __m512i test_mm512_maskz_conflict_epi32(__mmask16 __U, __m512i __A) {
34   // CHECK-LABEL: @test_mm512_maskz_conflict_epi32
35   // CHECK: @llvm.x86.avx512.mask.conflict.d.512
36   return _mm512_maskz_conflict_epi32(__U,__A);
37 }
test_mm512_lzcnt_epi32(__m512i __A)38 __m512i test_mm512_lzcnt_epi32(__m512i __A) {
39   // CHECK-LABEL: @test_mm512_lzcnt_epi32
40   // CHECK: call <16 x i32> @llvm.ctlz.v16i32(<16 x i32> %{{.*}}, i1 false)
41   return _mm512_lzcnt_epi32(__A);
42 }
test_mm512_mask_lzcnt_epi32(__m512i __W,__mmask16 __U,__m512i __A)43 __m512i test_mm512_mask_lzcnt_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
44   // CHECK-LABEL: @test_mm512_mask_lzcnt_epi32
45   // CHECK: call <16 x i32> @llvm.ctlz.v16i32(<16 x i32> %{{.*}}, i1 false)
46   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
47   return _mm512_mask_lzcnt_epi32(__W,__U,__A);
48 }
test_mm512_maskz_lzcnt_epi32(__mmask16 __U,__m512i __A)49 __m512i test_mm512_maskz_lzcnt_epi32(__mmask16 __U, __m512i __A) {
50   // CHECK-LABEL: @test_mm512_maskz_lzcnt_epi32
51   // CHECK: call <16 x i32> @llvm.ctlz.v16i32(<16 x i32> %{{.*}}, i1 false)
52   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
53   return _mm512_maskz_lzcnt_epi32(__U,__A);
54 }
test_mm512_lzcnt_epi64(__m512i __A)55 __m512i test_mm512_lzcnt_epi64(__m512i __A) {
56   // CHECK-LABEL: @test_mm512_lzcnt_epi64
57   // CHECK: call <8 x i64> @llvm.ctlz.v8i64(<8 x i64> %{{.*}}, i1 false)
58   return _mm512_lzcnt_epi64(__A);
59 }
test_mm512_mask_lzcnt_epi64(__m512i __W,__mmask8 __U,__m512i __A)60 __m512i test_mm512_mask_lzcnt_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
61   // CHECK-LABEL: @test_mm512_mask_lzcnt_epi64
62   // CHECK: call <8 x i64> @llvm.ctlz.v8i64(<8 x i64> %{{.*}}, i1 false)
63   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
64   return _mm512_mask_lzcnt_epi64(__W,__U,__A);
65 }
test_mm512_maskz_lzcnt_epi64(__mmask8 __U,__m512i __A)66 __m512i test_mm512_maskz_lzcnt_epi64(__mmask8 __U, __m512i __A) {
67   // CHECK-LABEL: @test_mm512_maskz_lzcnt_epi64
68   // CHECK: call <8 x i64> @llvm.ctlz.v8i64(<8 x i64> %{{.*}}, i1 false)
69   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
70   return _mm512_maskz_lzcnt_epi64(__U,__A);
71 }
72 
test_mm512_broadcastmb_epi64(__mmask8 __A)73 __m512i test_mm512_broadcastmb_epi64(__mmask8 __A) {
74   // CHECK-LABEL: @test_mm512_broadcastmb_epi64
75   // CHECK: @llvm.x86.avx512.broadcastmb.512
76   return _mm512_broadcastmb_epi64(__A);
77 }
78 
test_mm512_broadcastmw_epi32(__mmask16 __A)79 __m512i test_mm512_broadcastmw_epi32(__mmask16 __A) {
80   // CHECK-LABEL: @test_mm512_broadcastmw_epi32
81   // CHECK: @llvm.x86.avx512.broadcastmw.512
82   return _mm512_broadcastmw_epi32(__A);
83 }
84