clang  19.0.0git
avx512vlbf16intrin.h
Go to the documentation of this file.
1 /*===--------- avx512vlbf16intrin.h - AVX512_BF16 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 <avx512vlbf16intrin.h> directly; include <immintrin.h> instead."
11 #endif
12 
13 #ifdef __SSE2__
14 
15 #ifndef __AVX512VLBF16INTRIN_H
16 #define __AVX512VLBF16INTRIN_H
17 
18 #define __DEFAULT_FN_ATTRS128 \
19  __attribute__((__always_inline__, __nodebug__, \
20  __target__("avx512vl,avx512bf16,no-evex512"), \
21  __min_vector_width__(128)))
22 #define __DEFAULT_FN_ATTRS256 \
23  __attribute__((__always_inline__, __nodebug__, \
24  __target__("avx512vl,avx512bf16,no-evex512"), \
25  __min_vector_width__(256)))
26 
27 /// Convert Two Packed Single Data to One Packed BF16 Data.
28 ///
29 /// \headerfile <x86intrin.h>
30 ///
31 /// This intrinsic corresponds to the <c> VCVTNE2PS2BF16 </c> instructions.
32 ///
33 /// \param __A
34 /// A 128-bit vector of [4 x float].
35 /// \param __B
36 /// A 128-bit vector of [4 x float].
37 /// \returns A 128-bit vector of [8 x bfloat] whose lower 64 bits come from
38 /// conversion of __B, and higher 64 bits come from conversion of __A.
39 static __inline__ __m128bh __DEFAULT_FN_ATTRS128
40 _mm_cvtne2ps_pbh(__m128 __A, __m128 __B) {
41  return (__m128bh)__builtin_ia32_cvtne2ps2bf16_128((__v4sf) __A,
42  (__v4sf) __B);
43 }
44 
45 /// Convert Two Packed Single Data to One Packed BF16 Data.
46 ///
47 /// \headerfile <x86intrin.h>
48 ///
49 /// This intrinsic corresponds to the <c> VCVTNE2PS2BF16 </c> instructions.
50 ///
51 /// \param __A
52 /// A 128-bit vector of [4 x float].
53 /// \param __B
54 /// A 128-bit vector of [4 x float].
55 /// \param __W
56 /// A 128-bit vector of [8 x bfloat].
57 /// \param __U
58 /// A 8-bit mask value specifying what is chosen for each element.
59 /// A 1 means conversion of __A or __B. A 0 means element from __W.
60 /// \returns A 128-bit vector of [8 x bfloat] whose lower 64 bits come from
61 /// conversion of __B, and higher 64 bits come from conversion of __A.
62 static __inline__ __m128bh __DEFAULT_FN_ATTRS128
63 _mm_mask_cvtne2ps_pbh(__m128bh __W, __mmask8 __U, __m128 __A, __m128 __B) {
64  return (__m128bh)__builtin_ia32_selectpbf_128((__mmask8)__U,
65  (__v8bf)_mm_cvtne2ps_pbh(__A, __B),
66  (__v8bf)__W);
67 }
68 
69 /// Convert Two Packed Single Data to One Packed BF16 Data.
70 ///
71 /// \headerfile <x86intrin.h>
72 ///
73 /// This intrinsic corresponds to the <c> VCVTNE2PS2BF16 </c> instructions.
74 ///
75 /// \param __A
76 /// A 128-bit vector of [4 x float].
77 /// \param __B
78 /// A 128-bit vector of [4 x float].
79 /// \param __U
80 /// A 8-bit mask value specifying what is chosen for each element.
81 /// A 1 means conversion of __A or __B. A 0 means element is zero.
82 /// \returns A 128-bit vector of [8 x bfloat] whose lower 64 bits come from
83 /// conversion of __B, and higher 64 bits come from conversion of __A.
84 static __inline__ __m128bh __DEFAULT_FN_ATTRS128
85 _mm_maskz_cvtne2ps_pbh(__mmask8 __U, __m128 __A, __m128 __B) {
86  return (__m128bh)__builtin_ia32_selectpbf_128((__mmask8)__U,
87  (__v8bf)_mm_cvtne2ps_pbh(__A, __B),
88  (__v8bf)_mm_setzero_si128());
89 }
90 
91 /// Convert Two Packed Single Data to One Packed BF16 Data.
92 ///
93 /// \headerfile <x86intrin.h>
94 ///
95 /// This intrinsic corresponds to the <c> VCVTNE2PS2BF16 </c> instructions.
96 ///
97 /// \param __A
98 /// A 256-bit vector of [8 x float].
99 /// \param __B
100 /// A 256-bit vector of [8 x float].
101 /// \returns A 256-bit vector of [16 x bfloat] whose lower 128 bits come from
102 /// conversion of __B, and higher 128 bits come from conversion of __A.
103 static __inline__ __m256bh __DEFAULT_FN_ATTRS256
104 _mm256_cvtne2ps_pbh(__m256 __A, __m256 __B) {
105  return (__m256bh)__builtin_ia32_cvtne2ps2bf16_256((__v8sf) __A,
106  (__v8sf) __B);
107 }
108 
109 /// Convert Two Packed Single Data to One Packed BF16 Data.
110 ///
111 /// \headerfile <x86intrin.h>
112 ///
113 /// This intrinsic corresponds to the <c> VCVTNE2PS2BF16 </c> instructions.
114 ///
115 /// \param __A
116 /// A 256-bit vector of [8 x float].
117 /// \param __B
118 /// A 256-bit vector of [8 x float].
119 /// \param __W
120 /// A 256-bit vector of [16 x bfloat].
121 /// \param __U
122 /// A 16-bit mask value specifying what is chosen for each element.
123 /// A 1 means conversion of __A or __B. A 0 means element from __W.
124 /// \returns A 256-bit vector of [16 x bfloat] whose lower 128 bits come from
125 /// conversion of __B, and higher 128 bits come from conversion of __A.
126 static __inline__ __m256bh __DEFAULT_FN_ATTRS256
127 _mm256_mask_cvtne2ps_pbh(__m256bh __W, __mmask16 __U, __m256 __A, __m256 __B) {
128  return (__m256bh)__builtin_ia32_selectpbf_256((__mmask16)__U,
129  (__v16bf)_mm256_cvtne2ps_pbh(__A, __B),
130  (__v16bf)__W);
131 }
132 
133 /// Convert Two Packed Single Data to One Packed BF16 Data.
134 ///
135 /// \headerfile <x86intrin.h>
136 ///
137 /// This intrinsic corresponds to the <c> VCVTNE2PS2BF16 </c> instructions.
138 ///
139 /// \param __A
140 /// A 256-bit vector of [8 x float].
141 /// \param __B
142 /// A 256-bit vector of [8 x float].
143 /// \param __U
144 /// A 16-bit mask value specifying what is chosen for each element.
145 /// A 1 means conversion of __A or __B. A 0 means element is zero.
146 /// \returns A 256-bit vector of [16 x bfloat] whose lower 128 bits come from
147 /// conversion of __B, and higher 128 bits come from conversion of __A.
148 static __inline__ __m256bh __DEFAULT_FN_ATTRS256
149 _mm256_maskz_cvtne2ps_pbh(__mmask16 __U, __m256 __A, __m256 __B) {
150  return (__m256bh)__builtin_ia32_selectpbf_256((__mmask16)__U,
151  (__v16bf)_mm256_cvtne2ps_pbh(__A, __B),
152  (__v16bf)_mm256_setzero_si256());
153 }
154 
155 /// Convert Packed Single Data to Packed BF16 Data.
156 ///
157 /// \headerfile <x86intrin.h>
158 ///
159 /// This intrinsic corresponds to the <c> VCVTNEPS2BF16 </c> instructions.
160 ///
161 /// \param __A
162 /// A 128-bit vector of [4 x float].
163 /// \returns A 128-bit vector of [8 x bfloat] whose lower 64 bits come from
164 /// conversion of __A, and higher 64 bits are 0.
165 #define _mm_cvtneps_pbh(A) \
166  ((__m128bh)__builtin_ia32_vcvtneps2bf16128((__v4sf)(A)))
167 
168 /// Convert Packed Single Data to Packed BF16 Data.
169 ///
170 /// \headerfile <x86intrin.h>
171 ///
172 /// This intrinsic corresponds to the <c> VCVTNEPS2BF16 </c> instructions.
173 ///
174 /// \param __A
175 /// A 128-bit vector of [4 x float].
176 /// \param __W
177 /// A 128-bit vector of [8 x bfloat].
178 /// \param __U
179 /// A 4-bit mask value specifying what is chosen for each element.
180 /// A 1 means conversion of __A. A 0 means element from __W.
181 /// \returns A 128-bit vector of [8 x bfloat] whose lower 64 bits come from
182 /// conversion of __A, and higher 64 bits are 0.
183 static __inline__ __m128bh __DEFAULT_FN_ATTRS128
184 _mm_mask_cvtneps_pbh(__m128bh __W, __mmask8 __U, __m128 __A) {
185  return (__m128bh)__builtin_ia32_cvtneps2bf16_128_mask((__v4sf) __A,
186  (__v8bf)__W,
187  (__mmask8)__U);
188 }
189 
190 /// Convert Packed Single Data to Packed BF16 Data.
191 ///
192 /// \headerfile <x86intrin.h>
193 ///
194 /// This intrinsic corresponds to the <c> VCVTNEPS2BF16 </c> instructions.
195 ///
196 /// \param __A
197 /// A 128-bit vector of [4 x float].
198 /// \param __U
199 /// A 4-bit mask value specifying what is chosen for each element.
200 /// A 1 means conversion of __A. A 0 means element is zero.
201 /// \returns A 128-bit vector of [8 x bfloat] whose lower 64 bits come from
202 /// conversion of __A, and higher 64 bits are 0.
203 static __inline__ __m128bh __DEFAULT_FN_ATTRS128
204 _mm_maskz_cvtneps_pbh(__mmask8 __U, __m128 __A) {
205  return (__m128bh)__builtin_ia32_cvtneps2bf16_128_mask((__v4sf) __A,
206  (__v8bf)_mm_setzero_si128(),
207  (__mmask8)__U);
208 }
209 
210 /// Convert Packed Single Data to Packed BF16 Data.
211 ///
212 /// \headerfile <x86intrin.h>
213 ///
214 /// This intrinsic corresponds to the <c> VCVTNEPS2BF16 </c> instructions.
215 ///
216 /// \param __A
217 /// A 256-bit vector of [8 x float].
218 /// \returns A 128-bit vector of [8 x bfloat] comes from conversion of __A.
219 #define _mm256_cvtneps_pbh(A) \
220  ((__m128bh)__builtin_ia32_vcvtneps2bf16256((__v8sf)(A)))
221 
222 /// Convert Packed Single Data to Packed BF16 Data.
223 ///
224 /// \headerfile <x86intrin.h>
225 ///
226 /// This intrinsic corresponds to the <c> VCVTNEPS2BF16 </c> instructions.
227 ///
228 /// \param __A
229 /// A 256-bit vector of [8 x float].
230 /// \param __W
231 /// A 256-bit vector of [8 x bfloat].
232 /// \param __U
233 /// A 8-bit mask value specifying what is chosen for each element.
234 /// A 1 means conversion of __A. A 0 means element from __W.
235 /// \returns A 128-bit vector of [8 x bfloat] comes from conversion of __A.
236 static __inline__ __m128bh __DEFAULT_FN_ATTRS256
237 _mm256_mask_cvtneps_pbh(__m128bh __W, __mmask8 __U, __m256 __A) {
238  return (__m128bh)__builtin_ia32_cvtneps2bf16_256_mask((__v8sf)__A,
239  (__v8bf)__W,
240  (__mmask8)__U);
241 }
242 
243 /// Convert Packed Single Data to Packed BF16 Data.
244 ///
245 /// \headerfile <x86intrin.h>
246 ///
247 /// This intrinsic corresponds to the <c> VCVTNEPS2BF16 </c> instructions.
248 ///
249 /// \param __A
250 /// A 256-bit vector of [8 x float].
251 /// \param __U
252 /// A 8-bit mask value specifying what is chosen for each element.
253 /// A 1 means conversion of __A. A 0 means element is zero.
254 /// \returns A 128-bit vector of [8 x bfloat] comes from conversion of __A.
255 static __inline__ __m128bh __DEFAULT_FN_ATTRS256
256 _mm256_maskz_cvtneps_pbh(__mmask8 __U, __m256 __A) {
257  return (__m128bh)__builtin_ia32_cvtneps2bf16_256_mask((__v8sf)__A,
258  (__v8bf)_mm_setzero_si128(),
259  (__mmask8)__U);
260 }
261 
262 /// Dot Product of BF16 Pairs Accumulated into Packed Single Precision.
263 ///
264 /// \headerfile <x86intrin.h>
265 ///
266 /// This intrinsic corresponds to the <c> VDPBF16PS </c> instructions.
267 ///
268 /// \param __A
269 /// A 128-bit vector of [8 x bfloat].
270 /// \param __B
271 /// A 128-bit vector of [8 x bfloat].
272 /// \param __D
273 /// A 128-bit vector of [4 x float].
274 /// \returns A 128-bit vector of [4 x float] comes from Dot Product of
275 /// __A, __B and __D
276 static __inline__ __m128 __DEFAULT_FN_ATTRS128
277 _mm_dpbf16_ps(__m128 __D, __m128bh __A, __m128bh __B) {
278  return (__m128)__builtin_ia32_dpbf16ps_128((__v4sf)__D,
279  (__v8bf)__A,
280  (__v8bf)__B);
281 }
282 
283 /// Dot Product of BF16 Pairs Accumulated into Packed Single Precision.
284 ///
285 /// \headerfile <x86intrin.h>
286 ///
287 /// This intrinsic corresponds to the <c> VDPBF16PS </c> instructions.
288 ///
289 /// \param __A
290 /// A 128-bit vector of [8 x bfloat].
291 /// \param __B
292 /// A 128-bit vector of [8 x bfloat].
293 /// \param __D
294 /// A 128-bit vector of [4 x float].
295 /// \param __U
296 /// A 8-bit mask value specifying what is chosen for each element.
297 /// A 1 means __A and __B's dot product accumulated with __D. A 0 means __D.
298 /// \returns A 128-bit vector of [4 x float] comes from Dot Product of
299 /// __A, __B and __D
300 static __inline__ __m128 __DEFAULT_FN_ATTRS128
301 _mm_mask_dpbf16_ps(__m128 __D, __mmask8 __U, __m128bh __A, __m128bh __B) {
302  return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
303  (__v4sf)_mm_dpbf16_ps(__D, __A, __B),
304  (__v4sf)__D);
305 }
306 
307 /// Dot Product of BF16 Pairs Accumulated into Packed Single Precision.
308 ///
309 /// \headerfile <x86intrin.h>
310 ///
311 /// This intrinsic corresponds to the <c> VDPBF16PS </c> instructions.
312 ///
313 /// \param __A
314 /// A 128-bit vector of [8 x bfloat].
315 /// \param __B
316 /// A 128-bit vector of [8 x bfloat].
317 /// \param __D
318 /// A 128-bit vector of [4 x float].
319 /// \param __U
320 /// A 8-bit mask value specifying what is chosen for each element.
321 /// A 1 means __A and __B's dot product accumulated with __D. A 0 means 0.
322 /// \returns A 128-bit vector of [4 x float] comes from Dot Product of
323 /// __A, __B and __D
324 static __inline__ __m128 __DEFAULT_FN_ATTRS128
325 _mm_maskz_dpbf16_ps(__mmask8 __U, __m128 __D, __m128bh __A, __m128bh __B) {
326  return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
327  (__v4sf)_mm_dpbf16_ps(__D, __A, __B),
328  (__v4sf)_mm_setzero_si128());
329 }
330 
331 /// Dot Product of BF16 Pairs Accumulated into Packed Single Precision.
332 ///
333 /// \headerfile <x86intrin.h>
334 ///
335 /// This intrinsic corresponds to the <c> VDPBF16PS </c> instructions.
336 ///
337 /// \param __A
338 /// A 256-bit vector of [16 x bfloat].
339 /// \param __B
340 /// A 256-bit vector of [16 x bfloat].
341 /// \param __D
342 /// A 256-bit vector of [8 x float].
343 /// \returns A 256-bit vector of [8 x float] comes from Dot Product of
344 /// __A, __B and __D
345 static __inline__ __m256 __DEFAULT_FN_ATTRS256
346 _mm256_dpbf16_ps(__m256 __D, __m256bh __A, __m256bh __B) {
347  return (__m256)__builtin_ia32_dpbf16ps_256((__v8sf)__D,
348  (__v16bf)__A,
349  (__v16bf)__B);
350 }
351 
352 /// Dot Product of BF16 Pairs Accumulated into Packed Single Precision.
353 ///
354 /// \headerfile <x86intrin.h>
355 ///
356 /// This intrinsic corresponds to the <c> VDPBF16PS </c> instructions.
357 ///
358 /// \param __A
359 /// A 256-bit vector of [16 x bfloat].
360 /// \param __B
361 /// A 256-bit vector of [16 x bfloat].
362 /// \param __D
363 /// A 256-bit vector of [8 x float].
364 /// \param __U
365 /// A 16-bit mask value specifying what is chosen for each element.
366 /// A 1 means __A and __B's dot product accumulated with __D. A 0 means __D.
367 /// \returns A 256-bit vector of [8 x float] comes from Dot Product of
368 /// __A, __B and __D
369 static __inline__ __m256 __DEFAULT_FN_ATTRS256
370 _mm256_mask_dpbf16_ps(__m256 __D, __mmask8 __U, __m256bh __A, __m256bh __B) {
371  return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
372  (__v8sf)_mm256_dpbf16_ps(__D, __A, __B),
373  (__v8sf)__D);
374 }
375 
376 /// Dot Product of BF16 Pairs Accumulated into Packed Single Precision.
377 ///
378 /// \headerfile <x86intrin.h>
379 ///
380 /// This intrinsic corresponds to the <c> VDPBF16PS </c> instructions.
381 ///
382 /// \param __A
383 /// A 256-bit vector of [16 x bfloat].
384 /// \param __B
385 /// A 256-bit vector of [16 x bfloat].
386 /// \param __D
387 /// A 256-bit vector of [8 x float].
388 /// \param __U
389 /// A 8-bit mask value specifying what is chosen for each element.
390 /// A 1 means __A and __B's dot product accumulated with __D. A 0 means 0.
391 /// \returns A 256-bit vector of [8 x float] comes from Dot Product of
392 /// __A, __B and __D
393 static __inline__ __m256 __DEFAULT_FN_ATTRS256
394 _mm256_maskz_dpbf16_ps(__mmask8 __U, __m256 __D, __m256bh __A, __m256bh __B) {
395  return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
396  (__v8sf)_mm256_dpbf16_ps(__D, __A, __B),
397  (__v8sf)_mm256_setzero_si256());
398 }
399 
400 /// Convert One Single float Data to One BF16 Data.
401 ///
402 /// \headerfile <x86intrin.h>
403 ///
404 /// This intrinsic corresponds to the <c> VCVTNEPS2BF16 </c> instructions.
405 ///
406 /// \param __A
407 /// A float data.
408 /// \returns A bf16 data whose sign field and exponent field keep unchanged,
409 /// and fraction field is truncated to 7 bits.
410 static __inline__ __bf16 __DEFAULT_FN_ATTRS128 _mm_cvtness_sbh(float __A) {
411  __v4sf __V = {__A, 0, 0, 0};
412  __v8bf __R = __builtin_ia32_cvtneps2bf16_128_mask(
413  (__v4sf)__V, (__v8bf)_mm_undefined_si128(), (__mmask8)-1);
414  return (__bf16)__R[0];
415 }
416 
417 /// Convert Packed BF16 Data to Packed float Data.
418 ///
419 /// \headerfile <x86intrin.h>
420 ///
421 /// \param __A
422 /// A 128-bit vector of [4 x bfloat].
423 /// \returns A 128-bit vector of [4 x float] come from conversion of __A
424 static __inline__ __m128 __DEFAULT_FN_ATTRS128 _mm_cvtpbh_ps(__m128bh __A) {
425  return _mm_castsi128_ps(
426  (__m128i)_mm_slli_epi32((__m128i)_mm_cvtepi16_epi32((__m128i)__A), 16));
427 }
428 
429 /// Convert Packed BF16 Data to Packed float Data.
430 ///
431 /// \headerfile <x86intrin.h>
432 ///
433 /// \param __A
434 /// A 128-bit vector of [8 x bfloat].
435 /// \returns A 256-bit vector of [8 x float] come from conversion of __A
436 static __inline__ __m256 __DEFAULT_FN_ATTRS256 _mm256_cvtpbh_ps(__m128bh __A) {
437  return _mm256_castsi256_ps((__m256i)_mm256_slli_epi32(
438  (__m256i)_mm256_cvtepi16_epi32((__m128i)__A), 16));
439 }
440 
441 /// Convert Packed BF16 Data to Packed float Data using zeroing mask.
442 ///
443 /// \headerfile <x86intrin.h>
444 ///
445 /// \param __U
446 /// A 4-bit mask. Elements are zeroed out when the corresponding mask
447 /// bit is not set.
448 /// \param __A
449 /// A 128-bit vector of [4 x bfloat].
450 /// \returns A 128-bit vector of [4 x float] come from conversion of __A
451 static __inline__ __m128 __DEFAULT_FN_ATTRS128
452 _mm_maskz_cvtpbh_ps(__mmask8 __U, __m128bh __A) {
453  return _mm_castsi128_ps((__m128i)_mm_slli_epi32(
454  (__m128i)_mm_maskz_cvtepi16_epi32((__mmask8)__U, (__m128i)__A), 16));
455 }
456 
457 /// Convert Packed BF16 Data to Packed float Data using zeroing mask.
458 ///
459 /// \headerfile <x86intrin.h>
460 ///
461 /// \param __U
462 /// A 8-bit mask. Elements are zeroed out when the corresponding mask
463 /// bit is not set.
464 /// \param __A
465 /// A 128-bit vector of [8 x bfloat].
466 /// \returns A 256-bit vector of [8 x float] come from conversion of __A
467 static __inline__ __m256 __DEFAULT_FN_ATTRS256
468 _mm256_maskz_cvtpbh_ps(__mmask8 __U, __m128bh __A) {
469  return _mm256_castsi256_ps((__m256i)_mm256_slli_epi32(
470  (__m256i)_mm256_maskz_cvtepi16_epi32((__mmask8)__U, (__m128i)__A), 16));
471 }
472 
473 /// Convert Packed BF16 Data to Packed float Data using merging mask.
474 ///
475 /// \headerfile <x86intrin.h>
476 ///
477 /// \param __S
478 /// A 128-bit vector of [4 x float]. Elements are copied from __S when
479 /// the corresponding mask bit is not set.
480 /// \param __U
481 /// A 4-bit mask. Elements are zeroed out when the corresponding mask
482 /// bit is not set.
483 /// \param __A
484 /// A 128-bit vector of [4 x bfloat].
485 /// \returns A 128-bit vector of [4 x float] come from conversion of __A
486 static __inline__ __m128 __DEFAULT_FN_ATTRS128
487 _mm_mask_cvtpbh_ps(__m128 __S, __mmask8 __U, __m128bh __A) {
488  return _mm_castsi128_ps((__m128i)_mm_mask_slli_epi32(
489  (__m128i)__S, (__mmask8)__U, (__m128i)_mm_cvtepi16_epi32((__m128i)__A),
490  16));
491 }
492 
493 /// Convert Packed BF16 Data to Packed float Data using merging mask.
494 ///
495 /// \headerfile <x86intrin.h>
496 ///
497 /// \param __S
498 /// A 256-bit vector of [8 x float]. Elements are copied from __S when
499 /// the corresponding mask bit is not set.
500 /// \param __U
501 /// A 8-bit mask. Elements are zeroed out when the corresponding mask
502 /// bit is not set.
503 /// \param __A
504 /// A 128-bit vector of [8 x bfloat].
505 /// \returns A 256-bit vector of [8 x float] come from conversion of __A
506 static __inline__ __m256 __DEFAULT_FN_ATTRS256
507 _mm256_mask_cvtpbh_ps(__m256 __S, __mmask8 __U, __m128bh __A) {
509  (__m256i)__S, (__mmask8)__U, (__m256i)_mm256_cvtepi16_epi32((__m128i)__A),
510  16));
511 }
512 
513 #undef __DEFAULT_FN_ATTRS128
514 #undef __DEFAULT_FN_ATTRS256
515 
516 #endif
517 #endif
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_cvtepi16_epi32(__m128i __V)
Sign-extends 16-bit elements from the 128-bit vector of [8 x i16] in __V and returns the 32-bit value...
Definition: avx2intrin.h:1441
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_slli_epi32(__m256i __a, int __count)
Shifts each 32-bit element of the 256-bit vector of [8 x i32] in __a left by __count bits,...
Definition: avx2intrin.h:2169
#define __DEFAULT_FN_ATTRS256
Definition: avx2intrin.h:18
#define __DEFAULT_FN_ATTRS128
Definition: avx2intrin.h:21
unsigned char __mmask8
Definition: avx512fintrin.h:41
unsigned short __mmask16
Definition: avx512fintrin.h:42
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_mask_slli_epi32(__m256i __W, __mmask8 __U, __m256i __A, unsigned int __B)
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_maskz_cvtepi16_epi32(__mmask8 __U, __m128i __A)
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_mask_slli_epi32(__m128i __W, __mmask8 __U, __m128i __A, unsigned int __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_maskz_cvtepi16_epi32(__mmask8 __U, __m128i __A)
static __inline __m256 __DEFAULT_FN_ATTRS _mm256_castsi256_ps(__m256i __a)
Casts a 256-bit integer vector into a 256-bit floating-point vector of [8 x float].
Definition: avxintrin.h:4439
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__ __m128i __DEFAULT_FN_ATTRS _mm_undefined_si128(void)
Generates a 128-bit vector of [4 x i32] with unspecified content.
Definition: emmintrin.h:3477
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_slli_epi32(__m128i __a, int __count)
Left-shifts each 32-bit value in the 128-bit integer vector operand by the specified number of bits.
Definition: emmintrin.h:2793
static __inline__ __m128 __DEFAULT_FN_ATTRS _mm_castsi128_ps(__m128i __a)
Casts a 128-bit integer vector into a 128-bit floating-point vector of [4 x float].
Definition: emmintrin.h:4785
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_setzero_si128(void)
Creates a 128-bit integer vector initialized to zero.
Definition: emmintrin.h:3858
static __inline__ void short __D
Definition: immintrin.h:468
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvtepi16_epi32(__m128i __V)
Sign-extends each of the lower four 16-bit integer elements of a 128-bit integer vector of [8 x i16] ...
Definition: smmintrin.h:1283