xref: /aosp_15_r20/prebuilts/clang-tools/linux-x86/clang-headers/avx512cdintrin.h (revision bed243d3d9cd544cfb038bfa7be843dedc6e6bf7)
1*bed243d3SAndroid Build Coastguard Worker /*===------------- avx512cdintrin.h - AVX512CD intrinsics ------------------===
2*bed243d3SAndroid Build Coastguard Worker  *
3*bed243d3SAndroid Build Coastguard Worker  *
4*bed243d3SAndroid Build Coastguard Worker  * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5*bed243d3SAndroid Build Coastguard Worker  * See https://llvm.org/LICENSE.txt for license information.
6*bed243d3SAndroid Build Coastguard Worker  * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7*bed243d3SAndroid Build Coastguard Worker  *
8*bed243d3SAndroid Build Coastguard Worker  *===-----------------------------------------------------------------------===
9*bed243d3SAndroid Build Coastguard Worker  */
10*bed243d3SAndroid Build Coastguard Worker #ifndef __IMMINTRIN_H
11*bed243d3SAndroid Build Coastguard Worker #error "Never use <avx512cdintrin.h> directly; include <immintrin.h> instead."
12*bed243d3SAndroid Build Coastguard Worker #endif
13*bed243d3SAndroid Build Coastguard Worker 
14*bed243d3SAndroid Build Coastguard Worker #ifndef __AVX512CDINTRIN_H
15*bed243d3SAndroid Build Coastguard Worker #define __AVX512CDINTRIN_H
16*bed243d3SAndroid Build Coastguard Worker 
17*bed243d3SAndroid Build Coastguard Worker /* Define the default attributes for the functions in this file. */
18*bed243d3SAndroid Build Coastguard Worker #define __DEFAULT_FN_ATTRS                                                     \
19*bed243d3SAndroid Build Coastguard Worker   __attribute__((__always_inline__, __nodebug__,                               \
20*bed243d3SAndroid Build Coastguard Worker                  __target__("avx512cd,evex512"), __min_vector_width__(512)))
21*bed243d3SAndroid Build Coastguard Worker 
22*bed243d3SAndroid Build Coastguard Worker static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_conflict_epi64(__m512i __A)23*bed243d3SAndroid Build Coastguard Worker _mm512_conflict_epi64 (__m512i __A)
24*bed243d3SAndroid Build Coastguard Worker {
25*bed243d3SAndroid Build Coastguard Worker   return (__m512i) __builtin_ia32_vpconflictdi_512 ((__v8di) __A);
26*bed243d3SAndroid Build Coastguard Worker }
27*bed243d3SAndroid Build Coastguard Worker 
28*bed243d3SAndroid Build Coastguard Worker static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_conflict_epi64(__m512i __W,__mmask8 __U,__m512i __A)29*bed243d3SAndroid Build Coastguard Worker _mm512_mask_conflict_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
30*bed243d3SAndroid Build Coastguard Worker {
31*bed243d3SAndroid Build Coastguard Worker   return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
32*bed243d3SAndroid Build Coastguard Worker                                              (__v8di)_mm512_conflict_epi64(__A),
33*bed243d3SAndroid Build Coastguard Worker                                              (__v8di)__W);
34*bed243d3SAndroid Build Coastguard Worker }
35*bed243d3SAndroid Build Coastguard Worker 
36*bed243d3SAndroid Build Coastguard Worker static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_conflict_epi64(__mmask8 __U,__m512i __A)37*bed243d3SAndroid Build Coastguard Worker _mm512_maskz_conflict_epi64 (__mmask8 __U, __m512i __A)
38*bed243d3SAndroid Build Coastguard Worker {
39*bed243d3SAndroid Build Coastguard Worker   return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
40*bed243d3SAndroid Build Coastguard Worker                                              (__v8di)_mm512_conflict_epi64(__A),
41*bed243d3SAndroid Build Coastguard Worker                                              (__v8di)_mm512_setzero_si512 ());
42*bed243d3SAndroid Build Coastguard Worker }
43*bed243d3SAndroid Build Coastguard Worker 
44*bed243d3SAndroid Build Coastguard Worker static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_conflict_epi32(__m512i __A)45*bed243d3SAndroid Build Coastguard Worker _mm512_conflict_epi32 (__m512i __A)
46*bed243d3SAndroid Build Coastguard Worker {
47*bed243d3SAndroid Build Coastguard Worker   return (__m512i) __builtin_ia32_vpconflictsi_512 ((__v16si) __A);
48*bed243d3SAndroid Build Coastguard Worker }
49*bed243d3SAndroid Build Coastguard Worker 
50*bed243d3SAndroid Build Coastguard Worker static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_conflict_epi32(__m512i __W,__mmask16 __U,__m512i __A)51*bed243d3SAndroid Build Coastguard Worker _mm512_mask_conflict_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
52*bed243d3SAndroid Build Coastguard Worker {
53*bed243d3SAndroid Build Coastguard Worker   return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
54*bed243d3SAndroid Build Coastguard Worker                                             (__v16si)_mm512_conflict_epi32(__A),
55*bed243d3SAndroid Build Coastguard Worker                                             (__v16si)__W);
56*bed243d3SAndroid Build Coastguard Worker }
57*bed243d3SAndroid Build Coastguard Worker 
58*bed243d3SAndroid Build Coastguard Worker static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_conflict_epi32(__mmask16 __U,__m512i __A)59*bed243d3SAndroid Build Coastguard Worker _mm512_maskz_conflict_epi32 (__mmask16 __U, __m512i __A)
60*bed243d3SAndroid Build Coastguard Worker {
61*bed243d3SAndroid Build Coastguard Worker   return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
62*bed243d3SAndroid Build Coastguard Worker                                             (__v16si)_mm512_conflict_epi32(__A),
63*bed243d3SAndroid Build Coastguard Worker                                             (__v16si)_mm512_setzero_si512());
64*bed243d3SAndroid Build Coastguard Worker }
65*bed243d3SAndroid Build Coastguard Worker 
66*bed243d3SAndroid Build Coastguard Worker static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_lzcnt_epi32(__m512i __A)67*bed243d3SAndroid Build Coastguard Worker _mm512_lzcnt_epi32 (__m512i __A)
68*bed243d3SAndroid Build Coastguard Worker {
69*bed243d3SAndroid Build Coastguard Worker   return (__m512i) __builtin_ia32_vplzcntd_512 ((__v16si) __A);
70*bed243d3SAndroid Build Coastguard Worker }
71*bed243d3SAndroid Build Coastguard Worker 
72*bed243d3SAndroid Build Coastguard Worker static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_lzcnt_epi32(__m512i __W,__mmask16 __U,__m512i __A)73*bed243d3SAndroid Build Coastguard Worker _mm512_mask_lzcnt_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
74*bed243d3SAndroid Build Coastguard Worker {
75*bed243d3SAndroid Build Coastguard Worker   return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
76*bed243d3SAndroid Build Coastguard Worker                                              (__v16si)_mm512_lzcnt_epi32(__A),
77*bed243d3SAndroid Build Coastguard Worker                                              (__v16si)__W);
78*bed243d3SAndroid Build Coastguard Worker }
79*bed243d3SAndroid Build Coastguard Worker 
80*bed243d3SAndroid Build Coastguard Worker static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_lzcnt_epi32(__mmask16 __U,__m512i __A)81*bed243d3SAndroid Build Coastguard Worker _mm512_maskz_lzcnt_epi32 (__mmask16 __U, __m512i __A)
82*bed243d3SAndroid Build Coastguard Worker {
83*bed243d3SAndroid Build Coastguard Worker   return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
84*bed243d3SAndroid Build Coastguard Worker                                              (__v16si)_mm512_lzcnt_epi32(__A),
85*bed243d3SAndroid Build Coastguard Worker                                              (__v16si)_mm512_setzero_si512());
86*bed243d3SAndroid Build Coastguard Worker }
87*bed243d3SAndroid Build Coastguard Worker 
88*bed243d3SAndroid Build Coastguard Worker static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_lzcnt_epi64(__m512i __A)89*bed243d3SAndroid Build Coastguard Worker _mm512_lzcnt_epi64 (__m512i __A)
90*bed243d3SAndroid Build Coastguard Worker {
91*bed243d3SAndroid Build Coastguard Worker   return (__m512i) __builtin_ia32_vplzcntq_512 ((__v8di) __A);
92*bed243d3SAndroid Build Coastguard Worker }
93*bed243d3SAndroid Build Coastguard Worker 
94*bed243d3SAndroid Build Coastguard Worker static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_lzcnt_epi64(__m512i __W,__mmask8 __U,__m512i __A)95*bed243d3SAndroid Build Coastguard Worker _mm512_mask_lzcnt_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
96*bed243d3SAndroid Build Coastguard Worker {
97*bed243d3SAndroid Build Coastguard Worker   return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
98*bed243d3SAndroid Build Coastguard Worker                                              (__v8di)_mm512_lzcnt_epi64(__A),
99*bed243d3SAndroid Build Coastguard Worker                                              (__v8di)__W);
100*bed243d3SAndroid Build Coastguard Worker }
101*bed243d3SAndroid Build Coastguard Worker 
102*bed243d3SAndroid Build Coastguard Worker static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_lzcnt_epi64(__mmask8 __U,__m512i __A)103*bed243d3SAndroid Build Coastguard Worker _mm512_maskz_lzcnt_epi64 (__mmask8 __U, __m512i __A)
104*bed243d3SAndroid Build Coastguard Worker {
105*bed243d3SAndroid Build Coastguard Worker   return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
106*bed243d3SAndroid Build Coastguard Worker                                              (__v8di)_mm512_lzcnt_epi64(__A),
107*bed243d3SAndroid Build Coastguard Worker                                              (__v8di)_mm512_setzero_si512());
108*bed243d3SAndroid Build Coastguard Worker }
109*bed243d3SAndroid Build Coastguard Worker 
110*bed243d3SAndroid Build Coastguard Worker static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_broadcastmb_epi64(__mmask8 __A)111*bed243d3SAndroid Build Coastguard Worker _mm512_broadcastmb_epi64 (__mmask8 __A)
112*bed243d3SAndroid Build Coastguard Worker {
113*bed243d3SAndroid Build Coastguard Worker   return (__m512i) _mm512_set1_epi64((long long) __A);
114*bed243d3SAndroid Build Coastguard Worker }
115*bed243d3SAndroid Build Coastguard Worker 
116*bed243d3SAndroid Build Coastguard Worker static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_broadcastmw_epi32(__mmask16 __A)117*bed243d3SAndroid Build Coastguard Worker _mm512_broadcastmw_epi32 (__mmask16 __A)
118*bed243d3SAndroid Build Coastguard Worker {
119*bed243d3SAndroid Build Coastguard Worker   return (__m512i) _mm512_set1_epi32((int) __A);
120*bed243d3SAndroid Build Coastguard Worker 
121*bed243d3SAndroid Build Coastguard Worker }
122*bed243d3SAndroid Build Coastguard Worker 
123*bed243d3SAndroid Build Coastguard Worker #undef __DEFAULT_FN_ATTRS
124*bed243d3SAndroid Build Coastguard Worker 
125*bed243d3SAndroid Build Coastguard Worker #endif
126