|
15 | 15 | #define __AVX512CDINTRIN_H |
16 | 16 |
|
17 | 17 | /* Define the default attributes for the functions in this file. */ |
| 18 | +#if defined(__cplusplus) && (__cplusplus >= 201103L) |
| 19 | +#define __DEFAULT_FN_ATTRS \ |
| 20 | + constexpr __attribute__((__always_inline__, __nodebug__, \ |
| 21 | + __target__("avx512cd"), __min_vector_width__(512))) |
| 22 | +#else |
18 | 23 | #define __DEFAULT_FN_ATTRS \ |
19 | 24 | __attribute__((__always_inline__, __nodebug__, __target__("avx512cd"), \ |
20 | 25 | __min_vector_width__(512))) |
21 | | - |
22 | | -#if defined(__cplusplus) && (__cplusplus >= 201103L) |
23 | | -#define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS constexpr |
24 | | -#else |
25 | | -#define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS |
26 | 26 | #endif |
27 | 27 |
|
28 | 28 | static __inline__ __m512i __DEFAULT_FN_ATTRS |
29 | | -_mm512_conflict_epi64 (__m512i __A) |
30 | | -{ |
31 | | - return (__m512i) __builtin_ia32_vpconflictdi_512 ((__v8di) __A); |
| 29 | +_mm512_conflict_epi64(__m512i __A) { |
| 30 | + return (__m512i)__builtin_ia32_vpconflictdi_512((__v8di)__A); |
32 | 31 | } |
33 | 32 |
|
34 | 33 | static __inline__ __m512i __DEFAULT_FN_ATTRS |
35 | | -_mm512_mask_conflict_epi64 (__m512i __W, __mmask8 __U, __m512i __A) |
36 | | -{ |
37 | | - return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U, |
38 | | - (__v8di)_mm512_conflict_epi64(__A), |
39 | | - (__v8di)__W); |
| 34 | +_mm512_mask_conflict_epi64(__m512i __W, __mmask8 __U, __m512i __A) { |
| 35 | + return (__m512i)__builtin_ia32_selectq_512( |
| 36 | + (__mmask8)__U, (__v8di)_mm512_conflict_epi64(__A), (__v8di)__W); |
40 | 37 | } |
41 | 38 |
|
42 | 39 | static __inline__ __m512i __DEFAULT_FN_ATTRS |
43 | | -_mm512_maskz_conflict_epi64 (__mmask8 __U, __m512i __A) |
44 | | -{ |
| 40 | +_mm512_maskz_conflict_epi64(__mmask8 __U, __m512i __A) { |
45 | 41 | return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U, |
46 | 42 | (__v8di)_mm512_conflict_epi64(__A), |
47 | | - (__v8di)_mm512_setzero_si512 ()); |
| 43 | + (__v8di)_mm512_setzero_si512()); |
48 | 44 | } |
49 | 45 |
|
50 | 46 | static __inline__ __m512i __DEFAULT_FN_ATTRS |
51 | | -_mm512_conflict_epi32 (__m512i __A) |
52 | | -{ |
53 | | - return (__m512i) __builtin_ia32_vpconflictsi_512 ((__v16si) __A); |
| 47 | +_mm512_conflict_epi32(__m512i __A) { |
| 48 | + return (__m512i)__builtin_ia32_vpconflictsi_512((__v16si)__A); |
54 | 49 | } |
55 | 50 |
|
56 | 51 | static __inline__ __m512i __DEFAULT_FN_ATTRS |
57 | | -_mm512_mask_conflict_epi32 (__m512i __W, __mmask16 __U, __m512i __A) |
58 | | -{ |
59 | | - return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U, |
60 | | - (__v16si)_mm512_conflict_epi32(__A), |
61 | | - (__v16si)__W); |
| 52 | +_mm512_mask_conflict_epi32(__m512i __W, __mmask16 __U, __m512i __A) { |
| 53 | + return (__m512i)__builtin_ia32_selectd_512( |
| 54 | + (__mmask16)__U, (__v16si)_mm512_conflict_epi32(__A), (__v16si)__W); |
62 | 55 | } |
63 | 56 |
|
64 | 57 | static __inline__ __m512i __DEFAULT_FN_ATTRS |
65 | | -_mm512_maskz_conflict_epi32 (__mmask16 __U, __m512i __A) |
66 | | -{ |
67 | | - return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U, |
68 | | - (__v16si)_mm512_conflict_epi32(__A), |
69 | | - (__v16si)_mm512_setzero_si512()); |
| 58 | +_mm512_maskz_conflict_epi32(__mmask16 __U, __m512i __A) { |
| 59 | + return (__m512i)__builtin_ia32_selectd_512( |
| 60 | + (__mmask16)__U, (__v16si)_mm512_conflict_epi32(__A), |
| 61 | + (__v16si)_mm512_setzero_si512()); |
70 | 62 | } |
71 | 63 |
|
72 | | -static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR |
73 | | -_mm512_lzcnt_epi32(__m512i __A) { |
| 64 | +static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_lzcnt_epi32(__m512i __A) { |
74 | 65 | return (__m512i)__builtin_elementwise_clzg((__v16si)__A, |
75 | 66 | (__v16si)_mm512_set1_epi32(32)); |
76 | 67 | } |
77 | 68 |
|
78 | | -static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR |
| 69 | +static __inline__ __m512i __DEFAULT_FN_ATTRS |
79 | 70 | _mm512_mask_lzcnt_epi32(__m512i __W, __mmask16 __U, __m512i __A) { |
80 | | - return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U, |
81 | | - (__v16si)_mm512_lzcnt_epi32(__A), |
82 | | - (__v16si)__W); |
| 71 | + return (__m512i)__builtin_ia32_selectd_512( |
| 72 | + (__mmask16)__U, (__v16si)_mm512_lzcnt_epi32(__A), (__v16si)__W); |
83 | 73 | } |
84 | 74 |
|
85 | | -static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR |
| 75 | +static __inline__ __m512i __DEFAULT_FN_ATTRS |
86 | 76 | _mm512_maskz_lzcnt_epi32(__mmask16 __U, __m512i __A) { |
87 | 77 | return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U, |
88 | 78 | (__v16si)_mm512_lzcnt_epi32(__A), |
89 | 79 | (__v16si)_mm512_setzero_si512()); |
90 | 80 | } |
91 | 81 |
|
92 | | -static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR |
93 | | -_mm512_lzcnt_epi64(__m512i __A) { |
| 82 | +static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_lzcnt_epi64(__m512i __A) { |
94 | 83 | return (__m512i)__builtin_elementwise_clzg( |
95 | 84 | (__v8di)__A, (__v8di)_mm512_set1_epi64((long long)64)); |
96 | 85 | } |
97 | 86 |
|
98 | | -static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR |
| 87 | +static __inline__ __m512i __DEFAULT_FN_ATTRS |
99 | 88 | _mm512_mask_lzcnt_epi64(__m512i __W, __mmask8 __U, __m512i __A) { |
100 | | - return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U, |
101 | | - (__v8di)_mm512_lzcnt_epi64(__A), |
102 | | - (__v8di)__W); |
| 89 | + return (__m512i)__builtin_ia32_selectq_512( |
| 90 | + (__mmask8)__U, (__v8di)_mm512_lzcnt_epi64(__A), (__v8di)__W); |
103 | 91 | } |
104 | 92 |
|
105 | | -static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR |
| 93 | +static __inline__ __m512i __DEFAULT_FN_ATTRS |
106 | 94 | _mm512_maskz_lzcnt_epi64(__mmask8 __U, __m512i __A) { |
107 | 95 | return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U, |
108 | 96 | (__v8di)_mm512_lzcnt_epi64(__A), |
109 | 97 | (__v8di)_mm512_setzero_si512()); |
110 | 98 | } |
111 | 99 |
|
112 | 100 | static __inline__ __m512i __DEFAULT_FN_ATTRS |
113 | | -_mm512_broadcastmb_epi64 (__mmask8 __A) |
114 | | -{ |
115 | | - return (__m512i) _mm512_set1_epi64((long long) __A); |
| 101 | +_mm512_broadcastmb_epi64(__mmask8 __A) { |
| 102 | + return (__m512i)_mm512_set1_epi64((long long)__A); |
116 | 103 | } |
117 | 104 |
|
118 | 105 | static __inline__ __m512i __DEFAULT_FN_ATTRS |
119 | | -_mm512_broadcastmw_epi32 (__mmask16 __A) |
120 | | -{ |
121 | | - return (__m512i) _mm512_set1_epi32((int) __A); |
122 | | - |
| 106 | +_mm512_broadcastmw_epi32(__mmask16 __A) { |
| 107 | + return (__m512i)_mm512_set1_epi32((int)__A); |
123 | 108 | } |
124 | 109 |
|
125 | 110 | #undef __DEFAULT_FN_ATTRS |
126 | | -#undef __DEFAULT_FN_ATTRS_CONSTEXPR |
127 | 111 |
|
128 | 112 | #endif |
0 commit comments