]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/clang/lib/Headers/avx512vlintrin.h
Merge clang trunk r238337 from ^/vendor/clang/dist, resolve conflicts,
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / clang / lib / Headers / avx512vlintrin.h
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
33 static __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
39 static __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
45 static __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
51 static __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
57 static __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
63 static __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
69 static __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
75 static __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
81 static __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
87 static __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
93 static __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
99 static __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
105 static __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
111 static __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
117 static __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
123 static __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
130 static __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
136 static __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
142 static __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
148 static __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
154 static __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
160 static __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
166 static __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
172 static __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
178 static __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
184 static __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
190 static __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
196 static __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
202 static __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
208 static __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
214 static __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
220 static __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
229 static __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
235 static __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
241 static __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
247 static __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
253 static __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
259 static __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
265 static __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
271 static __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
277 static __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
283 static __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
289 static __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
295 static __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
301 static __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
307 static __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
313 static __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
319 static __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
325 static __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
331 static __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
337 static __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
343 static __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
349 static __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
355 static __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
361 static __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
367 static __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
373 static __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
379 static __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
385 static __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
391 static __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
397 static __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
403 static __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
409 static __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
415 static __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
421 static __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
427 static __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
433 static __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
439 static __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
445 static __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
451 static __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
457 static __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
463 static __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
469 static __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
475 static __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
481 static __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
487 static __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
493 static __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
499 static __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
505 static __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
511 static __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
517 static __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
523 static __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
529 static __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
535 static __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
541 static __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
547 static __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
553 static __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
559 static __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
565 static __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
571 static __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
577 static __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
583 static __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
589 static __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
595 static __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
601 static __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
607 static __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 static __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
623 static __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
633 static __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
643 static __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
653 static __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
663 static __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
673 static __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
683 static __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
693 static __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
703 static __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
713 static __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
723 static __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
733 static __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
743 static __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
753 static __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
763 static __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
773 static __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
782 static __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
792 static __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
801 static __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
811 static __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
820 static __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
830 static __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
839 static __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
849 static __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
859 static __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
868 static __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
878 static __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
887 static __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
897 static __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
907 static __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
916 static __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
926 static __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
936 static __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
946 static __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
956 static __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
966 static __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
976 static __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
986 static __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
995 static __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
1005 static __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
1015 static __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
1025 static __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
1035 static __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
1045 static __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
1054 static __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
1064 static __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
1073 static __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
1083 static __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
1092 static __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
1102 static __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
1111 static __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
1121 static __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
1131 static __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
1141 static __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
1150 static __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
1160 static __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
1170 static __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
1180 static __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
1190 static __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
1200 #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
1280 #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)); })
1319 #endif /* __AVX512VLINTRIN_H */