Clang Project

clang_source_code/lib/Headers/avx512vlvnniintrin.h
1/*===------------- avx512vlvnniintrin.h - VNNI intrinsics ------------------===
2 *
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a copy
5 * of this software and associated documentation files (the "Software"), to deal
6 * in the Software without restriction, including without limitation the rights
7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 * copies of the Software, and to permit persons to whom the Software is
9 * furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20 * THE SOFTWARE.
21 *
22 *===-----------------------------------------------------------------------===
23 */
24#ifndef __IMMINTRIN_H
25#error "Never use <avx512vlvnniintrin.h> directly; include <immintrin.h> instead."
26#endif
27
28#ifndef __AVX512VLVNNIINTRIN_H
29#define __AVX512VLVNNIINTRIN_H
30
31/* Define the default attributes for the functions in this file. */
32#define __DEFAULT_FN_ATTRS128 __attribute__((__always_inline__, __nodebug__, __target__("avx512vl,avx512vnni"), __min_vector_width__(128)))
33#define __DEFAULT_FN_ATTRS256 __attribute__((__always_inline__, __nodebug__, __target__("avx512vl,avx512vnni"), __min_vector_width__(256)))
34
35
36static __inline__ __m256i __DEFAULT_FN_ATTRS256
37_mm256_dpbusd_epi32(__m256i __S__m256i __A__m256i __B)
38{
39  return (__m256i)__builtin_ia32_vpdpbusd256((__v8si)__S, (__v8si)__A,
40                                             (__v8si)__B);
41}
42
43static __inline__ __m256i __DEFAULT_FN_ATTRS256
44_mm256_mask_dpbusd_epi32(__m256i __S__mmask8 __U__m256i __A__m256i __B)
45{
46  return (__m256i)__builtin_ia32_selectd_256(__U,
47                                     (__v8si)_mm256_dpbusd_epi32(__S__A__B),
48                                     (__v8si)__S);
49}
50
51static __inline__ __m256i __DEFAULT_FN_ATTRS256
52_mm256_maskz_dpbusd_epi32(__mmask8 __U__m256i __S__m256i __A__m256i __B)
53{
54  return (__m256i)__builtin_ia32_selectd_256(__U,
55                                     (__v8si)_mm256_dpbusd_epi32(__S__A__B),
56                                     (__v8si)_mm256_setzero_si256());
57}
58
59static __inline__ __m256i __DEFAULT_FN_ATTRS256
60_mm256_dpbusds_epi32(__m256i __S__m256i __A__m256i __B)
61{
62  return (__m256i)__builtin_ia32_vpdpbusds256((__v8si)__S, (__v8si)__A,
63                                              (__v8si)__B);
64}
65
66static __inline__ __m256i __DEFAULT_FN_ATTRS256
67_mm256_mask_dpbusds_epi32(__m256i __S__mmask8 __U__m256i __A__m256i __B)
68{
69  return (__m256i)__builtin_ia32_selectd_256(__U,
70                                    (__v8si)_mm256_dpbusds_epi32(__S__A__B),
71                                    (__v8si)__S);
72}
73
74static __inline__ __m256i __DEFAULT_FN_ATTRS256
75_mm256_maskz_dpbusds_epi32(__mmask8 __U__m256i __S__m256i __A__m256i __B)
76{
77  return (__m256i)__builtin_ia32_selectd_256(__U,
78                                     (__v8si)_mm256_dpbusds_epi32(__S__A__B),
79                                     (__v8si)_mm256_setzero_si256());
80}
81
82static __inline__ __m256i __DEFAULT_FN_ATTRS256
83_mm256_dpwssd_epi32(__m256i __S__m256i __A__m256i __B)
84{
85  return (__m256i)__builtin_ia32_vpdpwssd256((__v8si)__S, (__v8si)__A,
86                                             (__v8si)__B);
87}
88
89static __inline__ __m256i __DEFAULT_FN_ATTRS256
90_mm256_mask_dpwssd_epi32(__m256i __S__mmask8 __U__m256i __A__m256i __B)
91{
92  return (__m256i)__builtin_ia32_selectd_256(__U,
93                                     (__v8si)_mm256_dpwssd_epi32(__S__A__B),
94                                     (__v8si)__S);
95}
96
97static __inline__ __m256i __DEFAULT_FN_ATTRS256
98_mm256_maskz_dpwssd_epi32(__mmask8 __U__m256i __S__m256i __A__m256i __B)
99{
100  return (__m256i)__builtin_ia32_selectd_256(__U,
101                                     (__v8si)_mm256_dpwssd_epi32(__S__A__B),
102                                     (__v8si)_mm256_setzero_si256());
103}
104
105static __inline__ __m256i __DEFAULT_FN_ATTRS256
106_mm256_dpwssds_epi32(__m256i __S__m256i __A__m256i __B)
107{
108  return (__m256i)__builtin_ia32_vpdpwssds256((__v8si)__S, (__v8si)__A,
109                                              (__v8si)__B);
110}
111
112static __inline__ __m256i __DEFAULT_FN_ATTRS256
113_mm256_mask_dpwssds_epi32(__m256i __S__mmask8 __U__m256i __A__m256i __B)
114{
115  return (__m256i)__builtin_ia32_selectd_256(__U,
116                                    (__v8si)_mm256_dpwssds_epi32(__S__A__B),
117                                    (__v8si)__S);
118}
119
120static __inline__ __m256i __DEFAULT_FN_ATTRS256
121_mm256_maskz_dpwssds_epi32(__mmask8 __U__m256i __S__m256i __A__m256i __B)
122{
123  return (__m256i)__builtin_ia32_selectd_256(__U,
124                                    (__v8si)_mm256_dpwssds_epi32(__S__A__B),
125                                    (__v8si)_mm256_setzero_si256());
126}
127
128static __inline__ __m128i __DEFAULT_FN_ATTRS128
129_mm_dpbusd_epi32(__m128i __S__m128i __A__m128i __B)
130{
131  return (__m128i)__builtin_ia32_vpdpbusd128((__v4si)__S, (__v4si)__A,
132                                             (__v4si)__B);
133}
134
135static __inline__ __m128i __DEFAULT_FN_ATTRS128
136_mm_mask_dpbusd_epi32(__m128i __S__mmask8 __U__m128i __A__m128i __B)
137{
138  return (__m128i)__builtin_ia32_selectd_128(__U,
139                                        (__v4si)_mm_dpbusd_epi32(__S__A__B),
140                                        (__v4si)__S);
141}
142
143static __inline__ __m128i __DEFAULT_FN_ATTRS128
144_mm_maskz_dpbusd_epi32(__mmask8 __U__m128i __S__m128i __A__m128i __B)
145{
146  return (__m128i)__builtin_ia32_selectd_128(__U,
147                                        (__v4si)_mm_dpbusd_epi32(__S__A__B),
148                                        (__v4si)_mm_setzero_si128());
149}
150
151static __inline__ __m128i __DEFAULT_FN_ATTRS128
152_mm_dpbusds_epi32(__m128i __S__m128i __A__m128i __B)
153{
154  return (__m128i)__builtin_ia32_vpdpbusds128((__v4si)__S, (__v4si)__A,
155                                              (__v4si)__B);
156}
157
158static __inline__ __m128i __DEFAULT_FN_ATTRS128
159_mm_mask_dpbusds_epi32(__m128i __S__mmask8 __U__m128i __A__m128i __B)
160{
161  return (__m128i)__builtin_ia32_selectd_128(__U,
162                                       (__v4si)_mm_dpbusds_epi32(__S__A__B),
163                                       (__v4si)__S);
164}
165
166static __inline__ __m128i __DEFAULT_FN_ATTRS128
167_mm_maskz_dpbusds_epi32(__mmask8 __U__m128i __S__m128i __A__m128i __B)
168{
169  return (__m128i)__builtin_ia32_selectd_128(__U,
170                                       (__v4si)_mm_dpbusds_epi32(__S__A__B),
171                                       (__v4si)_mm_setzero_si128());
172}
173
174static __inline__ __m128i __DEFAULT_FN_ATTRS128
175_mm_dpwssd_epi32(__m128i __S__m128i __A__m128i __B)
176{
177  return (__m128i)__builtin_ia32_vpdpwssd128((__v4si)__S, (__v4si)__A,
178                                             (__v4si)__B);
179}
180
181static __inline__ __m128i __DEFAULT_FN_ATTRS128
182_mm_mask_dpwssd_epi32(__m128i __S__mmask8 __U__m128i __A__m128i __B)
183{
184  return (__m128i)__builtin_ia32_selectd_128(__U,
185                                        (__v4si)_mm_dpwssd_epi32(__S__A__B),
186                                        (__v4si)__S);
187}
188
189static __inline__ __m128i __DEFAULT_FN_ATTRS128
190_mm_maskz_dpwssd_epi32(__mmask8 __U__m128i __S__m128i __A__m128i __B)
191{
192  return (__m128i)__builtin_ia32_selectd_128(__U,
193                                        (__v4si)_mm_dpwssd_epi32(__S__A__B),
194                                        (__v4si)_mm_setzero_si128());
195}
196
197static __inline__ __m128i __DEFAULT_FN_ATTRS128
198_mm_dpwssds_epi32(__m128i __S__m128i __A__m128i __B)
199{
200  return (__m128i)__builtin_ia32_vpdpwssds128((__v4si)__S, (__v4si)__A,
201                                              (__v4si)__B);
202}
203
204static __inline__ __m128i __DEFAULT_FN_ATTRS128
205_mm_mask_dpwssds_epi32(__m128i __S__mmask8 __U__m128i __A__m128i __B)
206{
207  return (__m128i)__builtin_ia32_selectd_128(__U,
208                                       (__v4si)_mm_dpwssds_epi32(__S__A__B),
209                                       (__v4si)__S);
210}
211
212static __inline__ __m128i __DEFAULT_FN_ATTRS128
213_mm_maskz_dpwssds_epi32(__mmask8 __U__m128i __S__m128i __A__m128i __B)
214{
215  return (__m128i)__builtin_ia32_selectd_128(__U,
216                                       (__v4si)_mm_dpwssds_epi32(__S__A__B),
217                                       (__v4si)_mm_setzero_si128());
218}
219
220#undef __DEFAULT_FN_ATTRS128
221#undef __DEFAULT_FN_ATTRS256
222
223#endif
224