1 /*===---- avx512vlbwintrin.h - AVX512VL and AVX512BW intrinsics ----------===
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
4 * of this software and associated documentation files (the "Software"), to deal
5 * in the Software without restriction, including without limitation the rights
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 * copies of the Software, and to permit persons to whom the Software is
8 * furnished to do so, subject to the following conditions:
10 * The above copyright notice and this permission notice shall be included in
11 * all copies or substantial portions of the Software.
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 *===-----------------------------------------------------------------------===
25 #error "Never use <avx512vlbwintrin.h> directly; include <immintrin.h> instead."
28 #ifndef __AVX512VLBWINTRIN_H
29 #define __AVX512VLBWINTRIN_H
33 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
34 _mm_cmpeq_epi8_mask(__m128i __a, __m128i __b) {
35 return (__mmask16)__builtin_ia32_pcmpeqb128_mask((__v16qi)__a, (__v16qi)__b,
39 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
40 _mm_mask_cmpeq_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
41 return (__mmask16)__builtin_ia32_pcmpeqb128_mask((__v16qi)__a, (__v16qi)__b,
45 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
46 _mm_cmpeq_epu8_mask(__m128i __a, __m128i __b) {
47 return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 0,
51 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
52 _mm_mask_cmpeq_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
53 return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 0,
57 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
58 _mm256_cmpeq_epi8_mask(__m256i __a, __m256i __b) {
59 return (__mmask32)__builtin_ia32_pcmpeqb256_mask((__v32qi)__a, (__v32qi)__b,
63 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
64 _mm256_mask_cmpeq_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
65 return (__mmask32)__builtin_ia32_pcmpeqb256_mask((__v32qi)__a, (__v32qi)__b,
69 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
70 _mm256_cmpeq_epu8_mask(__m256i __a, __m256i __b) {
71 return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 0,
75 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
76 _mm256_mask_cmpeq_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
77 return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 0,
81 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
82 _mm_cmpeq_epi16_mask(__m128i __a, __m128i __b) {
83 return (__mmask8)__builtin_ia32_pcmpeqw128_mask((__v8hi)__a, (__v8hi)__b,
87 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
88 _mm_mask_cmpeq_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
89 return (__mmask8)__builtin_ia32_pcmpeqw128_mask((__v8hi)__a, (__v8hi)__b,
93 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
94 _mm_cmpeq_epu16_mask(__m128i __a, __m128i __b) {
95 return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 0,
99 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
100 _mm_mask_cmpeq_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
101 return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 0,
105 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
106 _mm256_cmpeq_epi16_mask(__m256i __a, __m256i __b) {
107 return (__mmask16)__builtin_ia32_pcmpeqw256_mask((__v16hi)__a, (__v16hi)__b,
111 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
112 _mm256_mask_cmpeq_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
113 return (__mmask16)__builtin_ia32_pcmpeqw256_mask((__v16hi)__a, (__v16hi)__b,
117 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
118 _mm256_cmpeq_epu16_mask(__m256i __a, __m256i __b) {
119 return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 0,
123 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
124 _mm256_mask_cmpeq_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
125 return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 0,
129 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
130 _mm_cmpge_epi8_mask(__m128i __a, __m128i __b) {
131 return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 5,
135 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
136 _mm_mask_cmpge_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
137 return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 5,
141 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
142 _mm_cmpge_epu8_mask(__m128i __a, __m128i __b) {
143 return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 5,
147 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
148 _mm_mask_cmpge_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
149 return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 5,
153 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
154 _mm256_cmpge_epi8_mask(__m256i __a, __m256i __b) {
155 return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 5,
159 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
160 _mm256_mask_cmpge_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
161 return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 5,
165 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
166 _mm256_cmpge_epu8_mask(__m256i __a, __m256i __b) {
167 return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 5,
171 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
172 _mm256_mask_cmpge_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
173 return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 5,
177 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
178 _mm_cmpge_epi16_mask(__m128i __a, __m128i __b) {
179 return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 5,
183 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
184 _mm_mask_cmpge_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
185 return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 5,
189 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
190 _mm_cmpge_epu16_mask(__m128i __a, __m128i __b) {
191 return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 5,
195 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
196 _mm_mask_cmpge_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
197 return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 5,
201 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
202 _mm256_cmpge_epi16_mask(__m256i __a, __m256i __b) {
203 return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 5,
207 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
208 _mm256_mask_cmpge_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
209 return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 5,
213 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
214 _mm256_cmpge_epu16_mask(__m256i __a, __m256i __b) {
215 return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 5,
219 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
220 _mm256_mask_cmpge_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
221 return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 5,
225 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
226 _mm_cmpgt_epi8_mask(__m128i __a, __m128i __b) {
227 return (__mmask16)__builtin_ia32_pcmpgtb128_mask((__v16qi)__a, (__v16qi)__b,
231 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
232 _mm_mask_cmpgt_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
233 return (__mmask16)__builtin_ia32_pcmpgtb128_mask((__v16qi)__a, (__v16qi)__b,
237 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
238 _mm_cmpgt_epu8_mask(__m128i __a, __m128i __b) {
239 return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 6,
243 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
244 _mm_mask_cmpgt_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
245 return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 6,
249 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
250 _mm256_cmpgt_epi8_mask(__m256i __a, __m256i __b) {
251 return (__mmask32)__builtin_ia32_pcmpgtb256_mask((__v32qi)__a, (__v32qi)__b,
255 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
256 _mm256_mask_cmpgt_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
257 return (__mmask32)__builtin_ia32_pcmpgtb256_mask((__v32qi)__a, (__v32qi)__b,
261 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
262 _mm256_cmpgt_epu8_mask(__m256i __a, __m256i __b) {
263 return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 6,
267 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
268 _mm256_mask_cmpgt_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
269 return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 6,
273 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
274 _mm_cmpgt_epi16_mask(__m128i __a, __m128i __b) {
275 return (__mmask8)__builtin_ia32_pcmpgtw128_mask((__v8hi)__a, (__v8hi)__b,
279 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
280 _mm_mask_cmpgt_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
281 return (__mmask8)__builtin_ia32_pcmpgtw128_mask((__v8hi)__a, (__v8hi)__b,
285 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
286 _mm_cmpgt_epu16_mask(__m128i __a, __m128i __b) {
287 return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 6,
291 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
292 _mm_mask_cmpgt_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
293 return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 6,
297 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
298 _mm256_cmpgt_epi16_mask(__m256i __a, __m256i __b) {
299 return (__mmask16)__builtin_ia32_pcmpgtw256_mask((__v16hi)__a, (__v16hi)__b,
303 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
304 _mm256_mask_cmpgt_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
305 return (__mmask16)__builtin_ia32_pcmpgtw256_mask((__v16hi)__a, (__v16hi)__b,
309 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
310 _mm256_cmpgt_epu16_mask(__m256i __a, __m256i __b) {
311 return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 6,
315 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
316 _mm256_mask_cmpgt_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
317 return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 6,
321 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
322 _mm_cmple_epi8_mask(__m128i __a, __m128i __b) {
323 return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 2,
327 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
328 _mm_mask_cmple_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
329 return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 2,
333 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
334 _mm_cmple_epu8_mask(__m128i __a, __m128i __b) {
335 return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 2,
339 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
340 _mm_mask_cmple_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
341 return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 2,
345 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
346 _mm256_cmple_epi8_mask(__m256i __a, __m256i __b) {
347 return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 2,
351 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
352 _mm256_mask_cmple_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
353 return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 2,
357 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
358 _mm256_cmple_epu8_mask(__m256i __a, __m256i __b) {
359 return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 2,
363 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
364 _mm256_mask_cmple_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
365 return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 2,
369 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
370 _mm_cmple_epi16_mask(__m128i __a, __m128i __b) {
371 return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 2,
375 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
376 _mm_mask_cmple_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
377 return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 2,
381 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
382 _mm_cmple_epu16_mask(__m128i __a, __m128i __b) {
383 return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 2,
387 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
388 _mm_mask_cmple_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
389 return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 2,
393 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
394 _mm256_cmple_epi16_mask(__m256i __a, __m256i __b) {
395 return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 2,
399 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
400 _mm256_mask_cmple_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
401 return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 2,
405 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
406 _mm256_cmple_epu16_mask(__m256i __a, __m256i __b) {
407 return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 2,
411 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
412 _mm256_mask_cmple_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
413 return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 2,
417 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
418 _mm_cmplt_epi8_mask(__m128i __a, __m128i __b) {
419 return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 1,
423 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
424 _mm_mask_cmplt_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
425 return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 1,
429 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
430 _mm_cmplt_epu8_mask(__m128i __a, __m128i __b) {
431 return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 1,
435 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
436 _mm_mask_cmplt_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
437 return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 1,
441 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
442 _mm256_cmplt_epi8_mask(__m256i __a, __m256i __b) {
443 return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 1,
447 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
448 _mm256_mask_cmplt_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
449 return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 1,
453 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
454 _mm256_cmplt_epu8_mask(__m256i __a, __m256i __b) {
455 return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 1,
459 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
460 _mm256_mask_cmplt_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
461 return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 1,
465 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
466 _mm_cmplt_epi16_mask(__m128i __a, __m128i __b) {
467 return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 1,
471 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
472 _mm_mask_cmplt_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
473 return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 1,
477 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
478 _mm_cmplt_epu16_mask(__m128i __a, __m128i __b) {
479 return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 1,
483 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
484 _mm_mask_cmplt_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
485 return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 1,
489 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
490 _mm256_cmplt_epi16_mask(__m256i __a, __m256i __b) {
491 return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 1,
495 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
496 _mm256_mask_cmplt_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
497 return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 1,
501 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
502 _mm256_cmplt_epu16_mask(__m256i __a, __m256i __b) {
503 return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 1,
507 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
508 _mm256_mask_cmplt_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
509 return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 1,
513 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
514 _mm_cmpneq_epi8_mask(__m128i __a, __m128i __b) {
515 return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 4,
519 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
520 _mm_mask_cmpneq_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
521 return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 4,
525 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
526 _mm_cmpneq_epu8_mask(__m128i __a, __m128i __b) {
527 return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 4,
531 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
532 _mm_mask_cmpneq_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
533 return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 4,
537 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
538 _mm256_cmpneq_epi8_mask(__m256i __a, __m256i __b) {
539 return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 4,
543 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
544 _mm256_mask_cmpneq_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
545 return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 4,
549 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
550 _mm256_cmpneq_epu8_mask(__m256i __a, __m256i __b) {
551 return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 4,
555 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
556 _mm256_mask_cmpneq_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
557 return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 4,
561 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
562 _mm_cmpneq_epi16_mask(__m128i __a, __m128i __b) {
563 return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 4,
567 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
568 _mm_mask_cmpneq_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
569 return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 4,
573 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
574 _mm_cmpneq_epu16_mask(__m128i __a, __m128i __b) {
575 return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 4,
579 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
580 _mm_mask_cmpneq_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
581 return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 4,
585 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
586 _mm256_cmpneq_epi16_mask(__m256i __a, __m256i __b) {
587 return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 4,
591 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
592 _mm256_mask_cmpneq_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
593 return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 4,
597 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
598 _mm256_cmpneq_epu16_mask(__m256i __a, __m256i __b) {
599 return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 4,
603 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
604 _mm256_mask_cmpneq_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
605 return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 4,
609 static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
610 _mm256_mask_add_epi8 (__m256i __W, __mmask32 __U, __m256i __A, __m256i __B){
611 return (__m256i) __builtin_ia32_paddb256_mask ((__v32qi) __A,
617 static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
618 _mm256_maskz_add_epi8 (__mmask32 __U, __m256i __A, __m256i __B) {
619 return (__m256i) __builtin_ia32_paddb256_mask ((__v32qi) __A,
622 _mm256_setzero_si256 (),
626 static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
627 _mm256_mask_add_epi16 (__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
628 return (__m256i) __builtin_ia32_paddw256_mask ((__v16hi) __A,
634 static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
635 _mm256_maskz_add_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
636 return (__m256i) __builtin_ia32_paddw256_mask ((__v16hi) __A,
639 _mm256_setzero_si256 (),
643 static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
644 _mm256_mask_sub_epi8 (__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
645 return (__m256i) __builtin_ia32_psubb256_mask ((__v32qi) __A,
651 static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
652 _mm256_maskz_sub_epi8 (__mmask32 __U, __m256i __A, __m256i __B) {
653 return (__m256i) __builtin_ia32_psubb256_mask ((__v32qi) __A,
656 _mm256_setzero_si256 (),
660 static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
661 _mm256_mask_sub_epi16 (__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
662 return (__m256i) __builtin_ia32_psubw256_mask ((__v16hi) __A,
668 static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
669 _mm256_maskz_sub_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
670 return (__m256i) __builtin_ia32_psubw256_mask ((__v16hi) __A,
673 _mm256_setzero_si256 (),
676 static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
677 _mm_mask_add_epi8 (__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
678 return (__m128i) __builtin_ia32_paddb128_mask ((__v16qi) __A,
684 static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
685 _mm_maskz_add_epi8 (__mmask16 __U, __m128i __A, __m128i __B) {
686 return (__m128i) __builtin_ia32_paddb128_mask ((__v16qi) __A,
689 _mm_setzero_si128 (),
693 static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
694 _mm_mask_add_epi16 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
695 return (__m128i) __builtin_ia32_paddw128_mask ((__v8hi) __A,
701 static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
702 _mm_maskz_add_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
703 return (__m128i) __builtin_ia32_paddw128_mask ((__v8hi) __A,
706 _mm_setzero_si128 (),
710 static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
711 _mm_mask_sub_epi8 (__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
712 return (__m128i) __builtin_ia32_psubb128_mask ((__v16qi) __A,
718 static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
719 _mm_maskz_sub_epi8 (__mmask16 __U, __m128i __A, __m128i __B) {
720 return (__m128i) __builtin_ia32_psubb128_mask ((__v16qi) __A,
723 _mm_setzero_si128 (),
727 static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
728 _mm_mask_sub_epi16 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
729 return (__m128i) __builtin_ia32_psubw128_mask ((__v8hi) __A,
735 static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
736 _mm_maskz_sub_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
737 return (__m128i) __builtin_ia32_psubw128_mask ((__v8hi) __A,
740 _mm_setzero_si128 (),
744 static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
745 _mm256_mask_mullo_epi16 (__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
746 return (__m256i) __builtin_ia32_pmullw256_mask ((__v16hi) __A,
752 static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
753 _mm256_maskz_mullo_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
754 return (__m256i) __builtin_ia32_pmullw256_mask ((__v16hi) __A,
757 _mm256_setzero_si256 (),
761 static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
762 _mm_mask_mullo_epi16 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
763 return (__m128i) __builtin_ia32_pmullw128_mask ((__v8hi) __A,
769 static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
770 _mm_maskz_mullo_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
771 return (__m128i) __builtin_ia32_pmullw128_mask ((__v8hi) __A,
774 _mm_setzero_si128 (),
777 #define _mm_cmp_epi8_mask(a, b, p) __extension__ ({ \
778 (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)(__m128i)(a), \
779 (__v16qi)(__m128i)(b), \
780 (p), (__mmask16)-1); })
782 #define _mm_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \
783 (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)(__m128i)(a), \
784 (__v16qi)(__m128i)(b), \
785 (p), (__mmask16)(m)); })
787 #define _mm_cmp_epu8_mask(a, b, p) __extension__ ({ \
788 (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)(__m128i)(a), \
789 (__v16qi)(__m128i)(b), \
790 (p), (__mmask16)-1); })
792 #define _mm_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \
793 (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)(__m128i)(a), \
794 (__v16qi)(__m128i)(b), \
795 (p), (__mmask16)(m)); })
797 #define _mm256_cmp_epi8_mask(a, b, p) __extension__ ({ \
798 (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)(__m256i)(a), \
799 (__v32qi)(__m256i)(b), \
800 (p), (__mmask32)-1); })
802 #define _mm256_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \
803 (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)(__m256i)(a), \
804 (__v32qi)(__m256i)(b), \
805 (p), (__mmask32)(m)); })
807 #define _mm256_cmp_epu8_mask(a, b, p) __extension__ ({ \
808 (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)(__m256i)(a), \
809 (__v32qi)(__m256i)(b), \
810 (p), (__mmask32)-1); })
812 #define _mm256_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \
813 (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)(__m256i)(a), \
814 (__v32qi)(__m256i)(b), \
815 (p), (__mmask32)(m)); })
817 #define _mm_cmp_epi16_mask(a, b, p) __extension__ ({ \
818 (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)(__m128i)(a), \
819 (__v8hi)(__m128i)(b), \
820 (p), (__mmask8)-1); })
822 #define _mm_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \
823 (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)(__m128i)(a), \
824 (__v8hi)(__m128i)(b), \
825 (p), (__mmask8)(m)); })
827 #define _mm_cmp_epu16_mask(a, b, p) __extension__ ({ \
828 (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)(__m128i)(a), \
829 (__v8hi)(__m128i)(b), \
830 (p), (__mmask8)-1); })
832 #define _mm_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \
833 (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)(__m128i)(a), \
834 (__v8hi)(__m128i)(b), \
835 (p), (__mmask8)(m)); })
837 #define _mm256_cmp_epi16_mask(a, b, p) __extension__ ({ \
838 (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)(__m256i)(a), \
839 (__v16hi)(__m256i)(b), \
840 (p), (__mmask16)-1); })
842 #define _mm256_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \
843 (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)(__m256i)(a), \
844 (__v16hi)(__m256i)(b), \
845 (p), (__mmask16)(m)); })
847 #define _mm256_cmp_epu16_mask(a, b, p) __extension__ ({ \
848 (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)(__m256i)(a), \
849 (__v16hi)(__m256i)(b), \
850 (p), (__mmask16)-1); })
852 #define _mm256_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \
853 (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)(__m256i)(a), \
854 (__v16hi)(__m256i)(b), \
855 (p), (__mmask16)(m)); })
857 #endif /* __AVX512VLBWINTRIN_H */