avx512bwintrin.h revision 1.1.1.2.2.1 1 1.1.1.2.2.1 pgoyette /* Copyright (C) 2014-2016 Free Software Foundation, Inc.
2 1.1 mrg
3 1.1 mrg This file is part of GCC.
4 1.1 mrg
5 1.1 mrg GCC is free software; you can redistribute it and/or modify
6 1.1 mrg it under the terms of the GNU General Public License as published by
7 1.1 mrg the Free Software Foundation; either version 3, or (at your option)
8 1.1 mrg any later version.
9 1.1 mrg
10 1.1 mrg GCC is distributed in the hope that it will be useful,
11 1.1 mrg but WITHOUT ANY WARRANTY; without even the implied warranty of
12 1.1 mrg MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 1.1 mrg GNU General Public License for more details.
14 1.1 mrg
15 1.1 mrg Under Section 7 of GPL version 3, you are granted additional
16 1.1 mrg permissions described in the GCC Runtime Library Exception, version
17 1.1 mrg 3.1, as published by the Free Software Foundation.
18 1.1 mrg
19 1.1 mrg You should have received a copy of the GNU General Public License and
20 1.1 mrg a copy of the GCC Runtime Library Exception along with this program;
21 1.1 mrg see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
22 1.1 mrg <http://www.gnu.org/licenses/>. */
23 1.1 mrg
24 1.1 mrg #ifndef _IMMINTRIN_H_INCLUDED
25 1.1 mrg #error "Never use <avx512bwintrin.h> directly; include <immintrin.h> instead."
26 1.1 mrg #endif
27 1.1 mrg
28 1.1 mrg #ifndef _AVX512BWINTRIN_H_INCLUDED
29 1.1 mrg #define _AVX512BWINTRIN_H_INCLUDED
30 1.1 mrg
31 1.1 mrg #ifndef __AVX512BW__
32 1.1 mrg #pragma GCC push_options
33 1.1 mrg #pragma GCC target("avx512bw")
34 1.1 mrg #define __DISABLE_AVX512BW__
35 1.1 mrg #endif /* __AVX512BW__ */
36 1.1 mrg
37 1.1 mrg /* Internal data types for implementing the intrinsics. */
38 1.1 mrg typedef short __v32hi __attribute__ ((__vector_size__ (64)));
39 1.1 mrg typedef char __v64qi __attribute__ ((__vector_size__ (64)));
40 1.1 mrg
41 1.1 mrg typedef unsigned long long __mmask64;
42 1.1 mrg
43 1.1 mrg extern __inline __m512i
44 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
45 1.1 mrg _mm512_setzero_qi (void)
46 1.1 mrg {
47 1.1 mrg return __extension__ (__m512i)(__v64qi){ 0, 0, 0, 0, 0, 0, 0, 0,
48 1.1 mrg 0, 0, 0, 0, 0, 0, 0, 0,
49 1.1 mrg 0, 0, 0, 0, 0, 0, 0, 0,
50 1.1 mrg 0, 0, 0, 0, 0, 0, 0, 0,
51 1.1 mrg 0, 0, 0, 0, 0, 0, 0, 0,
52 1.1 mrg 0, 0, 0, 0, 0, 0, 0, 0,
53 1.1 mrg 0, 0, 0, 0, 0, 0, 0, 0,
54 1.1 mrg 0, 0, 0, 0, 0, 0, 0, 0 };
55 1.1 mrg }
56 1.1 mrg
57 1.1 mrg extern __inline __m512i
58 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
59 1.1 mrg _mm512_setzero_hi (void)
60 1.1 mrg {
61 1.1 mrg return __extension__ (__m512i)(__v32hi){ 0, 0, 0, 0, 0, 0, 0, 0,
62 1.1 mrg 0, 0, 0, 0, 0, 0, 0, 0,
63 1.1 mrg 0, 0, 0, 0, 0, 0, 0, 0,
64 1.1 mrg 0, 0, 0, 0, 0, 0, 0, 0 };
65 1.1 mrg }
66 1.1 mrg
67 1.1 mrg extern __inline __m512i
68 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
69 1.1 mrg _mm512_mask_mov_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
70 1.1 mrg {
71 1.1 mrg return (__m512i) __builtin_ia32_movdquhi512_mask ((__v32hi) __A,
72 1.1 mrg (__v32hi) __W,
73 1.1 mrg (__mmask32) __U);
74 1.1 mrg }
75 1.1 mrg
76 1.1 mrg extern __inline __m512i
77 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
78 1.1 mrg _mm512_maskz_mov_epi16 (__mmask32 __U, __m512i __A)
79 1.1 mrg {
80 1.1 mrg return (__m512i) __builtin_ia32_movdquhi512_mask ((__v32hi) __A,
81 1.1 mrg (__v32hi)
82 1.1 mrg _mm512_setzero_hi (),
83 1.1 mrg (__mmask32) __U);
84 1.1 mrg }
85 1.1 mrg
86 1.1 mrg extern __inline __m512i
87 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
88 1.1 mrg _mm512_mask_loadu_epi16 (__m512i __W, __mmask32 __U, void const *__P)
89 1.1 mrg {
90 1.1 mrg return (__m512i) __builtin_ia32_loaddquhi512_mask ((__v32hi *) __P,
91 1.1 mrg (__v32hi) __W,
92 1.1 mrg (__mmask32) __U);
93 1.1 mrg }
94 1.1 mrg
95 1.1 mrg extern __inline __m512i
96 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
97 1.1 mrg _mm512_maskz_loadu_epi16 (__mmask32 __U, void const *__P)
98 1.1 mrg {
99 1.1 mrg return (__m512i) __builtin_ia32_loaddquhi512_mask ((__v32hi *) __P,
100 1.1 mrg (__v32hi)
101 1.1 mrg _mm512_setzero_hi (),
102 1.1 mrg (__mmask32) __U);
103 1.1 mrg }
104 1.1 mrg
105 1.1 mrg extern __inline void
106 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
107 1.1 mrg _mm512_mask_storeu_epi16 (void *__P, __mmask32 __U, __m512i __A)
108 1.1 mrg {
109 1.1 mrg __builtin_ia32_storedquhi512_mask ((__v32hi *) __P,
110 1.1 mrg (__v32hi) __A,
111 1.1 mrg (__mmask32) __U);
112 1.1 mrg }
113 1.1 mrg
114 1.1 mrg extern __inline __m512i
115 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
116 1.1 mrg _mm512_mask_mov_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
117 1.1 mrg {
118 1.1 mrg return (__m512i) __builtin_ia32_movdquqi512_mask ((__v64qi) __A,
119 1.1 mrg (__v64qi) __W,
120 1.1 mrg (__mmask64) __U);
121 1.1 mrg }
122 1.1 mrg
123 1.1 mrg extern __inline __m512i
124 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
125 1.1 mrg _mm512_maskz_mov_epi8 (__mmask64 __U, __m512i __A)
126 1.1 mrg {
127 1.1 mrg return (__m512i) __builtin_ia32_movdquqi512_mask ((__v64qi) __A,
128 1.1 mrg (__v64qi)
129 1.1 mrg _mm512_setzero_hi (),
130 1.1 mrg (__mmask64) __U);
131 1.1 mrg }
132 1.1 mrg
133 1.1 mrg extern __inline __mmask32
134 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
135 1.1 mrg _mm512_kunpackw (__mmask32 __A, __mmask32 __B)
136 1.1 mrg {
137 1.1 mrg return (__mmask32) __builtin_ia32_kunpcksi ((__mmask32) __A,
138 1.1 mrg (__mmask32) __B);
139 1.1 mrg }
140 1.1 mrg
141 1.1 mrg extern __inline __mmask64
142 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
143 1.1 mrg _mm512_kunpackd (__mmask64 __A, __mmask64 __B)
144 1.1 mrg {
145 1.1 mrg return (__mmask64) __builtin_ia32_kunpckdi ((__mmask64) __A,
146 1.1 mrg (__mmask64) __B);
147 1.1 mrg }
148 1.1 mrg
149 1.1 mrg extern __inline __m512i
150 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
151 1.1 mrg _mm512_mask_loadu_epi8 (__m512i __W, __mmask64 __U, void const *__P)
152 1.1 mrg {
153 1.1 mrg return (__m512i) __builtin_ia32_loaddquqi512_mask ((__v64qi *) __P,
154 1.1 mrg (__v64qi) __W,
155 1.1 mrg (__mmask64) __U);
156 1.1 mrg }
157 1.1 mrg
158 1.1 mrg extern __inline __m512i
159 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
160 1.1 mrg _mm512_maskz_loadu_epi8 (__mmask64 __U, void const *__P)
161 1.1 mrg {
162 1.1 mrg return (__m512i) __builtin_ia32_loaddquqi512_mask ((__v64qi *) __P,
163 1.1 mrg (__v64qi)
164 1.1 mrg _mm512_setzero_hi (),
165 1.1 mrg (__mmask64) __U);
166 1.1 mrg }
167 1.1 mrg
168 1.1 mrg extern __inline void
169 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
170 1.1 mrg _mm512_mask_storeu_epi8 (void *__P, __mmask64 __U, __m512i __A)
171 1.1 mrg {
172 1.1 mrg __builtin_ia32_storedquqi512_mask ((__v64qi *) __P,
173 1.1 mrg (__v64qi) __A,
174 1.1 mrg (__mmask64) __U);
175 1.1 mrg }
176 1.1 mrg
177 1.1 mrg extern __inline __m512i
178 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
179 1.1 mrg _mm512_sad_epu8 (__m512i __A, __m512i __B)
180 1.1 mrg {
181 1.1 mrg return (__m512i) __builtin_ia32_psadbw512 ((__v64qi) __A,
182 1.1 mrg (__v64qi) __B);
183 1.1 mrg }
184 1.1 mrg
185 1.1 mrg extern __inline __m256i
186 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
187 1.1 mrg _mm512_cvtepi16_epi8 (__m512i __A)
188 1.1 mrg {
189 1.1 mrg return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
190 1.1 mrg (__v32qi) _mm256_undefined_si256(),
191 1.1 mrg (__mmask32) -1);
192 1.1 mrg }
193 1.1 mrg
194 1.1 mrg extern __inline __m256i
195 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
196 1.1 mrg _mm512_mask_cvtepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A)
197 1.1 mrg {
198 1.1 mrg return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
199 1.1 mrg (__v32qi) __O, __M);
200 1.1 mrg }
201 1.1 mrg
202 1.1 mrg extern __inline __m256i
203 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
204 1.1 mrg _mm512_maskz_cvtepi16_epi8 (__mmask32 __M, __m512i __A)
205 1.1 mrg {
206 1.1 mrg return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
207 1.1 mrg (__v32qi)
208 1.1 mrg _mm256_setzero_si256 (),
209 1.1 mrg __M);
210 1.1 mrg }
211 1.1 mrg
212 1.1 mrg extern __inline __m256i
213 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
214 1.1 mrg _mm512_cvtsepi16_epi8 (__m512i __A)
215 1.1 mrg {
216 1.1 mrg return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
217 1.1 mrg (__v32qi)_mm256_undefined_si256(),
218 1.1 mrg (__mmask32) -1);
219 1.1 mrg }
220 1.1 mrg
221 1.1 mrg extern __inline __m256i
222 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
223 1.1 mrg _mm512_mask_cvtsepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A)
224 1.1 mrg {
225 1.1 mrg return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
226 1.1 mrg (__v32qi)__O,
227 1.1 mrg __M);
228 1.1 mrg }
229 1.1 mrg
230 1.1 mrg extern __inline __m256i
231 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
232 1.1 mrg _mm512_maskz_cvtsepi16_epi8 (__mmask32 __M, __m512i __A)
233 1.1 mrg {
234 1.1 mrg return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
235 1.1 mrg (__v32qi)
236 1.1 mrg _mm256_setzero_si256 (),
237 1.1 mrg __M);
238 1.1 mrg }
239 1.1 mrg
240 1.1 mrg extern __inline __m256i
241 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
242 1.1 mrg _mm512_cvtusepi16_epi8 (__m512i __A)
243 1.1 mrg {
244 1.1 mrg return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
245 1.1 mrg (__v32qi)_mm256_undefined_si256(),
246 1.1 mrg (__mmask32) -1);
247 1.1 mrg }
248 1.1 mrg
249 1.1 mrg extern __inline __m256i
250 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
251 1.1 mrg _mm512_mask_cvtusepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A)
252 1.1 mrg {
253 1.1 mrg return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
254 1.1 mrg (__v32qi) __O,
255 1.1 mrg __M);
256 1.1 mrg }
257 1.1 mrg
258 1.1 mrg extern __inline __m256i
259 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
260 1.1 mrg _mm512_maskz_cvtusepi16_epi8 (__mmask32 __M, __m512i __A)
261 1.1 mrg {
262 1.1 mrg return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
263 1.1 mrg (__v32qi)
264 1.1 mrg _mm256_setzero_si256 (),
265 1.1 mrg __M);
266 1.1 mrg }
267 1.1 mrg
268 1.1 mrg extern __inline __m512i
269 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
270 1.1 mrg _mm512_broadcastb_epi8 (__m128i __A)
271 1.1 mrg {
272 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A,
273 1.1.1.2 mrg (__v64qi)_mm512_undefined_epi32(),
274 1.1.1.2 mrg (__mmask64) -1);
275 1.1 mrg }
276 1.1 mrg
277 1.1 mrg extern __inline __m512i
278 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
279 1.1 mrg _mm512_mask_broadcastb_epi8 (__m512i __O, __mmask64 __M, __m128i __A)
280 1.1 mrg {
281 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A,
282 1.1 mrg (__v64qi) __O,
283 1.1 mrg __M);
284 1.1 mrg }
285 1.1 mrg
286 1.1 mrg extern __inline __m512i
287 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
288 1.1 mrg _mm512_maskz_broadcastb_epi8 (__mmask64 __M, __m128i __A)
289 1.1 mrg {
290 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A,
291 1.1 mrg (__v64qi)
292 1.1 mrg _mm512_setzero_qi(),
293 1.1 mrg __M);
294 1.1 mrg }
295 1.1 mrg
296 1.1 mrg extern __inline __m512i
297 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
298 1.1 mrg _mm512_mask_set1_epi8 (__m512i __O, __mmask64 __M, char __A)
299 1.1 mrg {
300 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A,
301 1.1 mrg (__v64qi) __O,
302 1.1 mrg __M);
303 1.1 mrg }
304 1.1 mrg
305 1.1 mrg extern __inline __m512i
306 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
307 1.1 mrg _mm512_maskz_set1_epi8 (__mmask64 __M, char __A)
308 1.1 mrg {
309 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A,
310 1.1 mrg (__v64qi)
311 1.1 mrg _mm512_setzero_qi(),
312 1.1 mrg __M);
313 1.1 mrg }
314 1.1 mrg
315 1.1 mrg extern __inline __m512i
316 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
317 1.1 mrg _mm512_broadcastw_epi16 (__m128i __A)
318 1.1 mrg {
319 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A,
320 1.1.1.2 mrg (__v32hi)_mm512_undefined_epi32(),
321 1.1.1.2 mrg (__mmask32) -1);
322 1.1 mrg }
323 1.1 mrg
324 1.1 mrg extern __inline __m512i
325 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
326 1.1 mrg _mm512_mask_broadcastw_epi16 (__m512i __O, __mmask32 __M, __m128i __A)
327 1.1 mrg {
328 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A,
329 1.1 mrg (__v32hi) __O,
330 1.1 mrg __M);
331 1.1 mrg }
332 1.1 mrg
333 1.1 mrg extern __inline __m512i
334 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
335 1.1 mrg _mm512_maskz_broadcastw_epi16 (__mmask32 __M, __m128i __A)
336 1.1 mrg {
337 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A,
338 1.1 mrg (__v32hi)
339 1.1 mrg _mm512_setzero_hi(),
340 1.1 mrg __M);
341 1.1 mrg }
342 1.1 mrg
343 1.1 mrg extern __inline __m512i
344 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
345 1.1 mrg _mm512_mask_set1_epi16 (__m512i __O, __mmask32 __M, short __A)
346 1.1 mrg {
347 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A,
348 1.1 mrg (__v32hi) __O,
349 1.1 mrg __M);
350 1.1 mrg }
351 1.1 mrg
352 1.1 mrg extern __inline __m512i
353 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
354 1.1 mrg _mm512_maskz_set1_epi16 (__mmask32 __M, short __A)
355 1.1 mrg {
356 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A,
357 1.1 mrg (__v32hi)
358 1.1 mrg _mm512_setzero_hi(),
359 1.1 mrg __M);
360 1.1 mrg }
361 1.1 mrg
362 1.1 mrg extern __inline __m512i
363 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
364 1.1 mrg _mm512_mulhrs_epi16 (__m512i __A, __m512i __B)
365 1.1 mrg {
366 1.1 mrg return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
367 1.1 mrg (__v32hi) __B,
368 1.1 mrg (__v32hi)
369 1.1 mrg _mm512_setzero_hi (),
370 1.1 mrg (__mmask32) -1);
371 1.1 mrg }
372 1.1 mrg
373 1.1 mrg extern __inline __m512i
374 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
375 1.1 mrg _mm512_mask_mulhrs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
376 1.1 mrg __m512i __B)
377 1.1 mrg {
378 1.1 mrg return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
379 1.1 mrg (__v32hi) __B,
380 1.1 mrg (__v32hi) __W,
381 1.1 mrg (__mmask32) __U);
382 1.1 mrg }
383 1.1 mrg
384 1.1 mrg extern __inline __m512i
385 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
386 1.1 mrg _mm512_maskz_mulhrs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
387 1.1 mrg {
388 1.1 mrg return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
389 1.1 mrg (__v32hi) __B,
390 1.1 mrg (__v32hi)
391 1.1 mrg _mm512_setzero_hi (),
392 1.1 mrg (__mmask32) __U);
393 1.1 mrg }
394 1.1 mrg
395 1.1 mrg extern __inline __m512i
396 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
397 1.1 mrg _mm512_mulhi_epi16 (__m512i __A, __m512i __B)
398 1.1 mrg {
399 1.1 mrg return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
400 1.1 mrg (__v32hi) __B,
401 1.1 mrg (__v32hi)
402 1.1 mrg _mm512_setzero_hi (),
403 1.1 mrg (__mmask32) -1);
404 1.1 mrg }
405 1.1 mrg
406 1.1 mrg extern __inline __m512i
407 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
408 1.1 mrg _mm512_mask_mulhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
409 1.1 mrg __m512i __B)
410 1.1 mrg {
411 1.1 mrg return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
412 1.1 mrg (__v32hi) __B,
413 1.1 mrg (__v32hi) __W,
414 1.1 mrg (__mmask32) __U);
415 1.1 mrg }
416 1.1 mrg
417 1.1 mrg extern __inline __m512i
418 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
419 1.1 mrg _mm512_maskz_mulhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
420 1.1 mrg {
421 1.1 mrg return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
422 1.1 mrg (__v32hi) __B,
423 1.1 mrg (__v32hi)
424 1.1 mrg _mm512_setzero_hi (),
425 1.1 mrg (__mmask32) __U);
426 1.1 mrg }
427 1.1 mrg
428 1.1 mrg extern __inline __m512i
429 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
430 1.1 mrg _mm512_mulhi_epu16 (__m512i __A, __m512i __B)
431 1.1 mrg {
432 1.1 mrg return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
433 1.1 mrg (__v32hi) __B,
434 1.1 mrg (__v32hi)
435 1.1 mrg _mm512_setzero_hi (),
436 1.1 mrg (__mmask32) -1);
437 1.1 mrg }
438 1.1 mrg
439 1.1 mrg extern __inline __m512i
440 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
441 1.1 mrg _mm512_mask_mulhi_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
442 1.1 mrg __m512i __B)
443 1.1 mrg {
444 1.1 mrg return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
445 1.1 mrg (__v32hi) __B,
446 1.1 mrg (__v32hi) __W,
447 1.1 mrg (__mmask32) __U);
448 1.1 mrg }
449 1.1 mrg
450 1.1 mrg extern __inline __m512i
451 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
452 1.1 mrg _mm512_maskz_mulhi_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
453 1.1 mrg {
454 1.1 mrg return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
455 1.1 mrg (__v32hi) __B,
456 1.1 mrg (__v32hi)
457 1.1 mrg _mm512_setzero_hi (),
458 1.1 mrg (__mmask32) __U);
459 1.1 mrg }
460 1.1 mrg
461 1.1 mrg extern __inline __m512i
462 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
463 1.1 mrg _mm512_mullo_epi16 (__m512i __A, __m512i __B)
464 1.1 mrg {
465 1.1 mrg return (__m512i) ((__v32hu) __A * (__v32hu) __B);
466 1.1 mrg }
467 1.1 mrg
468 1.1 mrg extern __inline __m512i
469 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
470 1.1 mrg _mm512_mask_mullo_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
471 1.1 mrg __m512i __B)
472 1.1 mrg {
473 1.1 mrg return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A,
474 1.1 mrg (__v32hi) __B,
475 1.1 mrg (__v32hi) __W,
476 1.1 mrg (__mmask32) __U);
477 1.1 mrg }
478 1.1 mrg
479 1.1 mrg extern __inline __m512i
480 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
481 1.1 mrg _mm512_maskz_mullo_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
482 1.1 mrg {
483 1.1 mrg return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A,
484 1.1 mrg (__v32hi) __B,
485 1.1 mrg (__v32hi)
486 1.1 mrg _mm512_setzero_hi (),
487 1.1 mrg (__mmask32) __U);
488 1.1 mrg }
489 1.1 mrg
490 1.1 mrg extern __inline __m512i
491 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
492 1.1 mrg _mm512_cvtepi8_epi16 (__m256i __A)
493 1.1 mrg {
494 1.1 mrg return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A,
495 1.1 mrg (__v32hi)
496 1.1 mrg _mm512_setzero_hi (),
497 1.1 mrg (__mmask32) -1);
498 1.1 mrg }
499 1.1 mrg
500 1.1 mrg extern __inline __m512i
501 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
502 1.1 mrg _mm512_mask_cvtepi8_epi16 (__m512i __W, __mmask32 __U, __m256i __A)
503 1.1 mrg {
504 1.1 mrg return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A,
505 1.1 mrg (__v32hi) __W,
506 1.1 mrg (__mmask32) __U);
507 1.1 mrg }
508 1.1 mrg
509 1.1 mrg extern __inline __m512i
510 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
511 1.1 mrg _mm512_maskz_cvtepi8_epi16 (__mmask32 __U, __m256i __A)
512 1.1 mrg {
513 1.1 mrg return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A,
514 1.1 mrg (__v32hi)
515 1.1 mrg _mm512_setzero_hi(),
516 1.1 mrg (__mmask32) __U);
517 1.1 mrg }
518 1.1 mrg
519 1.1 mrg extern __inline __m512i
520 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
521 1.1 mrg _mm512_cvtepu8_epi16 (__m256i __A)
522 1.1 mrg {
523 1.1 mrg return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A,
524 1.1 mrg (__v32hi)
525 1.1 mrg _mm512_setzero_hi (),
526 1.1 mrg (__mmask32) -1);
527 1.1 mrg }
528 1.1 mrg
529 1.1 mrg extern __inline __m512i
530 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
531 1.1 mrg _mm512_mask_cvtepu8_epi16 (__m512i __W, __mmask32 __U, __m256i __A)
532 1.1 mrg {
533 1.1 mrg return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A,
534 1.1 mrg (__v32hi) __W,
535 1.1 mrg (__mmask32) __U);
536 1.1 mrg }
537 1.1 mrg
538 1.1 mrg extern __inline __m512i
539 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
540 1.1 mrg _mm512_maskz_cvtepu8_epi16 (__mmask32 __U, __m256i __A)
541 1.1 mrg {
542 1.1 mrg return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A,
543 1.1 mrg (__v32hi)
544 1.1 mrg _mm512_setzero_hi(),
545 1.1 mrg (__mmask32) __U);
546 1.1 mrg }
547 1.1 mrg
548 1.1 mrg extern __inline __m512i
549 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
550 1.1 mrg _mm512_permutexvar_epi16 (__m512i __A, __m512i __B)
551 1.1 mrg {
552 1.1 mrg return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
553 1.1 mrg (__v32hi) __A,
554 1.1 mrg (__v32hi)
555 1.1 mrg _mm512_setzero_hi (),
556 1.1 mrg (__mmask32) -1);
557 1.1 mrg }
558 1.1 mrg
559 1.1 mrg extern __inline __m512i
560 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
561 1.1 mrg _mm512_maskz_permutexvar_epi16 (__mmask32 __M, __m512i __A,
562 1.1 mrg __m512i __B)
563 1.1 mrg {
564 1.1 mrg return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
565 1.1 mrg (__v32hi) __A,
566 1.1 mrg (__v32hi)
567 1.1 mrg _mm512_setzero_hi(),
568 1.1 mrg (__mmask32) __M);
569 1.1 mrg }
570 1.1 mrg
571 1.1 mrg extern __inline __m512i
572 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
573 1.1 mrg _mm512_mask_permutexvar_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
574 1.1 mrg __m512i __B)
575 1.1 mrg {
576 1.1 mrg return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
577 1.1 mrg (__v32hi) __A,
578 1.1 mrg (__v32hi) __W,
579 1.1 mrg (__mmask32) __M);
580 1.1 mrg }
581 1.1 mrg
582 1.1 mrg extern __inline __m512i
583 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
584 1.1 mrg _mm512_permutex2var_epi16 (__m512i __A, __m512i __I, __m512i __B)
585 1.1 mrg {
586 1.1 mrg return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I
587 1.1 mrg /* idx */ ,
588 1.1 mrg (__v32hi) __A,
589 1.1 mrg (__v32hi) __B,
590 1.1.1.2 mrg (__mmask32) -1);
591 1.1 mrg }
592 1.1 mrg
593 1.1 mrg extern __inline __m512i
594 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
595 1.1 mrg _mm512_mask_permutex2var_epi16 (__m512i __A, __mmask32 __U,
596 1.1 mrg __m512i __I, __m512i __B)
597 1.1 mrg {
598 1.1 mrg return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I
599 1.1 mrg /* idx */ ,
600 1.1 mrg (__v32hi) __A,
601 1.1 mrg (__v32hi) __B,
602 1.1 mrg (__mmask32)
603 1.1 mrg __U);
604 1.1 mrg }
605 1.1 mrg
606 1.1 mrg extern __inline __m512i
607 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
608 1.1 mrg _mm512_mask2_permutex2var_epi16 (__m512i __A, __m512i __I,
609 1.1 mrg __mmask32 __U, __m512i __B)
610 1.1 mrg {
611 1.1 mrg return (__m512i) __builtin_ia32_vpermi2varhi512_mask ((__v32hi) __A,
612 1.1 mrg (__v32hi) __I
613 1.1 mrg /* idx */ ,
614 1.1 mrg (__v32hi) __B,
615 1.1 mrg (__mmask32)
616 1.1 mrg __U);
617 1.1 mrg }
618 1.1 mrg
619 1.1 mrg extern __inline __m512i
620 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
621 1.1 mrg _mm512_maskz_permutex2var_epi16 (__mmask32 __U, __m512i __A,
622 1.1 mrg __m512i __I, __m512i __B)
623 1.1 mrg {
624 1.1 mrg return (__m512i) __builtin_ia32_vpermt2varhi512_maskz ((__v32hi) __I
625 1.1 mrg /* idx */ ,
626 1.1 mrg (__v32hi) __A,
627 1.1 mrg (__v32hi) __B,
628 1.1 mrg (__mmask32)
629 1.1 mrg __U);
630 1.1 mrg }
631 1.1 mrg
632 1.1 mrg extern __inline __m512i
633 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
634 1.1 mrg _mm512_avg_epu8 (__m512i __A, __m512i __B)
635 1.1 mrg {
636 1.1 mrg return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
637 1.1 mrg (__v64qi) __B,
638 1.1 mrg (__v64qi)
639 1.1 mrg _mm512_setzero_qi (),
640 1.1 mrg (__mmask64) -1);
641 1.1 mrg }
642 1.1 mrg
643 1.1 mrg extern __inline __m512i
644 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
645 1.1 mrg _mm512_mask_avg_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
646 1.1 mrg __m512i __B)
647 1.1 mrg {
648 1.1 mrg return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
649 1.1 mrg (__v64qi) __B,
650 1.1 mrg (__v64qi) __W,
651 1.1 mrg (__mmask64) __U);
652 1.1 mrg }
653 1.1 mrg
654 1.1 mrg extern __inline __m512i
655 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
656 1.1 mrg _mm512_maskz_avg_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
657 1.1 mrg {
658 1.1 mrg return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
659 1.1 mrg (__v64qi) __B,
660 1.1 mrg (__v64qi)
661 1.1 mrg _mm512_setzero_qi(),
662 1.1 mrg (__mmask64) __U);
663 1.1 mrg }
664 1.1 mrg
665 1.1 mrg extern __inline __m512i
666 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
667 1.1 mrg _mm512_add_epi8 (__m512i __A, __m512i __B)
668 1.1 mrg {
669 1.1 mrg return (__m512i) ((__v64qu) __A + (__v64qu) __B);
670 1.1 mrg }
671 1.1 mrg
672 1.1 mrg extern __inline __m512i
673 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
674 1.1 mrg _mm512_mask_add_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
675 1.1 mrg __m512i __B)
676 1.1 mrg {
677 1.1 mrg return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A,
678 1.1 mrg (__v64qi) __B,
679 1.1 mrg (__v64qi) __W,
680 1.1 mrg (__mmask64) __U);
681 1.1 mrg }
682 1.1 mrg
683 1.1 mrg extern __inline __m512i
684 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
685 1.1 mrg _mm512_maskz_add_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
686 1.1 mrg {
687 1.1 mrg return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A,
688 1.1 mrg (__v64qi) __B,
689 1.1 mrg (__v64qi)
690 1.1 mrg _mm512_setzero_qi (),
691 1.1 mrg (__mmask64) __U);
692 1.1 mrg }
693 1.1 mrg
694 1.1 mrg extern __inline __m512i
695 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
696 1.1 mrg _mm512_sub_epi8 (__m512i __A, __m512i __B)
697 1.1 mrg {
698 1.1 mrg return (__m512i) ((__v64qu) __A - (__v64qu) __B);
699 1.1 mrg }
700 1.1 mrg
701 1.1 mrg extern __inline __m512i
702 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
703 1.1 mrg _mm512_mask_sub_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
704 1.1 mrg __m512i __B)
705 1.1 mrg {
706 1.1 mrg return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A,
707 1.1 mrg (__v64qi) __B,
708 1.1 mrg (__v64qi) __W,
709 1.1 mrg (__mmask64) __U);
710 1.1 mrg }
711 1.1 mrg
712 1.1 mrg extern __inline __m512i
713 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
714 1.1 mrg _mm512_maskz_sub_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
715 1.1 mrg {
716 1.1 mrg return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A,
717 1.1 mrg (__v64qi) __B,
718 1.1 mrg (__v64qi)
719 1.1 mrg _mm512_setzero_qi (),
720 1.1 mrg (__mmask64) __U);
721 1.1 mrg }
722 1.1 mrg
723 1.1 mrg extern __inline __m512i
724 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
725 1.1 mrg _mm512_avg_epu16 (__m512i __A, __m512i __B)
726 1.1 mrg {
727 1.1 mrg return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
728 1.1 mrg (__v32hi) __B,
729 1.1 mrg (__v32hi)
730 1.1 mrg _mm512_setzero_hi (),
731 1.1 mrg (__mmask32) -1);
732 1.1 mrg }
733 1.1 mrg
734 1.1 mrg extern __inline __m512i
735 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
736 1.1 mrg _mm512_mask_avg_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
737 1.1 mrg __m512i __B)
738 1.1 mrg {
739 1.1 mrg return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
740 1.1 mrg (__v32hi) __B,
741 1.1 mrg (__v32hi) __W,
742 1.1 mrg (__mmask32) __U);
743 1.1 mrg }
744 1.1 mrg
745 1.1 mrg extern __inline __m512i
746 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
747 1.1 mrg _mm512_maskz_avg_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
748 1.1 mrg {
749 1.1 mrg return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
750 1.1 mrg (__v32hi) __B,
751 1.1 mrg (__v32hi)
752 1.1 mrg _mm512_setzero_hi(),
753 1.1 mrg (__mmask32) __U);
754 1.1 mrg }
755 1.1 mrg
756 1.1 mrg extern __inline __m512i
757 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
758 1.1 mrg _mm512_subs_epi8 (__m512i __A, __m512i __B)
759 1.1 mrg {
760 1.1 mrg return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
761 1.1 mrg (__v64qi) __B,
762 1.1 mrg (__v64qi)
763 1.1 mrg _mm512_setzero_qi (),
764 1.1 mrg (__mmask64) -1);
765 1.1 mrg }
766 1.1 mrg
767 1.1 mrg extern __inline __m512i
768 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
769 1.1 mrg _mm512_mask_subs_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
770 1.1 mrg __m512i __B)
771 1.1 mrg {
772 1.1 mrg return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
773 1.1 mrg (__v64qi) __B,
774 1.1 mrg (__v64qi) __W,
775 1.1 mrg (__mmask64) __U);
776 1.1 mrg }
777 1.1 mrg
778 1.1 mrg extern __inline __m512i
779 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
780 1.1 mrg _mm512_maskz_subs_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
781 1.1 mrg {
782 1.1 mrg return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
783 1.1 mrg (__v64qi) __B,
784 1.1 mrg (__v64qi)
785 1.1 mrg _mm512_setzero_qi (),
786 1.1 mrg (__mmask64) __U);
787 1.1 mrg }
788 1.1 mrg
789 1.1 mrg extern __inline __m512i
790 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
791 1.1 mrg _mm512_subs_epu8 (__m512i __A, __m512i __B)
792 1.1 mrg {
793 1.1 mrg return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
794 1.1 mrg (__v64qi) __B,
795 1.1 mrg (__v64qi)
796 1.1 mrg _mm512_setzero_qi (),
797 1.1 mrg (__mmask64) -1);
798 1.1 mrg }
799 1.1 mrg
800 1.1 mrg extern __inline __m512i
801 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
802 1.1 mrg _mm512_mask_subs_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
803 1.1 mrg __m512i __B)
804 1.1 mrg {
805 1.1 mrg return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
806 1.1 mrg (__v64qi) __B,
807 1.1 mrg (__v64qi) __W,
808 1.1 mrg (__mmask64) __U);
809 1.1 mrg }
810 1.1 mrg
811 1.1 mrg extern __inline __m512i
812 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
813 1.1 mrg _mm512_maskz_subs_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
814 1.1 mrg {
815 1.1 mrg return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
816 1.1 mrg (__v64qi) __B,
817 1.1 mrg (__v64qi)
818 1.1 mrg _mm512_setzero_qi (),
819 1.1 mrg (__mmask64) __U);
820 1.1 mrg }
821 1.1 mrg
822 1.1 mrg extern __inline __m512i
823 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
824 1.1 mrg _mm512_adds_epi8 (__m512i __A, __m512i __B)
825 1.1 mrg {
826 1.1 mrg return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
827 1.1 mrg (__v64qi) __B,
828 1.1 mrg (__v64qi)
829 1.1 mrg _mm512_setzero_qi (),
830 1.1 mrg (__mmask64) -1);
831 1.1 mrg }
832 1.1 mrg
833 1.1 mrg extern __inline __m512i
834 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
835 1.1 mrg _mm512_mask_adds_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
836 1.1 mrg __m512i __B)
837 1.1 mrg {
838 1.1 mrg return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
839 1.1 mrg (__v64qi) __B,
840 1.1 mrg (__v64qi) __W,
841 1.1 mrg (__mmask64) __U);
842 1.1 mrg }
843 1.1 mrg
844 1.1 mrg extern __inline __m512i
845 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
846 1.1 mrg _mm512_maskz_adds_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
847 1.1 mrg {
848 1.1 mrg return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
849 1.1 mrg (__v64qi) __B,
850 1.1 mrg (__v64qi)
851 1.1 mrg _mm512_setzero_qi (),
852 1.1 mrg (__mmask64) __U);
853 1.1 mrg }
854 1.1 mrg
855 1.1 mrg extern __inline __m512i
856 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
857 1.1 mrg _mm512_adds_epu8 (__m512i __A, __m512i __B)
858 1.1 mrg {
859 1.1 mrg return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
860 1.1 mrg (__v64qi) __B,
861 1.1 mrg (__v64qi)
862 1.1 mrg _mm512_setzero_qi (),
863 1.1 mrg (__mmask64) -1);
864 1.1 mrg }
865 1.1 mrg
866 1.1 mrg extern __inline __m512i
867 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
868 1.1 mrg _mm512_mask_adds_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
869 1.1 mrg __m512i __B)
870 1.1 mrg {
871 1.1 mrg return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
872 1.1 mrg (__v64qi) __B,
873 1.1 mrg (__v64qi) __W,
874 1.1 mrg (__mmask64) __U);
875 1.1 mrg }
876 1.1 mrg
877 1.1 mrg extern __inline __m512i
878 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
879 1.1 mrg _mm512_maskz_adds_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
880 1.1 mrg {
881 1.1 mrg return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
882 1.1 mrg (__v64qi) __B,
883 1.1 mrg (__v64qi)
884 1.1 mrg _mm512_setzero_qi (),
885 1.1 mrg (__mmask64) __U);
886 1.1 mrg }
887 1.1 mrg
888 1.1 mrg extern __inline __m512i
889 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
890 1.1 mrg _mm512_sub_epi16 (__m512i __A, __m512i __B)
891 1.1 mrg {
892 1.1 mrg return (__m512i) ((__v32hu) __A - (__v32hu) __B);
893 1.1 mrg }
894 1.1 mrg
895 1.1 mrg extern __inline __m512i
896 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
897 1.1 mrg _mm512_mask_sub_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
898 1.1 mrg __m512i __B)
899 1.1 mrg {
900 1.1 mrg return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A,
901 1.1 mrg (__v32hi) __B,
902 1.1 mrg (__v32hi) __W,
903 1.1 mrg (__mmask32) __U);
904 1.1 mrg }
905 1.1 mrg
906 1.1 mrg extern __inline __m512i
907 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
908 1.1 mrg _mm512_maskz_sub_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
909 1.1 mrg {
910 1.1 mrg return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A,
911 1.1 mrg (__v32hi) __B,
912 1.1 mrg (__v32hi)
913 1.1 mrg _mm512_setzero_hi (),
914 1.1 mrg (__mmask32) __U);
915 1.1 mrg }
916 1.1 mrg
917 1.1 mrg extern __inline __m512i
918 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
919 1.1 mrg _mm512_subs_epi16 (__m512i __A, __m512i __B)
920 1.1 mrg {
921 1.1 mrg return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
922 1.1 mrg (__v32hi) __B,
923 1.1 mrg (__v32hi)
924 1.1 mrg _mm512_setzero_hi (),
925 1.1 mrg (__mmask32) -1);
926 1.1 mrg }
927 1.1 mrg
928 1.1 mrg extern __inline __m512i
929 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
930 1.1 mrg _mm512_mask_subs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
931 1.1 mrg __m512i __B)
932 1.1 mrg {
933 1.1 mrg return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
934 1.1 mrg (__v32hi) __B,
935 1.1 mrg (__v32hi) __W,
936 1.1 mrg (__mmask32) __U);
937 1.1 mrg }
938 1.1 mrg
939 1.1 mrg extern __inline __m512i
940 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
941 1.1 mrg _mm512_maskz_subs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
942 1.1 mrg {
943 1.1 mrg return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
944 1.1 mrg (__v32hi) __B,
945 1.1 mrg (__v32hi)
946 1.1 mrg _mm512_setzero_hi (),
947 1.1 mrg (__mmask32) __U);
948 1.1 mrg }
949 1.1 mrg
950 1.1 mrg extern __inline __m512i
951 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
952 1.1 mrg _mm512_subs_epu16 (__m512i __A, __m512i __B)
953 1.1 mrg {
954 1.1 mrg return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
955 1.1 mrg (__v32hi) __B,
956 1.1 mrg (__v32hi)
957 1.1 mrg _mm512_setzero_hi (),
958 1.1 mrg (__mmask32) -1);
959 1.1 mrg }
960 1.1 mrg
961 1.1 mrg extern __inline __m512i
962 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
963 1.1 mrg _mm512_mask_subs_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
964 1.1 mrg __m512i __B)
965 1.1 mrg {
966 1.1 mrg return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
967 1.1 mrg (__v32hi) __B,
968 1.1 mrg (__v32hi) __W,
969 1.1 mrg (__mmask32) __U);
970 1.1 mrg }
971 1.1 mrg
972 1.1 mrg extern __inline __m512i
973 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
974 1.1 mrg _mm512_maskz_subs_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
975 1.1 mrg {
976 1.1 mrg return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
977 1.1 mrg (__v32hi) __B,
978 1.1 mrg (__v32hi)
979 1.1 mrg _mm512_setzero_hi (),
980 1.1 mrg (__mmask32) __U);
981 1.1 mrg }
982 1.1 mrg
983 1.1 mrg extern __inline __m512i
984 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
985 1.1 mrg _mm512_add_epi16 (__m512i __A, __m512i __B)
986 1.1 mrg {
987 1.1 mrg return (__m512i) ((__v32hu) __A + (__v32hu) __B);
988 1.1 mrg }
989 1.1 mrg
990 1.1 mrg extern __inline __m512i
991 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
992 1.1 mrg _mm512_mask_add_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
993 1.1 mrg __m512i __B)
994 1.1 mrg {
995 1.1 mrg return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A,
996 1.1 mrg (__v32hi) __B,
997 1.1 mrg (__v32hi) __W,
998 1.1 mrg (__mmask32) __U);
999 1.1 mrg }
1000 1.1 mrg
1001 1.1 mrg extern __inline __m512i
1002 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1003 1.1 mrg _mm512_maskz_add_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1004 1.1 mrg {
1005 1.1 mrg return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A,
1006 1.1 mrg (__v32hi) __B,
1007 1.1 mrg (__v32hi)
1008 1.1 mrg _mm512_setzero_hi (),
1009 1.1 mrg (__mmask32) __U);
1010 1.1 mrg }
1011 1.1 mrg
1012 1.1 mrg extern __inline __m512i
1013 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1014 1.1 mrg _mm512_adds_epi16 (__m512i __A, __m512i __B)
1015 1.1 mrg {
1016 1.1 mrg return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
1017 1.1 mrg (__v32hi) __B,
1018 1.1 mrg (__v32hi)
1019 1.1 mrg _mm512_setzero_hi (),
1020 1.1 mrg (__mmask32) -1);
1021 1.1 mrg }
1022 1.1 mrg
1023 1.1 mrg extern __inline __m512i
1024 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1025 1.1 mrg _mm512_mask_adds_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1026 1.1 mrg __m512i __B)
1027 1.1 mrg {
1028 1.1 mrg return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
1029 1.1 mrg (__v32hi) __B,
1030 1.1 mrg (__v32hi) __W,
1031 1.1 mrg (__mmask32) __U);
1032 1.1 mrg }
1033 1.1 mrg
1034 1.1 mrg extern __inline __m512i
1035 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1036 1.1 mrg _mm512_maskz_adds_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1037 1.1 mrg {
1038 1.1 mrg return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
1039 1.1 mrg (__v32hi) __B,
1040 1.1 mrg (__v32hi)
1041 1.1 mrg _mm512_setzero_hi (),
1042 1.1 mrg (__mmask32) __U);
1043 1.1 mrg }
1044 1.1 mrg
1045 1.1 mrg extern __inline __m512i
1046 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1047 1.1 mrg _mm512_adds_epu16 (__m512i __A, __m512i __B)
1048 1.1 mrg {
1049 1.1 mrg return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
1050 1.1 mrg (__v32hi) __B,
1051 1.1 mrg (__v32hi)
1052 1.1 mrg _mm512_setzero_hi (),
1053 1.1 mrg (__mmask32) -1);
1054 1.1 mrg }
1055 1.1 mrg
1056 1.1 mrg extern __inline __m512i
1057 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1058 1.1 mrg _mm512_mask_adds_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
1059 1.1 mrg __m512i __B)
1060 1.1 mrg {
1061 1.1 mrg return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
1062 1.1 mrg (__v32hi) __B,
1063 1.1 mrg (__v32hi) __W,
1064 1.1 mrg (__mmask32) __U);
1065 1.1 mrg }
1066 1.1 mrg
1067 1.1 mrg extern __inline __m512i
1068 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1069 1.1 mrg _mm512_maskz_adds_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
1070 1.1 mrg {
1071 1.1 mrg return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
1072 1.1 mrg (__v32hi) __B,
1073 1.1 mrg (__v32hi)
1074 1.1 mrg _mm512_setzero_hi (),
1075 1.1 mrg (__mmask32) __U);
1076 1.1 mrg }
1077 1.1 mrg
1078 1.1 mrg extern __inline __m512i
1079 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1080 1.1 mrg _mm512_srl_epi16 (__m512i __A, __m128i __B)
1081 1.1 mrg {
1082 1.1 mrg return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A,
1083 1.1 mrg (__v8hi) __B,
1084 1.1 mrg (__v32hi)
1085 1.1 mrg _mm512_setzero_hi (),
1086 1.1 mrg (__mmask32) -1);
1087 1.1 mrg }
1088 1.1 mrg
1089 1.1 mrg extern __inline __m512i
1090 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1091 1.1 mrg _mm512_mask_srl_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1092 1.1 mrg __m128i __B)
1093 1.1 mrg {
1094 1.1 mrg return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A,
1095 1.1 mrg (__v8hi) __B,
1096 1.1 mrg (__v32hi) __W,
1097 1.1 mrg (__mmask32) __U);
1098 1.1 mrg }
1099 1.1 mrg
1100 1.1 mrg extern __inline __m512i
1101 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1102 1.1 mrg _mm512_maskz_srl_epi16 (__mmask32 __U, __m512i __A, __m128i __B)
1103 1.1 mrg {
1104 1.1 mrg return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A,
1105 1.1 mrg (__v8hi) __B,
1106 1.1 mrg (__v32hi)
1107 1.1 mrg _mm512_setzero_hi (),
1108 1.1 mrg (__mmask32) __U);
1109 1.1 mrg }
1110 1.1 mrg
1111 1.1 mrg extern __inline __m512i
1112 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1113 1.1 mrg _mm512_packs_epi16 (__m512i __A, __m512i __B)
1114 1.1 mrg {
1115 1.1 mrg return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
1116 1.1 mrg (__v32hi) __B,
1117 1.1 mrg (__v64qi)
1118 1.1 mrg _mm512_setzero_qi (),
1119 1.1 mrg (__mmask64) -1);
1120 1.1 mrg }
1121 1.1 mrg
1122 1.1 mrg extern __inline __m512i
1123 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1124 1.1 mrg _mm512_sll_epi16 (__m512i __A, __m128i __B)
1125 1.1 mrg {
1126 1.1 mrg return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A,
1127 1.1 mrg (__v8hi) __B,
1128 1.1 mrg (__v32hi)
1129 1.1 mrg _mm512_setzero_hi (),
1130 1.1 mrg (__mmask32) -1);
1131 1.1 mrg }
1132 1.1 mrg
1133 1.1 mrg extern __inline __m512i
1134 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1135 1.1 mrg _mm512_mask_sll_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1136 1.1 mrg __m128i __B)
1137 1.1 mrg {
1138 1.1 mrg return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A,
1139 1.1 mrg (__v8hi) __B,
1140 1.1 mrg (__v32hi) __W,
1141 1.1 mrg (__mmask32) __U);
1142 1.1 mrg }
1143 1.1 mrg
1144 1.1 mrg extern __inline __m512i
1145 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1146 1.1 mrg _mm512_maskz_sll_epi16 (__mmask32 __U, __m512i __A, __m128i __B)
1147 1.1 mrg {
1148 1.1 mrg return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A,
1149 1.1 mrg (__v8hi) __B,
1150 1.1 mrg (__v32hi)
1151 1.1 mrg _mm512_setzero_hi (),
1152 1.1 mrg (__mmask32) __U);
1153 1.1 mrg }
1154 1.1 mrg
1155 1.1 mrg extern __inline __m512i
1156 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1157 1.1 mrg _mm512_maddubs_epi16 (__m512i __X, __m512i __Y)
1158 1.1 mrg {
1159 1.1 mrg return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1160 1.1 mrg (__v64qi) __Y,
1161 1.1 mrg (__v32hi)
1162 1.1 mrg _mm512_setzero_hi (),
1163 1.1 mrg (__mmask32) -1);
1164 1.1 mrg }
1165 1.1 mrg
1166 1.1 mrg extern __inline __m512i
1167 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1168 1.1 mrg _mm512_mask_maddubs_epi16 (__m512i __W, __mmask32 __U, __m512i __X,
1169 1.1 mrg __m512i __Y)
1170 1.1 mrg {
1171 1.1 mrg return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1172 1.1 mrg (__v64qi) __Y,
1173 1.1 mrg (__v32hi) __W,
1174 1.1 mrg (__mmask32) __U);
1175 1.1 mrg }
1176 1.1 mrg
1177 1.1 mrg extern __inline __m512i
1178 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1179 1.1 mrg _mm512_maskz_maddubs_epi16 (__mmask32 __U, __m512i __X, __m512i __Y)
1180 1.1 mrg {
1181 1.1 mrg return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1182 1.1 mrg (__v64qi) __Y,
1183 1.1 mrg (__v32hi)
1184 1.1 mrg _mm512_setzero_hi (),
1185 1.1 mrg (__mmask32) __U);
1186 1.1 mrg }
1187 1.1 mrg
1188 1.1 mrg extern __inline __m512i
1189 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1190 1.1 mrg _mm512_madd_epi16 (__m512i __A, __m512i __B)
1191 1.1 mrg {
1192 1.1 mrg return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1193 1.1 mrg (__v32hi) __B,
1194 1.1 mrg (__v16si)
1195 1.1 mrg _mm512_setzero_si512 (),
1196 1.1 mrg (__mmask16) -1);
1197 1.1 mrg }
1198 1.1 mrg
1199 1.1 mrg extern __inline __m512i
1200 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1201 1.1 mrg _mm512_mask_madd_epi16 (__m512i __W, __mmask16 __U, __m512i __A,
1202 1.1 mrg __m512i __B)
1203 1.1 mrg {
1204 1.1 mrg return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1205 1.1 mrg (__v32hi) __B,
1206 1.1 mrg (__v16si) __W,
1207 1.1 mrg (__mmask16) __U);
1208 1.1 mrg }
1209 1.1 mrg
1210 1.1 mrg extern __inline __m512i
1211 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1212 1.1 mrg _mm512_maskz_madd_epi16 (__mmask16 __U, __m512i __A, __m512i __B)
1213 1.1 mrg {
1214 1.1 mrg return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1215 1.1 mrg (__v32hi) __B,
1216 1.1 mrg (__v16si)
1217 1.1 mrg _mm512_setzero_si512 (),
1218 1.1 mrg (__mmask16) __U);
1219 1.1 mrg }
1220 1.1 mrg
1221 1.1 mrg extern __inline __m512i
1222 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1223 1.1 mrg _mm512_unpackhi_epi8 (__m512i __A, __m512i __B)
1224 1.1 mrg {
1225 1.1 mrg return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A,
1226 1.1 mrg (__v64qi) __B,
1227 1.1 mrg (__v64qi)
1228 1.1 mrg _mm512_setzero_qi (),
1229 1.1 mrg (__mmask64) -1);
1230 1.1 mrg }
1231 1.1 mrg
1232 1.1 mrg extern __inline __m512i
1233 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1234 1.1 mrg _mm512_mask_unpackhi_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1235 1.1 mrg __m512i __B)
1236 1.1 mrg {
1237 1.1 mrg return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A,
1238 1.1 mrg (__v64qi) __B,
1239 1.1 mrg (__v64qi) __W,
1240 1.1 mrg (__mmask64) __U);
1241 1.1 mrg }
1242 1.1 mrg
1243 1.1 mrg extern __inline __m512i
1244 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1245 1.1 mrg _mm512_maskz_unpackhi_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1246 1.1 mrg {
1247 1.1 mrg return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A,
1248 1.1 mrg (__v64qi) __B,
1249 1.1 mrg (__v64qi)
1250 1.1 mrg _mm512_setzero_qi(),
1251 1.1 mrg (__mmask64) __U);
1252 1.1 mrg }
1253 1.1 mrg
1254 1.1 mrg extern __inline __m512i
1255 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1256 1.1 mrg _mm512_unpackhi_epi16 (__m512i __A, __m512i __B)
1257 1.1 mrg {
1258 1.1 mrg return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A,
1259 1.1 mrg (__v32hi) __B,
1260 1.1 mrg (__v32hi)
1261 1.1 mrg _mm512_setzero_hi (),
1262 1.1 mrg (__mmask32) -1);
1263 1.1 mrg }
1264 1.1 mrg
1265 1.1 mrg extern __inline __m512i
1266 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1267 1.1 mrg _mm512_mask_unpackhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1268 1.1 mrg __m512i __B)
1269 1.1 mrg {
1270 1.1 mrg return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A,
1271 1.1 mrg (__v32hi) __B,
1272 1.1 mrg (__v32hi) __W,
1273 1.1 mrg (__mmask32) __U);
1274 1.1 mrg }
1275 1.1 mrg
1276 1.1 mrg extern __inline __m512i
1277 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1278 1.1 mrg _mm512_maskz_unpackhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1279 1.1 mrg {
1280 1.1 mrg return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A,
1281 1.1 mrg (__v32hi) __B,
1282 1.1 mrg (__v32hi)
1283 1.1 mrg _mm512_setzero_hi(),
1284 1.1 mrg (__mmask32) __U);
1285 1.1 mrg }
1286 1.1 mrg
1287 1.1 mrg extern __inline __m512i
1288 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1289 1.1 mrg _mm512_unpacklo_epi8 (__m512i __A, __m512i __B)
1290 1.1 mrg {
1291 1.1 mrg return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A,
1292 1.1 mrg (__v64qi) __B,
1293 1.1 mrg (__v64qi)
1294 1.1 mrg _mm512_setzero_qi (),
1295 1.1 mrg (__mmask64) -1);
1296 1.1 mrg }
1297 1.1 mrg
1298 1.1 mrg extern __inline __m512i
1299 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1300 1.1 mrg _mm512_mask_unpacklo_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1301 1.1 mrg __m512i __B)
1302 1.1 mrg {
1303 1.1 mrg return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A,
1304 1.1 mrg (__v64qi) __B,
1305 1.1 mrg (__v64qi) __W,
1306 1.1 mrg (__mmask64) __U);
1307 1.1 mrg }
1308 1.1 mrg
1309 1.1 mrg extern __inline __m512i
1310 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1311 1.1 mrg _mm512_maskz_unpacklo_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1312 1.1 mrg {
1313 1.1 mrg return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A,
1314 1.1 mrg (__v64qi) __B,
1315 1.1 mrg (__v64qi)
1316 1.1 mrg _mm512_setzero_qi(),
1317 1.1 mrg (__mmask64) __U);
1318 1.1 mrg }
1319 1.1 mrg
1320 1.1 mrg extern __inline __m512i
1321 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1322 1.1 mrg _mm512_unpacklo_epi16 (__m512i __A, __m512i __B)
1323 1.1 mrg {
1324 1.1 mrg return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A,
1325 1.1 mrg (__v32hi) __B,
1326 1.1 mrg (__v32hi)
1327 1.1 mrg _mm512_setzero_hi (),
1328 1.1 mrg (__mmask32) -1);
1329 1.1 mrg }
1330 1.1 mrg
1331 1.1 mrg extern __inline __m512i
1332 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1333 1.1 mrg _mm512_mask_unpacklo_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1334 1.1 mrg __m512i __B)
1335 1.1 mrg {
1336 1.1 mrg return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A,
1337 1.1 mrg (__v32hi) __B,
1338 1.1 mrg (__v32hi) __W,
1339 1.1 mrg (__mmask32) __U);
1340 1.1 mrg }
1341 1.1 mrg
1342 1.1 mrg extern __inline __m512i
1343 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1344 1.1 mrg _mm512_maskz_unpacklo_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1345 1.1 mrg {
1346 1.1 mrg return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A,
1347 1.1 mrg (__v32hi) __B,
1348 1.1 mrg (__v32hi)
1349 1.1 mrg _mm512_setzero_hi(),
1350 1.1 mrg (__mmask32) __U);
1351 1.1 mrg }
1352 1.1 mrg
1353 1.1 mrg extern __inline __mmask64
1354 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1355 1.1 mrg _mm512_cmpeq_epu8_mask (__m512i __A, __m512i __B)
1356 1.1 mrg {
1357 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A,
1358 1.1 mrg (__v64qi) __B, 0,
1359 1.1 mrg (__mmask64) -1);
1360 1.1 mrg }
1361 1.1 mrg
1362 1.1 mrg extern __inline __mmask64
1363 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1364 1.1 mrg _mm512_cmpeq_epi8_mask (__m512i __A, __m512i __B)
1365 1.1 mrg {
1366 1.1 mrg return (__mmask64) __builtin_ia32_pcmpeqb512_mask ((__v64qi) __A,
1367 1.1 mrg (__v64qi) __B,
1368 1.1 mrg (__mmask64) -1);
1369 1.1 mrg }
1370 1.1 mrg
1371 1.1 mrg extern __inline __mmask64
1372 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1373 1.1 mrg _mm512_mask_cmpeq_epu8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1374 1.1 mrg {
1375 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A,
1376 1.1 mrg (__v64qi) __B, 0,
1377 1.1 mrg __U);
1378 1.1 mrg }
1379 1.1 mrg
1380 1.1 mrg extern __inline __mmask64
1381 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1382 1.1 mrg _mm512_mask_cmpeq_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1383 1.1 mrg {
1384 1.1 mrg return (__mmask64) __builtin_ia32_pcmpeqb512_mask ((__v64qi) __A,
1385 1.1 mrg (__v64qi) __B,
1386 1.1 mrg __U);
1387 1.1 mrg }
1388 1.1 mrg
1389 1.1 mrg extern __inline __mmask32
1390 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1391 1.1 mrg _mm512_cmpeq_epu16_mask (__m512i __A, __m512i __B)
1392 1.1 mrg {
1393 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A,
1394 1.1 mrg (__v32hi) __B, 0,
1395 1.1 mrg (__mmask32) -1);
1396 1.1 mrg }
1397 1.1 mrg
1398 1.1 mrg extern __inline __mmask32
1399 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1400 1.1 mrg _mm512_cmpeq_epi16_mask (__m512i __A, __m512i __B)
1401 1.1 mrg {
1402 1.1 mrg return (__mmask32) __builtin_ia32_pcmpeqw512_mask ((__v32hi) __A,
1403 1.1 mrg (__v32hi) __B,
1404 1.1 mrg (__mmask32) -1);
1405 1.1 mrg }
1406 1.1 mrg
1407 1.1 mrg extern __inline __mmask32
1408 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1409 1.1 mrg _mm512_mask_cmpeq_epu16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1410 1.1 mrg {
1411 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A,
1412 1.1 mrg (__v32hi) __B, 0,
1413 1.1 mrg __U);
1414 1.1 mrg }
1415 1.1 mrg
1416 1.1 mrg extern __inline __mmask32
1417 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1418 1.1 mrg _mm512_mask_cmpeq_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1419 1.1 mrg {
1420 1.1 mrg return (__mmask32) __builtin_ia32_pcmpeqw512_mask ((__v32hi) __A,
1421 1.1 mrg (__v32hi) __B,
1422 1.1 mrg __U);
1423 1.1 mrg }
1424 1.1 mrg
1425 1.1 mrg extern __inline __mmask64
1426 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1427 1.1 mrg _mm512_cmpgt_epu8_mask (__m512i __A, __m512i __B)
1428 1.1 mrg {
1429 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A,
1430 1.1 mrg (__v64qi) __B, 6,
1431 1.1 mrg (__mmask64) -1);
1432 1.1 mrg }
1433 1.1 mrg
1434 1.1 mrg extern __inline __mmask64
1435 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1436 1.1 mrg _mm512_cmpgt_epi8_mask (__m512i __A, __m512i __B)
1437 1.1 mrg {
1438 1.1 mrg return (__mmask64) __builtin_ia32_pcmpgtb512_mask ((__v64qi) __A,
1439 1.1 mrg (__v64qi) __B,
1440 1.1 mrg (__mmask64) -1);
1441 1.1 mrg }
1442 1.1 mrg
1443 1.1 mrg extern __inline __mmask64
1444 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1445 1.1 mrg _mm512_mask_cmpgt_epu8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1446 1.1 mrg {
1447 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A,
1448 1.1 mrg (__v64qi) __B, 6,
1449 1.1 mrg __U);
1450 1.1 mrg }
1451 1.1 mrg
1452 1.1 mrg extern __inline __mmask64
1453 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1454 1.1 mrg _mm512_mask_cmpgt_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1455 1.1 mrg {
1456 1.1 mrg return (__mmask64) __builtin_ia32_pcmpgtb512_mask ((__v64qi) __A,
1457 1.1 mrg (__v64qi) __B,
1458 1.1 mrg __U);
1459 1.1 mrg }
1460 1.1 mrg
1461 1.1 mrg extern __inline __mmask32
1462 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1463 1.1 mrg _mm512_cmpgt_epu16_mask (__m512i __A, __m512i __B)
1464 1.1 mrg {
1465 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A,
1466 1.1 mrg (__v32hi) __B, 6,
1467 1.1 mrg (__mmask32) -1);
1468 1.1 mrg }
1469 1.1 mrg
1470 1.1 mrg extern __inline __mmask32
1471 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1472 1.1 mrg _mm512_cmpgt_epi16_mask (__m512i __A, __m512i __B)
1473 1.1 mrg {
1474 1.1 mrg return (__mmask32) __builtin_ia32_pcmpgtw512_mask ((__v32hi) __A,
1475 1.1 mrg (__v32hi) __B,
1476 1.1 mrg (__mmask32) -1);
1477 1.1 mrg }
1478 1.1 mrg
1479 1.1 mrg extern __inline __mmask32
1480 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1481 1.1 mrg _mm512_mask_cmpgt_epu16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1482 1.1 mrg {
1483 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A,
1484 1.1 mrg (__v32hi) __B, 6,
1485 1.1 mrg __U);
1486 1.1 mrg }
1487 1.1 mrg
1488 1.1 mrg extern __inline __mmask32
1489 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1490 1.1 mrg _mm512_mask_cmpgt_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1491 1.1 mrg {
1492 1.1 mrg return (__mmask32) __builtin_ia32_pcmpgtw512_mask ((__v32hi) __A,
1493 1.1 mrg (__v32hi) __B,
1494 1.1 mrg __U);
1495 1.1 mrg }
1496 1.1 mrg
1497 1.1 mrg extern __inline __mmask64
1498 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1499 1.1 mrg _mm512_movepi8_mask (__m512i __A)
1500 1.1 mrg {
1501 1.1 mrg return (__mmask64) __builtin_ia32_cvtb2mask512 ((__v64qi) __A);
1502 1.1 mrg }
1503 1.1 mrg
1504 1.1 mrg extern __inline __mmask32
1505 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1506 1.1 mrg _mm512_movepi16_mask (__m512i __A)
1507 1.1 mrg {
1508 1.1 mrg return (__mmask32) __builtin_ia32_cvtw2mask512 ((__v32hi) __A);
1509 1.1 mrg }
1510 1.1 mrg
1511 1.1 mrg extern __inline __m512i
1512 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1513 1.1 mrg _mm512_movm_epi8 (__mmask64 __A)
1514 1.1 mrg {
1515 1.1 mrg return (__m512i) __builtin_ia32_cvtmask2b512 (__A);
1516 1.1 mrg }
1517 1.1 mrg
1518 1.1 mrg extern __inline __m512i
1519 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1520 1.1 mrg _mm512_movm_epi16 (__mmask32 __A)
1521 1.1 mrg {
1522 1.1 mrg return (__m512i) __builtin_ia32_cvtmask2w512 (__A);
1523 1.1 mrg }
1524 1.1 mrg
1525 1.1 mrg extern __inline __mmask64
1526 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1527 1.1 mrg _mm512_test_epi8_mask (__m512i __A, __m512i __B)
1528 1.1 mrg {
1529 1.1 mrg return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A,
1530 1.1 mrg (__v64qi) __B,
1531 1.1 mrg (__mmask64) -1);
1532 1.1 mrg }
1533 1.1 mrg
1534 1.1 mrg extern __inline __mmask64
1535 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1536 1.1 mrg _mm512_mask_test_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1537 1.1 mrg {
1538 1.1 mrg return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A,
1539 1.1 mrg (__v64qi) __B, __U);
1540 1.1 mrg }
1541 1.1 mrg
1542 1.1 mrg extern __inline __mmask32
1543 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1544 1.1 mrg _mm512_test_epi16_mask (__m512i __A, __m512i __B)
1545 1.1 mrg {
1546 1.1 mrg return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A,
1547 1.1 mrg (__v32hi) __B,
1548 1.1 mrg (__mmask32) -1);
1549 1.1 mrg }
1550 1.1 mrg
1551 1.1 mrg extern __inline __mmask32
1552 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1553 1.1 mrg _mm512_mask_test_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1554 1.1 mrg {
1555 1.1 mrg return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A,
1556 1.1 mrg (__v32hi) __B, __U);
1557 1.1 mrg }
1558 1.1 mrg
1559 1.1 mrg extern __inline __mmask64
1560 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1561 1.1 mrg _mm512_testn_epi8_mask (__m512i __A, __m512i __B)
1562 1.1 mrg {
1563 1.1 mrg return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A,
1564 1.1 mrg (__v64qi) __B,
1565 1.1 mrg (__mmask64) -1);
1566 1.1 mrg }
1567 1.1 mrg
1568 1.1 mrg extern __inline __mmask64
1569 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1570 1.1 mrg _mm512_mask_testn_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1571 1.1 mrg {
1572 1.1 mrg return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A,
1573 1.1 mrg (__v64qi) __B, __U);
1574 1.1 mrg }
1575 1.1 mrg
1576 1.1 mrg extern __inline __mmask32
1577 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1578 1.1 mrg _mm512_testn_epi16_mask (__m512i __A, __m512i __B)
1579 1.1 mrg {
1580 1.1 mrg return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A,
1581 1.1 mrg (__v32hi) __B,
1582 1.1 mrg (__mmask32) -1);
1583 1.1 mrg }
1584 1.1 mrg
1585 1.1 mrg extern __inline __mmask32
1586 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1587 1.1 mrg _mm512_mask_testn_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1588 1.1 mrg {
1589 1.1 mrg return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A,
1590 1.1 mrg (__v32hi) __B, __U);
1591 1.1 mrg }
1592 1.1 mrg
1593 1.1 mrg extern __inline __m512i
1594 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1595 1.1 mrg _mm512_shuffle_epi8 (__m512i __A, __m512i __B)
1596 1.1 mrg {
1597 1.1 mrg return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
1598 1.1 mrg (__v64qi) __B,
1599 1.1 mrg (__v64qi)
1600 1.1 mrg _mm512_setzero_qi (),
1601 1.1 mrg (__mmask64) -1);
1602 1.1 mrg }
1603 1.1 mrg
1604 1.1 mrg extern __inline __m512i
1605 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1606 1.1 mrg _mm512_mask_shuffle_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1607 1.1 mrg __m512i __B)
1608 1.1 mrg {
1609 1.1 mrg return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
1610 1.1 mrg (__v64qi) __B,
1611 1.1 mrg (__v64qi) __W,
1612 1.1 mrg (__mmask64) __U);
1613 1.1 mrg }
1614 1.1 mrg
1615 1.1 mrg extern __inline __m512i
1616 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1617 1.1 mrg _mm512_maskz_shuffle_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1618 1.1 mrg {
1619 1.1 mrg return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
1620 1.1 mrg (__v64qi) __B,
1621 1.1 mrg (__v64qi)
1622 1.1 mrg _mm512_setzero_qi (),
1623 1.1 mrg (__mmask64) __U);
1624 1.1 mrg }
1625 1.1 mrg
1626 1.1 mrg extern __inline __m512i
1627 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1628 1.1 mrg _mm512_min_epu16 (__m512i __A, __m512i __B)
1629 1.1 mrg {
1630 1.1 mrg return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
1631 1.1 mrg (__v32hi) __B,
1632 1.1 mrg (__v32hi)
1633 1.1 mrg _mm512_setzero_hi (),
1634 1.1 mrg (__mmask32) -1);
1635 1.1 mrg }
1636 1.1 mrg
1637 1.1 mrg extern __inline __m512i
1638 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1639 1.1 mrg _mm512_maskz_min_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
1640 1.1 mrg {
1641 1.1 mrg return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
1642 1.1 mrg (__v32hi) __B,
1643 1.1 mrg (__v32hi)
1644 1.1 mrg _mm512_setzero_hi(),
1645 1.1 mrg (__mmask32) __M);
1646 1.1 mrg }
1647 1.1 mrg
1648 1.1 mrg extern __inline __m512i
1649 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1650 1.1 mrg _mm512_mask_min_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
1651 1.1 mrg __m512i __B)
1652 1.1 mrg {
1653 1.1 mrg return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
1654 1.1 mrg (__v32hi) __B,
1655 1.1 mrg (__v32hi) __W,
1656 1.1 mrg (__mmask32) __M);
1657 1.1 mrg }
1658 1.1 mrg
1659 1.1 mrg extern __inline __m512i
1660 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1661 1.1 mrg _mm512_min_epi16 (__m512i __A, __m512i __B)
1662 1.1 mrg {
1663 1.1 mrg return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
1664 1.1 mrg (__v32hi) __B,
1665 1.1 mrg (__v32hi)
1666 1.1 mrg _mm512_setzero_hi (),
1667 1.1 mrg (__mmask32) -1);
1668 1.1 mrg }
1669 1.1 mrg
1670 1.1 mrg extern __inline __m512i
1671 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1672 1.1 mrg _mm512_maskz_min_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
1673 1.1 mrg {
1674 1.1 mrg return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
1675 1.1 mrg (__v32hi) __B,
1676 1.1 mrg (__v32hi)
1677 1.1 mrg _mm512_setzero_hi(),
1678 1.1 mrg (__mmask32) __M);
1679 1.1 mrg }
1680 1.1 mrg
1681 1.1 mrg extern __inline __m512i
1682 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1683 1.1 mrg _mm512_mask_min_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
1684 1.1 mrg __m512i __B)
1685 1.1 mrg {
1686 1.1 mrg return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
1687 1.1 mrg (__v32hi) __B,
1688 1.1 mrg (__v32hi) __W,
1689 1.1 mrg (__mmask32) __M);
1690 1.1 mrg }
1691 1.1 mrg
1692 1.1 mrg extern __inline __m512i
1693 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1694 1.1 mrg _mm512_max_epu8 (__m512i __A, __m512i __B)
1695 1.1 mrg {
1696 1.1 mrg return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
1697 1.1 mrg (__v64qi) __B,
1698 1.1 mrg (__v64qi)
1699 1.1 mrg _mm512_setzero_qi (),
1700 1.1 mrg (__mmask64) -1);
1701 1.1 mrg }
1702 1.1 mrg
1703 1.1 mrg extern __inline __m512i
1704 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1705 1.1 mrg _mm512_maskz_max_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
1706 1.1 mrg {
1707 1.1 mrg return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
1708 1.1 mrg (__v64qi) __B,
1709 1.1 mrg (__v64qi)
1710 1.1 mrg _mm512_setzero_qi(),
1711 1.1 mrg (__mmask64) __M);
1712 1.1 mrg }
1713 1.1 mrg
1714 1.1 mrg extern __inline __m512i
1715 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1716 1.1 mrg _mm512_mask_max_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
1717 1.1 mrg __m512i __B)
1718 1.1 mrg {
1719 1.1 mrg return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
1720 1.1 mrg (__v64qi) __B,
1721 1.1 mrg (__v64qi) __W,
1722 1.1 mrg (__mmask64) __M);
1723 1.1 mrg }
1724 1.1 mrg
1725 1.1 mrg extern __inline __m512i
1726 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1727 1.1 mrg _mm512_max_epi8 (__m512i __A, __m512i __B)
1728 1.1 mrg {
1729 1.1 mrg return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
1730 1.1 mrg (__v64qi) __B,
1731 1.1 mrg (__v64qi)
1732 1.1 mrg _mm512_setzero_qi (),
1733 1.1 mrg (__mmask64) -1);
1734 1.1 mrg }
1735 1.1 mrg
1736 1.1 mrg extern __inline __m512i
1737 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1738 1.1 mrg _mm512_maskz_max_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
1739 1.1 mrg {
1740 1.1 mrg return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
1741 1.1 mrg (__v64qi) __B,
1742 1.1 mrg (__v64qi)
1743 1.1 mrg _mm512_setzero_qi(),
1744 1.1 mrg (__mmask64) __M);
1745 1.1 mrg }
1746 1.1 mrg
1747 1.1 mrg extern __inline __m512i
1748 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1749 1.1 mrg _mm512_mask_max_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
1750 1.1 mrg __m512i __B)
1751 1.1 mrg {
1752 1.1 mrg return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
1753 1.1 mrg (__v64qi) __B,
1754 1.1 mrg (__v64qi) __W,
1755 1.1 mrg (__mmask64) __M);
1756 1.1 mrg }
1757 1.1 mrg
1758 1.1 mrg extern __inline __m512i
1759 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1760 1.1 mrg _mm512_min_epu8 (__m512i __A, __m512i __B)
1761 1.1 mrg {
1762 1.1 mrg return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
1763 1.1 mrg (__v64qi) __B,
1764 1.1 mrg (__v64qi)
1765 1.1 mrg _mm512_setzero_qi (),
1766 1.1 mrg (__mmask64) -1);
1767 1.1 mrg }
1768 1.1 mrg
1769 1.1 mrg extern __inline __m512i
1770 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1771 1.1 mrg _mm512_maskz_min_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
1772 1.1 mrg {
1773 1.1 mrg return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
1774 1.1 mrg (__v64qi) __B,
1775 1.1 mrg (__v64qi)
1776 1.1 mrg _mm512_setzero_qi(),
1777 1.1 mrg (__mmask64) __M);
1778 1.1 mrg }
1779 1.1 mrg
1780 1.1 mrg extern __inline __m512i
1781 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1782 1.1 mrg _mm512_mask_min_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
1783 1.1 mrg __m512i __B)
1784 1.1 mrg {
1785 1.1 mrg return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
1786 1.1 mrg (__v64qi) __B,
1787 1.1 mrg (__v64qi) __W,
1788 1.1 mrg (__mmask64) __M);
1789 1.1 mrg }
1790 1.1 mrg
1791 1.1 mrg extern __inline __m512i
1792 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1793 1.1 mrg _mm512_min_epi8 (__m512i __A, __m512i __B)
1794 1.1 mrg {
1795 1.1 mrg return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
1796 1.1 mrg (__v64qi) __B,
1797 1.1 mrg (__v64qi)
1798 1.1 mrg _mm512_setzero_qi (),
1799 1.1 mrg (__mmask64) -1);
1800 1.1 mrg }
1801 1.1 mrg
1802 1.1 mrg extern __inline __m512i
1803 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1804 1.1 mrg _mm512_maskz_min_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
1805 1.1 mrg {
1806 1.1 mrg return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
1807 1.1 mrg (__v64qi) __B,
1808 1.1 mrg (__v64qi)
1809 1.1 mrg _mm512_setzero_qi(),
1810 1.1 mrg (__mmask64) __M);
1811 1.1 mrg }
1812 1.1 mrg
1813 1.1 mrg extern __inline __m512i
1814 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1815 1.1 mrg _mm512_mask_min_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
1816 1.1 mrg __m512i __B)
1817 1.1 mrg {
1818 1.1 mrg return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
1819 1.1 mrg (__v64qi) __B,
1820 1.1 mrg (__v64qi) __W,
1821 1.1 mrg (__mmask64) __M);
1822 1.1 mrg }
1823 1.1 mrg
1824 1.1 mrg extern __inline __m512i
1825 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1826 1.1 mrg _mm512_max_epi16 (__m512i __A, __m512i __B)
1827 1.1 mrg {
1828 1.1 mrg return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
1829 1.1 mrg (__v32hi) __B,
1830 1.1 mrg (__v32hi)
1831 1.1 mrg _mm512_setzero_hi (),
1832 1.1 mrg (__mmask32) -1);
1833 1.1 mrg }
1834 1.1 mrg
1835 1.1 mrg extern __inline __m512i
1836 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1837 1.1 mrg _mm512_maskz_max_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
1838 1.1 mrg {
1839 1.1 mrg return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
1840 1.1 mrg (__v32hi) __B,
1841 1.1 mrg (__v32hi)
1842 1.1 mrg _mm512_setzero_hi(),
1843 1.1 mrg (__mmask32) __M);
1844 1.1 mrg }
1845 1.1 mrg
1846 1.1 mrg extern __inline __m512i
1847 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1848 1.1 mrg _mm512_mask_max_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
1849 1.1 mrg __m512i __B)
1850 1.1 mrg {
1851 1.1 mrg return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
1852 1.1 mrg (__v32hi) __B,
1853 1.1 mrg (__v32hi) __W,
1854 1.1 mrg (__mmask32) __M);
1855 1.1 mrg }
1856 1.1 mrg
1857 1.1 mrg extern __inline __m512i
1858 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1859 1.1 mrg _mm512_max_epu16 (__m512i __A, __m512i __B)
1860 1.1 mrg {
1861 1.1 mrg return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
1862 1.1 mrg (__v32hi) __B,
1863 1.1 mrg (__v32hi)
1864 1.1 mrg _mm512_setzero_hi (),
1865 1.1 mrg (__mmask32) -1);
1866 1.1 mrg }
1867 1.1 mrg
1868 1.1 mrg extern __inline __m512i
1869 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1870 1.1 mrg _mm512_maskz_max_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
1871 1.1 mrg {
1872 1.1 mrg return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
1873 1.1 mrg (__v32hi) __B,
1874 1.1 mrg (__v32hi)
1875 1.1 mrg _mm512_setzero_hi(),
1876 1.1 mrg (__mmask32) __M);
1877 1.1 mrg }
1878 1.1 mrg
1879 1.1 mrg extern __inline __m512i
1880 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1881 1.1 mrg _mm512_mask_max_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
1882 1.1 mrg __m512i __B)
1883 1.1 mrg {
1884 1.1 mrg return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
1885 1.1 mrg (__v32hi) __B,
1886 1.1 mrg (__v32hi) __W,
1887 1.1 mrg (__mmask32) __M);
1888 1.1 mrg }
1889 1.1 mrg
1890 1.1 mrg extern __inline __m512i
1891 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1892 1.1 mrg _mm512_sra_epi16 (__m512i __A, __m128i __B)
1893 1.1 mrg {
1894 1.1 mrg return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A,
1895 1.1 mrg (__v8hi) __B,
1896 1.1 mrg (__v32hi)
1897 1.1 mrg _mm512_setzero_hi (),
1898 1.1 mrg (__mmask32) -1);
1899 1.1 mrg }
1900 1.1 mrg
1901 1.1 mrg extern __inline __m512i
1902 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1903 1.1 mrg _mm512_mask_sra_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1904 1.1 mrg __m128i __B)
1905 1.1 mrg {
1906 1.1 mrg return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A,
1907 1.1 mrg (__v8hi) __B,
1908 1.1 mrg (__v32hi) __W,
1909 1.1 mrg (__mmask32) __U);
1910 1.1 mrg }
1911 1.1 mrg
1912 1.1 mrg extern __inline __m512i
1913 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1914 1.1 mrg _mm512_maskz_sra_epi16 (__mmask32 __U, __m512i __A, __m128i __B)
1915 1.1 mrg {
1916 1.1 mrg return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A,
1917 1.1 mrg (__v8hi) __B,
1918 1.1 mrg (__v32hi)
1919 1.1 mrg _mm512_setzero_hi (),
1920 1.1 mrg (__mmask32) __U);
1921 1.1 mrg }
1922 1.1 mrg
1923 1.1 mrg extern __inline __m512i
1924 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1925 1.1 mrg _mm512_srav_epi16 (__m512i __A, __m512i __B)
1926 1.1 mrg {
1927 1.1 mrg return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A,
1928 1.1 mrg (__v32hi) __B,
1929 1.1 mrg (__v32hi)
1930 1.1 mrg _mm512_setzero_hi (),
1931 1.1 mrg (__mmask32) -1);
1932 1.1 mrg }
1933 1.1 mrg
1934 1.1 mrg extern __inline __m512i
1935 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1936 1.1 mrg _mm512_mask_srav_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1937 1.1 mrg __m512i __B)
1938 1.1 mrg {
1939 1.1 mrg return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A,
1940 1.1 mrg (__v32hi) __B,
1941 1.1 mrg (__v32hi) __W,
1942 1.1 mrg (__mmask32) __U);
1943 1.1 mrg }
1944 1.1 mrg
1945 1.1 mrg extern __inline __m512i
1946 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1947 1.1 mrg _mm512_maskz_srav_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1948 1.1 mrg {
1949 1.1 mrg return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A,
1950 1.1 mrg (__v32hi) __B,
1951 1.1 mrg (__v32hi)
1952 1.1 mrg _mm512_setzero_hi (),
1953 1.1 mrg (__mmask32) __U);
1954 1.1 mrg }
1955 1.1 mrg
1956 1.1 mrg extern __inline __m512i
1957 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1958 1.1 mrg _mm512_srlv_epi16 (__m512i __A, __m512i __B)
1959 1.1 mrg {
1960 1.1 mrg return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A,
1961 1.1 mrg (__v32hi) __B,
1962 1.1 mrg (__v32hi)
1963 1.1 mrg _mm512_setzero_hi (),
1964 1.1 mrg (__mmask32) -1);
1965 1.1 mrg }
1966 1.1 mrg
1967 1.1 mrg extern __inline __m512i
1968 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1969 1.1 mrg _mm512_mask_srlv_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1970 1.1 mrg __m512i __B)
1971 1.1 mrg {
1972 1.1 mrg return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A,
1973 1.1 mrg (__v32hi) __B,
1974 1.1 mrg (__v32hi) __W,
1975 1.1 mrg (__mmask32) __U);
1976 1.1 mrg }
1977 1.1 mrg
1978 1.1 mrg extern __inline __m512i
1979 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1980 1.1 mrg _mm512_maskz_srlv_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1981 1.1 mrg {
1982 1.1 mrg return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A,
1983 1.1 mrg (__v32hi) __B,
1984 1.1 mrg (__v32hi)
1985 1.1 mrg _mm512_setzero_hi (),
1986 1.1 mrg (__mmask32) __U);
1987 1.1 mrg }
1988 1.1 mrg
1989 1.1 mrg extern __inline __m512i
1990 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1991 1.1 mrg _mm512_sllv_epi16 (__m512i __A, __m512i __B)
1992 1.1 mrg {
1993 1.1 mrg return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A,
1994 1.1 mrg (__v32hi) __B,
1995 1.1 mrg (__v32hi)
1996 1.1 mrg _mm512_setzero_hi (),
1997 1.1 mrg (__mmask32) -1);
1998 1.1 mrg }
1999 1.1 mrg
2000 1.1 mrg extern __inline __m512i
2001 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2002 1.1 mrg _mm512_mask_sllv_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2003 1.1 mrg __m512i __B)
2004 1.1 mrg {
2005 1.1 mrg return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A,
2006 1.1 mrg (__v32hi) __B,
2007 1.1 mrg (__v32hi) __W,
2008 1.1 mrg (__mmask32) __U);
2009 1.1 mrg }
2010 1.1 mrg
2011 1.1 mrg extern __inline __m512i
2012 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2013 1.1 mrg _mm512_maskz_sllv_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
2014 1.1 mrg {
2015 1.1 mrg return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A,
2016 1.1 mrg (__v32hi) __B,
2017 1.1 mrg (__v32hi)
2018 1.1 mrg _mm512_setzero_hi (),
2019 1.1 mrg (__mmask32) __U);
2020 1.1 mrg }
2021 1.1 mrg
2022 1.1 mrg extern __inline __m512i
2023 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2024 1.1 mrg _mm512_mask_packs_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
2025 1.1 mrg __m512i __B)
2026 1.1 mrg {
2027 1.1 mrg return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
2028 1.1 mrg (__v32hi) __B,
2029 1.1 mrg (__v64qi) __W,
2030 1.1 mrg (__mmask64) __M);
2031 1.1 mrg }
2032 1.1 mrg
2033 1.1 mrg extern __inline __m512i
2034 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2035 1.1 mrg _mm512_maskz_packs_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
2036 1.1 mrg {
2037 1.1 mrg return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
2038 1.1 mrg (__v32hi) __B,
2039 1.1 mrg (__v64qi)
2040 1.1 mrg _mm512_setzero_qi(),
2041 1.1 mrg __M);
2042 1.1 mrg }
2043 1.1 mrg
2044 1.1 mrg extern __inline __m512i
2045 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2046 1.1 mrg _mm512_packus_epi16 (__m512i __A, __m512i __B)
2047 1.1 mrg {
2048 1.1 mrg return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
2049 1.1 mrg (__v32hi) __B,
2050 1.1 mrg (__v64qi)
2051 1.1 mrg _mm512_setzero_qi (),
2052 1.1 mrg (__mmask64) -1);
2053 1.1 mrg }
2054 1.1 mrg
2055 1.1 mrg extern __inline __m512i
2056 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2057 1.1 mrg _mm512_mask_packus_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
2058 1.1 mrg __m512i __B)
2059 1.1 mrg {
2060 1.1 mrg return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
2061 1.1 mrg (__v32hi) __B,
2062 1.1 mrg (__v64qi) __W,
2063 1.1 mrg (__mmask64) __M);
2064 1.1 mrg }
2065 1.1 mrg
2066 1.1 mrg extern __inline __m512i
2067 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2068 1.1 mrg _mm512_maskz_packus_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
2069 1.1 mrg {
2070 1.1 mrg return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
2071 1.1 mrg (__v32hi) __B,
2072 1.1 mrg (__v64qi)
2073 1.1 mrg _mm512_setzero_qi(),
2074 1.1 mrg (__mmask64) __M);
2075 1.1 mrg }
2076 1.1 mrg
2077 1.1 mrg extern __inline __m512i
2078 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2079 1.1 mrg _mm512_abs_epi8 (__m512i __A)
2080 1.1 mrg {
2081 1.1 mrg return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
2082 1.1 mrg (__v64qi)
2083 1.1 mrg _mm512_setzero_qi (),
2084 1.1 mrg (__mmask64) -1);
2085 1.1 mrg }
2086 1.1 mrg
2087 1.1 mrg extern __inline __m512i
2088 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2089 1.1 mrg _mm512_mask_abs_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
2090 1.1 mrg {
2091 1.1 mrg return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
2092 1.1 mrg (__v64qi) __W,
2093 1.1 mrg (__mmask64) __U);
2094 1.1 mrg }
2095 1.1 mrg
2096 1.1 mrg extern __inline __m512i
2097 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2098 1.1 mrg _mm512_maskz_abs_epi8 (__mmask64 __U, __m512i __A)
2099 1.1 mrg {
2100 1.1 mrg return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
2101 1.1 mrg (__v64qi)
2102 1.1 mrg _mm512_setzero_qi (),
2103 1.1 mrg (__mmask64) __U);
2104 1.1 mrg }
2105 1.1 mrg
2106 1.1 mrg extern __inline __m512i
2107 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2108 1.1 mrg _mm512_abs_epi16 (__m512i __A)
2109 1.1 mrg {
2110 1.1 mrg return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
2111 1.1 mrg (__v32hi)
2112 1.1 mrg _mm512_setzero_hi (),
2113 1.1 mrg (__mmask32) -1);
2114 1.1 mrg }
2115 1.1 mrg
2116 1.1 mrg extern __inline __m512i
2117 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2118 1.1 mrg _mm512_mask_abs_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
2119 1.1 mrg {
2120 1.1 mrg return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
2121 1.1 mrg (__v32hi) __W,
2122 1.1 mrg (__mmask32) __U);
2123 1.1 mrg }
2124 1.1 mrg
2125 1.1 mrg extern __inline __m512i
2126 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2127 1.1 mrg _mm512_maskz_abs_epi16 (__mmask32 __U, __m512i __A)
2128 1.1 mrg {
2129 1.1 mrg return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
2130 1.1 mrg (__v32hi)
2131 1.1 mrg _mm512_setzero_hi (),
2132 1.1 mrg (__mmask32) __U);
2133 1.1 mrg }
2134 1.1 mrg
2135 1.1 mrg extern __inline __mmask64
2136 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2137 1.1 mrg _mm512_mask_cmpneq_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2138 1.1 mrg {
2139 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2140 1.1 mrg (__v64qi) __Y, 4,
2141 1.1 mrg (__mmask64) __M);
2142 1.1 mrg }
2143 1.1 mrg
2144 1.1 mrg extern __inline __mmask64
2145 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2146 1.1 mrg _mm512_mask_cmplt_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2147 1.1 mrg {
2148 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2149 1.1 mrg (__v64qi) __Y, 1,
2150 1.1 mrg (__mmask64) __M);
2151 1.1 mrg }
2152 1.1 mrg
2153 1.1 mrg extern __inline __mmask64
2154 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2155 1.1 mrg _mm512_mask_cmpge_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2156 1.1 mrg {
2157 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2158 1.1 mrg (__v64qi) __Y, 5,
2159 1.1 mrg (__mmask64) __M);
2160 1.1 mrg }
2161 1.1 mrg
2162 1.1 mrg extern __inline __mmask64
2163 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2164 1.1 mrg _mm512_mask_cmple_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2165 1.1 mrg {
2166 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2167 1.1 mrg (__v64qi) __Y, 2,
2168 1.1 mrg (__mmask64) __M);
2169 1.1 mrg }
2170 1.1 mrg
2171 1.1 mrg extern __inline __mmask32
2172 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2173 1.1 mrg _mm512_mask_cmpneq_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2174 1.1 mrg {
2175 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2176 1.1 mrg (__v32hi) __Y, 4,
2177 1.1 mrg (__mmask32) __M);
2178 1.1 mrg }
2179 1.1 mrg
2180 1.1 mrg extern __inline __mmask32
2181 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2182 1.1 mrg _mm512_mask_cmplt_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2183 1.1 mrg {
2184 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2185 1.1 mrg (__v32hi) __Y, 1,
2186 1.1 mrg (__mmask32) __M);
2187 1.1 mrg }
2188 1.1 mrg
2189 1.1 mrg extern __inline __mmask32
2190 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2191 1.1 mrg _mm512_mask_cmpge_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2192 1.1 mrg {
2193 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2194 1.1 mrg (__v32hi) __Y, 5,
2195 1.1 mrg (__mmask32) __M);
2196 1.1 mrg }
2197 1.1 mrg
2198 1.1 mrg extern __inline __mmask32
2199 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2200 1.1 mrg _mm512_mask_cmple_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2201 1.1 mrg {
2202 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2203 1.1 mrg (__v32hi) __Y, 2,
2204 1.1 mrg (__mmask32) __M);
2205 1.1 mrg }
2206 1.1 mrg
2207 1.1 mrg extern __inline __mmask64
2208 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2209 1.1 mrg _mm512_mask_cmpneq_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2210 1.1 mrg {
2211 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2212 1.1 mrg (__v64qi) __Y, 4,
2213 1.1 mrg (__mmask64) __M);
2214 1.1 mrg }
2215 1.1 mrg
2216 1.1 mrg extern __inline __mmask64
2217 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2218 1.1 mrg _mm512_mask_cmplt_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2219 1.1 mrg {
2220 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2221 1.1 mrg (__v64qi) __Y, 1,
2222 1.1 mrg (__mmask64) __M);
2223 1.1 mrg }
2224 1.1 mrg
2225 1.1 mrg extern __inline __mmask64
2226 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2227 1.1 mrg _mm512_mask_cmpge_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2228 1.1 mrg {
2229 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2230 1.1 mrg (__v64qi) __Y, 5,
2231 1.1 mrg (__mmask64) __M);
2232 1.1 mrg }
2233 1.1 mrg
2234 1.1 mrg extern __inline __mmask64
2235 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2236 1.1 mrg _mm512_mask_cmple_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2237 1.1 mrg {
2238 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2239 1.1 mrg (__v64qi) __Y, 2,
2240 1.1 mrg (__mmask64) __M);
2241 1.1 mrg }
2242 1.1 mrg
2243 1.1 mrg extern __inline __mmask32
2244 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2245 1.1 mrg _mm512_mask_cmpneq_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2246 1.1 mrg {
2247 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2248 1.1 mrg (__v32hi) __Y, 4,
2249 1.1 mrg (__mmask32) __M);
2250 1.1 mrg }
2251 1.1 mrg
2252 1.1 mrg extern __inline __mmask32
2253 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2254 1.1 mrg _mm512_mask_cmplt_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2255 1.1 mrg {
2256 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2257 1.1 mrg (__v32hi) __Y, 1,
2258 1.1 mrg (__mmask32) __M);
2259 1.1 mrg }
2260 1.1 mrg
2261 1.1 mrg extern __inline __mmask32
2262 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2263 1.1 mrg _mm512_mask_cmpge_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2264 1.1 mrg {
2265 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2266 1.1 mrg (__v32hi) __Y, 5,
2267 1.1 mrg (__mmask32) __M);
2268 1.1 mrg }
2269 1.1 mrg
2270 1.1 mrg extern __inline __mmask32
2271 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2272 1.1 mrg _mm512_mask_cmple_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2273 1.1 mrg {
2274 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2275 1.1 mrg (__v32hi) __Y, 2,
2276 1.1 mrg (__mmask32) __M);
2277 1.1 mrg }
2278 1.1 mrg
2279 1.1 mrg extern __inline __mmask64
2280 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2281 1.1 mrg _mm512_cmpneq_epu8_mask (__m512i __X, __m512i __Y)
2282 1.1 mrg {
2283 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2284 1.1 mrg (__v64qi) __Y, 4,
2285 1.1.1.2 mrg (__mmask64) -1);
2286 1.1 mrg }
2287 1.1 mrg
2288 1.1 mrg extern __inline __mmask64
2289 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2290 1.1 mrg _mm512_cmplt_epu8_mask (__m512i __X, __m512i __Y)
2291 1.1 mrg {
2292 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2293 1.1 mrg (__v64qi) __Y, 1,
2294 1.1.1.2 mrg (__mmask64) -1);
2295 1.1 mrg }
2296 1.1 mrg
2297 1.1 mrg extern __inline __mmask64
2298 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2299 1.1 mrg _mm512_cmpge_epu8_mask (__m512i __X, __m512i __Y)
2300 1.1 mrg {
2301 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2302 1.1 mrg (__v64qi) __Y, 5,
2303 1.1.1.2 mrg (__mmask64) -1);
2304 1.1 mrg }
2305 1.1 mrg
2306 1.1 mrg extern __inline __mmask64
2307 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2308 1.1 mrg _mm512_cmple_epu8_mask (__m512i __X, __m512i __Y)
2309 1.1 mrg {
2310 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2311 1.1 mrg (__v64qi) __Y, 2,
2312 1.1.1.2 mrg (__mmask64) -1);
2313 1.1 mrg }
2314 1.1 mrg
2315 1.1 mrg extern __inline __mmask32
2316 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2317 1.1 mrg _mm512_cmpneq_epu16_mask (__m512i __X, __m512i __Y)
2318 1.1 mrg {
2319 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2320 1.1 mrg (__v32hi) __Y, 4,
2321 1.1.1.2 mrg (__mmask32) -1);
2322 1.1 mrg }
2323 1.1 mrg
2324 1.1 mrg extern __inline __mmask32
2325 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2326 1.1 mrg _mm512_cmplt_epu16_mask (__m512i __X, __m512i __Y)
2327 1.1 mrg {
2328 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2329 1.1 mrg (__v32hi) __Y, 1,
2330 1.1.1.2 mrg (__mmask32) -1);
2331 1.1 mrg }
2332 1.1 mrg
2333 1.1 mrg extern __inline __mmask32
2334 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2335 1.1 mrg _mm512_cmpge_epu16_mask (__m512i __X, __m512i __Y)
2336 1.1 mrg {
2337 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2338 1.1 mrg (__v32hi) __Y, 5,
2339 1.1.1.2 mrg (__mmask32) -1);
2340 1.1 mrg }
2341 1.1 mrg
2342 1.1 mrg extern __inline __mmask32
2343 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2344 1.1 mrg _mm512_cmple_epu16_mask (__m512i __X, __m512i __Y)
2345 1.1 mrg {
2346 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2347 1.1 mrg (__v32hi) __Y, 2,
2348 1.1.1.2 mrg (__mmask32) -1);
2349 1.1 mrg }
2350 1.1 mrg
2351 1.1 mrg extern __inline __mmask64
2352 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2353 1.1 mrg _mm512_cmpneq_epi8_mask (__m512i __X, __m512i __Y)
2354 1.1 mrg {
2355 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2356 1.1 mrg (__v64qi) __Y, 4,
2357 1.1.1.2 mrg (__mmask64) -1);
2358 1.1 mrg }
2359 1.1 mrg
2360 1.1 mrg extern __inline __mmask64
2361 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2362 1.1 mrg _mm512_cmplt_epi8_mask (__m512i __X, __m512i __Y)
2363 1.1 mrg {
2364 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2365 1.1 mrg (__v64qi) __Y, 1,
2366 1.1.1.2 mrg (__mmask64) -1);
2367 1.1 mrg }
2368 1.1 mrg
2369 1.1 mrg extern __inline __mmask64
2370 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2371 1.1 mrg _mm512_cmpge_epi8_mask (__m512i __X, __m512i __Y)
2372 1.1 mrg {
2373 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2374 1.1 mrg (__v64qi) __Y, 5,
2375 1.1.1.2 mrg (__mmask64) -1);
2376 1.1 mrg }
2377 1.1 mrg
2378 1.1 mrg extern __inline __mmask64
2379 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2380 1.1 mrg _mm512_cmple_epi8_mask (__m512i __X, __m512i __Y)
2381 1.1 mrg {
2382 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2383 1.1 mrg (__v64qi) __Y, 2,
2384 1.1.1.2 mrg (__mmask64) -1);
2385 1.1 mrg }
2386 1.1 mrg
2387 1.1 mrg extern __inline __mmask32
2388 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2389 1.1 mrg _mm512_cmpneq_epi16_mask (__m512i __X, __m512i __Y)
2390 1.1 mrg {
2391 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2392 1.1 mrg (__v32hi) __Y, 4,
2393 1.1.1.2 mrg (__mmask32) -1);
2394 1.1 mrg }
2395 1.1 mrg
2396 1.1 mrg extern __inline __mmask32
2397 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2398 1.1 mrg _mm512_cmplt_epi16_mask (__m512i __X, __m512i __Y)
2399 1.1 mrg {
2400 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2401 1.1 mrg (__v32hi) __Y, 1,
2402 1.1.1.2 mrg (__mmask32) -1);
2403 1.1 mrg }
2404 1.1 mrg
2405 1.1 mrg extern __inline __mmask32
2406 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2407 1.1 mrg _mm512_cmpge_epi16_mask (__m512i __X, __m512i __Y)
2408 1.1 mrg {
2409 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2410 1.1 mrg (__v32hi) __Y, 5,
2411 1.1.1.2 mrg (__mmask32) -1);
2412 1.1 mrg }
2413 1.1 mrg
2414 1.1 mrg extern __inline __mmask32
2415 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2416 1.1 mrg _mm512_cmple_epi16_mask (__m512i __X, __m512i __Y)
2417 1.1 mrg {
2418 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2419 1.1 mrg (__v32hi) __Y, 2,
2420 1.1.1.2 mrg (__mmask32) -1);
2421 1.1.1.2 mrg }
2422 1.1.1.2 mrg
2423 1.1.1.2 mrg extern __inline __m512i
2424 1.1.1.2 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2425 1.1.1.2 mrg _mm512_packs_epi32 (__m512i __A, __m512i __B)
2426 1.1.1.2 mrg {
2427 1.1.1.2 mrg return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
2428 1.1.1.2 mrg (__v16si) __B,
2429 1.1.1.2 mrg (__v32hi)
2430 1.1.1.2 mrg _mm512_setzero_hi (),
2431 1.1.1.2 mrg (__mmask32) -1);
2432 1.1.1.2 mrg }
2433 1.1.1.2 mrg
2434 1.1.1.2 mrg extern __inline __m512i
2435 1.1.1.2 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2436 1.1.1.2 mrg _mm512_maskz_packs_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
2437 1.1.1.2 mrg {
2438 1.1.1.2 mrg return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
2439 1.1.1.2 mrg (__v16si) __B,
2440 1.1.1.2 mrg (__v32hi)
2441 1.1.1.2 mrg _mm512_setzero_hi (),
2442 1.1.1.2 mrg __M);
2443 1.1.1.2 mrg }
2444 1.1.1.2 mrg
2445 1.1.1.2 mrg extern __inline __m512i
2446 1.1.1.2 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2447 1.1.1.2 mrg _mm512_mask_packs_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
2448 1.1.1.2 mrg __m512i __B)
2449 1.1.1.2 mrg {
2450 1.1.1.2 mrg return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
2451 1.1.1.2 mrg (__v16si) __B,
2452 1.1.1.2 mrg (__v32hi) __W,
2453 1.1.1.2 mrg __M);
2454 1.1.1.2 mrg }
2455 1.1.1.2 mrg
2456 1.1.1.2 mrg extern __inline __m512i
2457 1.1.1.2 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2458 1.1.1.2 mrg _mm512_packus_epi32 (__m512i __A, __m512i __B)
2459 1.1.1.2 mrg {
2460 1.1.1.2 mrg return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
2461 1.1.1.2 mrg (__v16si) __B,
2462 1.1.1.2 mrg (__v32hi)
2463 1.1.1.2 mrg _mm512_setzero_hi (),
2464 1.1.1.2 mrg (__mmask32) -1);
2465 1.1.1.2 mrg }
2466 1.1.1.2 mrg
2467 1.1.1.2 mrg extern __inline __m512i
2468 1.1.1.2 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2469 1.1.1.2 mrg _mm512_maskz_packus_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
2470 1.1.1.2 mrg {
2471 1.1.1.2 mrg return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
2472 1.1.1.2 mrg (__v16si) __B,
2473 1.1.1.2 mrg (__v32hi)
2474 1.1.1.2 mrg _mm512_setzero_hi (),
2475 1.1.1.2 mrg __M);
2476 1.1.1.2 mrg }
2477 1.1.1.2 mrg
2478 1.1.1.2 mrg extern __inline __m512i
2479 1.1.1.2 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2480 1.1.1.2 mrg _mm512_mask_packus_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
2481 1.1.1.2 mrg __m512i __B)
2482 1.1.1.2 mrg {
2483 1.1.1.2 mrg return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
2484 1.1.1.2 mrg (__v16si) __B,
2485 1.1.1.2 mrg (__v32hi) __W,
2486 1.1.1.2 mrg __M);
2487 1.1 mrg }
2488 1.1 mrg
2489 1.1 mrg #ifdef __OPTIMIZE__
2490 1.1 mrg extern __inline __m512i
2491 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2492 1.1 mrg _mm512_alignr_epi8 (__m512i __A, __m512i __B, const int __N)
2493 1.1 mrg {
2494 1.1 mrg return (__m512i) __builtin_ia32_palignr512 ((__v8di) __A,
2495 1.1 mrg (__v8di) __B, __N * 8);
2496 1.1 mrg }
2497 1.1 mrg
2498 1.1 mrg extern __inline __m512i
2499 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2500 1.1 mrg _mm512_mask_alignr_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
2501 1.1 mrg __m512i __B, const int __N)
2502 1.1 mrg {
2503 1.1 mrg return (__m512i) __builtin_ia32_palignr512_mask ((__v8di) __A,
2504 1.1 mrg (__v8di) __B,
2505 1.1 mrg __N * 8,
2506 1.1 mrg (__v8di) __W,
2507 1.1 mrg (__mmask64) __U);
2508 1.1 mrg }
2509 1.1 mrg
2510 1.1 mrg extern __inline __m512i
2511 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2512 1.1 mrg _mm512_maskz_alignr_epi8 (__mmask64 __U, __m512i __A, __m512i __B,
2513 1.1 mrg const int __N)
2514 1.1 mrg {
2515 1.1 mrg return (__m512i) __builtin_ia32_palignr512_mask ((__v8di) __A,
2516 1.1 mrg (__v8di) __B,
2517 1.1 mrg __N * 8,
2518 1.1 mrg (__v8di)
2519 1.1 mrg _mm512_setzero_si512 (),
2520 1.1 mrg (__mmask64) __U);
2521 1.1 mrg }
2522 1.1 mrg
2523 1.1 mrg extern __inline __m512i
2524 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2525 1.1 mrg _mm512_dbsad_epu8 (__m512i __A, __m512i __B, const int __imm)
2526 1.1 mrg {
2527 1.1 mrg return (__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi) __A,
2528 1.1 mrg (__v64qi) __B,
2529 1.1 mrg __imm,
2530 1.1 mrg (__v32hi)
2531 1.1 mrg _mm512_setzero_hi (),
2532 1.1 mrg (__mmask32) -1);
2533 1.1 mrg }
2534 1.1 mrg
2535 1.1 mrg extern __inline __m512i
2536 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2537 1.1 mrg _mm512_mask_dbsad_epu8 (__m512i __W, __mmask32 __U, __m512i __A,
2538 1.1 mrg __m512i __B, const int __imm)
2539 1.1 mrg {
2540 1.1 mrg return (__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi) __A,
2541 1.1 mrg (__v64qi) __B,
2542 1.1 mrg __imm,
2543 1.1 mrg (__v32hi) __W,
2544 1.1 mrg (__mmask32) __U);
2545 1.1 mrg }
2546 1.1 mrg
2547 1.1 mrg extern __inline __m512i
2548 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2549 1.1 mrg _mm512_maskz_dbsad_epu8 (__mmask32 __U, __m512i __A, __m512i __B,
2550 1.1 mrg const int __imm)
2551 1.1 mrg {
2552 1.1 mrg return (__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi) __A,
2553 1.1 mrg (__v64qi) __B,
2554 1.1 mrg __imm,
2555 1.1 mrg (__v32hi)
2556 1.1 mrg _mm512_setzero_hi(),
2557 1.1 mrg (__mmask32) __U);
2558 1.1 mrg }
2559 1.1 mrg
2560 1.1 mrg extern __inline __m512i
2561 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2562 1.1 mrg _mm512_srli_epi16 (__m512i __A, const int __imm)
2563 1.1 mrg {
2564 1.1 mrg return (__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi) __A, __imm,
2565 1.1 mrg (__v32hi)
2566 1.1 mrg _mm512_setzero_hi (),
2567 1.1 mrg (__mmask32) -1);
2568 1.1 mrg }
2569 1.1 mrg
2570 1.1 mrg extern __inline __m512i
2571 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2572 1.1 mrg _mm512_mask_srli_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2573 1.1 mrg const int __imm)
2574 1.1 mrg {
2575 1.1 mrg return (__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi) __A, __imm,
2576 1.1 mrg (__v32hi) __W,
2577 1.1 mrg (__mmask32) __U);
2578 1.1 mrg }
2579 1.1 mrg
2580 1.1 mrg extern __inline __m512i
2581 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2582 1.1 mrg _mm512_maskz_srli_epi16 (__mmask32 __U, __m512i __A, const int __imm)
2583 1.1 mrg {
2584 1.1 mrg return (__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi) __A, __imm,
2585 1.1 mrg (__v32hi)
2586 1.1 mrg _mm512_setzero_hi (),
2587 1.1 mrg (__mmask32) __U);
2588 1.1 mrg }
2589 1.1 mrg
2590 1.1 mrg extern __inline __m512i
2591 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2592 1.1 mrg _mm512_slli_epi16 (__m512i __A, const int __B)
2593 1.1 mrg {
2594 1.1 mrg return (__m512i) __builtin_ia32_psllwi512_mask ((__v32hi) __A, __B,
2595 1.1 mrg (__v32hi)
2596 1.1 mrg _mm512_setzero_hi (),
2597 1.1 mrg (__mmask32) -1);
2598 1.1 mrg }
2599 1.1 mrg
2600 1.1 mrg extern __inline __m512i
2601 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2602 1.1 mrg _mm512_mask_slli_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2603 1.1 mrg const int __B)
2604 1.1 mrg {
2605 1.1 mrg return (__m512i) __builtin_ia32_psllwi512_mask ((__v32hi) __A, __B,
2606 1.1 mrg (__v32hi) __W,
2607 1.1 mrg (__mmask32) __U);
2608 1.1 mrg }
2609 1.1 mrg
2610 1.1 mrg extern __inline __m512i
2611 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2612 1.1 mrg _mm512_maskz_slli_epi16 (__mmask32 __U, __m512i __A, const int __B)
2613 1.1 mrg {
2614 1.1 mrg return (__m512i) __builtin_ia32_psllwi512_mask ((__v32hi) __A, __B,
2615 1.1 mrg (__v32hi)
2616 1.1 mrg _mm512_setzero_hi (),
2617 1.1 mrg (__mmask32) __U);
2618 1.1 mrg }
2619 1.1 mrg
2620 1.1 mrg extern __inline __m512i
2621 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2622 1.1 mrg _mm512_shufflehi_epi16 (__m512i __A, const int __imm)
2623 1.1 mrg {
2624 1.1 mrg return (__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi) __A,
2625 1.1 mrg __imm,
2626 1.1 mrg (__v32hi)
2627 1.1 mrg _mm512_setzero_hi (),
2628 1.1 mrg (__mmask32) -1);
2629 1.1 mrg }
2630 1.1 mrg
2631 1.1 mrg extern __inline __m512i
2632 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2633 1.1 mrg _mm512_mask_shufflehi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2634 1.1 mrg const int __imm)
2635 1.1 mrg {
2636 1.1 mrg return (__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi) __A,
2637 1.1 mrg __imm,
2638 1.1 mrg (__v32hi) __W,
2639 1.1 mrg (__mmask32) __U);
2640 1.1 mrg }
2641 1.1 mrg
2642 1.1 mrg extern __inline __m512i
2643 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2644 1.1 mrg _mm512_maskz_shufflehi_epi16 (__mmask32 __U, __m512i __A,
2645 1.1 mrg const int __imm)
2646 1.1 mrg {
2647 1.1 mrg return (__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi) __A,
2648 1.1 mrg __imm,
2649 1.1 mrg (__v32hi)
2650 1.1 mrg _mm512_setzero_hi (),
2651 1.1 mrg (__mmask32) __U);
2652 1.1 mrg }
2653 1.1 mrg
2654 1.1 mrg extern __inline __m512i
2655 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2656 1.1 mrg _mm512_shufflelo_epi16 (__m512i __A, const int __imm)
2657 1.1 mrg {
2658 1.1 mrg return (__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi) __A,
2659 1.1 mrg __imm,
2660 1.1 mrg (__v32hi)
2661 1.1 mrg _mm512_setzero_hi (),
2662 1.1 mrg (__mmask32) -1);
2663 1.1 mrg }
2664 1.1 mrg
2665 1.1 mrg extern __inline __m512i
2666 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2667 1.1 mrg _mm512_mask_shufflelo_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2668 1.1 mrg const int __imm)
2669 1.1 mrg {
2670 1.1 mrg return (__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi) __A,
2671 1.1 mrg __imm,
2672 1.1 mrg (__v32hi) __W,
2673 1.1 mrg (__mmask32) __U);
2674 1.1 mrg }
2675 1.1 mrg
2676 1.1 mrg extern __inline __m512i
2677 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2678 1.1 mrg _mm512_maskz_shufflelo_epi16 (__mmask32 __U, __m512i __A,
2679 1.1 mrg const int __imm)
2680 1.1 mrg {
2681 1.1 mrg return (__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi) __A,
2682 1.1 mrg __imm,
2683 1.1 mrg (__v32hi)
2684 1.1 mrg _mm512_setzero_hi (),
2685 1.1 mrg (__mmask32) __U);
2686 1.1 mrg }
2687 1.1 mrg
2688 1.1 mrg extern __inline __m512i
2689 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2690 1.1 mrg _mm512_srai_epi16 (__m512i __A, const int __imm)
2691 1.1 mrg {
2692 1.1 mrg return (__m512i) __builtin_ia32_psrawi512_mask ((__v32hi) __A, __imm,
2693 1.1 mrg (__v32hi)
2694 1.1 mrg _mm512_setzero_hi (),
2695 1.1 mrg (__mmask32) -1);
2696 1.1 mrg }
2697 1.1 mrg
2698 1.1 mrg extern __inline __m512i
2699 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2700 1.1 mrg _mm512_mask_srai_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2701 1.1 mrg const int __imm)
2702 1.1 mrg {
2703 1.1 mrg return (__m512i) __builtin_ia32_psrawi512_mask ((__v32hi) __A, __imm,
2704 1.1 mrg (__v32hi) __W,
2705 1.1 mrg (__mmask32) __U);
2706 1.1 mrg }
2707 1.1 mrg
2708 1.1 mrg extern __inline __m512i
2709 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2710 1.1 mrg _mm512_maskz_srai_epi16 (__mmask32 __U, __m512i __A, const int __imm)
2711 1.1 mrg {
2712 1.1 mrg return (__m512i) __builtin_ia32_psrawi512_mask ((__v32hi) __A, __imm,
2713 1.1 mrg (__v32hi)
2714 1.1 mrg _mm512_setzero_hi (),
2715 1.1 mrg (__mmask32) __U);
2716 1.1 mrg }
2717 1.1 mrg
2718 1.1 mrg extern __inline __m512i
2719 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2720 1.1 mrg _mm512_mask_blend_epi16 (__mmask32 __U, __m512i __A, __m512i __W)
2721 1.1 mrg {
2722 1.1 mrg return (__m512i) __builtin_ia32_blendmw_512_mask ((__v32hi) __A,
2723 1.1 mrg (__v32hi) __W,
2724 1.1 mrg (__mmask32) __U);
2725 1.1 mrg }
2726 1.1 mrg
2727 1.1 mrg extern __inline __m512i
2728 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2729 1.1 mrg _mm512_mask_blend_epi8 (__mmask64 __U, __m512i __A, __m512i __W)
2730 1.1 mrg {
2731 1.1 mrg return (__m512i) __builtin_ia32_blendmb_512_mask ((__v64qi) __A,
2732 1.1 mrg (__v64qi) __W,
2733 1.1 mrg (__mmask64) __U);
2734 1.1 mrg }
2735 1.1 mrg
2736 1.1 mrg extern __inline __mmask32
2737 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2738 1.1 mrg _mm512_mask_cmp_epi16_mask (__mmask32 __U, __m512i __X, __m512i __Y,
2739 1.1 mrg const int __P)
2740 1.1 mrg {
2741 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2742 1.1 mrg (__v32hi) __Y, __P,
2743 1.1 mrg (__mmask32) __U);
2744 1.1 mrg }
2745 1.1 mrg
2746 1.1 mrg extern __inline __mmask32
2747 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2748 1.1 mrg _mm512_cmp_epi16_mask (__m512i __X, __m512i __Y, const int __P)
2749 1.1 mrg {
2750 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2751 1.1 mrg (__v32hi) __Y, __P,
2752 1.1 mrg (__mmask32) -1);
2753 1.1 mrg }
2754 1.1 mrg
2755 1.1 mrg extern __inline __mmask64
2756 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2757 1.1 mrg _mm512_mask_cmp_epi8_mask (__mmask32 __U, __m512i __X, __m512i __Y,
2758 1.1 mrg const int __P)
2759 1.1 mrg {
2760 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2761 1.1 mrg (__v64qi) __Y, __P,
2762 1.1 mrg (__mmask64) __U);
2763 1.1 mrg }
2764 1.1 mrg
2765 1.1 mrg extern __inline __mmask64
2766 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2767 1.1 mrg _mm512_cmp_epi8_mask (__m512i __X, __m512i __Y, const int __P)
2768 1.1 mrg {
2769 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2770 1.1 mrg (__v64qi) __Y, __P,
2771 1.1 mrg (__mmask64) -1);
2772 1.1 mrg }
2773 1.1 mrg
2774 1.1 mrg extern __inline __mmask32
2775 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2776 1.1 mrg _mm512_mask_cmp_epu16_mask (__mmask32 __U, __m512i __X, __m512i __Y,
2777 1.1 mrg const int __P)
2778 1.1 mrg {
2779 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2780 1.1 mrg (__v32hi) __Y, __P,
2781 1.1 mrg (__mmask32) __U);
2782 1.1 mrg }
2783 1.1 mrg
2784 1.1 mrg extern __inline __mmask32
2785 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2786 1.1 mrg _mm512_cmp_epu16_mask (__m512i __X, __m512i __Y, const int __P)
2787 1.1 mrg {
2788 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2789 1.1 mrg (__v32hi) __Y, __P,
2790 1.1 mrg (__mmask32) -1);
2791 1.1 mrg }
2792 1.1 mrg
2793 1.1 mrg extern __inline __mmask64
2794 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2795 1.1 mrg _mm512_mask_cmp_epu8_mask (__mmask32 __U, __m512i __X, __m512i __Y,
2796 1.1 mrg const int __P)
2797 1.1 mrg {
2798 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2799 1.1 mrg (__v64qi) __Y, __P,
2800 1.1 mrg (__mmask64) __U);
2801 1.1 mrg }
2802 1.1 mrg
2803 1.1 mrg extern __inline __mmask64
2804 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2805 1.1 mrg _mm512_cmp_epu8_mask (__m512i __X, __m512i __Y, const int __P)
2806 1.1 mrg {
2807 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2808 1.1 mrg (__v64qi) __Y, __P,
2809 1.1 mrg (__mmask64) -1);
2810 1.1 mrg }
2811 1.1 mrg
2812 1.1 mrg extern __inline __m512i
2813 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2814 1.1 mrg _mm512_bslli_epi128 (__m512i __A, const int __N)
2815 1.1 mrg {
2816 1.1 mrg return (__m512i) __builtin_ia32_pslldq512 (__A, __N * 8);
2817 1.1 mrg }
2818 1.1 mrg
2819 1.1 mrg extern __inline __m512i
2820 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2821 1.1 mrg _mm512_bsrli_epi128 (__m512i __A, const int __N)
2822 1.1 mrg {
2823 1.1 mrg return (__m512i) __builtin_ia32_psrldq512 (__A, __N * 8);
2824 1.1 mrg }
2825 1.1 mrg
2826 1.1 mrg #else
2827 1.1 mrg #define _mm512_alignr_epi8(X, Y, N) \
2828 1.1 mrg ((__m512i) __builtin_ia32_palignr512 ((__v8di)(__m512i)(X), \
2829 1.1 mrg (__v8di)(__m512i)(Y), \
2830 1.1 mrg (int)(N * 8)))
2831 1.1 mrg
2832 1.1 mrg #define _mm512_mask_alignr_epi8(W, U, X, Y, N) \
2833 1.1 mrg ((__m512i) __builtin_ia32_palignr512_mask ((__v8di)(__m512i)(X), \
2834 1.1 mrg (__v8di)(__m512i)(Y), (int)(N * 8), \
2835 1.1 mrg (__v8di)(__m512i)(W), (__mmask64)(U)))
2836 1.1 mrg
2837 1.1 mrg #define _mm512_maskz_alignr_epi8(U, X, Y, N) \
2838 1.1 mrg ((__m512i) __builtin_ia32_palignr512_mask ((__v8di)(__m512i)(X), \
2839 1.1 mrg (__v8di)(__m512i)(Y), (int)(N * 8), \
2840 1.1 mrg (__v8di)(__m512i)_mm512_setzero_si512 (), \
2841 1.1 mrg (__mmask64)(U)))
2842 1.1 mrg
2843 1.1 mrg #define _mm512_dbsad_epu8(X, Y, C) \
2844 1.1 mrg ((__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi)(__m512i) (X), \
2845 1.1 mrg (__v64qi)(__m512i) (Y), (int) (C), \
2846 1.1 mrg (__v32hi)(__m512i)_mm512_setzero_si512 (),\
2847 1.1 mrg (__mmask32)-1))
2848 1.1 mrg
2849 1.1 mrg #define _mm512_mask_dbsad_epu8(W, U, X, Y, C) \
2850 1.1 mrg ((__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi)(__m512i) (X), \
2851 1.1 mrg (__v64qi)(__m512i) (Y), (int) (C), \
2852 1.1 mrg (__v32hi)(__m512i)(W), \
2853 1.1 mrg (__mmask32)(U)))
2854 1.1 mrg
2855 1.1 mrg #define _mm512_maskz_dbsad_epu8(U, X, Y, C) \
2856 1.1 mrg ((__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi)(__m512i) (X), \
2857 1.1 mrg (__v64qi)(__m512i) (Y), (int) (C), \
2858 1.1 mrg (__v32hi)(__m512i)_mm512_setzero_si512 (),\
2859 1.1 mrg (__mmask32)(U)))
2860 1.1 mrg
2861 1.1 mrg #define _mm512_srli_epi16(A, B) \
2862 1.1 mrg ((__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi)(__m512i)(A), \
2863 1.1 mrg (int)(B), (__v32hi)_mm512_setzero_hi(), (__mmask32)-1))
2864 1.1 mrg
2865 1.1 mrg #define _mm512_mask_srli_epi16(W, U, A, B) \
2866 1.1 mrg ((__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi)(__m512i)(A), \
2867 1.1 mrg (int)(B), (__v32hi)(__m512i)(W), (__mmask32)(U)))
2868 1.1 mrg
2869 1.1 mrg #define _mm512_maskz_srli_epi16(U, A, B) \
2870 1.1 mrg ((__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi)(__m512i)(A), \
2871 1.1 mrg (int)(B), (__v32hi)_mm512_setzero_hi(), (__mmask32)(U)))
2872 1.1 mrg
2873 1.1 mrg #define _mm512_slli_epi16(X, C) \
2874 1.1 mrg ((__m512i)__builtin_ia32_psllwi512_mask ((__v32hi)(__m512i)(X), (int)(C),\
2875 1.1 mrg (__v32hi)(__m512i)_mm512_setzero_hi(),\
2876 1.1 mrg (__mmask32)-1))
2877 1.1 mrg
2878 1.1 mrg #define _mm512_mask_slli_epi16(W, U, X, C) \
2879 1.1 mrg ((__m512i)__builtin_ia32_psllwi512_mask ((__v32hi)(__m512i)(X), (int)(C),\
2880 1.1 mrg (__v32hi)(__m512i)(W),\
2881 1.1 mrg (__mmask32)(U)))
2882 1.1 mrg
2883 1.1 mrg #define _mm512_maskz_slli_epi16(U, X, C) \
2884 1.1 mrg ((__m512i)__builtin_ia32_psllwi512_mask ((__v32hi)(__m512i)(X), (int)(C),\
2885 1.1 mrg (__v32hi)(__m512i)_mm512_setzero_hi(),\
2886 1.1 mrg (__mmask32)(U)))
2887 1.1 mrg
2888 1.1 mrg #define _mm512_shufflehi_epi16(A, B) \
2889 1.1 mrg ((__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
2890 1.1 mrg (__v32hi)(__m512i)_mm512_setzero_hi(), \
2891 1.1 mrg (__mmask32)-1))
2892 1.1 mrg
2893 1.1 mrg #define _mm512_mask_shufflehi_epi16(W, U, A, B) \
2894 1.1 mrg ((__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
2895 1.1 mrg (__v32hi)(__m512i)(W), \
2896 1.1 mrg (__mmask32)(U)))
2897 1.1 mrg
2898 1.1 mrg #define _mm512_maskz_shufflehi_epi16(U, A, B) \
2899 1.1 mrg ((__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
2900 1.1 mrg (__v32hi)(__m512i)_mm512_setzero_hi(), \
2901 1.1 mrg (__mmask32)(U)))
2902 1.1 mrg
2903 1.1 mrg #define _mm512_shufflelo_epi16(A, B) \
2904 1.1 mrg ((__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
2905 1.1 mrg (__v32hi)(__m512i)_mm512_setzero_hi(), \
2906 1.1 mrg (__mmask32)-1))
2907 1.1 mrg
2908 1.1 mrg #define _mm512_mask_shufflelo_epi16(W, U, A, B) \
2909 1.1 mrg ((__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
2910 1.1 mrg (__v32hi)(__m512i)(W), \
2911 1.1 mrg (__mmask32)(U)))
2912 1.1 mrg
2913 1.1 mrg #define _mm512_maskz_shufflelo_epi16(U, A, B) \
2914 1.1 mrg ((__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
2915 1.1 mrg (__v32hi)(__m512i)_mm512_setzero_hi(), \
2916 1.1 mrg (__mmask32)(U)))
2917 1.1 mrg
2918 1.1 mrg #define _mm512_srai_epi16(A, B) \
2919 1.1 mrg ((__m512i) __builtin_ia32_psrawi512_mask ((__v32hi)(__m512i)(A), \
2920 1.1 mrg (int)(B), (__v32hi)_mm512_setzero_hi(), (__mmask32)-1))
2921 1.1 mrg
2922 1.1 mrg #define _mm512_mask_srai_epi16(W, U, A, B) \
2923 1.1 mrg ((__m512i) __builtin_ia32_psrawi512_mask ((__v32hi)(__m512i)(A), \
2924 1.1 mrg (int)(B), (__v32hi)(__m512i)(W), (__mmask32)(U)))
2925 1.1 mrg
2926 1.1 mrg #define _mm512_maskz_srai_epi16(U, A, B) \
2927 1.1 mrg ((__m512i) __builtin_ia32_psrawi512_mask ((__v32hi)(__m512i)(A), \
2928 1.1 mrg (int)(B), (__v32hi)_mm512_setzero_hi(), (__mmask32)(U)))
2929 1.1 mrg
2930 1.1 mrg #define _mm512_mask_blend_epi16(__U, __A, __W) \
2931 1.1 mrg ((__m512i) __builtin_ia32_blendmw_512_mask ((__v32hi) (__A), \
2932 1.1 mrg (__v32hi) (__W), \
2933 1.1 mrg (__mmask32) (__U)))
2934 1.1 mrg
2935 1.1 mrg #define _mm512_mask_blend_epi8(__U, __A, __W) \
2936 1.1 mrg ((__m512i) __builtin_ia32_blendmb_512_mask ((__v64qi) (__A), \
2937 1.1 mrg (__v64qi) (__W), \
2938 1.1 mrg (__mmask64) (__U)))
2939 1.1 mrg
2940 1.1 mrg #define _mm512_cmp_epi16_mask(X, Y, P) \
2941 1.1 mrg ((__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi)(__m512i)(X), \
2942 1.1 mrg (__v32hi)(__m512i)(Y), (int)(P),\
2943 1.1 mrg (__mmask32)(-1)))
2944 1.1 mrg
2945 1.1 mrg #define _mm512_cmp_epi8_mask(X, Y, P) \
2946 1.1 mrg ((__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi)(__m512i)(X), \
2947 1.1 mrg (__v64qi)(__m512i)(Y), (int)(P),\
2948 1.1 mrg (__mmask64)(-1)))
2949 1.1 mrg
2950 1.1 mrg #define _mm512_cmp_epu16_mask(X, Y, P) \
2951 1.1 mrg ((__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi)(__m512i)(X), \
2952 1.1 mrg (__v32hi)(__m512i)(Y), (int)(P),\
2953 1.1 mrg (__mmask32)(-1)))
2954 1.1 mrg
2955 1.1 mrg #define _mm512_cmp_epu8_mask(X, Y, P) \
2956 1.1 mrg ((__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi)(__m512i)(X), \
2957 1.1 mrg (__v64qi)(__m512i)(Y), (int)(P),\
2958 1.1 mrg (__mmask64)(-1)))
2959 1.1 mrg
2960 1.1 mrg #define _mm512_mask_cmp_epi16_mask(M, X, Y, P) \
2961 1.1 mrg ((__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi)(__m512i)(X), \
2962 1.1 mrg (__v32hi)(__m512i)(Y), (int)(P),\
2963 1.1 mrg (__mmask32)(M)))
2964 1.1 mrg
2965 1.1 mrg #define _mm512_mask_cmp_epi8_mask(M, X, Y, P) \
2966 1.1 mrg ((__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi)(__m512i)(X), \
2967 1.1 mrg (__v64qi)(__m512i)(Y), (int)(P),\
2968 1.1 mrg (__mmask64)(M)))
2969 1.1 mrg
2970 1.1 mrg #define _mm512_mask_cmp_epu16_mask(M, X, Y, P) \
2971 1.1 mrg ((__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi)(__m512i)(X), \
2972 1.1 mrg (__v32hi)(__m512i)(Y), (int)(P),\
2973 1.1 mrg (__mmask32)(M)))
2974 1.1 mrg
2975 1.1 mrg #define _mm512_mask_cmp_epu8_mask(M, X, Y, P) \
2976 1.1 mrg ((__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi)(__m512i)(X), \
2977 1.1 mrg (__v64qi)(__m512i)(Y), (int)(P),\
2978 1.1 mrg (__mmask64)(M)))
2979 1.1 mrg
2980 1.1 mrg #define _mm512_bslli_epi128(A, N) \
2981 1.1 mrg ((__m512i)__builtin_ia32_pslldq512 ((__m512i)(A), (int)(N) * 8))
2982 1.1 mrg
2983 1.1 mrg #define _mm512_bsrli_epi128(A, N) \
2984 1.1 mrg ((__m512i)__builtin_ia32_psrldq512 ((__m512i)(A), (int)(N) * 8))
2985 1.1 mrg
2986 1.1 mrg #endif
2987 1.1 mrg
2988 1.1 mrg #ifdef __DISABLE_AVX512BW__
2989 1.1 mrg #undef __DISABLE_AVX512BW__
2990 1.1 mrg #pragma GCC pop_options
2991 1.1 mrg #endif /* __DISABLE_AVX512BW__ */
2992 1.1 mrg
2993 1.1 mrg #endif /* _AVX512BWINTRIN_H_INCLUDED */
2994