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