1/*===---- avx512vlbwintrin.h - AVX512VL and AVX512BW intrinsics ----------===
2 *
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:
9 *
10 * The above copyright notice and this permission notice shall be included in
11 * all copies or substantial portions of the Software.
12 *
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
19 * THE SOFTWARE.
20 *
21 *===-----------------------------------------------------------------------===
22 */
23
24#ifndef __IMMINTRIN_H
25#error "Never use <avx512vlbwintrin.h> directly; include <immintrin.h> instead."
26#endif
27
28#ifndef __AVX512VLBWINTRIN_H
29#define __AVX512VLBWINTRIN_H
30
31/* Integer compare */
32
33static __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,
36                                                   (__mmask16)-1);
37}
38
39static __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,
42                                                   __u);
43}
44
45static __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,
48                                                 (__mmask16)-1);
49}
50
51static __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,
54                                                 __u);
55}
56
57static __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,
60                                                   (__mmask32)-1);
61}
62
63static __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,
66                                                   __u);
67}
68
69static __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,
72                                                 (__mmask32)-1);
73}
74
75static __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,
78                                                 __u);
79}
80
81static __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,
84                                                  (__mmask8)-1);
85}
86
87static __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,
90                                                  __u);
91}
92
93static __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,
96                                                (__mmask8)-1);
97}
98
99static __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,
102                                                __u);
103}
104
105static __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,
108                                                   (__mmask16)-1);
109}
110
111static __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,
114                                                   __u);
115}
116
117static __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,
120                                                 (__mmask16)-1);
121}
122
123static __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,
126                                                 __u);
127}
128
129static __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,
132                                                (__mmask16)-1);
133}
134
135static __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,
138                                                __u);
139}
140
141static __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,
144                                                 (__mmask16)-1);
145}
146
147static __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,
150                                                 __u);
151}
152
153static __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,
156                                                (__mmask32)-1);
157}
158
159static __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,
162                                                __u);
163}
164
165static __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,
168                                                 (__mmask32)-1);
169}
170
171static __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,
174                                                 __u);
175}
176
177static __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,
180                                               (__mmask8)-1);
181}
182
183static __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,
186                                               __u);
187}
188
189static __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,
192                                                (__mmask8)-1);
193}
194
195static __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,
198                                                __u);
199}
200
201static __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,
204                                                (__mmask16)-1);
205}
206
207static __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,
210                                                __u);
211}
212
213static __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,
216                                                 (__mmask16)-1);
217}
218
219static __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,
222                                                 __u);
223}
224
225static __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,
228                                                   (__mmask16)-1);
229}
230
231static __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,
234                                                   __u);
235}
236
237static __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,
240                                                 (__mmask16)-1);
241}
242
243static __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,
246                                                 __u);
247}
248
249static __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,
252                                                   (__mmask32)-1);
253}
254
255static __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,
258                                                   __u);
259}
260
261static __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,
264                                                 (__mmask32)-1);
265}
266
267static __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,
270                                                 __u);
271}
272
273static __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,
276                                                  (__mmask8)-1);
277}
278
279static __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,
282                                                  __u);
283}
284
285static __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,
288                                                (__mmask8)-1);
289}
290
291static __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,
294                                                __u);
295}
296
297static __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,
300                                                   (__mmask16)-1);
301}
302
303static __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,
306                                                   __u);
307}
308
309static __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,
312                                                 (__mmask16)-1);
313}
314
315static __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,
318                                                 __u);
319}
320
321static __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,
324                                                (__mmask16)-1);
325}
326
327static __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,
330                                                __u);
331}
332
333static __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,
336                                                 (__mmask16)-1);
337}
338
339static __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,
342                                                 __u);
343}
344
345static __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,
348                                                (__mmask32)-1);
349}
350
351static __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,
354                                                __u);
355}
356
357static __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,
360                                                 (__mmask32)-1);
361}
362
363static __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,
366                                                 __u);
367}
368
369static __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,
372                                               (__mmask8)-1);
373}
374
375static __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,
378                                               __u);
379}
380
381static __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,
384                                                (__mmask8)-1);
385}
386
387static __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,
390                                                __u);
391}
392
393static __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,
396                                                (__mmask16)-1);
397}
398
399static __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,
402                                                __u);
403}
404
405static __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,
408                                                 (__mmask16)-1);
409}
410
411static __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,
414                                                 __u);
415}
416
417static __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,
420                                                (__mmask16)-1);
421}
422
423static __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,
426                                                __u);
427}
428
429static __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,
432                                                 (__mmask16)-1);
433}
434
435static __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,
438                                                 __u);
439}
440
441static __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,
444                                                (__mmask32)-1);
445}
446
447static __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,
450                                                __u);
451}
452
453static __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,
456                                                 (__mmask32)-1);
457}
458
459static __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,
462                                                 __u);
463}
464
465static __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,
468                                               (__mmask8)-1);
469}
470
471static __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,
474                                               __u);
475}
476
477static __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,
480                                                (__mmask8)-1);
481}
482
483static __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,
486                                                __u);
487}
488
489static __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,
492                                                (__mmask16)-1);
493}
494
495static __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,
498                                                __u);
499}
500
501static __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,
504                                                 (__mmask16)-1);
505}
506
507static __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,
510                                                 __u);
511}
512
513static __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,
516                                                (__mmask16)-1);
517}
518
519static __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,
522                                                __u);
523}
524
525static __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,
528                                                 (__mmask16)-1);
529}
530
531static __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,
534                                                 __u);
535}
536
537static __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,
540                                                (__mmask32)-1);
541}
542
543static __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,
546                                                __u);
547}
548
549static __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,
552                                                 (__mmask32)-1);
553}
554
555static __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,
558                                                 __u);
559}
560
561static __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,
564                                               (__mmask8)-1);
565}
566
567static __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,
570                                               __u);
571}
572
573static __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,
576                                                (__mmask8)-1);
577}
578
579static __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,
582                                                __u);
583}
584
585static __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,
588                                                (__mmask16)-1);
589}
590
591static __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,
594                                                __u);
595}
596
597static __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,
600                                                 (__mmask16)-1);
601}
602
603static __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,
606                                                 __u);
607}
608
609#define _mm_cmp_epi8_mask(a, b, p) __extension__ ({ \
610  (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)(__m128i)(a), \
611                                         (__v16qi)(__m128i)(b), \
612                                         (p), (__mmask16)-1); })
613
614#define _mm_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \
615  (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)(__m128i)(a), \
616                                         (__v16qi)(__m128i)(b), \
617                                         (p), (__mmask16)(m)); })
618
619#define _mm_cmp_epu8_mask(a, b, p) __extension__ ({ \
620  (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)(__m128i)(a), \
621                                          (__v16qi)(__m128i)(b), \
622                                          (p), (__mmask16)-1); })
623
624#define _mm_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \
625  (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)(__m128i)(a), \
626                                          (__v16qi)(__m128i)(b), \
627                                          (p), (__mmask16)(m)); })
628
629#define _mm256_cmp_epi8_mask(a, b, p) __extension__ ({ \
630  (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)(__m256i)(a), \
631                                         (__v32qi)(__m256i)(b), \
632                                         (p), (__mmask32)-1); })
633
634#define _mm256_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \
635  (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)(__m256i)(a), \
636                                         (__v32qi)(__m256i)(b), \
637                                         (p), (__mmask32)(m)); })
638
639#define _mm256_cmp_epu8_mask(a, b, p) __extension__ ({ \
640  (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)(__m256i)(a), \
641                                          (__v32qi)(__m256i)(b), \
642                                          (p), (__mmask32)-1); })
643
644#define _mm256_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \
645  (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)(__m256i)(a), \
646                                          (__v32qi)(__m256i)(b), \
647                                          (p), (__mmask32)(m)); })
648
649#define _mm_cmp_epi16_mask(a, b, p) __extension__ ({ \
650  (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)(__m128i)(a), \
651                                        (__v8hi)(__m128i)(b), \
652                                        (p), (__mmask8)-1); })
653
654#define _mm_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \
655  (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)(__m128i)(a), \
656                                        (__v8hi)(__m128i)(b), \
657                                        (p), (__mmask8)(m)); })
658
659#define _mm_cmp_epu16_mask(a, b, p) __extension__ ({ \
660  (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)(__m128i)(a), \
661                                         (__v8hi)(__m128i)(b), \
662                                         (p), (__mmask8)-1); })
663
664#define _mm_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \
665  (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)(__m128i)(a), \
666                                         (__v8hi)(__m128i)(b), \
667                                         (p), (__mmask8)(m)); })
668
669#define _mm256_cmp_epi16_mask(a, b, p) __extension__ ({ \
670  (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)(__m256i)(a), \
671                                         (__v16hi)(__m256i)(b), \
672                                         (p), (__mmask16)-1); })
673
674#define _mm256_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \
675  (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)(__m256i)(a), \
676                                         (__v16hi)(__m256i)(b), \
677                                         (p), (__mmask16)(m)); })
678
679#define _mm256_cmp_epu16_mask(a, b, p) __extension__ ({ \
680  (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)(__m256i)(a), \
681                                          (__v16hi)(__m256i)(b), \
682                                          (p), (__mmask16)-1); })
683
684#define _mm256_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \
685  (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)(__m256i)(a), \
686                                          (__v16hi)(__m256i)(b), \
687                                          (p), (__mmask16)(m)); })
688
689#endif /* __AVX512VLBWINTRIN_H */
690