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