clang  6.0.0svn
avx512vlcdintrin.h
Go to the documentation of this file.
1 /*===---- avx512vlcdintrin.h - AVX512VL and AVX512CD intrinsics ---------------------------===
2  *
3  * Permission is hereby granted, free of charge, to any person obtaining a copy
4  * of this software and associated documentation files (the "Software"), to deal
5  * in the Software without restriction, including without limitation the rights
6  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7  * copies of the Software, and to permit persons to whom the Software is
8  * furnished to do so, subject to the following conditions:
9  *
10  * The above copyright notice and this permission notice shall be included in
11  * all copies or substantial portions of the Software.
12  *
13  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19  * THE SOFTWARE.
20  *
21  *===-----------------------------------------------------------------------===
22  */
23 #ifndef __IMMINTRIN_H
24 #error "Never use <avx512vlcdintrin.h> directly; include <immintrin.h> instead."
25 #endif
26 
27 #ifndef __AVX512VLCDINTRIN_H
28 #define __AVX512VLCDINTRIN_H
29 
30 /* Define the default attributes for the functions in this file. */
31 #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512vl,avx512cd")))
32 
33 
34 static __inline__ __m128i __DEFAULT_FN_ATTRS
36 {
37  return (__m128i) _mm_set1_epi64x((long long) __A);
38 }
39 
40 static __inline__ __m256i __DEFAULT_FN_ATTRS
42 {
43  return (__m256i) _mm256_set1_epi64x((long long)__A);
44 }
45 
46 static __inline__ __m128i __DEFAULT_FN_ATTRS
48 {
49  return (__m128i) _mm_set1_epi32((int)__A);
50 }
51 
52 static __inline__ __m256i __DEFAULT_FN_ATTRS
54 {
55  return (__m256i) _mm256_set1_epi32((int)__A);
56 }
57 
58 
59 static __inline__ __m128i __DEFAULT_FN_ATTRS
60 _mm_conflict_epi64 (__m128i __A)
61 {
62  return (__m128i) __builtin_ia32_vpconflictdi_128_mask ((__v2di) __A,
63  (__v2di) _mm_undefined_si128 (),
64  (__mmask8) -1);
65 }
66 
67 static __inline__ __m128i __DEFAULT_FN_ATTRS
68 _mm_mask_conflict_epi64 (__m128i __W, __mmask8 __U, __m128i __A)
69 {
70  return (__m128i) __builtin_ia32_vpconflictdi_128_mask ((__v2di) __A,
71  (__v2di) __W,
72  (__mmask8) __U);
73 }
74 
75 static __inline__ __m128i __DEFAULT_FN_ATTRS
77 {
78  return (__m128i) __builtin_ia32_vpconflictdi_128_mask ((__v2di) __A,
79  (__v2di)
80  _mm_setzero_di (),
81  (__mmask8) __U);
82 }
83 
84 static __inline__ __m256i __DEFAULT_FN_ATTRS
85 _mm256_conflict_epi64 (__m256i __A)
86 {
87  return (__m256i) __builtin_ia32_vpconflictdi_256_mask ((__v4di) __A,
88  (__v4di) _mm256_undefined_si256 (),
89  (__mmask8) -1);
90 }
91 
92 static __inline__ __m256i __DEFAULT_FN_ATTRS
93 _mm256_mask_conflict_epi64 (__m256i __W, __mmask8 __U, __m256i __A)
94 {
95  return (__m256i) __builtin_ia32_vpconflictdi_256_mask ((__v4di) __A,
96  (__v4di) __W,
97  (__mmask8) __U);
98 }
99 
100 static __inline__ __m256i __DEFAULT_FN_ATTRS
102 {
103  return (__m256i) __builtin_ia32_vpconflictdi_256_mask ((__v4di) __A,
104  (__v4di) _mm256_setzero_si256 (),
105  (__mmask8) __U);
106 }
107 
108 static __inline__ __m128i __DEFAULT_FN_ATTRS
109 _mm_conflict_epi32 (__m128i __A)
110 {
111  return (__m128i) __builtin_ia32_vpconflictsi_128_mask ((__v4si) __A,
112  (__v4si) _mm_undefined_si128 (),
113  (__mmask8) -1);
114 }
115 
116 static __inline__ __m128i __DEFAULT_FN_ATTRS
117 _mm_mask_conflict_epi32 (__m128i __W, __mmask8 __U, __m128i __A)
118 {
119  return (__m128i) __builtin_ia32_vpconflictsi_128_mask ((__v4si) __A,
120  (__v4si) __W,
121  (__mmask8) __U);
122 }
123 
124 static __inline__ __m128i __DEFAULT_FN_ATTRS
126 {
127  return (__m128i) __builtin_ia32_vpconflictsi_128_mask ((__v4si) __A,
128  (__v4si) _mm_setzero_si128 (),
129  (__mmask8) __U);
130 }
131 
132 static __inline__ __m256i __DEFAULT_FN_ATTRS
134 {
135  return (__m256i) __builtin_ia32_vpconflictsi_256_mask ((__v8si) __A,
136  (__v8si) _mm256_undefined_si256 (),
137  (__mmask8) -1);
138 }
139 
140 static __inline__ __m256i __DEFAULT_FN_ATTRS
141 _mm256_mask_conflict_epi32 (__m256i __W, __mmask8 __U, __m256i __A)
142 {
143  return (__m256i) __builtin_ia32_vpconflictsi_256_mask ((__v8si) __A,
144  (__v8si) __W,
145  (__mmask8) __U);
146 }
147 
148 static __inline__ __m256i __DEFAULT_FN_ATTRS
150 {
151  return (__m256i) __builtin_ia32_vpconflictsi_256_mask ((__v8si) __A,
152  (__v8si)
154  (__mmask8) __U);
155 }
156 
157 static __inline__ __m128i __DEFAULT_FN_ATTRS
158 _mm_lzcnt_epi32 (__m128i __A)
159 {
160  return (__m128i) __builtin_ia32_vplzcntd_128_mask ((__v4si) __A,
161  (__v4si)
163  (__mmask8) -1);
164 }
165 
166 static __inline__ __m128i __DEFAULT_FN_ATTRS
167 _mm_mask_lzcnt_epi32 (__m128i __W, __mmask8 __U, __m128i __A)
168 {
169  return (__m128i) __builtin_ia32_vplzcntd_128_mask ((__v4si) __A,
170  (__v4si) __W,
171  (__mmask8) __U);
172 }
173 
174 static __inline__ __m128i __DEFAULT_FN_ATTRS
175 _mm_maskz_lzcnt_epi32 (__mmask8 __U, __m128i __A)
176 {
177  return (__m128i) __builtin_ia32_vplzcntd_128_mask ((__v4si) __A,
178  (__v4si)
180  (__mmask8) __U);
181 }
182 
183 static __inline__ __m256i __DEFAULT_FN_ATTRS
184 _mm256_lzcnt_epi32 (__m256i __A)
185 {
186  return (__m256i) __builtin_ia32_vplzcntd_256_mask ((__v8si) __A,
187  (__v8si)
189  (__mmask8) -1);
190 }
191 
192 static __inline__ __m256i __DEFAULT_FN_ATTRS
193 _mm256_mask_lzcnt_epi32 (__m256i __W, __mmask8 __U, __m256i __A)
194 {
195  return (__m256i) __builtin_ia32_vplzcntd_256_mask ((__v8si) __A,
196  (__v8si) __W,
197  (__mmask8) __U);
198 }
199 
200 static __inline__ __m256i __DEFAULT_FN_ATTRS
202 {
203  return (__m256i) __builtin_ia32_vplzcntd_256_mask ((__v8si) __A,
204  (__v8si)
206  (__mmask8) __U);
207 }
208 
209 static __inline__ __m128i __DEFAULT_FN_ATTRS
210 _mm_lzcnt_epi64 (__m128i __A)
211 {
212  return (__m128i) __builtin_ia32_vplzcntq_128_mask ((__v2di) __A,
213  (__v2di)
214  _mm_setzero_di (),
215  (__mmask8) -1);
216 }
217 
218 static __inline__ __m128i __DEFAULT_FN_ATTRS
219 _mm_mask_lzcnt_epi64 (__m128i __W, __mmask8 __U, __m128i __A)
220 {
221  return (__m128i) __builtin_ia32_vplzcntq_128_mask ((__v2di) __A,
222  (__v2di) __W,
223  (__mmask8) __U);
224 }
225 
226 static __inline__ __m128i __DEFAULT_FN_ATTRS
227 _mm_maskz_lzcnt_epi64 (__mmask8 __U, __m128i __A)
228 {
229  return (__m128i) __builtin_ia32_vplzcntq_128_mask ((__v2di) __A,
230  (__v2di)
231  _mm_setzero_di (),
232  (__mmask8) __U);
233 }
234 
235 static __inline__ __m256i __DEFAULT_FN_ATTRS
236 _mm256_lzcnt_epi64 (__m256i __A)
237 {
238  return (__m256i) __builtin_ia32_vplzcntq_256_mask ((__v4di) __A,
239  (__v4di)
241  (__mmask8) -1);
242 }
243 
244 static __inline__ __m256i __DEFAULT_FN_ATTRS
245 _mm256_mask_lzcnt_epi64 (__m256i __W, __mmask8 __U, __m256i __A)
246 {
247  return (__m256i) __builtin_ia32_vplzcntq_256_mask ((__v4di) __A,
248  (__v4di) __W,
249  (__mmask8) __U);
250 }
251 
252 static __inline__ __m256i __DEFAULT_FN_ATTRS
254 {
255  return (__m256i) __builtin_ia32_vplzcntq_256_mask ((__v4di) __A,
256  (__v4di)
258  (__mmask8) __U);
259 }
260 
261 #undef __DEFAULT_FN_ATTRS
262 
263 #endif /* __AVX512VLCDINTRIN_H */
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_broadcastmw_epi32(__mmask16 __A)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_maskz_conflict_epi64(__mmask8 __U, __m128i __A)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_broadcastmb_epi64(__mmask8 __A)
unsigned char __mmask8
Definition: avx512fintrin.h:47
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_conflict_epi32(__m128i __A)
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:3763
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_lzcnt_epi32(__m128i __A)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_conflict_epi64(__m128i __A)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_maskz_conflict_epi32(__mmask8 __U, __m256i __A)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_conflict_epi32(__m256i __A)
#define __DEFAULT_FN_ATTRS
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_mask_conflict_epi32(__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:4316
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_mask_lzcnt_epi64(__m256i __W, __mmask8 __U, __m256i __A)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_mask_lzcnt_epi32(__m128i __W, __mmask8 __U, __m128i __A)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_undefined_si256(void)
Create a 256-bit integer vector with undefined values.
Definition: avxintrin.h:3673
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_lzcnt_epi64(__m256i __A)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_maskz_conflict_epi32(__mmask8 __U, __m128i __A)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_maskz_lzcnt_epi32(__mmask8 __U, __m256i __A)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_broadcastmw_epi32(__mmask16 __A)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_broadcastmb_epi64(__mmask8 __A)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_mask_conflict_epi32(__m128i __W, __mmask8 __U, __m128i __A)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_setzero_si128(void)
Creates a 128-bit integer vector initialized to zero.
Definition: emmintrin.h:3975
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:3801
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:4260
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_maskz_lzcnt_epi32(__mmask8 __U, __m128i __A)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_maskz_conflict_epi64(__mmask8 __U, __m256i __A)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_mask_lzcnt_epi32(__m256i __W, __mmask8 __U, __m256i __A)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_maskz_lzcnt_epi64(__mmask8 __U, __m256i __A)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_lzcnt_epi32(__m256i __A)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_undefined_si128(void)
Generates a 128-bit vector of [4 x i32] with unspecified content.
Definition: emmintrin.h:3584
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_mask_conflict_epi64(__m128i __W, __mmask8 __U, __m128i __A)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_lzcnt_epi64(__m128i __A)
static __inline __m256i __DEFAULT_FN_ATTRS _mm256_setzero_si256(void)
Constructs a 256-bit integer vector initialized to zero.
Definition: avxintrin.h:4358
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_mask_lzcnt_epi64(__m128i __W, __mmask8 __U, __m128i __A)
unsigned short __mmask16
Definition: avx512fintrin.h:48
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_conflict_epi64(__m256i __A)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_maskz_lzcnt_epi64(__mmask8 __U, __m128i __A)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_mask_conflict_epi64(__m256i __W, __mmask8 __U, __m256i __A)