]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - lib/Headers/avx512vlbwintrin.h
Vendor import of clang trunk r238337:
[FreeBSD/FreeBSD.git] / lib / Headers / avx512vlbwintrin.h
1 /*===---- avx512vlbwintrin.h - AVX512VL and AVX512BW intrinsics ----------===
2  *
3  * Permission is hereby granted, free of charge, to any person obtaining a copy
4  * of this software and associated documentation files (the "Software"), to deal
5  * in the Software without restriction, including without limitation the rights
6  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7  * copies of the Software, and to permit persons to whom the Software is
8  * furnished to do so, subject to the following conditions:
9  *
10  * The above copyright notice and this permission notice shall be included in
11  * all copies or substantial portions of the Software.
12  *
13  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19  * THE SOFTWARE.
20  *
21  *===-----------------------------------------------------------------------===
22  */
23
24 #ifndef __IMMINTRIN_H
25 #error "Never use <avx512vlbwintrin.h> directly; include <immintrin.h> instead."
26 #endif
27
28 #ifndef __AVX512VLBWINTRIN_H
29 #define __AVX512VLBWINTRIN_H
30
31 /* Integer compare */
32
33 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
34 _mm_cmpeq_epi8_mask(__m128i __a, __m128i __b) {
35   return (__mmask16)__builtin_ia32_pcmpeqb128_mask((__v16qi)__a, (__v16qi)__b,
36                                                    (__mmask16)-1);
37 }
38
39 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
40 _mm_mask_cmpeq_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
41   return (__mmask16)__builtin_ia32_pcmpeqb128_mask((__v16qi)__a, (__v16qi)__b,
42                                                    __u);
43 }
44
45 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
46 _mm_cmpeq_epu8_mask(__m128i __a, __m128i __b) {
47   return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 0,
48                                                  (__mmask16)-1);
49 }
50
51 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
52 _mm_mask_cmpeq_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
53   return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 0,
54                                                  __u);
55 }
56
57 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
58 _mm256_cmpeq_epi8_mask(__m256i __a, __m256i __b) {
59   return (__mmask32)__builtin_ia32_pcmpeqb256_mask((__v32qi)__a, (__v32qi)__b,
60                                                    (__mmask32)-1);
61 }
62
63 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
64 _mm256_mask_cmpeq_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
65   return (__mmask32)__builtin_ia32_pcmpeqb256_mask((__v32qi)__a, (__v32qi)__b,
66                                                    __u);
67 }
68
69 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
70 _mm256_cmpeq_epu8_mask(__m256i __a, __m256i __b) {
71   return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 0,
72                                                  (__mmask32)-1);
73 }
74
75 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
76 _mm256_mask_cmpeq_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
77   return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 0,
78                                                  __u);
79 }
80
81 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
82 _mm_cmpeq_epi16_mask(__m128i __a, __m128i __b) {
83   return (__mmask8)__builtin_ia32_pcmpeqw128_mask((__v8hi)__a, (__v8hi)__b,
84                                                   (__mmask8)-1);
85 }
86
87 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
88 _mm_mask_cmpeq_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
89   return (__mmask8)__builtin_ia32_pcmpeqw128_mask((__v8hi)__a, (__v8hi)__b,
90                                                   __u);
91 }
92
93 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
94 _mm_cmpeq_epu16_mask(__m128i __a, __m128i __b) {
95   return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 0,
96                                                 (__mmask8)-1);
97 }
98
99 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
100 _mm_mask_cmpeq_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
101   return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 0,
102                                                 __u);
103 }
104
105 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
106 _mm256_cmpeq_epi16_mask(__m256i __a, __m256i __b) {
107   return (__mmask16)__builtin_ia32_pcmpeqw256_mask((__v16hi)__a, (__v16hi)__b,
108                                                    (__mmask16)-1);
109 }
110
111 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
112 _mm256_mask_cmpeq_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
113   return (__mmask16)__builtin_ia32_pcmpeqw256_mask((__v16hi)__a, (__v16hi)__b,
114                                                    __u);
115 }
116
117 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
118 _mm256_cmpeq_epu16_mask(__m256i __a, __m256i __b) {
119   return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 0,
120                                                  (__mmask16)-1);
121 }
122
123 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
124 _mm256_mask_cmpeq_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
125   return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 0,
126                                                  __u);
127 }
128
129 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
130 _mm_cmpge_epi8_mask(__m128i __a, __m128i __b) {
131   return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 5,
132                                                 (__mmask16)-1);
133 }
134
135 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
136 _mm_mask_cmpge_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
137   return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 5,
138                                                 __u);
139 }
140
141 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
142 _mm_cmpge_epu8_mask(__m128i __a, __m128i __b) {
143   return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 5,
144                                                  (__mmask16)-1);
145 }
146
147 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
148 _mm_mask_cmpge_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
149   return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 5,
150                                                  __u);
151 }
152
153 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
154 _mm256_cmpge_epi8_mask(__m256i __a, __m256i __b) {
155   return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 5,
156                                                 (__mmask32)-1);
157 }
158
159 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
160 _mm256_mask_cmpge_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
161   return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 5,
162                                                 __u);
163 }
164
165 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
166 _mm256_cmpge_epu8_mask(__m256i __a, __m256i __b) {
167   return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 5,
168                                                  (__mmask32)-1);
169 }
170
171 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
172 _mm256_mask_cmpge_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
173   return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 5,
174                                                  __u);
175 }
176
177 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
178 _mm_cmpge_epi16_mask(__m128i __a, __m128i __b) {
179   return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 5,
180                                                (__mmask8)-1);
181 }
182
183 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
184 _mm_mask_cmpge_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
185   return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 5,
186                                                __u);
187 }
188
189 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
190 _mm_cmpge_epu16_mask(__m128i __a, __m128i __b) {
191   return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 5,
192                                                 (__mmask8)-1);
193 }
194
195 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
196 _mm_mask_cmpge_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
197   return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 5,
198                                                 __u);
199 }
200
201 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
202 _mm256_cmpge_epi16_mask(__m256i __a, __m256i __b) {
203   return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 5,
204                                                 (__mmask16)-1);
205 }
206
207 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
208 _mm256_mask_cmpge_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
209   return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 5,
210                                                 __u);
211 }
212
213 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
214 _mm256_cmpge_epu16_mask(__m256i __a, __m256i __b) {
215   return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 5,
216                                                  (__mmask16)-1);
217 }
218
219 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
220 _mm256_mask_cmpge_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
221   return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 5,
222                                                  __u);
223 }
224
225 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
226 _mm_cmpgt_epi8_mask(__m128i __a, __m128i __b) {
227   return (__mmask16)__builtin_ia32_pcmpgtb128_mask((__v16qi)__a, (__v16qi)__b,
228                                                    (__mmask16)-1);
229 }
230
231 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
232 _mm_mask_cmpgt_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
233   return (__mmask16)__builtin_ia32_pcmpgtb128_mask((__v16qi)__a, (__v16qi)__b,
234                                                    __u);
235 }
236
237 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
238 _mm_cmpgt_epu8_mask(__m128i __a, __m128i __b) {
239   return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 6,
240                                                  (__mmask16)-1);
241 }
242
243 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
244 _mm_mask_cmpgt_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
245   return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 6,
246                                                  __u);
247 }
248
249 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
250 _mm256_cmpgt_epi8_mask(__m256i __a, __m256i __b) {
251   return (__mmask32)__builtin_ia32_pcmpgtb256_mask((__v32qi)__a, (__v32qi)__b,
252                                                    (__mmask32)-1);
253 }
254
255 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
256 _mm256_mask_cmpgt_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
257   return (__mmask32)__builtin_ia32_pcmpgtb256_mask((__v32qi)__a, (__v32qi)__b,
258                                                    __u);
259 }
260
261 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
262 _mm256_cmpgt_epu8_mask(__m256i __a, __m256i __b) {
263   return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 6,
264                                                  (__mmask32)-1);
265 }
266
267 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
268 _mm256_mask_cmpgt_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
269   return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 6,
270                                                  __u);
271 }
272
273 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
274 _mm_cmpgt_epi16_mask(__m128i __a, __m128i __b) {
275   return (__mmask8)__builtin_ia32_pcmpgtw128_mask((__v8hi)__a, (__v8hi)__b,
276                                                   (__mmask8)-1);
277 }
278
279 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
280 _mm_mask_cmpgt_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
281   return (__mmask8)__builtin_ia32_pcmpgtw128_mask((__v8hi)__a, (__v8hi)__b,
282                                                   __u);
283 }
284
285 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
286 _mm_cmpgt_epu16_mask(__m128i __a, __m128i __b) {
287   return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 6,
288                                                 (__mmask8)-1);
289 }
290
291 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
292 _mm_mask_cmpgt_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
293   return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 6,
294                                                 __u);
295 }
296
297 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
298 _mm256_cmpgt_epi16_mask(__m256i __a, __m256i __b) {
299   return (__mmask16)__builtin_ia32_pcmpgtw256_mask((__v16hi)__a, (__v16hi)__b,
300                                                    (__mmask16)-1);
301 }
302
303 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
304 _mm256_mask_cmpgt_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
305   return (__mmask16)__builtin_ia32_pcmpgtw256_mask((__v16hi)__a, (__v16hi)__b,
306                                                    __u);
307 }
308
309 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
310 _mm256_cmpgt_epu16_mask(__m256i __a, __m256i __b) {
311   return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 6,
312                                                  (__mmask16)-1);
313 }
314
315 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
316 _mm256_mask_cmpgt_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
317   return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 6,
318                                                  __u);
319 }
320
321 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
322 _mm_cmple_epi8_mask(__m128i __a, __m128i __b) {
323   return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 2,
324                                                 (__mmask16)-1);
325 }
326
327 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
328 _mm_mask_cmple_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
329   return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 2,
330                                                 __u);
331 }
332
333 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
334 _mm_cmple_epu8_mask(__m128i __a, __m128i __b) {
335   return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 2,
336                                                  (__mmask16)-1);
337 }
338
339 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
340 _mm_mask_cmple_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
341   return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 2,
342                                                  __u);
343 }
344
345 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
346 _mm256_cmple_epi8_mask(__m256i __a, __m256i __b) {
347   return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 2,
348                                                 (__mmask32)-1);
349 }
350
351 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
352 _mm256_mask_cmple_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
353   return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 2,
354                                                 __u);
355 }
356
357 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
358 _mm256_cmple_epu8_mask(__m256i __a, __m256i __b) {
359   return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 2,
360                                                  (__mmask32)-1);
361 }
362
363 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
364 _mm256_mask_cmple_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
365   return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 2,
366                                                  __u);
367 }
368
369 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
370 _mm_cmple_epi16_mask(__m128i __a, __m128i __b) {
371   return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 2,
372                                                (__mmask8)-1);
373 }
374
375 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
376 _mm_mask_cmple_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
377   return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 2,
378                                                __u);
379 }
380
381 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
382 _mm_cmple_epu16_mask(__m128i __a, __m128i __b) {
383   return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 2,
384                                                 (__mmask8)-1);
385 }
386
387 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
388 _mm_mask_cmple_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
389   return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 2,
390                                                 __u);
391 }
392
393 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
394 _mm256_cmple_epi16_mask(__m256i __a, __m256i __b) {
395   return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 2,
396                                                 (__mmask16)-1);
397 }
398
399 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
400 _mm256_mask_cmple_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
401   return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 2,
402                                                 __u);
403 }
404
405 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
406 _mm256_cmple_epu16_mask(__m256i __a, __m256i __b) {
407   return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 2,
408                                                  (__mmask16)-1);
409 }
410
411 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
412 _mm256_mask_cmple_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
413   return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 2,
414                                                  __u);
415 }
416
417 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
418 _mm_cmplt_epi8_mask(__m128i __a, __m128i __b) {
419   return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 1,
420                                                 (__mmask16)-1);
421 }
422
423 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
424 _mm_mask_cmplt_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
425   return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 1,
426                                                 __u);
427 }
428
429 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
430 _mm_cmplt_epu8_mask(__m128i __a, __m128i __b) {
431   return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 1,
432                                                  (__mmask16)-1);
433 }
434
435 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
436 _mm_mask_cmplt_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
437   return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 1,
438                                                  __u);
439 }
440
441 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
442 _mm256_cmplt_epi8_mask(__m256i __a, __m256i __b) {
443   return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 1,
444                                                 (__mmask32)-1);
445 }
446
447 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
448 _mm256_mask_cmplt_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
449   return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 1,
450                                                 __u);
451 }
452
453 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
454 _mm256_cmplt_epu8_mask(__m256i __a, __m256i __b) {
455   return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 1,
456                                                  (__mmask32)-1);
457 }
458
459 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
460 _mm256_mask_cmplt_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
461   return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 1,
462                                                  __u);
463 }
464
465 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
466 _mm_cmplt_epi16_mask(__m128i __a, __m128i __b) {
467   return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 1,
468                                                (__mmask8)-1);
469 }
470
471 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
472 _mm_mask_cmplt_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
473   return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 1,
474                                                __u);
475 }
476
477 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
478 _mm_cmplt_epu16_mask(__m128i __a, __m128i __b) {
479   return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 1,
480                                                 (__mmask8)-1);
481 }
482
483 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
484 _mm_mask_cmplt_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
485   return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 1,
486                                                 __u);
487 }
488
489 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
490 _mm256_cmplt_epi16_mask(__m256i __a, __m256i __b) {
491   return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 1,
492                                                 (__mmask16)-1);
493 }
494
495 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
496 _mm256_mask_cmplt_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
497   return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 1,
498                                                 __u);
499 }
500
501 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
502 _mm256_cmplt_epu16_mask(__m256i __a, __m256i __b) {
503   return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 1,
504                                                  (__mmask16)-1);
505 }
506
507 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
508 _mm256_mask_cmplt_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
509   return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 1,
510                                                  __u);
511 }
512
513 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
514 _mm_cmpneq_epi8_mask(__m128i __a, __m128i __b) {
515   return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 4,
516                                                 (__mmask16)-1);
517 }
518
519 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
520 _mm_mask_cmpneq_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
521   return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 4,
522                                                 __u);
523 }
524
525 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
526 _mm_cmpneq_epu8_mask(__m128i __a, __m128i __b) {
527   return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 4,
528                                                  (__mmask16)-1);
529 }
530
531 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
532 _mm_mask_cmpneq_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
533   return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 4,
534                                                  __u);
535 }
536
537 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
538 _mm256_cmpneq_epi8_mask(__m256i __a, __m256i __b) {
539   return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 4,
540                                                 (__mmask32)-1);
541 }
542
543 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
544 _mm256_mask_cmpneq_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
545   return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 4,
546                                                 __u);
547 }
548
549 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
550 _mm256_cmpneq_epu8_mask(__m256i __a, __m256i __b) {
551   return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 4,
552                                                  (__mmask32)-1);
553 }
554
555 static __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
556 _mm256_mask_cmpneq_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
557   return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 4,
558                                                  __u);
559 }
560
561 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
562 _mm_cmpneq_epi16_mask(__m128i __a, __m128i __b) {
563   return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 4,
564                                                (__mmask8)-1);
565 }
566
567 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
568 _mm_mask_cmpneq_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
569   return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 4,
570                                                __u);
571 }
572
573 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
574 _mm_cmpneq_epu16_mask(__m128i __a, __m128i __b) {
575   return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 4,
576                                                 (__mmask8)-1);
577 }
578
579 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
580 _mm_mask_cmpneq_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
581   return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 4,
582                                                 __u);
583 }
584
585 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
586 _mm256_cmpneq_epi16_mask(__m256i __a, __m256i __b) {
587   return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 4,
588                                                 (__mmask16)-1);
589 }
590
591 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
592 _mm256_mask_cmpneq_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
593   return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 4,
594                                                 __u);
595 }
596
597 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
598 _mm256_cmpneq_epu16_mask(__m256i __a, __m256i __b) {
599   return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 4,
600                                                  (__mmask16)-1);
601 }
602
603 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
604 _mm256_mask_cmpneq_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
605   return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 4,
606                                                  __u);
607 }
608
609 static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
610 _mm256_mask_add_epi8 (__m256i __W, __mmask32 __U, __m256i __A, __m256i __B){
611   return (__m256i) __builtin_ia32_paddb256_mask ((__v32qi) __A,
612              (__v32qi) __B,
613              (__v32qi) __W,
614              (__mmask32) __U);
615 }
616
617 static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
618 _mm256_maskz_add_epi8 (__mmask32 __U, __m256i __A, __m256i __B) {
619   return (__m256i) __builtin_ia32_paddb256_mask ((__v32qi) __A,
620              (__v32qi) __B,
621              (__v32qi)
622              _mm256_setzero_si256 (),
623              (__mmask32) __U);
624 }
625
626 static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
627 _mm256_mask_add_epi16 (__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
628   return (__m256i) __builtin_ia32_paddw256_mask ((__v16hi) __A,
629              (__v16hi) __B,
630              (__v16hi) __W,
631              (__mmask16) __U);
632 }
633
634 static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
635 _mm256_maskz_add_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
636   return (__m256i) __builtin_ia32_paddw256_mask ((__v16hi) __A,
637              (__v16hi) __B,
638              (__v16hi)
639              _mm256_setzero_si256 (),
640              (__mmask16) __U);
641 }
642
643 static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
644 _mm256_mask_sub_epi8 (__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
645   return (__m256i) __builtin_ia32_psubb256_mask ((__v32qi) __A,
646              (__v32qi) __B,
647              (__v32qi) __W,
648              (__mmask32) __U);
649 }
650
651 static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
652 _mm256_maskz_sub_epi8 (__mmask32 __U, __m256i __A, __m256i __B) {
653   return (__m256i) __builtin_ia32_psubb256_mask ((__v32qi) __A,
654              (__v32qi) __B,
655              (__v32qi)
656              _mm256_setzero_si256 (),
657              (__mmask32) __U);
658 }
659
660 static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
661 _mm256_mask_sub_epi16 (__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
662   return (__m256i) __builtin_ia32_psubw256_mask ((__v16hi) __A,
663              (__v16hi) __B,
664              (__v16hi) __W,
665              (__mmask16) __U);
666 }
667
668 static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
669 _mm256_maskz_sub_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
670   return (__m256i) __builtin_ia32_psubw256_mask ((__v16hi) __A,
671              (__v16hi) __B,
672              (__v16hi)
673              _mm256_setzero_si256 (),
674              (__mmask16) __U);
675 }
676 static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
677 _mm_mask_add_epi8 (__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
678   return (__m128i) __builtin_ia32_paddb128_mask ((__v16qi) __A,
679              (__v16qi) __B,
680              (__v16qi) __W,
681              (__mmask16) __U);
682 }
683
684 static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
685 _mm_maskz_add_epi8 (__mmask16 __U, __m128i __A, __m128i __B) {
686   return (__m128i) __builtin_ia32_paddb128_mask ((__v16qi) __A,
687              (__v16qi) __B,
688              (__v16qi)
689              _mm_setzero_si128 (),
690              (__mmask16) __U);
691 }
692
693 static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
694 _mm_mask_add_epi16 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
695   return (__m128i) __builtin_ia32_paddw128_mask ((__v8hi) __A,
696              (__v8hi) __B,
697              (__v8hi) __W,
698              (__mmask8) __U);
699 }
700
701 static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
702 _mm_maskz_add_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
703   return (__m128i) __builtin_ia32_paddw128_mask ((__v8hi) __A,
704              (__v8hi) __B,
705              (__v8hi)
706              _mm_setzero_si128 (),
707              (__mmask8) __U);
708 }
709
710 static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
711 _mm_mask_sub_epi8 (__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
712   return (__m128i) __builtin_ia32_psubb128_mask ((__v16qi) __A,
713              (__v16qi) __B,
714              (__v16qi) __W,
715              (__mmask16) __U);
716 }
717
718 static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
719 _mm_maskz_sub_epi8 (__mmask16 __U, __m128i __A, __m128i __B) {
720   return (__m128i) __builtin_ia32_psubb128_mask ((__v16qi) __A,
721              (__v16qi) __B,
722              (__v16qi)
723              _mm_setzero_si128 (),
724              (__mmask16) __U);
725 }
726
727 static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
728 _mm_mask_sub_epi16 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
729   return (__m128i) __builtin_ia32_psubw128_mask ((__v8hi) __A,
730              (__v8hi) __B,
731              (__v8hi) __W,
732              (__mmask8) __U);
733 }
734
735 static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
736 _mm_maskz_sub_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
737   return (__m128i) __builtin_ia32_psubw128_mask ((__v8hi) __A,
738              (__v8hi) __B,
739              (__v8hi)
740              _mm_setzero_si128 (),
741              (__mmask8) __U);
742 }
743
744 static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
745 _mm256_mask_mullo_epi16 (__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
746   return (__m256i) __builtin_ia32_pmullw256_mask ((__v16hi) __A,
747               (__v16hi) __B,
748               (__v16hi) __W,
749               (__mmask16) __U);
750 }
751
752 static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
753 _mm256_maskz_mullo_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
754   return (__m256i) __builtin_ia32_pmullw256_mask ((__v16hi) __A,
755               (__v16hi) __B,
756               (__v16hi)
757               _mm256_setzero_si256 (),
758               (__mmask16) __U);
759 }
760
761 static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
762 _mm_mask_mullo_epi16 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
763   return (__m128i) __builtin_ia32_pmullw128_mask ((__v8hi) __A,
764               (__v8hi) __B,
765               (__v8hi) __W,
766               (__mmask8) __U);
767 }
768
769 static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
770 _mm_maskz_mullo_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
771   return (__m128i) __builtin_ia32_pmullw128_mask ((__v8hi) __A,
772               (__v8hi) __B,
773               (__v8hi)
774               _mm_setzero_si128 (),
775               (__mmask8) __U);
776 }
777 #define _mm_cmp_epi8_mask(a, b, p) __extension__ ({ \
778   (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)(__m128i)(a), \
779                                          (__v16qi)(__m128i)(b), \
780                                          (p), (__mmask16)-1); })
781
782 #define _mm_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \
783   (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)(__m128i)(a), \
784                                          (__v16qi)(__m128i)(b), \
785                                          (p), (__mmask16)(m)); })
786
787 #define _mm_cmp_epu8_mask(a, b, p) __extension__ ({ \
788   (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)(__m128i)(a), \
789                                           (__v16qi)(__m128i)(b), \
790                                           (p), (__mmask16)-1); })
791
792 #define _mm_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \
793   (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)(__m128i)(a), \
794                                           (__v16qi)(__m128i)(b), \
795                                           (p), (__mmask16)(m)); })
796
797 #define _mm256_cmp_epi8_mask(a, b, p) __extension__ ({ \
798   (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)(__m256i)(a), \
799                                          (__v32qi)(__m256i)(b), \
800                                          (p), (__mmask32)-1); })
801
802 #define _mm256_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \
803   (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)(__m256i)(a), \
804                                          (__v32qi)(__m256i)(b), \
805                                          (p), (__mmask32)(m)); })
806
807 #define _mm256_cmp_epu8_mask(a, b, p) __extension__ ({ \
808   (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)(__m256i)(a), \
809                                           (__v32qi)(__m256i)(b), \
810                                           (p), (__mmask32)-1); })
811
812 #define _mm256_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \
813   (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)(__m256i)(a), \
814                                           (__v32qi)(__m256i)(b), \
815                                           (p), (__mmask32)(m)); })
816
817 #define _mm_cmp_epi16_mask(a, b, p) __extension__ ({ \
818   (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)(__m128i)(a), \
819                                         (__v8hi)(__m128i)(b), \
820                                         (p), (__mmask8)-1); })
821
822 #define _mm_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \
823   (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)(__m128i)(a), \
824                                         (__v8hi)(__m128i)(b), \
825                                         (p), (__mmask8)(m)); })
826
827 #define _mm_cmp_epu16_mask(a, b, p) __extension__ ({ \
828   (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)(__m128i)(a), \
829                                          (__v8hi)(__m128i)(b), \
830                                          (p), (__mmask8)-1); })
831
832 #define _mm_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \
833   (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)(__m128i)(a), \
834                                          (__v8hi)(__m128i)(b), \
835                                          (p), (__mmask8)(m)); })
836
837 #define _mm256_cmp_epi16_mask(a, b, p) __extension__ ({ \
838   (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)(__m256i)(a), \
839                                          (__v16hi)(__m256i)(b), \
840                                          (p), (__mmask16)-1); })
841
842 #define _mm256_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \
843   (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)(__m256i)(a), \
844                                          (__v16hi)(__m256i)(b), \
845                                          (p), (__mmask16)(m)); })
846
847 #define _mm256_cmp_epu16_mask(a, b, p) __extension__ ({ \
848   (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)(__m256i)(a), \
849                                           (__v16hi)(__m256i)(b), \
850                                           (p), (__mmask16)-1); })
851
852 #define _mm256_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \
853   (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)(__m256i)(a), \
854                                           (__v16hi)(__m256i)(b), \
855                                           (p), (__mmask16)(m)); })
856
857 #endif /* __AVX512VLBWINTRIN_H */