clang 20.0.0git
avx512bitalgintrin.h
Go to the documentation of this file.
1/*===------------- avx512bitalgintrin.h - BITALG intrinsics ------------------===
2 *
3 *
4 * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5 * See https://llvm.org/LICENSE.txt for license information.
6 * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 *
8 *===-----------------------------------------------------------------------===
9 */
10#ifndef __IMMINTRIN_H
11#error "Never use <avx512bitalgintrin.h> directly; include <immintrin.h> instead."
12#endif
13
14#ifndef __AVX512BITALGINTRIN_H
15#define __AVX512BITALGINTRIN_H
16
17/* Define the default attributes for the functions in this file. */
18#define __DEFAULT_FN_ATTRS \
19 __attribute__((__always_inline__, __nodebug__, \
20 __target__("avx512bitalg,evex512"), \
21 __min_vector_width__(512)))
22
23static __inline__ __m512i __DEFAULT_FN_ATTRS
25{
26 return (__m512i) __builtin_ia32_vpopcntw_512((__v32hi) __A);
27}
28
29static __inline__ __m512i __DEFAULT_FN_ATTRS
30_mm512_mask_popcnt_epi16(__m512i __A, __mmask32 __U, __m512i __B)
31{
32 return (__m512i) __builtin_ia32_selectw_512((__mmask32) __U,
33 (__v32hi) _mm512_popcnt_epi16(__B),
34 (__v32hi) __A);
35}
36
37static __inline__ __m512i __DEFAULT_FN_ATTRS
39{
41 __U,
42 __B);
43}
44
45static __inline__ __m512i __DEFAULT_FN_ATTRS
47{
48 return (__m512i) __builtin_ia32_vpopcntb_512((__v64qi) __A);
49}
50
51static __inline__ __m512i __DEFAULT_FN_ATTRS
52_mm512_mask_popcnt_epi8(__m512i __A, __mmask64 __U, __m512i __B)
53{
54 return (__m512i) __builtin_ia32_selectb_512((__mmask64) __U,
55 (__v64qi) _mm512_popcnt_epi8(__B),
56 (__v64qi) __A);
57}
58
59static __inline__ __m512i __DEFAULT_FN_ATTRS
61{
63 __U,
64 __B);
65}
66
67static __inline__ __mmask64 __DEFAULT_FN_ATTRS
68_mm512_mask_bitshuffle_epi64_mask(__mmask64 __U, __m512i __A, __m512i __B)
69{
70 return (__mmask64) __builtin_ia32_vpshufbitqmb512_mask((__v64qi) __A,
71 (__v64qi) __B,
72 __U);
73}
74
75static __inline__ __mmask64 __DEFAULT_FN_ATTRS
76_mm512_bitshuffle_epi64_mask(__m512i __A, __m512i __B)
77{
79 __A,
80 __B);
81}
82
83
84#undef __DEFAULT_FN_ATTRS
85
86#endif
#define __DEFAULT_FN_ATTRS
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_mask_popcnt_epi16(__m512i __A, __mmask32 __U, __m512i __B)
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_popcnt_epi8(__m512i __A)
static __inline__ __mmask64 __DEFAULT_FN_ATTRS _mm512_mask_bitshuffle_epi64_mask(__mmask64 __U, __m512i __A, __m512i __B)
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_popcnt_epi8(__mmask64 __U, __m512i __B)
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_popcnt_epi16(__mmask32 __U, __m512i __B)
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_mask_popcnt_epi8(__m512i __A, __mmask64 __U, __m512i __B)
static __inline__ __mmask64 __DEFAULT_FN_ATTRS _mm512_bitshuffle_epi64_mask(__m512i __A, __m512i __B)
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_popcnt_epi16(__m512i __A)
unsigned long long __mmask64
unsigned int __mmask32
static __inline __m512i __DEFAULT_FN_ATTRS512 _mm512_setzero_si512(void)