1/*===---- avx512vlintrin.h - AVX512VL 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 <avx512vlintrin.h> directly; include <immintrin.h> instead."
26#endif
27
28#ifndef __AVX512VLINTRIN_H
29#define __AVX512VLINTRIN_H
30
31/* Integer compare */
32
33static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
34_mm_cmpeq_epi32_mask(__m128i __a, __m128i __b) {
35  return (__mmask8)__builtin_ia32_pcmpeqd128_mask((__v4si)__a, (__v4si)__b,
36                                                  (__mmask8)-1);
37}
38
39static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
40_mm_mask_cmpeq_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
41  return (__mmask8)__builtin_ia32_pcmpeqd128_mask((__v4si)__a, (__v4si)__b,
42                                                  __u);
43}
44
45static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
46_mm_cmpeq_epu32_mask(__m128i __a, __m128i __b) {
47  return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 0,
48                                                (__mmask8)-1);
49}
50
51static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
52_mm_mask_cmpeq_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
53  return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 0,
54                                                __u);
55}
56
57static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
58_mm256_cmpeq_epi32_mask(__m256i __a, __m256i __b) {
59  return (__mmask8)__builtin_ia32_pcmpeqd256_mask((__v8si)__a, (__v8si)__b,
60                                                  (__mmask8)-1);
61}
62
63static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
64_mm256_mask_cmpeq_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
65  return (__mmask8)__builtin_ia32_pcmpeqd256_mask((__v8si)__a, (__v8si)__b,
66                                                  __u);
67}
68
69static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
70_mm256_cmpeq_epu32_mask(__m256i __a, __m256i __b) {
71  return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 0,
72                                                (__mmask8)-1);
73}
74
75static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
76_mm256_mask_cmpeq_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
77  return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 0,
78                                                __u);
79}
80
81static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
82_mm_cmpeq_epi64_mask(__m128i __a, __m128i __b) {
83  return (__mmask8)__builtin_ia32_pcmpeqq128_mask((__v2di)__a, (__v2di)__b,
84                                                  (__mmask8)-1);
85}
86
87static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
88_mm_mask_cmpeq_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
89  return (__mmask8)__builtin_ia32_pcmpeqq128_mask((__v2di)__a, (__v2di)__b,
90                                                  __u);
91}
92
93static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
94_mm_cmpeq_epu64_mask(__m128i __a, __m128i __b) {
95  return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 0,
96                                                (__mmask8)-1);
97}
98
99static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
100_mm_mask_cmpeq_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
101  return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 0,
102                                                __u);
103}
104
105static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
106_mm256_cmpeq_epi64_mask(__m256i __a, __m256i __b) {
107  return (__mmask8)__builtin_ia32_pcmpeqq256_mask((__v4di)__a, (__v4di)__b,
108                                                  (__mmask8)-1);
109}
110
111static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
112_mm256_mask_cmpeq_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
113  return (__mmask8)__builtin_ia32_pcmpeqq256_mask((__v4di)__a, (__v4di)__b,
114                                                  __u);
115}
116
117static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
118_mm256_cmpeq_epu64_mask(__m256i __a, __m256i __b) {
119  return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 0,
120                                                (__mmask8)-1);
121}
122
123static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
124_mm256_mask_cmpeq_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
125  return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 0,
126                                                __u);
127}
128
129
130static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
131_mm_cmpge_epi32_mask(__m128i __a, __m128i __b) {
132  return (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)__a, (__v4si)__b, 5,
133                                               (__mmask8)-1);
134}
135
136static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
137_mm_mask_cmpge_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
138  return (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)__a, (__v4si)__b, 5,
139                                               __u);
140}
141
142static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
143_mm_cmpge_epu32_mask(__m128i __a, __m128i __b) {
144  return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 5,
145                                                (__mmask8)-1);
146}
147
148static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
149_mm_mask_cmpge_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
150  return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 5,
151                                                __u);
152}
153
154static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
155_mm256_cmpge_epi32_mask(__m256i __a, __m256i __b) {
156  return (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)__a, (__v8si)__b, 5,
157                                               (__mmask8)-1);
158}
159
160static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
161_mm256_mask_cmpge_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
162  return (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)__a, (__v8si)__b, 5,
163                                               __u);
164}
165
166static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
167_mm256_cmpge_epu32_mask(__m256i __a, __m256i __b) {
168  return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 5,
169                                                (__mmask8)-1);
170}
171
172static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
173_mm256_mask_cmpge_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
174  return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 5,
175                                                __u);
176}
177
178static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
179_mm_cmpge_epi64_mask(__m128i __a, __m128i __b) {
180  return (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)__a, (__v2di)__b, 5,
181                                               (__mmask8)-1);
182}
183
184static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
185_mm_mask_cmpge_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
186  return (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)__a, (__v2di)__b, 5,
187                                               __u);
188}
189
190static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
191_mm_cmpge_epu64_mask(__m128i __a, __m128i __b) {
192  return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 5,
193                                                (__mmask8)-1);
194}
195
196static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
197_mm_mask_cmpge_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
198  return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 5,
199                                                __u);
200}
201
202static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
203_mm256_cmpge_epi64_mask(__m256i __a, __m256i __b) {
204  return (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)__a, (__v4di)__b, 5,
205                                               (__mmask8)-1);
206}
207
208static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
209_mm256_mask_cmpge_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
210  return (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)__a, (__v4di)__b, 5,
211                                               __u);
212}
213
214static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
215_mm256_cmpge_epu64_mask(__m256i __a, __m256i __b) {
216  return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 5,
217                                                (__mmask8)-1);
218}
219
220static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
221_mm256_mask_cmpge_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
222  return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 5,
223                                                __u);
224}
225
226
227
228
229static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
230_mm_cmpgt_epi32_mask(__m128i __a, __m128i __b) {
231  return (__mmask8)__builtin_ia32_pcmpgtd128_mask((__v4si)__a, (__v4si)__b,
232                                                  (__mmask8)-1);
233}
234
235static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
236_mm_mask_cmpgt_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
237  return (__mmask8)__builtin_ia32_pcmpgtd128_mask((__v4si)__a, (__v4si)__b,
238                                                  __u);
239}
240
241static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
242_mm_cmpgt_epu32_mask(__m128i __a, __m128i __b) {
243  return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 6,
244                                                (__mmask8)-1);
245}
246
247static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
248_mm_mask_cmpgt_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
249  return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 6,
250                                                __u);
251}
252
253static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
254_mm256_cmpgt_epi32_mask(__m256i __a, __m256i __b) {
255  return (__mmask8)__builtin_ia32_pcmpgtd256_mask((__v8si)__a, (__v8si)__b,
256                                                  (__mmask8)-1);
257}
258
259static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
260_mm256_mask_cmpgt_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
261  return (__mmask8)__builtin_ia32_pcmpgtd256_mask((__v8si)__a, (__v8si)__b,
262                                                  __u);
263}
264
265static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
266_mm256_cmpgt_epu32_mask(__m256i __a, __m256i __b) {
267  return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 6,
268                                                (__mmask8)-1);
269}
270
271static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
272_mm256_mask_cmpgt_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
273  return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 6,
274                                                __u);
275}
276
277static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
278_mm_cmpgt_epi64_mask(__m128i __a, __m128i __b) {
279  return (__mmask8)__builtin_ia32_pcmpgtq128_mask((__v2di)__a, (__v2di)__b,
280                                                  (__mmask8)-1);
281}
282
283static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
284_mm_mask_cmpgt_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
285  return (__mmask8)__builtin_ia32_pcmpgtq128_mask((__v2di)__a, (__v2di)__b,
286                                                  __u);
287}
288
289static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
290_mm_cmpgt_epu64_mask(__m128i __a, __m128i __b) {
291  return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 6,
292                                                (__mmask8)-1);
293}
294
295static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
296_mm_mask_cmpgt_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
297  return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 6,
298                                                __u);
299}
300
301static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
302_mm256_cmpgt_epi64_mask(__m256i __a, __m256i __b) {
303  return (__mmask8)__builtin_ia32_pcmpgtq256_mask((__v4di)__a, (__v4di)__b,
304                                                  (__mmask8)-1);
305}
306
307static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
308_mm256_mask_cmpgt_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
309  return (__mmask8)__builtin_ia32_pcmpgtq256_mask((__v4di)__a, (__v4di)__b,
310                                                  __u);
311}
312
313static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
314_mm256_cmpgt_epu64_mask(__m256i __a, __m256i __b) {
315  return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 6,
316                                                (__mmask8)-1);
317}
318
319static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
320_mm256_mask_cmpgt_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
321  return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 6,
322                                                __u);
323}
324
325static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
326_mm_cmple_epi32_mask(__m128i __a, __m128i __b) {
327  return (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)__a, (__v4si)__b, 2,
328                                               (__mmask8)-1);
329}
330
331static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
332_mm_mask_cmple_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
333  return (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)__a, (__v4si)__b, 2,
334                                               __u);
335}
336
337static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
338_mm_cmple_epu32_mask(__m128i __a, __m128i __b) {
339  return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 2,
340                                                (__mmask8)-1);
341}
342
343static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
344_mm_mask_cmple_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
345  return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 2,
346                                                __u);
347}
348
349static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
350_mm256_cmple_epi32_mask(__m256i __a, __m256i __b) {
351  return (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)__a, (__v8si)__b, 2,
352                                               (__mmask8)-1);
353}
354
355static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
356_mm256_mask_cmple_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
357  return (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)__a, (__v8si)__b, 2,
358                                               __u);
359}
360
361static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
362_mm256_cmple_epu32_mask(__m256i __a, __m256i __b) {
363  return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 2,
364                                                (__mmask8)-1);
365}
366
367static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
368_mm256_mask_cmple_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
369  return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 2,
370                                                __u);
371}
372
373static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
374_mm_cmple_epi64_mask(__m128i __a, __m128i __b) {
375  return (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)__a, (__v2di)__b, 2,
376                                               (__mmask8)-1);
377}
378
379static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
380_mm_mask_cmple_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
381  return (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)__a, (__v2di)__b, 2,
382                                               __u);
383}
384
385static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
386_mm_cmple_epu64_mask(__m128i __a, __m128i __b) {
387  return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 2,
388                                                (__mmask8)-1);
389}
390
391static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
392_mm_mask_cmple_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
393  return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 2,
394                                                __u);
395}
396
397static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
398_mm256_cmple_epi64_mask(__m256i __a, __m256i __b) {
399  return (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)__a, (__v4di)__b, 2,
400                                               (__mmask8)-1);
401}
402
403static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
404_mm256_mask_cmple_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
405  return (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)__a, (__v4di)__b, 2,
406                                               __u);
407}
408
409static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
410_mm256_cmple_epu64_mask(__m256i __a, __m256i __b) {
411  return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 2,
412                                                (__mmask8)-1);
413}
414
415static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
416_mm256_mask_cmple_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
417  return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 2,
418                                                __u);
419}
420
421static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
422_mm_cmplt_epi32_mask(__m128i __a, __m128i __b) {
423  return (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)__a, (__v4si)__b, 1,
424                                               (__mmask8)-1);
425}
426
427static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
428_mm_mask_cmplt_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
429  return (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)__a, (__v4si)__b, 1,
430                                               __u);
431}
432
433static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
434_mm_cmplt_epu32_mask(__m128i __a, __m128i __b) {
435  return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 1,
436                                                (__mmask8)-1);
437}
438
439static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
440_mm_mask_cmplt_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
441  return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 1,
442                                                __u);
443}
444
445static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
446_mm256_cmplt_epi32_mask(__m256i __a, __m256i __b) {
447  return (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)__a, (__v8si)__b, 1,
448                                               (__mmask8)-1);
449}
450
451static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
452_mm256_mask_cmplt_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
453  return (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)__a, (__v8si)__b, 1,
454                                               __u);
455}
456
457static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
458_mm256_cmplt_epu32_mask(__m256i __a, __m256i __b) {
459  return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 1,
460                                                (__mmask8)-1);
461}
462
463static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
464_mm256_mask_cmplt_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
465  return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 1,
466                                                __u);
467}
468
469static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
470_mm_cmplt_epi64_mask(__m128i __a, __m128i __b) {
471  return (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)__a, (__v2di)__b, 1,
472                                               (__mmask8)-1);
473}
474
475static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
476_mm_mask_cmplt_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
477  return (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)__a, (__v2di)__b, 1,
478                                               __u);
479}
480
481static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
482_mm_cmplt_epu64_mask(__m128i __a, __m128i __b) {
483  return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 1,
484                                                (__mmask8)-1);
485}
486
487static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
488_mm_mask_cmplt_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
489  return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 1,
490                                                __u);
491}
492
493static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
494_mm256_cmplt_epi64_mask(__m256i __a, __m256i __b) {
495  return (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)__a, (__v4di)__b, 1,
496                                               (__mmask8)-1);
497}
498
499static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
500_mm256_mask_cmplt_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
501  return (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)__a, (__v4di)__b, 1,
502                                               __u);
503}
504
505static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
506_mm256_cmplt_epu64_mask(__m256i __a, __m256i __b) {
507  return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 1,
508                                                (__mmask8)-1);
509}
510
511static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
512_mm256_mask_cmplt_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
513  return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 1,
514                                                __u);
515}
516
517static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
518_mm_cmpneq_epi32_mask(__m128i __a, __m128i __b) {
519  return (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)__a, (__v4si)__b, 4,
520                                               (__mmask8)-1);
521}
522
523static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
524_mm_mask_cmpneq_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
525  return (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)__a, (__v4si)__b, 4,
526                                               __u);
527}
528
529static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
530_mm_cmpneq_epu32_mask(__m128i __a, __m128i __b) {
531  return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 4,
532                                                (__mmask8)-1);
533}
534
535static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
536_mm_mask_cmpneq_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
537  return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 4,
538                                                __u);
539}
540
541static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
542_mm256_cmpneq_epi32_mask(__m256i __a, __m256i __b) {
543  return (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)__a, (__v8si)__b, 4,
544                                               (__mmask8)-1);
545}
546
547static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
548_mm256_mask_cmpneq_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
549  return (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)__a, (__v8si)__b, 4,
550                                               __u);
551}
552
553static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
554_mm256_cmpneq_epu32_mask(__m256i __a, __m256i __b) {
555  return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 4,
556                                                (__mmask8)-1);
557}
558
559static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
560_mm256_mask_cmpneq_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
561  return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 4,
562                                                __u);
563}
564
565static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
566_mm_cmpneq_epi64_mask(__m128i __a, __m128i __b) {
567  return (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)__a, (__v2di)__b, 4,
568                                               (__mmask8)-1);
569}
570
571static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
572_mm_mask_cmpneq_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
573  return (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)__a, (__v2di)__b, 4,
574                                               __u);
575}
576
577static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
578_mm_cmpneq_epu64_mask(__m128i __a, __m128i __b) {
579  return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 4,
580                                                (__mmask8)-1);
581}
582
583static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
584_mm_mask_cmpneq_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
585  return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 4,
586                                                __u);
587}
588
589static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
590_mm256_cmpneq_epi64_mask(__m256i __a, __m256i __b) {
591  return (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)__a, (__v4di)__b, 4,
592                                               (__mmask8)-1);
593}
594
595static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
596_mm256_mask_cmpneq_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
597  return (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)__a, (__v4di)__b, 4,
598                                               __u);
599}
600
601static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
602_mm256_cmpneq_epu64_mask(__m256i __a, __m256i __b) {
603  return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 4,
604                                                (__mmask8)-1);
605}
606
607static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
608_mm256_mask_cmpneq_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
609  return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 4,
610                                                __u);
611}
612
613#define _mm_cmp_epi32_mask(a, b, p) __extension__ ({ \
614  (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)(__m128i)(a), \
615                                        (__v4si)(__m128i)(b), \
616                                        (p), (__mmask8)-1); })
617
618#define _mm_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
619  (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)(__m128i)(a), \
620                                        (__v4si)(__m128i)(b), \
621                                        (p), (__mmask8)(m)); })
622
623#define _mm_cmp_epu32_mask(a, b, p) __extension__ ({ \
624  (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)(__m128i)(a), \
625                                         (__v4si)(__m128i)(b), \
626                                         (p), (__mmask8)-1); })
627
628#define _mm_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
629  (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)(__m128i)(a), \
630                                         (__v4si)(__m128i)(b), \
631                                         (p), (__mmask8)(m)); })
632
633#define _mm256_cmp_epi32_mask(a, b, p) __extension__ ({ \
634  (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)(__m256i)(a), \
635                                        (__v8si)(__m256i)(b), \
636                                        (p), (__mmask8)-1); })
637
638#define _mm256_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
639  (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)(__m256i)(a), \
640                                        (__v8si)(__m256i)(b), \
641                                        (p), (__mmask8)(m)); })
642
643#define _mm256_cmp_epu32_mask(a, b, p) __extension__ ({ \
644  (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)(__m256i)(a), \
645                                         (__v8si)(__m256i)(b), \
646                                         (p), (__mmask8)-1); })
647
648#define _mm256_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
649  (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)(__m256i)(a), \
650                                         (__v8si)(__m256i)(b), \
651                                         (p), (__mmask8)(m)); })
652
653#define _mm_cmp_epi64_mask(a, b, p) __extension__ ({ \
654  (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)(__m128i)(a), \
655                                        (__v2di)(__m128i)(b), \
656                                        (p), (__mmask8)-1); })
657
658#define _mm_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
659  (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)(__m128i)(a), \
660                                        (__v2di)(__m128i)(b), \
661                                        (p), (__mmask8)(m)); })
662
663#define _mm_cmp_epu64_mask(a, b, p) __extension__ ({ \
664  (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)(__m128i)(a), \
665                                         (__v2di)(__m128i)(b), \
666                                         (p), (__mmask8)-1); })
667
668#define _mm_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
669  (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)(__m128i)(a), \
670                                         (__v2di)(__m128i)(b), \
671                                         (p), (__mmask8)(m)); })
672
673#define _mm256_cmp_epi64_mask(a, b, p) __extension__ ({ \
674  (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)(__m256i)(a), \
675                                        (__v4di)(__m256i)(b), \
676                                        (p), (__mmask8)-1); })
677
678#define _mm256_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
679  (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)(__m256i)(a), \
680                                        (__v4di)(__m256i)(b), \
681                                        (p), (__mmask8)(m)); })
682
683#define _mm256_cmp_epu64_mask(a, b, p) __extension__ ({ \
684  (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)(__m256i)(a), \
685                                         (__v4di)(__m256i)(b), \
686                                         (p), (__mmask8)-1); })
687
688#define _mm256_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
689  (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)(__m256i)(a), \
690                                         (__v4di)(__m256i)(b), \
691                                         (p), (__mmask8)(m)); })
692
693#endif /* __AVX512VLINTRIN_H */
694