clang  19.0.0git
avx512vlcdintrin.h
Go to the documentation of this file.
1 /*===---- avx512vlcdintrin.h - AVX512VL and AVX512CD intrinsics ------------===
2  *
3  * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4  * See https://llvm.org/LICENSE.txt for license information.
5  * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6  *
7  *===-----------------------------------------------------------------------===
8  */
9 #ifndef __IMMINTRIN_H
10 #error "Never use <avx512vlcdintrin.h> directly; include <immintrin.h> instead."
11 #endif
12 
13 #ifndef __AVX512VLCDINTRIN_H
14 #define __AVX512VLCDINTRIN_H
15 
16 /* Define the default attributes for the functions in this file. */
17 #define __DEFAULT_FN_ATTRS128 \
18  __attribute__((__always_inline__, __nodebug__, \
19  __target__("avx512vl,avx512cd,no-evex512"), \
20  __min_vector_width__(128)))
21 #define __DEFAULT_FN_ATTRS256 \
22  __attribute__((__always_inline__, __nodebug__, \
23  __target__("avx512vl,avx512cd,no-evex512"), \
24  __min_vector_width__(256)))
25 
26 static __inline__ __m128i __DEFAULT_FN_ATTRS128
28 {
29  return (__m128i) _mm_set1_epi64x((long long) __A);
30 }
31 
32 static __inline__ __m256i __DEFAULT_FN_ATTRS256
34 {
35  return (__m256i) _mm256_set1_epi64x((long long)__A);
36 }
37 
38 static __inline__ __m128i __DEFAULT_FN_ATTRS128
40 {
41  return (__m128i) _mm_set1_epi32((int)__A);
42 }
43 
44 static __inline__ __m256i __DEFAULT_FN_ATTRS256
46 {
47  return (__m256i) _mm256_set1_epi32((int)__A);
48 }
49 
50 
51 static __inline__ __m128i __DEFAULT_FN_ATTRS128
52 _mm_conflict_epi64 (__m128i __A)
53 {
54  return (__m128i) __builtin_ia32_vpconflictdi_128 ((__v2di) __A);
55 }
56 
57 static __inline__ __m128i __DEFAULT_FN_ATTRS128
58 _mm_mask_conflict_epi64 (__m128i __W, __mmask8 __U, __m128i __A)
59 {
60  return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
61  (__v2di)_mm_conflict_epi64(__A),
62  (__v2di)__W);
63 }
64 
65 static __inline__ __m128i __DEFAULT_FN_ATTRS128
67 {
68  return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
69  (__v2di)_mm_conflict_epi64(__A),
70  (__v2di)_mm_setzero_si128());
71 }
72 
73 static __inline__ __m256i __DEFAULT_FN_ATTRS256
74 _mm256_conflict_epi64 (__m256i __A)
75 {
76  return (__m256i) __builtin_ia32_vpconflictdi_256 ((__v4di) __A);
77 }
78 
79 static __inline__ __m256i __DEFAULT_FN_ATTRS256
80 _mm256_mask_conflict_epi64 (__m256i __W, __mmask8 __U, __m256i __A)
81 {
82  return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
83  (__v4di)_mm256_conflict_epi64(__A),
84  (__v4di)__W);
85 }
86 
87 static __inline__ __m256i __DEFAULT_FN_ATTRS256
89 {
90  return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
91  (__v4di)_mm256_conflict_epi64(__A),
92  (__v4di)_mm256_setzero_si256());
93 }
94 
95 static __inline__ __m128i __DEFAULT_FN_ATTRS128
96 _mm_conflict_epi32 (__m128i __A)
97 {
98  return (__m128i) __builtin_ia32_vpconflictsi_128 ((__v4si) __A);
99 }
100 
101 static __inline__ __m128i __DEFAULT_FN_ATTRS128
102 _mm_mask_conflict_epi32 (__m128i __W, __mmask8 __U, __m128i __A)
103 {
104  return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
105  (__v4si)_mm_conflict_epi32(__A),
106  (__v4si)__W);
107 }
108 
109 static __inline__ __m128i __DEFAULT_FN_ATTRS128
111 {
112  return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
113  (__v4si)_mm_conflict_epi32(__A),
114  (__v4si)_mm_setzero_si128());
115 }
116 
117 static __inline__ __m256i __DEFAULT_FN_ATTRS256
119 {
120  return (__m256i) __builtin_ia32_vpconflictsi_256 ((__v8si) __A);
121 }
122 
123 static __inline__ __m256i __DEFAULT_FN_ATTRS256
124 _mm256_mask_conflict_epi32 (__m256i __W, __mmask8 __U, __m256i __A)
125 {
126  return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
127  (__v8si)_mm256_conflict_epi32(__A),
128  (__v8si)__W);
129 }
130 
131 static __inline__ __m256i __DEFAULT_FN_ATTRS256
133 {
134  return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
135  (__v8si)_mm256_conflict_epi32(__A),
136  (__v8si)_mm256_setzero_si256());
137 }
138 
139 static __inline__ __m128i __DEFAULT_FN_ATTRS128
140 _mm_lzcnt_epi32 (__m128i __A)
141 {
142  return (__m128i) __builtin_ia32_vplzcntd_128 ((__v4si) __A);
143 }
144 
145 static __inline__ __m128i __DEFAULT_FN_ATTRS128
146 _mm_mask_lzcnt_epi32 (__m128i __W, __mmask8 __U, __m128i __A)
147 {
148  return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
149  (__v4si)_mm_lzcnt_epi32(__A),
150  (__v4si)__W);
151 }
152 
153 static __inline__ __m128i __DEFAULT_FN_ATTRS128
154 _mm_maskz_lzcnt_epi32 (__mmask8 __U, __m128i __A)
155 {
156  return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
157  (__v4si)_mm_lzcnt_epi32(__A),
158  (__v4si)_mm_setzero_si128());
159 }
160 
161 static __inline__ __m256i __DEFAULT_FN_ATTRS256
162 _mm256_lzcnt_epi32 (__m256i __A)
163 {
164  return (__m256i) __builtin_ia32_vplzcntd_256 ((__v8si) __A);
165 }
166 
167 static __inline__ __m256i __DEFAULT_FN_ATTRS256
168 _mm256_mask_lzcnt_epi32 (__m256i __W, __mmask8 __U, __m256i __A)
169 {
170  return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
171  (__v8si)_mm256_lzcnt_epi32(__A),
172  (__v8si)__W);
173 }
174 
175 static __inline__ __m256i __DEFAULT_FN_ATTRS256
177 {
178  return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
179  (__v8si)_mm256_lzcnt_epi32(__A),
180  (__v8si)_mm256_setzero_si256());
181 }
182 
183 static __inline__ __m128i __DEFAULT_FN_ATTRS128
184 _mm_lzcnt_epi64 (__m128i __A)
185 {
186  return (__m128i) __builtin_ia32_vplzcntq_128 ((__v2di) __A);
187 }
188 
189 static __inline__ __m128i __DEFAULT_FN_ATTRS128
190 _mm_mask_lzcnt_epi64 (__m128i __W, __mmask8 __U, __m128i __A)
191 {
192  return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
193  (__v2di)_mm_lzcnt_epi64(__A),
194  (__v2di)__W);
195 }
196 
197 static __inline__ __m128i __DEFAULT_FN_ATTRS128
198 _mm_maskz_lzcnt_epi64 (__mmask8 __U, __m128i __A)
199 {
200  return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
201  (__v2di)_mm_lzcnt_epi64(__A),
202  (__v2di)_mm_setzero_si128());
203 }
204 
205 static __inline__ __m256i __DEFAULT_FN_ATTRS256
206 _mm256_lzcnt_epi64 (__m256i __A)
207 {
208  return (__m256i) __builtin_ia32_vplzcntq_256 ((__v4di) __A);
209 }
210 
211 static __inline__ __m256i __DEFAULT_FN_ATTRS256
212 _mm256_mask_lzcnt_epi64 (__m256i __W, __mmask8 __U, __m256i __A)
213 {
214  return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
215  (__v4di)_mm256_lzcnt_epi64(__A),
216  (__v4di)__W);
217 }
218 
219 static __inline__ __m256i __DEFAULT_FN_ATTRS256
221 {
222  return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
223  (__v4di)_mm256_lzcnt_epi64(__A),
224  (__v4di)_mm256_setzero_si256());
225 }
226 
227 #undef __DEFAULT_FN_ATTRS128
228 #undef __DEFAULT_FN_ATTRS256
229 
230 #endif /* __AVX512VLCDINTRIN_H */
unsigned char __mmask8
Definition: avx512fintrin.h:41
unsigned short __mmask16
Definition: avx512fintrin.h:42
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_lzcnt_epi64(__m128i __A)
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_mask_conflict_epi32(__m256i __W, __mmask8 __U, __m256i __A)
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_maskz_conflict_epi32(__mmask8 __U, __m128i __A)
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_mask_lzcnt_epi64(__m128i __W, __mmask8 __U, __m128i __A)
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_mask_lzcnt_epi32(__m128i __W, __mmask8 __U, __m128i __A)
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_maskz_lzcnt_epi64(__mmask8 __U, __m256i __A)
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_conflict_epi32(__m256i __A)
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_maskz_conflict_epi32(__mmask8 __U, __m256i __A)
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_maskz_lzcnt_epi64(__mmask8 __U, __m128i __A)
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_broadcastmb_epi64(__mmask8 __A)
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_broadcastmb_epi64(__mmask8 __A)
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_maskz_conflict_epi64(__mmask8 __U, __m256i __A)
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_conflict_epi64(__m256i __A)
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_mask_lzcnt_epi64(__m256i __W, __mmask8 __U, __m256i __A)
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_mask_conflict_epi64(__m128i __W, __mmask8 __U, __m128i __A)
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_maskz_conflict_epi64(__mmask8 __U, __m128i __A)
#define __DEFAULT_FN_ATTRS256
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_conflict_epi64(__m128i __A)
#define __DEFAULT_FN_ATTRS128
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_maskz_lzcnt_epi32(__mmask8 __U, __m256i __A)
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_lzcnt_epi32(__m128i __A)
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_mask_conflict_epi32(__m128i __W, __mmask8 __U, __m128i __A)
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_mask_lzcnt_epi32(__m256i __W, __mmask8 __U, __m256i __A)
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_lzcnt_epi32(__m256i __A)
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_broadcastmw_epi32(__mmask16 __A)
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_maskz_lzcnt_epi32(__mmask8 __U, __m128i __A)
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_broadcastmw_epi32(__mmask16 __A)
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_lzcnt_epi64(__m256i __A)
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_conflict_epi32(__m128i __A)
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_mask_conflict_epi64(__m256i __W, __mmask8 __U, __m256i __A)
static __inline __m256i __DEFAULT_FN_ATTRS _mm256_set1_epi64x(long long __q)
Constructs a 256-bit integer vector of [4 x i64], with each of the 64-bit integral vector elements se...
Definition: avxintrin.h:4311
static __inline __m256i __DEFAULT_FN_ATTRS _mm256_setzero_si256(void)
Constructs a 256-bit integer vector initialized to zero.
Definition: avxintrin.h:4353
static __inline __m256i __DEFAULT_FN_ATTRS _mm256_set1_epi32(int __i)
Constructs a 256-bit integer vector of [8 x i32], with each of the 32-bit integral vector elements se...
Definition: avxintrin.h:4254
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set1_epi32(int __i)
Initializes all values in a 128-bit vector of [4 x i32] with the specified 32-bit value.
Definition: emmintrin.h:3689
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set1_epi64x(long long __q)
Initializes both values in a 128-bit integer vector with the specified 64-bit integer value.
Definition: emmintrin.h:3655
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_setzero_si128(void)
Creates a 128-bit integer vector initialized to zero.
Definition: emmintrin.h:3858