blob: 9de0cf418b78c6a476d3b69a2d2621d51bc8c5c6 [file] [log] [blame]
Robert Khasanovb9f3a912014-10-08 17:18:13 +00001/*===---- 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
Craig Topper2f25a5a2015-01-26 08:11:49 +000045static __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}
Robert Khasanovb9f3a912014-10-08 17:18:13 +000056
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__))
Craig Topper2f25a5a2015-01-26 08:11:49 +000070_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__))
Robert Khasanovb9f3a912014-10-08 17:18:13 +000082_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
Craig Topper2f25a5a2015-01-26 08:11:49 +000093static __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}
Robert Khasanovb9f3a912014-10-08 17:18:13 +0000104
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
Craig Topper2f25a5a2015-01-26 08:11:49 +0000117static __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
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000613static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
614_mm256_mask_add_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
615 __m256i __B)
616{
617 return (__m256i) __builtin_ia32_paddd256_mask ((__v8si) __A,
618 (__v8si) __B,
619 (__v8si) __W,
620 (__mmask8) __U);
621}
622
623static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
624_mm256_maskz_add_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
625{
626 return (__m256i) __builtin_ia32_paddd256_mask ((__v8si) __A,
627 (__v8si) __B,
628 (__v8si)
629 _mm256_setzero_si256 (),
630 (__mmask8) __U);
631}
632
633static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
634_mm256_mask_add_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
635 __m256i __B)
636{
637 return (__m256i) __builtin_ia32_paddq256_mask ((__v4di) __A,
638 (__v4di) __B,
639 (__v4di) __W,
640 (__mmask8) __U);
641}
642
643static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
644_mm256_maskz_add_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
645{
646 return (__m256i) __builtin_ia32_paddq256_mask ((__v4di) __A,
647 (__v4di) __B,
648 (__v4di)
649 _mm256_setzero_si256 (),
650 (__mmask8) __U);
651}
652
653static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
654_mm256_mask_sub_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
655 __m256i __B)
656{
657 return (__m256i) __builtin_ia32_psubd256_mask ((__v8si) __A,
658 (__v8si) __B,
659 (__v8si) __W,
660 (__mmask8) __U);
661}
662
663static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
664_mm256_maskz_sub_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
665{
666 return (__m256i) __builtin_ia32_psubd256_mask ((__v8si) __A,
667 (__v8si) __B,
668 (__v8si)
669 _mm256_setzero_si256 (),
670 (__mmask8) __U);
671}
672
673static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
674_mm256_mask_sub_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
675 __m256i __B)
676{
677 return (__m256i) __builtin_ia32_psubq256_mask ((__v4di) __A,
678 (__v4di) __B,
679 (__v4di) __W,
680 (__mmask8) __U);
681}
682
683static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
684_mm256_maskz_sub_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
685{
686 return (__m256i) __builtin_ia32_psubq256_mask ((__v4di) __A,
687 (__v4di) __B,
688 (__v4di)
689 _mm256_setzero_si256 (),
690 (__mmask8) __U);
691}
692
693static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
694_mm_mask_add_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
695 __m128i __B)
696{
697 return (__m128i) __builtin_ia32_paddd128_mask ((__v4si) __A,
698 (__v4si) __B,
699 (__v4si) __W,
700 (__mmask8) __U);
701}
702
703static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
704_mm_maskz_add_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
705{
706 return (__m128i) __builtin_ia32_paddd128_mask ((__v4si) __A,
707 (__v4si) __B,
708 (__v4si)
709 _mm_setzero_si128 (),
710 (__mmask8) __U);
711}
712
713static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
714_mm_mask_add_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
715 __m128i __B)
716{
717 return (__m128i) __builtin_ia32_paddq128_mask ((__v2di) __A,
718 (__v2di) __B,
719 (__v2di) __W,
720 (__mmask8) __U);
721}
722
723static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
724_mm_maskz_add_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
725{
726 return (__m128i) __builtin_ia32_paddq128_mask ((__v2di) __A,
727 (__v2di) __B,
728 (__v2di)
729 _mm_setzero_si128 (),
730 (__mmask8) __U);
731}
732
733static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
734_mm_mask_sub_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
735 __m128i __B)
736{
737 return (__m128i) __builtin_ia32_psubd128_mask ((__v4si) __A,
738 (__v4si) __B,
739 (__v4si) __W,
740 (__mmask8) __U);
741}
742
743static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
744_mm_maskz_sub_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
745{
746 return (__m128i) __builtin_ia32_psubd128_mask ((__v4si) __A,
747 (__v4si) __B,
748 (__v4si)
749 _mm_setzero_si128 (),
750 (__mmask8) __U);
751}
752
753static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
754_mm_mask_sub_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
755 __m128i __B)
756{
757 return (__m128i) __builtin_ia32_psubq128_mask ((__v2di) __A,
758 (__v2di) __B,
759 (__v2di) __W,
760 (__mmask8) __U);
761}
762
763static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
764_mm_maskz_sub_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
765{
766 return (__m128i) __builtin_ia32_psubq128_mask ((__v2di) __A,
767 (__v2di) __B,
768 (__v2di)
769 _mm_setzero_si128 (),
770 (__mmask8) __U);
771}
772
773static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
774_mm256_mask_mul_epi32 (__m256i __W, __mmask8 __M, __m256i __X,
775 __m256i __Y)
776{
777 return (__m256i) __builtin_ia32_pmuldq256_mask ((__v8si) __X,
778 (__v8si) __Y,
779 (__v4di) __W, __M);
780}
781
782static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
783_mm256_maskz_mul_epi32 (__mmask8 __M, __m256i __X, __m256i __Y)
784{
785 return (__m256i) __builtin_ia32_pmuldq256_mask ((__v8si) __X,
786 (__v8si) __Y,
787 (__v4di)
788 _mm256_setzero_si256 (),
789 __M);
790}
791
792static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
793_mm_mask_mul_epi32 (__m128i __W, __mmask8 __M, __m128i __X,
794 __m128i __Y)
795{
796 return (__m128i) __builtin_ia32_pmuldq128_mask ((__v4si) __X,
797 (__v4si) __Y,
798 (__v2di) __W, __M);
799}
800
801static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
802_mm_maskz_mul_epi32 (__mmask8 __M, __m128i __X, __m128i __Y)
803{
804 return (__m128i) __builtin_ia32_pmuldq128_mask ((__v4si) __X,
805 (__v4si) __Y,
806 (__v2di)
807 _mm_setzero_si128 (),
808 __M);
809}
810
811static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
812_mm256_mask_mul_epu32 (__m256i __W, __mmask8 __M, __m256i __X,
813 __m256i __Y)
814{
815 return (__m256i) __builtin_ia32_pmuludq256_mask ((__v8si) __X,
816 (__v8si) __Y,
817 (__v4di) __W, __M);
818}
819
820static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
821_mm256_maskz_mul_epu32 (__mmask8 __M, __m256i __X, __m256i __Y)
822{
823 return (__m256i) __builtin_ia32_pmuludq256_mask ((__v8si) __X,
824 (__v8si) __Y,
825 (__v4di)
826 _mm256_setzero_si256 (),
827 __M);
828}
829
830static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
831_mm_mask_mul_epu32 (__m128i __W, __mmask8 __M, __m128i __X,
832 __m128i __Y)
833{
834 return (__m128i) __builtin_ia32_pmuludq128_mask ((__v4si) __X,
835 (__v4si) __Y,
836 (__v2di) __W, __M);
837}
838
839static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
840_mm_maskz_mul_epu32 (__mmask8 __M, __m128i __X, __m128i __Y)
841{
842 return (__m128i) __builtin_ia32_pmuludq128_mask ((__v4si) __X,
843 (__v4si) __Y,
844 (__v2di)
845 _mm_setzero_si128 (),
846 __M);
847}
848
849static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
850_mm256_maskz_mullo_epi32 (__mmask8 __M, __m256i __A, __m256i __B)
851{
852 return (__m256i) __builtin_ia32_pmulld256_mask ((__v8si) __A,
853 (__v8si) __B,
854 (__v8si)
855 _mm256_setzero_si256 (),
856 __M);
857}
858
859static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
860_mm256_mask_mullo_epi32 (__m256i __W, __mmask8 __M, __m256i __A,
861 __m256i __B)
862{
863 return (__m256i) __builtin_ia32_pmulld256_mask ((__v8si) __A,
864 (__v8si) __B,
865 (__v8si) __W, __M);
866}
867
868static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
869_mm_maskz_mullo_epi32 (__mmask8 __M, __m128i __A, __m128i __B)
870{
871 return (__m128i) __builtin_ia32_pmulld128_mask ((__v4si) __A,
872 (__v4si) __B,
873 (__v4si)
874 _mm_setzero_si128 (),
875 __M);
876}
877
878static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
879_mm_mask_mullo_epi32 (__m128i __W, __mmask16 __M, __m128i __A,
880 __m128i __B)
881{
882 return (__m128i) __builtin_ia32_pmulld128_mask ((__v4si) __A,
883 (__v4si) __B,
884 (__v4si) __W, __M);
885}
886
887static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
888_mm256_mask_and_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
889 __m256i __B)
890{
891 return (__m256i) __builtin_ia32_pandd256_mask ((__v8si) __A,
892 (__v8si) __B,
893 (__v8si) __W,
894 (__mmask8) __U);
895}
896
897static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
898_mm256_maskz_and_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
899{
900 return (__m256i) __builtin_ia32_pandd256_mask ((__v8si) __A,
901 (__v8si) __B,
902 (__v8si)
903 _mm256_setzero_si256 (),
904 (__mmask8) __U);
905}
906
907static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
908_mm_mask_and_epi32 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
909{
910 return (__m128i) __builtin_ia32_pandd128_mask ((__v4si) __A,
911 (__v4si) __B,
912 (__v4si) __W,
913 (__mmask8) __U);
914}
915
916static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
917_mm_maskz_and_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
918{
919 return (__m128i) __builtin_ia32_pandd128_mask ((__v4si) __A,
920 (__v4si) __B,
921 (__v4si)
922 _mm_setzero_si128 (),
923 (__mmask8) __U);
924}
925
926static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
927_mm256_mask_andnot_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
928 __m256i __B)
929{
930 return (__m256i) __builtin_ia32_pandnd256_mask ((__v8si) __A,
931 (__v8si) __B,
932 (__v8si) __W,
933 (__mmask8) __U);
934}
935
936static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
937_mm256_maskz_andnot_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
938{
939 return (__m256i) __builtin_ia32_pandnd256_mask ((__v8si) __A,
940 (__v8si) __B,
941 (__v8si)
942 _mm256_setzero_si256 (),
943 (__mmask8) __U);
944}
945
946static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
947_mm_mask_andnot_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
948 __m128i __B)
949{
950 return (__m128i) __builtin_ia32_pandnd128_mask ((__v4si) __A,
951 (__v4si) __B,
952 (__v4si) __W,
953 (__mmask8) __U);
954}
955
956static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
957_mm_maskz_andnot_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
958{
959 return (__m128i) __builtin_ia32_pandnd128_mask ((__v4si) __A,
960 (__v4si) __B,
961 (__v4si)
962 _mm_setzero_si128 (),
963 (__mmask8) __U);
964}
965
966static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
967_mm256_mask_or_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
968 __m256i __B)
969{
970 return (__m256i) __builtin_ia32_pord256_mask ((__v8si) __A,
971 (__v8si) __B,
972 (__v8si) __W,
973 (__mmask8) __U);
974}
975
976static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
977_mm256_maskz_or_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
978{
979 return (__m256i) __builtin_ia32_pord256_mask ((__v8si) __A,
980 (__v8si) __B,
981 (__v8si)
982 _mm256_setzero_si256 (),
983 (__mmask8) __U);
984}
985
986static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
987_mm_mask_or_epi32 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
988{
989 return (__m128i) __builtin_ia32_pord128_mask ((__v4si) __A,
990 (__v4si) __B,
991 (__v4si) __W,
992 (__mmask8) __U);
993}
994
995static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
996_mm_maskz_or_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
997{
998 return (__m128i) __builtin_ia32_pord128_mask ((__v4si) __A,
999 (__v4si) __B,
1000 (__v4si)
1001 _mm_setzero_si128 (),
1002 (__mmask8) __U);
1003}
1004
1005static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
1006_mm256_mask_xor_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
1007 __m256i __B)
1008{
1009 return (__m256i) __builtin_ia32_pxord256_mask ((__v8si) __A,
1010 (__v8si) __B,
1011 (__v8si) __W,
1012 (__mmask8) __U);
1013}
1014
1015static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
1016_mm256_maskz_xor_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
1017{
1018 return (__m256i) __builtin_ia32_pxord256_mask ((__v8si) __A,
1019 (__v8si) __B,
1020 (__v8si)
1021 _mm256_setzero_si256 (),
1022 (__mmask8) __U);
1023}
1024
1025static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
1026_mm_mask_xor_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
1027 __m128i __B)
1028{
1029 return (__m128i) __builtin_ia32_pxord128_mask ((__v4si) __A,
1030 (__v4si) __B,
1031 (__v4si) __W,
1032 (__mmask8) __U);
1033}
1034
1035static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
1036_mm_maskz_xor_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
1037{
1038 return (__m128i) __builtin_ia32_pxord128_mask ((__v4si) __A,
1039 (__v4si) __B,
1040 (__v4si)
1041 _mm_setzero_si128 (),
1042 (__mmask8) __U);
1043}
1044
1045static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
1046_mm256_mask_and_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
1047 __m256i __B)
1048{
1049 return (__m256i) __builtin_ia32_pandq256_mask ((__v4di) __A,
1050 (__v4di) __B,
1051 (__v4di) __W, __U);
1052}
1053
1054static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
1055_mm256_maskz_and_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
1056{
1057 return (__m256i) __builtin_ia32_pandq256_mask ((__v4di) __A,
1058 (__v4di) __B,
1059 (__v4di)
1060 _mm256_setzero_pd (),
1061 __U);
1062}
1063
1064static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
1065_mm_mask_and_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
1066 __m128i __B)
1067{
1068 return (__m128i) __builtin_ia32_pandq128_mask ((__v2di) __A,
1069 (__v2di) __B,
1070 (__v2di) __W, __U);
1071}
1072
1073static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
1074_mm_maskz_and_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
1075{
1076 return (__m128i) __builtin_ia32_pandq128_mask ((__v2di) __A,
1077 (__v2di) __B,
1078 (__v2di)
1079 _mm_setzero_pd (),
1080 __U);
1081}
1082
1083static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
1084_mm256_mask_andnot_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
1085 __m256i __B)
1086{
1087 return (__m256i) __builtin_ia32_pandnq256_mask ((__v4di) __A,
1088 (__v4di) __B,
1089 (__v4di) __W, __U);
1090}
1091
1092static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
1093_mm256_maskz_andnot_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
1094{
1095 return (__m256i) __builtin_ia32_pandnq256_mask ((__v4di) __A,
1096 (__v4di) __B,
1097 (__v4di)
1098 _mm256_setzero_pd (),
1099 __U);
1100}
1101
1102static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
1103_mm_mask_andnot_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
1104 __m128i __B)
1105{
1106 return (__m128i) __builtin_ia32_pandnq128_mask ((__v2di) __A,
1107 (__v2di) __B,
1108 (__v2di) __W, __U);
1109}
1110
1111static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
1112_mm_maskz_andnot_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
1113{
1114 return (__m128i) __builtin_ia32_pandnq128_mask ((__v2di) __A,
1115 (__v2di) __B,
1116 (__v2di)
1117 _mm_setzero_pd (),
1118 __U);
1119}
1120
1121static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
1122_mm256_mask_or_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
1123 __m256i __B)
1124{
1125 return (__m256i) __builtin_ia32_porq256_mask ((__v4di) __A,
1126 (__v4di) __B,
1127 (__v4di) __W,
1128 (__mmask8) __U);
1129}
1130
1131static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
1132_mm256_maskz_or_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
1133{
1134 return (__m256i) __builtin_ia32_porq256_mask ((__v4di) __A,
1135 (__v4di) __B,
1136 (__v4di)
1137 _mm256_setzero_si256 (),
1138 (__mmask8) __U);
1139}
1140
1141static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
1142_mm_mask_or_epi64 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
1143{
1144 return (__m128i) __builtin_ia32_porq128_mask ((__v2di) __A,
1145 (__v2di) __B,
1146 (__v2di) __W,
1147 (__mmask8) __U);
1148}
1149
1150static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
1151_mm_maskz_or_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
1152{
1153 return (__m128i) __builtin_ia32_porq128_mask ((__v2di) __A,
1154 (__v2di) __B,
1155 (__v2di)
1156 _mm_setzero_si128 (),
1157 (__mmask8) __U);
1158}
1159
1160static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
1161_mm256_mask_xor_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
1162 __m256i __B)
1163{
1164 return (__m256i) __builtin_ia32_pxorq256_mask ((__v4di) __A,
1165 (__v4di) __B,
1166 (__v4di) __W,
1167 (__mmask8) __U);
1168}
1169
1170static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
1171_mm256_maskz_xor_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
1172{
1173 return (__m256i) __builtin_ia32_pxorq256_mask ((__v4di) __A,
1174 (__v4di) __B,
1175 (__v4di)
1176 _mm256_setzero_si256 (),
1177 (__mmask8) __U);
1178}
1179
1180static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
1181_mm_mask_xor_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
1182 __m128i __B)
1183{
1184 return (__m128i) __builtin_ia32_pxorq128_mask ((__v2di) __A,
1185 (__v2di) __B,
1186 (__v2di) __W,
1187 (__mmask8) __U);
1188}
1189
1190static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
1191_mm_maskz_xor_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
1192{
1193 return (__m128i) __builtin_ia32_pxorq128_mask ((__v2di) __A,
1194 (__v2di) __B,
1195 (__v2di)
1196 _mm_setzero_si128 (),
1197 (__mmask8) __U);
1198}
1199
Craig Topper2f25a5a2015-01-26 08:11:49 +00001200#define _mm_cmp_epi32_mask(a, b, p) __extension__ ({ \
1201 (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)(__m128i)(a), \
1202 (__v4si)(__m128i)(b), \
1203 (p), (__mmask8)-1); })
1204
1205#define _mm_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
1206 (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)(__m128i)(a), \
1207 (__v4si)(__m128i)(b), \
1208 (p), (__mmask8)(m)); })
1209
1210#define _mm_cmp_epu32_mask(a, b, p) __extension__ ({ \
1211 (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)(__m128i)(a), \
1212 (__v4si)(__m128i)(b), \
1213 (p), (__mmask8)-1); })
1214
1215#define _mm_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
1216 (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)(__m128i)(a), \
1217 (__v4si)(__m128i)(b), \
1218 (p), (__mmask8)(m)); })
1219
1220#define _mm256_cmp_epi32_mask(a, b, p) __extension__ ({ \
1221 (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)(__m256i)(a), \
1222 (__v8si)(__m256i)(b), \
1223 (p), (__mmask8)-1); })
1224
1225#define _mm256_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
1226 (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)(__m256i)(a), \
1227 (__v8si)(__m256i)(b), \
1228 (p), (__mmask8)(m)); })
1229
1230#define _mm256_cmp_epu32_mask(a, b, p) __extension__ ({ \
1231 (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)(__m256i)(a), \
1232 (__v8si)(__m256i)(b), \
1233 (p), (__mmask8)-1); })
1234
1235#define _mm256_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
1236 (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)(__m256i)(a), \
1237 (__v8si)(__m256i)(b), \
1238 (p), (__mmask8)(m)); })
1239
1240#define _mm_cmp_epi64_mask(a, b, p) __extension__ ({ \
1241 (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)(__m128i)(a), \
1242 (__v2di)(__m128i)(b), \
1243 (p), (__mmask8)-1); })
1244
1245#define _mm_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
1246 (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)(__m128i)(a), \
1247 (__v2di)(__m128i)(b), \
1248 (p), (__mmask8)(m)); })
1249
1250#define _mm_cmp_epu64_mask(a, b, p) __extension__ ({ \
1251 (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)(__m128i)(a), \
1252 (__v2di)(__m128i)(b), \
1253 (p), (__mmask8)-1); })
1254
1255#define _mm_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
1256 (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)(__m128i)(a), \
1257 (__v2di)(__m128i)(b), \
1258 (p), (__mmask8)(m)); })
1259
1260#define _mm256_cmp_epi64_mask(a, b, p) __extension__ ({ \
1261 (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)(__m256i)(a), \
1262 (__v4di)(__m256i)(b), \
1263 (p), (__mmask8)-1); })
1264
1265#define _mm256_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
1266 (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)(__m256i)(a), \
1267 (__v4di)(__m256i)(b), \
1268 (p), (__mmask8)(m)); })
1269
1270#define _mm256_cmp_epu64_mask(a, b, p) __extension__ ({ \
1271 (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)(__m256i)(a), \
1272 (__v4di)(__m256i)(b), \
1273 (p), (__mmask8)-1); })
1274
1275#define _mm256_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
1276 (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)(__m256i)(a), \
1277 (__v4di)(__m256i)(b), \
1278 (p), (__mmask8)(m)); })
1279
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +00001280#define _mm256_cmp_ps_mask(a, b, p) __extension__ ({ \
1281 (__mmask8)__builtin_ia32_cmpps256_mask((__v8sf)(__m256)(a), \
1282 (__v8sf)(__m256)(b), \
1283 (p), (__mmask8)-1); })
1284
1285#define _mm256_mask_cmp_ps_mask(m, a, b, p) __extension__ ({ \
1286 (__mmask8)__builtin_ia32_cmpps256_mask((__v8sf)(__m256)(a), \
1287 (__v8sf)(__m256)(b), \
1288 (p), (__mmask8)(m)); })
1289
1290#define _mm256_cmp_pd_mask(a, b, p) __extension__ ({ \
1291 (__mmask8)__builtin_ia32_cmppd256_mask((__v4df)(__m256)(a), \
1292 (__v4df)(__m256)(b), \
1293 (p), (__mmask8)-1); })
1294
1295#define _mm256_mask_cmp_pd_mask(m, a, b, p) __extension__ ({ \
1296 (__mmask8)__builtin_ia32_cmppd256_mask((__v4df)(__m256)(a), \
1297 (__v4df)(__m256)(b), \
1298 (p), (__mmask8)(m)); })
1299
1300#define _mm128_cmp_ps_mask(a, b, p) __extension__ ({ \
1301 (__mmask8)__builtin_ia32_cmpps128_mask((__v4sf)(__m128)(a), \
1302 (__v4sf)(__m128)(b), \
1303 (p), (__mmask8)-1); })
1304
1305#define _mm128_mask_cmp_ps_mask(m, a, b, p) __extension__ ({ \
1306 (__mmask8)__builtin_ia32_cmpps128_mask((__v4sf)(__m128)(a), \
1307 (__v4sf)(__m128)(b), \
1308 (p), (__mmask8)(m)); })
1309
1310#define _mm128_cmp_pd_mask(a, b, p) __extension__ ({ \
1311 (__mmask8)__builtin_ia32_cmppd128_mask((__v2df)(__m128)(a), \
1312 (__v2df)(__m128)(b), \
1313 (p), (__mmask8)-1); })
1314
1315#define _mm128_mask_cmp_pd_mask(m, a, b, p) __extension__ ({ \
1316 (__mmask8)__builtin_ia32_cmppd128_mask((__v2df)(__m128)(a), \
1317 (__v2df)(__m128)(b), \
1318 (p), (__mmask8)(m)); })
Robert Khasanovb9f3a912014-10-08 17:18:13 +00001319#endif /* __AVX512VLINTRIN_H */