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