blob: b460992a2a6a87aa71546e8cb2f855c6bf456dd2 [file] [log] [blame]
Stephen Hines176edba2014-12-01 14:53:08 -08001/*===---- 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
Stephen Hines0e2c34f2015-03-23 12:09:02 -070045static __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}
Stephen Hines176edba2014-12-01 14:53:08 -080056
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__))
Stephen Hines0e2c34f2015-03-23 12:09:02 -070070_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__))
Stephen Hines176edba2014-12-01 14:53:08 -080082_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
Stephen Hines0e2c34f2015-03-23 12:09:02 -070093static __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}
Stephen Hines176edba2014-12-01 14:53:08 -0800104
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
Stephen Hines0e2c34f2015-03-23 12:09:02 -0700117static __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
Stephen Hines176edba2014-12-01 14:53:08 -0800693#endif /* __AVX512VLINTRIN_H */