1 /*===---- avx512fintrin.h - AVX2 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 #ifndef __IMMINTRIN_H
24 #error "Never use <avx512fintrin.h> directly; include <immintrin.h> instead."
25 #endif
26
27 #ifndef __AVX512FINTRIN_H
28 #define __AVX512FINTRIN_H
29
30 typedef double __v8df __attribute__((__vector_size__(64)));
31 typedef float __v16sf __attribute__((__vector_size__(64)));
32 typedef long long __v8di __attribute__((__vector_size__(64)));
33 typedef int __v16si __attribute__((__vector_size__(64)));
34
35 typedef float __m512 __attribute__((__vector_size__(64)));
36 typedef double __m512d __attribute__((__vector_size__(64)));
37 typedef long long __m512i __attribute__((__vector_size__(64)));
38
39 typedef unsigned char __mmask8;
40 typedef unsigned short __mmask16;
41
42 /* Rounding mode macros. */
43 #define _MM_FROUND_TO_NEAREST_INT 0x00
44 #define _MM_FROUND_TO_NEG_INF 0x01
45 #define _MM_FROUND_TO_POS_INF 0x02
46 #define _MM_FROUND_TO_ZERO 0x03
47 #define _MM_FROUND_CUR_DIRECTION 0x04
48
49 /* Create vectors with repeated elements */
50
51 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_setzero_si512(void)52 _mm512_setzero_si512(void)
53 {
54 return (__m512i)(__v8di){ 0, 0, 0, 0, 0, 0, 0, 0 };
55 }
56
57 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_maskz_set1_epi32(__mmask16 __M,int __A)58 _mm512_maskz_set1_epi32(__mmask16 __M, int __A)
59 {
60 return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A,
61 (__v16si)
62 _mm512_setzero_si512 (),
63 __M);
64 }
65
66 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_maskz_set1_epi64(__mmask8 __M,long long __A)67 _mm512_maskz_set1_epi64(__mmask8 __M, long long __A)
68 {
69 #ifdef __x86_64__
70 return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A,
71 (__v8di)
72 _mm512_setzero_si512 (),
73 __M);
74 #else
75 return (__m512i) __builtin_ia32_pbroadcastq512_mem_mask (__A,
76 (__v8di)
77 _mm512_setzero_si512 (),
78 __M);
79 #endif
80 }
81
82 static __inline __m512 __attribute__ ((__always_inline__, __nodebug__))
_mm512_setzero_ps(void)83 _mm512_setzero_ps(void)
84 {
85 return (__m512){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
86 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
87 }
88 static __inline __m512d __attribute__ ((__always_inline__, __nodebug__))
_mm512_setzero_pd(void)89 _mm512_setzero_pd(void)
90 {
91 return (__m512d){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
92 }
93
94 static __inline __m512 __attribute__((__always_inline__, __nodebug__))
_mm512_set1_ps(float __w)95 _mm512_set1_ps(float __w)
96 {
97 return (__m512){ __w, __w, __w, __w, __w, __w, __w, __w,
98 __w, __w, __w, __w, __w, __w, __w, __w };
99 }
100
101 static __inline __m512d __attribute__((__always_inline__, __nodebug__))
_mm512_set1_pd(double __w)102 _mm512_set1_pd(double __w)
103 {
104 return (__m512d){ __w, __w, __w, __w, __w, __w, __w, __w };
105 }
106
107 static __inline __m512i __attribute__((__always_inline__, __nodebug__))
_mm512_set1_epi32(int __s)108 _mm512_set1_epi32(int __s)
109 {
110 return (__m512i)(__v16si){ __s, __s, __s, __s, __s, __s, __s, __s,
111 __s, __s, __s, __s, __s, __s, __s, __s };
112 }
113
114 static __inline __m512i __attribute__((__always_inline__, __nodebug__))
_mm512_set1_epi64(long long __d)115 _mm512_set1_epi64(long long __d)
116 {
117 return (__m512i)(__v8di){ __d, __d, __d, __d, __d, __d, __d, __d };
118 }
119
120 static __inline__ __m512 __attribute__((__always_inline__, __nodebug__))
_mm512_broadcastss_ps(__m128 __X)121 _mm512_broadcastss_ps(__m128 __X)
122 {
123 float __f = __X[0];
124 return (__v16sf){ __f, __f, __f, __f,
125 __f, __f, __f, __f,
126 __f, __f, __f, __f,
127 __f, __f, __f, __f };
128 }
129
130 static __inline__ __m512d __attribute__((__always_inline__, __nodebug__))
_mm512_broadcastsd_pd(__m128d __X)131 _mm512_broadcastsd_pd(__m128d __X)
132 {
133 double __d = __X[0];
134 return (__v8df){ __d, __d, __d, __d,
135 __d, __d, __d, __d };
136 }
137
138 /* Cast between vector types */
139
140 static __inline __m512d __attribute__((__always_inline__, __nodebug__))
_mm512_castpd256_pd512(__m256d __a)141 _mm512_castpd256_pd512(__m256d __a)
142 {
143 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, -1, -1, -1, -1);
144 }
145
146 static __inline __m512 __attribute__((__always_inline__, __nodebug__))
_mm512_castps256_ps512(__m256 __a)147 _mm512_castps256_ps512(__m256 __a)
148 {
149 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, 4, 5, 6, 7,
150 -1, -1, -1, -1, -1, -1, -1, -1);
151 }
152
153 static __inline __m128d __attribute__((__always_inline__, __nodebug__))
_mm512_castpd512_pd128(__m512d __a)154 _mm512_castpd512_pd128(__m512d __a)
155 {
156 return __builtin_shufflevector(__a, __a, 0, 1);
157 }
158
159 static __inline __m128 __attribute__((__always_inline__, __nodebug__))
_mm512_castps512_ps128(__m512 __a)160 _mm512_castps512_ps128(__m512 __a)
161 {
162 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3);
163 }
164
165 /* Arithmetic */
166
167 static __inline __m512d __attribute__((__always_inline__, __nodebug__))
_mm512_add_pd(__m512d __a,__m512d __b)168 _mm512_add_pd(__m512d __a, __m512d __b)
169 {
170 return __a + __b;
171 }
172
173 static __inline __m512 __attribute__((__always_inline__, __nodebug__))
_mm512_add_ps(__m512 __a,__m512 __b)174 _mm512_add_ps(__m512 __a, __m512 __b)
175 {
176 return __a + __b;
177 }
178
179 static __inline __m512d __attribute__((__always_inline__, __nodebug__))
_mm512_mul_pd(__m512d __a,__m512d __b)180 _mm512_mul_pd(__m512d __a, __m512d __b)
181 {
182 return __a * __b;
183 }
184
185 static __inline __m512 __attribute__((__always_inline__, __nodebug__))
_mm512_mul_ps(__m512 __a,__m512 __b)186 _mm512_mul_ps(__m512 __a, __m512 __b)
187 {
188 return __a * __b;
189 }
190
191 static __inline __m512d __attribute__((__always_inline__, __nodebug__))
_mm512_sub_pd(__m512d __a,__m512d __b)192 _mm512_sub_pd(__m512d __a, __m512d __b)
193 {
194 return __a - __b;
195 }
196
197 static __inline __m512 __attribute__((__always_inline__, __nodebug__))
_mm512_sub_ps(__m512 __a,__m512 __b)198 _mm512_sub_ps(__m512 __a, __m512 __b)
199 {
200 return __a - __b;
201 }
202
203 static __inline__ __m512d __attribute__((__always_inline__, __nodebug__))
_mm512_max_pd(__m512d __A,__m512d __B)204 _mm512_max_pd(__m512d __A, __m512d __B)
205 {
206 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
207 (__v8df) __B,
208 (__v8df)
209 _mm512_setzero_pd (),
210 (__mmask8) -1,
211 _MM_FROUND_CUR_DIRECTION);
212 }
213
214 static __inline__ __m512 __attribute__((__always_inline__, __nodebug__))
_mm512_max_ps(__m512 __A,__m512 __B)215 _mm512_max_ps(__m512 __A, __m512 __B)
216 {
217 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
218 (__v16sf) __B,
219 (__v16sf)
220 _mm512_setzero_ps (),
221 (__mmask16) -1,
222 _MM_FROUND_CUR_DIRECTION);
223 }
224
225 static __inline __m512i
226 __attribute__ ((__always_inline__, __nodebug__))
_mm512_max_epi32(__m512i __A,__m512i __B)227 _mm512_max_epi32(__m512i __A, __m512i __B)
228 {
229 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
230 (__v16si) __B,
231 (__v16si)
232 _mm512_setzero_si512 (),
233 (__mmask16) -1);
234 }
235
236 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_max_epu32(__m512i __A,__m512i __B)237 _mm512_max_epu32(__m512i __A, __m512i __B)
238 {
239 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
240 (__v16si) __B,
241 (__v16si)
242 _mm512_setzero_si512 (),
243 (__mmask16) -1);
244 }
245
246 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_max_epi64(__m512i __A,__m512i __B)247 _mm512_max_epi64(__m512i __A, __m512i __B)
248 {
249 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
250 (__v8di) __B,
251 (__v8di)
252 _mm512_setzero_si512 (),
253 (__mmask8) -1);
254 }
255
256 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_max_epu64(__m512i __A,__m512i __B)257 _mm512_max_epu64(__m512i __A, __m512i __B)
258 {
259 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
260 (__v8di) __B,
261 (__v8di)
262 _mm512_setzero_si512 (),
263 (__mmask8) -1);
264 }
265
266 static __inline__ __m512d __attribute__((__always_inline__, __nodebug__))
_mm512_min_pd(__m512d __A,__m512d __B)267 _mm512_min_pd(__m512d __A, __m512d __B)
268 {
269 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
270 (__v8df) __B,
271 (__v8df)
272 _mm512_setzero_pd (),
273 (__mmask8) -1,
274 _MM_FROUND_CUR_DIRECTION);
275 }
276
277 static __inline__ __m512 __attribute__((__always_inline__, __nodebug__))
_mm512_min_ps(__m512 __A,__m512 __B)278 _mm512_min_ps(__m512 __A, __m512 __B)
279 {
280 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
281 (__v16sf) __B,
282 (__v16sf)
283 _mm512_setzero_ps (),
284 (__mmask16) -1,
285 _MM_FROUND_CUR_DIRECTION);
286 }
287
288 static __inline __m512i
289 __attribute__ ((__always_inline__, __nodebug__))
_mm512_min_epi32(__m512i __A,__m512i __B)290 _mm512_min_epi32(__m512i __A, __m512i __B)
291 {
292 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
293 (__v16si) __B,
294 (__v16si)
295 _mm512_setzero_si512 (),
296 (__mmask16) -1);
297 }
298
299 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_min_epu32(__m512i __A,__m512i __B)300 _mm512_min_epu32(__m512i __A, __m512i __B)
301 {
302 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
303 (__v16si) __B,
304 (__v16si)
305 _mm512_setzero_si512 (),
306 (__mmask16) -1);
307 }
308
309 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_min_epi64(__m512i __A,__m512i __B)310 _mm512_min_epi64(__m512i __A, __m512i __B)
311 {
312 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
313 (__v8di) __B,
314 (__v8di)
315 _mm512_setzero_si512 (),
316 (__mmask8) -1);
317 }
318
319 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_min_epu64(__m512i __A,__m512i __B)320 _mm512_min_epu64(__m512i __A, __m512i __B)
321 {
322 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
323 (__v8di) __B,
324 (__v8di)
325 _mm512_setzero_si512 (),
326 (__mmask8) -1);
327 }
328
329 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_mul_epi32(__m512i __X,__m512i __Y)330 _mm512_mul_epi32(__m512i __X, __m512i __Y)
331 {
332 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
333 (__v16si) __Y,
334 (__v8di)
335 _mm512_setzero_si512 (),
336 (__mmask8) -1);
337 }
338
339 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_mul_epu32(__m512i __X,__m512i __Y)340 _mm512_mul_epu32(__m512i __X, __m512i __Y)
341 {
342 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
343 (__v16si) __Y,
344 (__v8di)
345 _mm512_setzero_si512 (),
346 (__mmask8) -1);
347 }
348
349 static __inline__ __m512d __attribute__((__always_inline__, __nodebug__))
_mm512_sqrt_pd(__m512d a)350 _mm512_sqrt_pd(__m512d a)
351 {
352 return (__m512d)__builtin_ia32_sqrtpd512_mask((__v8df)a,
353 (__v8df) _mm512_setzero_pd (),
354 (__mmask8) -1,
355 _MM_FROUND_CUR_DIRECTION);
356 }
357
358 static __inline__ __m512 __attribute__((__always_inline__, __nodebug__))
_mm512_sqrt_ps(__m512 a)359 _mm512_sqrt_ps(__m512 a)
360 {
361 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)a,
362 (__v16sf) _mm512_setzero_ps (),
363 (__mmask16) -1,
364 _MM_FROUND_CUR_DIRECTION);
365 }
366
367 static __inline__ __m512d __attribute__((__always_inline__, __nodebug__))
_mm512_rsqrt14_pd(__m512d __A)368 _mm512_rsqrt14_pd(__m512d __A)
369 {
370 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
371 (__v8df)
372 _mm512_setzero_pd (),
373 (__mmask8) -1);}
374
375 static __inline__ __m512 __attribute__((__always_inline__, __nodebug__))
_mm512_rsqrt14_ps(__m512 __A)376 _mm512_rsqrt14_ps(__m512 __A)
377 {
378 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
379 (__v16sf)
380 _mm512_setzero_ps (),
381 (__mmask16) -1);
382 }
383
384 static __inline__ __m128 __attribute__((__always_inline__, __nodebug__))
_mm_rsqrt14_ss(__m128 __A,__m128 __B)385 _mm_rsqrt14_ss(__m128 __A, __m128 __B)
386 {
387 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
388 (__v4sf) __B,
389 (__v4sf)
390 _mm_setzero_ps (),
391 (__mmask8) -1);
392 }
393
394 static __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
_mm_rsqrt14_sd(__m128d __A,__m128d __B)395 _mm_rsqrt14_sd(__m128d __A, __m128d __B)
396 {
397 return (__m128d) __builtin_ia32_rsqrt14sd_mask ((__v2df) __A,
398 (__v2df) __B,
399 (__v2df)
400 _mm_setzero_pd (),
401 (__mmask8) -1);
402 }
403
404 static __inline__ __m512d __attribute__((__always_inline__, __nodebug__))
_mm512_rcp14_pd(__m512d __A)405 _mm512_rcp14_pd(__m512d __A)
406 {
407 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
408 (__v8df)
409 _mm512_setzero_pd (),
410 (__mmask8) -1);
411 }
412
413 static __inline__ __m512 __attribute__((__always_inline__, __nodebug__))
_mm512_rcp14_ps(__m512 __A)414 _mm512_rcp14_ps(__m512 __A)
415 {
416 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
417 (__v16sf)
418 _mm512_setzero_ps (),
419 (__mmask16) -1);
420 }
421 static __inline__ __m128 __attribute__((__always_inline__, __nodebug__))
_mm_rcp14_ss(__m128 __A,__m128 __B)422 _mm_rcp14_ss(__m128 __A, __m128 __B)
423 {
424 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
425 (__v4sf) __B,
426 (__v4sf)
427 _mm_setzero_ps (),
428 (__mmask8) -1);
429 }
430
431 static __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
_mm_rcp14_sd(__m128d __A,__m128d __B)432 _mm_rcp14_sd(__m128d __A, __m128d __B)
433 {
434 return (__m128d) __builtin_ia32_rcp14sd_mask ((__v2df) __A,
435 (__v2df) __B,
436 (__v2df)
437 _mm_setzero_pd (),
438 (__mmask8) -1);
439 }
440
441 static __inline __m512 __attribute__ ((__always_inline__, __nodebug__))
_mm512_floor_ps(__m512 __A)442 _mm512_floor_ps(__m512 __A)
443 {
444 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
445 _MM_FROUND_FLOOR,
446 (__v16sf) __A, -1,
447 _MM_FROUND_CUR_DIRECTION);
448 }
449
450 static __inline __m512d __attribute__ ((__always_inline__, __nodebug__))
_mm512_floor_pd(__m512d __A)451 _mm512_floor_pd(__m512d __A)
452 {
453 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
454 _MM_FROUND_FLOOR,
455 (__v8df) __A, -1,
456 _MM_FROUND_CUR_DIRECTION);
457 }
458
459 static __inline __m512 __attribute__ ((__always_inline__, __nodebug__))
_mm512_ceil_ps(__m512 __A)460 _mm512_ceil_ps(__m512 __A)
461 {
462 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
463 _MM_FROUND_CEIL,
464 (__v16sf) __A, -1,
465 _MM_FROUND_CUR_DIRECTION);
466 }
467
468 static __inline __m512d __attribute__ ((__always_inline__, __nodebug__))
_mm512_ceil_pd(__m512d __A)469 _mm512_ceil_pd(__m512d __A)
470 {
471 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
472 _MM_FROUND_CEIL,
473 (__v8df) __A, -1,
474 _MM_FROUND_CUR_DIRECTION);
475 }
476
477 static __inline __m512i __attribute__ (( __always_inline__, __nodebug__))
_mm512_abs_epi64(__m512i __A)478 _mm512_abs_epi64(__m512i __A)
479 {
480 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
481 (__v8di)
482 _mm512_setzero_si512 (),
483 (__mmask8) -1);
484 }
485
486 static __inline __m512i __attribute__ (( __always_inline__, __nodebug__))
_mm512_abs_epi32(__m512i __A)487 _mm512_abs_epi32(__m512i __A)
488 {
489 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
490 (__v16si)
491 _mm512_setzero_si512 (),
492 (__mmask16) -1);
493 }
494
495 static __inline __m512 __attribute__ ((__always_inline__, __nodebug__))
_mm512_roundscale_ps(__m512 __A,const int __imm)496 _mm512_roundscale_ps(__m512 __A, const int __imm)
497 {
498 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A, __imm,
499 (__v16sf) __A, -1,
500 _MM_FROUND_CUR_DIRECTION);
501 }
502 static __inline __m512d __attribute__ ((__always_inline__, __nodebug__))
_mm512_roundscale_pd(__m512d __A,const int __imm)503 _mm512_roundscale_pd(__m512d __A, const int __imm)
504 {
505 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A, __imm,
506 (__v8df) __A, -1,
507 _MM_FROUND_CUR_DIRECTION);
508 }
509
510 static __inline__ __m512d __attribute__((__always_inline__, __nodebug__))
_mm512_fmadd_pd(__m512d __A,__m512d __B,__m512d __C)511 _mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C)
512 {
513 return (__m512d)
514 __builtin_ia32_vfmaddpd512_mask(__A,
515 __B,
516 __C,
517 (__mmask8) -1,
518 _MM_FROUND_CUR_DIRECTION);
519 }
520
521 static __inline__ __m512d __attribute__((__always_inline__, __nodebug__))
_mm512_fmsub_pd(__m512d __A,__m512d __B,__m512d __C)522 _mm512_fmsub_pd(__m512d __A, __m512d __B, __m512d __C)
523 {
524 return (__m512d)
525 __builtin_ia32_vfmsubpd512_mask(__A,
526 __B,
527 __C,
528 (__mmask8) -1,
529 _MM_FROUND_CUR_DIRECTION);
530 }
531
532 static __inline__ __m512d __attribute__((__always_inline__, __nodebug__))
_mm512_fnmadd_pd(__m512d __A,__m512d __B,__m512d __C)533 _mm512_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C)
534 {
535 return (__m512d)
536 __builtin_ia32_vfnmaddpd512_mask(__A,
537 __B,
538 __C,
539 (__mmask8) -1,
540 _MM_FROUND_CUR_DIRECTION);
541 }
542
543 static __inline__ __m512 __attribute__((__always_inline__, __nodebug__))
_mm512_fmadd_ps(__m512 __A,__m512 __B,__m512 __C)544 _mm512_fmadd_ps(__m512 __A, __m512 __B, __m512 __C)
545 {
546 return (__m512)
547 __builtin_ia32_vfmaddps512_mask(__A,
548 __B,
549 __C,
550 (__mmask16) -1,
551 _MM_FROUND_CUR_DIRECTION);
552 }
553
554 static __inline__ __m512 __attribute__((__always_inline__, __nodebug__))
_mm512_fmsub_ps(__m512 __A,__m512 __B,__m512 __C)555 _mm512_fmsub_ps(__m512 __A, __m512 __B, __m512 __C)
556 {
557 return (__m512)
558 __builtin_ia32_vfmsubps512_mask(__A,
559 __B,
560 __C,
561 (__mmask16) -1,
562 _MM_FROUND_CUR_DIRECTION);
563 }
564
565 static __inline__ __m512 __attribute__((__always_inline__, __nodebug__))
_mm512_fnmadd_ps(__m512 __A,__m512 __B,__m512 __C)566 _mm512_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C)
567 {
568 return (__m512)
569 __builtin_ia32_vfnmaddps512_mask(__A,
570 __B,
571 __C,
572 (__mmask16) -1,
573 _MM_FROUND_CUR_DIRECTION);
574 }
575
576 /* Vector permutations */
577
578 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_permutex2var_epi32(__m512i __A,__m512i __I,__m512i __B)579 _mm512_permutex2var_epi32(__m512i __A, __m512i __I, __m512i __B)
580 {
581 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
582 /* idx */ ,
583 (__v16si) __A,
584 (__v16si) __B,
585 (__mmask16) -1);
586 }
587 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_permutex2var_epi64(__m512i __A,__m512i __I,__m512i __B)588 _mm512_permutex2var_epi64(__m512i __A, __m512i __I, __m512i __B)
589 {
590 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
591 /* idx */ ,
592 (__v8di) __A,
593 (__v8di) __B,
594 (__mmask8) -1);
595 }
596
597 static __inline __m512d __attribute__ ((__always_inline__, __nodebug__))
_mm512_permutex2var_pd(__m512d __A,__m512i __I,__m512d __B)598 _mm512_permutex2var_pd(__m512d __A, __m512i __I, __m512d __B)
599 {
600 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
601 /* idx */ ,
602 (__v8df) __A,
603 (__v8df) __B,
604 (__mmask8) -1);
605 }
606 static __inline __m512 __attribute__ ((__always_inline__, __nodebug__))
_mm512_permutex2var_ps(__m512 __A,__m512i __I,__m512 __B)607 _mm512_permutex2var_ps(__m512 __A, __m512i __I, __m512 __B)
608 {
609 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
610 /* idx */ ,
611 (__v16sf) __A,
612 (__v16sf) __B,
613 (__mmask16) -1);
614 }
615
616 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_valign_epi64(__m512i __A,__m512i __B,const int __I)617 _mm512_valign_epi64(__m512i __A, __m512i __B, const int __I)
618 {
619 return (__m512i) __builtin_ia32_alignq512_mask((__v8di)__A,
620 (__v8di)__B,
621 __I,
622 (__v8di)_mm512_setzero_si512(),
623 (__mmask8) -1);
624 }
625
626 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_valign_epi32(__m512i __A,__m512i __B,const int __I)627 _mm512_valign_epi32(__m512i __A, __m512i __B, const int __I)
628 {
629 return (__m512i)__builtin_ia32_alignd512_mask((__v16si)__A,
630 (__v16si)__B,
631 __I,
632 (__v16si)_mm512_setzero_si512(),
633 (__mmask16) -1);
634 }
635
636 /* Vector Blend */
637
638 static __inline __m512d __attribute__ ((__always_inline__, __nodebug__))
_mm512_mask_blend_pd(__mmask8 __U,__m512d __A,__m512d __W)639 _mm512_mask_blend_pd(__mmask8 __U, __m512d __A, __m512d __W)
640 {
641 return (__m512d) __builtin_ia32_blendmpd_512_mask ((__v8df) __A,
642 (__v8df) __W,
643 (__mmask8) __U);
644 }
645
646 static __inline __m512 __attribute__ ((__always_inline__, __nodebug__))
_mm512_mask_blend_ps(__mmask16 __U,__m512 __A,__m512 __W)647 _mm512_mask_blend_ps(__mmask16 __U, __m512 __A, __m512 __W)
648 {
649 return (__m512) __builtin_ia32_blendmps_512_mask ((__v16sf) __A,
650 (__v16sf) __W,
651 (__mmask16) __U);
652 }
653
654 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_mask_blend_epi64(__mmask8 __U,__m512i __A,__m512i __W)655 _mm512_mask_blend_epi64(__mmask8 __U, __m512i __A, __m512i __W)
656 {
657 return (__m512i) __builtin_ia32_blendmq_512_mask ((__v8di) __A,
658 (__v8di) __W,
659 (__mmask8) __U);
660 }
661
662 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_mask_blend_epi32(__mmask16 __U,__m512i __A,__m512i __W)663 _mm512_mask_blend_epi32(__mmask16 __U, __m512i __A, __m512i __W)
664 {
665 return (__m512i) __builtin_ia32_blendmd_512_mask ((__v16si) __A,
666 (__v16si) __W,
667 (__mmask16) __U);
668 }
669
670 /* Compare */
671
672 static __inline __mmask16 __attribute__ ((__always_inline__, __nodebug__))
_mm512_cmp_ps_mask(__m512 a,__m512 b,const int p)673 _mm512_cmp_ps_mask(__m512 a, __m512 b, const int p)
674 {
675 return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) a,
676 (__v16sf) b, p, (__mmask16) -1,
677 _MM_FROUND_CUR_DIRECTION);
678 }
679
680 static __inline __mmask8 __attribute__ ((__always_inline__, __nodebug__))
_mm512_cmp_pd_mask(__m512d __X,__m512d __Y,const int __P)681 _mm512_cmp_pd_mask(__m512d __X, __m512d __Y, const int __P)
682 {
683 return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
684 (__v8df) __Y, __P,
685 (__mmask8) -1,
686 _MM_FROUND_CUR_DIRECTION);
687 }
688
689 /* Conversion */
690
691 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_cvttps_epu32(__m512 __A)692 _mm512_cvttps_epu32(__m512 __A)
693 {
694 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
695 (__v16si)
696 _mm512_setzero_si512 (),
697 (__mmask16) -1,
698 _MM_FROUND_CUR_DIRECTION);
699 }
700
701 static __inline __m512 __attribute__ (( __always_inline__, __nodebug__))
_mm512_cvt_roundepi32_ps(__m512i __A,const int __R)702 _mm512_cvt_roundepi32_ps(__m512i __A, const int __R)
703 {
704 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
705 (__v16sf)
706 _mm512_setzero_ps (),
707 (__mmask16) -1,
708 __R);
709 }
710
711 static __inline __m512 __attribute__ (( __always_inline__, __nodebug__))
_mm512_cvt_roundepu32_ps(__m512i __A,const int __R)712 _mm512_cvt_roundepu32_ps(__m512i __A, const int __R)
713 {
714 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
715 (__v16sf)
716 _mm512_setzero_ps (),
717 (__mmask16) -1,
718 __R);
719 }
720
721 static __inline __m512d __attribute__ (( __always_inline__, __nodebug__))
_mm512_cvtepi32_pd(__m256i __A)722 _mm512_cvtepi32_pd(__m256i __A)
723 {
724 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
725 (__v8df)
726 _mm512_setzero_pd (),
727 (__mmask8) -1);
728 }
729
730 static __inline __m512d __attribute__ (( __always_inline__, __nodebug__))
_mm512_cvtepu32_pd(__m256i __A)731 _mm512_cvtepu32_pd(__m256i __A)
732 {
733 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
734 (__v8df)
735 _mm512_setzero_pd (),
736 (__mmask8) -1);
737 }
738 static __inline __m256 __attribute__ (( __always_inline__, __nodebug__))
_mm512_cvt_roundpd_ps(__m512d __A,const int __R)739 _mm512_cvt_roundpd_ps(__m512d __A, const int __R)
740 {
741 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
742 (__v8sf)
743 _mm256_setzero_ps (),
744 (__mmask8) -1,
745 __R);
746 }
747
748 static __inline __m256i __attribute__ ((__always_inline__, __nodebug__))
_mm512_cvtps_ph(__m512 __A,const int __I)749 _mm512_cvtps_ph(__m512 __A, const int __I)
750 {
751 return (__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf) __A,
752 __I,
753 (__v16hi)
754 _mm256_setzero_si256 (),
755 -1);
756 }
757
758 static __inline __m512 __attribute__ ((__always_inline__, __nodebug__))
_mm512_cvtph_ps(__m256i __A)759 _mm512_cvtph_ps(__m256i __A)
760 {
761 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
762 (__v16sf)
763 _mm512_setzero_ps (),
764 (__mmask16) -1,
765 _MM_FROUND_CUR_DIRECTION);
766 }
767
768 static __inline __m512i __attribute__((__always_inline__, __nodebug__))
_mm512_cvttps_epi32(__m512 a)769 _mm512_cvttps_epi32(__m512 a)
770 {
771 return (__m512i)
772 __builtin_ia32_cvttps2dq512_mask((__v16sf) a,
773 (__v16si) _mm512_setzero_si512 (),
774 (__mmask16) -1, _MM_FROUND_CUR_DIRECTION);
775 }
776
777 static __inline __m256i __attribute__((__always_inline__, __nodebug__))
_mm512_cvttpd_epi32(__m512d a)778 _mm512_cvttpd_epi32(__m512d a)
779 {
780 return (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df) a,
781 (__v8si)_mm256_setzero_si256(),
782 (__mmask8) -1,
783 _MM_FROUND_CUR_DIRECTION);
784 }
785
786 static __inline __m256i __attribute__ ((__always_inline__, __nodebug__))
_mm512_cvtt_roundpd_epi32(__m512d __A,const int __R)787 _mm512_cvtt_roundpd_epi32(__m512d __A, const int __R)
788 {
789 return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
790 (__v8si)
791 _mm256_setzero_si256 (),
792 (__mmask8) -1,
793 __R);
794 }
795 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_cvtt_roundps_epi32(__m512 __A,const int __R)796 _mm512_cvtt_roundps_epi32(__m512 __A, const int __R)
797 {
798 return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
799 (__v16si)
800 _mm512_setzero_si512 (),
801 (__mmask16) -1,
802 __R);
803 }
804
805 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_cvt_roundps_epi32(__m512 __A,const int __R)806 _mm512_cvt_roundps_epi32(__m512 __A, const int __R)
807 {
808 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
809 (__v16si)
810 _mm512_setzero_si512 (),
811 (__mmask16) -1,
812 __R);
813 }
814 static __inline __m256i __attribute__ ((__always_inline__, __nodebug__))
_mm512_cvt_roundpd_epi32(__m512d __A,const int __R)815 _mm512_cvt_roundpd_epi32(__m512d __A, const int __R)
816 {
817 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
818 (__v8si)
819 _mm256_setzero_si256 (),
820 (__mmask8) -1,
821 __R);
822 }
823 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_cvt_roundps_epu32(__m512 __A,const int __R)824 _mm512_cvt_roundps_epu32(__m512 __A, const int __R)
825 {
826 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
827 (__v16si)
828 _mm512_setzero_si512 (),
829 (__mmask16) -1,
830 __R);
831 }
832 static __inline __m256i __attribute__ ((__always_inline__, __nodebug__))
_mm512_cvt_roundpd_epu32(__m512d __A,const int __R)833 _mm512_cvt_roundpd_epu32(__m512d __A, const int __R)
834 {
835 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
836 (__v8si)
837 _mm256_setzero_si256 (),
838 (__mmask8) -1,
839 __R);
840 }
841
842 /* Unpack and Interleave */
843 static __inline __m512d __attribute__((__always_inline__, __nodebug__))
_mm512_unpackhi_pd(__m512d __a,__m512d __b)844 _mm512_unpackhi_pd(__m512d __a, __m512d __b)
845 {
846 return __builtin_shufflevector(__a, __b, 1, 9, 1+2, 9+2, 1+4, 9+4, 1+6, 9+6);
847 }
848
849 static __inline __m512d __attribute__((__always_inline__, __nodebug__))
_mm512_unpacklo_pd(__m512d __a,__m512d __b)850 _mm512_unpacklo_pd(__m512d __a, __m512d __b)
851 {
852 return __builtin_shufflevector(__a, __b, 0, 8, 0+2, 8+2, 0+4, 8+4, 0+6, 8+6);
853 }
854
855 static __inline __m512 __attribute__((__always_inline__, __nodebug__))
_mm512_unpackhi_ps(__m512 __a,__m512 __b)856 _mm512_unpackhi_ps(__m512 __a, __m512 __b)
857 {
858 return __builtin_shufflevector(__a, __b,
859 2, 18, 3, 19,
860 2+4, 18+4, 3+4, 19+4,
861 2+8, 18+8, 3+8, 19+8,
862 2+12, 18+12, 3+12, 19+12);
863 }
864
865 static __inline __m512 __attribute__((__always_inline__, __nodebug__))
_mm512_unpacklo_ps(__m512 __a,__m512 __b)866 _mm512_unpacklo_ps(__m512 __a, __m512 __b)
867 {
868 return __builtin_shufflevector(__a, __b,
869 0, 16, 1, 17,
870 0+4, 16+4, 1+4, 17+4,
871 0+8, 16+8, 1+8, 17+8,
872 0+12, 16+12, 1+12, 17+12);
873 }
874
875 /* Bit Test */
876
877 static __inline __mmask16 __attribute__ ((__always_inline__, __nodebug__))
_mm512_test_epi32_mask(__m512i __A,__m512i __B)878 _mm512_test_epi32_mask(__m512i __A, __m512i __B)
879 {
880 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
881 (__v16si) __B,
882 (__mmask16) -1);
883 }
884
885 static __inline __mmask8 __attribute__ ((__always_inline__, __nodebug__))
_mm512_test_epi64_mask(__m512i __A,__m512i __B)886 _mm512_test_epi64_mask(__m512i __A, __m512i __B)
887 {
888 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A,
889 (__v8di) __B,
890 (__mmask8) -1);
891 }
892
893 /* SIMD load ops */
894
895 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_maskz_loadu_epi32(__mmask16 __U,void const * __P)896 _mm512_maskz_loadu_epi32(__mmask16 __U, void const *__P)
897 {
898 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const __v16si *)__P,
899 (__v16si)
900 _mm512_setzero_si512 (),
901 (__mmask16) __U);
902 }
903
904 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_maskz_loadu_epi64(__mmask8 __U,void const * __P)905 _mm512_maskz_loadu_epi64(__mmask8 __U, void const *__P)
906 {
907 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const __v8di *)__P,
908 (__v8di)
909 _mm512_setzero_si512 (),
910 (__mmask8) __U);
911 }
912
913 static __inline __m512 __attribute__ ((__always_inline__, __nodebug__))
_mm512_maskz_loadu_ps(__mmask16 __U,void const * __P)914 _mm512_maskz_loadu_ps(__mmask16 __U, void const *__P)
915 {
916 return (__m512) __builtin_ia32_loadups512_mask ((const __v16sf *)__P,
917 (__v16sf)
918 _mm512_setzero_ps (),
919 (__mmask16) __U);
920 }
921
922 static __inline __m512d __attribute__ ((__always_inline__, __nodebug__))
_mm512_maskz_loadu_pd(__mmask8 __U,void const * __P)923 _mm512_maskz_loadu_pd(__mmask8 __U, void const *__P)
924 {
925 return (__m512d) __builtin_ia32_loadupd512_mask ((const __v8df *)__P,
926 (__v8df)
927 _mm512_setzero_pd (),
928 (__mmask8) __U);
929 }
930
931 static __inline __m512d __attribute__((__always_inline__, __nodebug__))
_mm512_loadu_pd(double const * __p)932 _mm512_loadu_pd(double const *__p)
933 {
934 struct __loadu_pd {
935 __m512d __v;
936 } __attribute__((packed, may_alias));
937 return ((struct __loadu_pd*)__p)->__v;
938 }
939
940 static __inline __m512 __attribute__((__always_inline__, __nodebug__))
_mm512_loadu_ps(float const * __p)941 _mm512_loadu_ps(float const *__p)
942 {
943 struct __loadu_ps {
944 __m512 __v;
945 } __attribute__((packed, may_alias));
946 return ((struct __loadu_ps*)__p)->__v;
947 }
948
949 /* SIMD store ops */
950
951 static __inline void __attribute__ ((__always_inline__, __nodebug__))
_mm512_mask_storeu_epi64(void * __P,__mmask8 __U,__m512i __A)952 _mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A)
953 {
954 __builtin_ia32_storedqudi512_mask ((__v8di *)__P, (__v8di) __A,
955 (__mmask8) __U);
956 }
957
958 static __inline void __attribute__ ((__always_inline__, __nodebug__))
_mm512_mask_storeu_epi32(void * __P,__mmask16 __U,__m512i __A)959 _mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A)
960 {
961 __builtin_ia32_storedqusi512_mask ((__v16si *)__P, (__v16si) __A,
962 (__mmask16) __U);
963 }
964
965 static __inline void __attribute__ ((__always_inline__, __nodebug__))
_mm512_mask_storeu_pd(void * __P,__mmask8 __U,__m512d __A)966 _mm512_mask_storeu_pd(void *__P, __mmask8 __U, __m512d __A)
967 {
968 __builtin_ia32_storeupd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
969 }
970
971 static __inline void __attribute__ ((__always_inline__, __nodebug__))
_mm512_storeu_pd(void * __P,__m512d __A)972 _mm512_storeu_pd(void *__P, __m512d __A)
973 {
974 __builtin_ia32_storeupd512_mask((__v8df *)__P, (__v8df)__A, (__mmask8)-1);
975 }
976
977 static __inline void __attribute__ ((__always_inline__, __nodebug__))
_mm512_mask_storeu_ps(void * __P,__mmask16 __U,__m512 __A)978 _mm512_mask_storeu_ps(void *__P, __mmask16 __U, __m512 __A)
979 {
980 __builtin_ia32_storeups512_mask ((__v16sf *)__P, (__v16sf) __A,
981 (__mmask16) __U);
982 }
983
984 static __inline void __attribute__ ((__always_inline__, __nodebug__))
_mm512_storeu_ps(void * __P,__m512 __A)985 _mm512_storeu_ps(void *__P, __m512 __A)
986 {
987 __builtin_ia32_storeups512_mask((__v16sf *)__P, (__v16sf)__A, (__mmask16)-1);
988 }
989
990 static __inline void __attribute__ ((__always_inline__, __nodebug__))
_mm512_store_ps(void * __P,__m512 __A)991 _mm512_store_ps(void *__P, __m512 __A)
992 {
993 *(__m512*)__P = __A;
994 }
995
996 static __inline void __attribute__ ((__always_inline__, __nodebug__))
_mm512_store_pd(void * __P,__m512d __A)997 _mm512_store_pd(void *__P, __m512d __A)
998 {
999 *(__m512d*)__P = __A;
1000 }
1001
1002 /* Mask ops */
1003
1004 static __inline __mmask16 __attribute__ ((__always_inline__, __nodebug__))
_mm512_knot(__mmask16 __M)1005 _mm512_knot(__mmask16 __M)
1006 {
1007 return __builtin_ia32_knothi(__M);
1008 }
1009
1010 /* Integer compare */
1011
1012 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
_mm512_cmpeq_epi32_mask(__m512i __a,__m512i __b)1013 _mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) {
1014 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
1015 (__mmask16)-1);
1016 }
1017
1018 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
_mm512_mask_cmpeq_epi32_mask(__mmask16 __u,__m512i __a,__m512i __b)1019 _mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
1020 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
1021 __u);
1022 }
1023
1024 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
_mm512_mask_cmpeq_epi64_mask(__mmask8 __u,__m512i __a,__m512i __b)1025 _mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
1026 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
1027 __u);
1028 }
1029
1030 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
_mm512_cmpeq_epi64_mask(__m512i __a,__m512i __b)1031 _mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) {
1032 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
1033 (__mmask8)-1);
1034 }
1035
1036 #endif // __AVX512FINTRIN_H
1037