1 /* Copyright (C) 2024-2025 Free Software Foundation, Inc.
3 This file is part of GCC.
5 GCC is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 3, or (at your option)
10 GCC is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 Under Section 7 of GPL version 3, you are granted additional
16 permissions described in the GCC Runtime Library Exception, version
17 3.1, as published by the Free Software Foundation.
19 You should have received a copy of the GNU General Public License and
20 a copy of the GCC Runtime Library Exception along with this program;
21 see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
22 <http://www.gnu.org/licenses/>. */
24 #ifndef _IMMINTRIN_H_INCLUDED
25 #error "Never use <avx10_2-512bf16intrin.h> directly; include <immintrin.h> instead."
28 #ifndef _AVX10_2_512BF16INTRIN_H_INCLUDED
29 #define _AVX10_2_512BF16INTRIN_H_INCLUDED
31 #if !defined (__AVX10_2_512__)
32 #pragma GCC push_options
33 #pragma GCC target("avx10.2-512")
34 #define __DISABLE_AVX10_2_512__
35 #endif /* __AVX10_2_512__ */
37 extern __inline__ __m512bh
38 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
39 _mm512_add_pbh (__m512bh __A
, __m512bh __B
)
41 return (__m512bh
) __builtin_ia32_addbf16512 (__A
, __B
);
44 extern __inline__ __m512bh
45 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
46 _mm512_mask_add_pbh (__m512bh __W
, __mmask32 __U
,
47 __m512bh __A
, __m512bh __B
)
50 __builtin_ia32_addbf16512_mask (__A
, __B
, __W
, __U
);
53 extern __inline__ __m512bh
54 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
55 _mm512_maskz_add_pbh (__mmask32 __U
, __m512bh __A
, __m512bh __B
)
58 __builtin_ia32_addbf16512_mask (__A
, __B
,
59 (__v32bf
) _mm512_setzero_si512 (),
63 extern __inline__ __m512bh
64 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
65 _mm512_sub_pbh (__m512bh __A
, __m512bh __B
)
67 return (__m512bh
) __builtin_ia32_subbf16512 (__A
, __B
);
70 extern __inline__ __m512bh
71 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
72 _mm512_mask_sub_pbh (__m512bh __W
, __mmask32 __U
,
73 __m512bh __A
, __m512bh __B
)
76 __builtin_ia32_subbf16512_mask (__A
, __B
, __W
, __U
);
79 extern __inline__ __m512bh
80 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
81 _mm512_maskz_sub_pbh (__mmask32 __U
, __m512bh __A
, __m512bh __B
)
84 __builtin_ia32_subbf16512_mask (__A
, __B
,
85 (__v32bf
) _mm512_setzero_si512 (),
89 extern __inline__ __m512bh
90 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
91 _mm512_mul_pbh (__m512bh __A
, __m512bh __B
)
93 return (__m512bh
) __builtin_ia32_mulbf16512 (__A
, __B
);
96 extern __inline__ __m512bh
97 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
98 _mm512_mask_mul_pbh (__m512bh __W
, __mmask32 __U
,
99 __m512bh __A
, __m512bh __B
)
102 __builtin_ia32_mulbf16512_mask (__A
, __B
, __W
, __U
);
105 extern __inline__ __m512bh
106 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
107 _mm512_maskz_mul_pbh (__mmask32 __U
, __m512bh __A
, __m512bh __B
)
110 __builtin_ia32_mulbf16512_mask (__A
, __B
,
111 (__v32bf
) _mm512_setzero_si512 (),
115 extern __inline__ __m512bh
116 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
117 _mm512_div_pbh (__m512bh __A
, __m512bh __B
)
119 return (__m512bh
) __builtin_ia32_divbf16512 (__A
, __B
);
122 extern __inline__ __m512bh
123 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
124 _mm512_mask_div_pbh (__m512bh __W
, __mmask32 __U
,
125 __m512bh __A
, __m512bh __B
)
128 __builtin_ia32_divbf16512_mask (__A
, __B
, __W
, __U
);
131 extern __inline__ __m512bh
132 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
133 _mm512_maskz_div_pbh (__mmask32 __U
, __m512bh __A
, __m512bh __B
)
136 __builtin_ia32_divbf16512_mask (__A
, __B
,
137 (__v32bf
) _mm512_setzero_si512 (),
141 extern __inline__ __m512bh
142 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
143 _mm512_max_pbh (__m512bh __A
, __m512bh __B
)
145 return (__m512bh
) __builtin_ia32_maxbf16512 (__A
, __B
);
148 extern __inline__ __m512bh
149 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
150 _mm512_mask_max_pbh (__m512bh __W
, __mmask32 __U
,
151 __m512bh __A
, __m512bh __B
)
154 __builtin_ia32_maxbf16512_mask (__A
, __B
, __W
, __U
);
157 extern __inline__ __m512bh
158 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
159 _mm512_maskz_max_pbh (__mmask32 __U
, __m512bh __A
, __m512bh __B
)
162 __builtin_ia32_maxbf16512_mask (__A
, __B
,
163 (__v32bf
) _mm512_setzero_si512 (),
167 extern __inline__ __m512bh
168 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
169 _mm512_min_pbh (__m512bh __A
, __m512bh __B
)
171 return (__m512bh
) __builtin_ia32_minbf16512 (__A
, __B
);
174 extern __inline__ __m512bh
175 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
176 _mm512_mask_min_pbh (__m512bh __W
, __mmask32 __U
,
177 __m512bh __A
, __m512bh __B
)
180 __builtin_ia32_minbf16512_mask (__A
, __B
, __W
, __U
);
183 extern __inline__ __m512bh
184 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
185 _mm512_maskz_min_pbh (__mmask32 __U
, __m512bh __A
, __m512bh __B
)
188 __builtin_ia32_minbf16512_mask (__A
, __B
,
189 (__v32bf
) _mm512_setzero_si512 (),
193 extern __inline__ __m512bh
194 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
195 _mm512_scalef_pbh (__m512bh __A
, __m512bh __B
)
197 return (__m512bh
) __builtin_ia32_scalefbf16512 (__A
, __B
);
200 extern __inline__ __m512bh
201 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
202 _mm512_mask_scalef_pbh (__m512bh __W
, __mmask32 __U
,
203 __m512bh __A
, __m512bh __B
)
206 __builtin_ia32_scalefbf16512_mask (__A
, __B
, __W
, __U
);
209 extern __inline__ __m512bh
210 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
211 _mm512_maskz_scalef_pbh (__mmask32 __U
, __m512bh __A
, __m512bh __B
)
214 __builtin_ia32_scalefbf16512_mask (__A
, __B
,
215 (__v32bf
) _mm512_setzero_si512 (),
219 extern __inline__ __m512bh
220 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
221 _mm512_fmadd_pbh (__m512bh __A
, __m512bh __B
, __m512bh __C
)
224 __builtin_ia32_fmaddbf16512_mask (__A
, __B
, __C
, (__mmask32
) -1);
227 extern __inline__ __m512bh
228 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
229 _mm512_mask_fmadd_pbh (__m512bh __A
, __mmask32 __U
,
230 __m512bh __B
, __m512bh __C
)
233 __builtin_ia32_fmaddbf16512_mask (__A
, __B
, __C
, __U
);
236 extern __inline__ __m512bh
237 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
238 _mm512_mask3_fmadd_pbh (__m512bh __A
, __m512bh __B
,
239 __m512bh __C
, __mmask32 __U
)
242 __builtin_ia32_fmaddbf16512_mask3 (__A
, __B
, __C
, __U
);
245 extern __inline__ __m512bh
246 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
247 _mm512_maskz_fmadd_pbh (__mmask32 __U
, __m512bh __A
,
248 __m512bh __B
, __m512bh __C
)
251 __builtin_ia32_fmaddbf16512_maskz (__A
, __B
, __C
, __U
);
254 extern __inline__ __m512bh
255 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
256 _mm512_fmsub_pbh (__m512bh __A
, __m512bh __B
, __m512bh __C
)
259 __builtin_ia32_fmsubbf16512_mask (__A
, __B
, __C
, (__mmask32
) -1);
262 extern __inline__ __m512bh
263 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
264 _mm512_mask_fmsub_pbh (__m512bh __A
, __mmask32 __U
,
265 __m512bh __B
, __m512bh __C
)
268 __builtin_ia32_fmsubbf16512_mask (__A
, __B
, __C
, __U
);
271 extern __inline__ __m512bh
272 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
273 _mm512_mask3_fmsub_pbh (__m512bh __A
, __m512bh __B
,
274 __m512bh __C
, __mmask32 __U
)
277 __builtin_ia32_fmsubbf16512_mask3 (__A
, __B
, __C
, __U
);
280 extern __inline__ __m512bh
281 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
282 _mm512_maskz_fmsub_pbh (__mmask32 __U
, __m512bh __A
,
283 __m512bh __B
, __m512bh __C
)
286 __builtin_ia32_fmsubbf16512_maskz (__A
, __B
, __C
, __U
);
289 extern __inline__ __m512bh
290 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
291 _mm512_fnmadd_pbh (__m512bh __A
, __m512bh __B
, __m512bh __C
)
294 __builtin_ia32_fnmaddbf16512_mask (__A
, __B
, __C
, (__mmask32
) -1);
297 extern __inline__ __m512bh
298 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
299 _mm512_mask_fnmadd_pbh (__m512bh __A
, __mmask32 __U
,
300 __m512bh __B
, __m512bh __C
)
303 __builtin_ia32_fnmaddbf16512_mask (__A
, __B
, __C
, __U
);
306 extern __inline__ __m512bh
307 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
308 _mm512_mask3_fnmadd_pbh (__m512bh __A
, __m512bh __B
,
309 __m512bh __C
, __mmask32 __U
)
312 __builtin_ia32_fnmaddbf16512_mask3 (__A
, __B
, __C
, __U
);
315 extern __inline__ __m512bh
316 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
317 _mm512_maskz_fnmadd_pbh (__mmask32 __U
, __m512bh __A
,
318 __m512bh __B
, __m512bh __C
)
321 __builtin_ia32_fnmaddbf16512_maskz (__A
, __B
, __C
, __U
);
324 extern __inline__ __m512bh
325 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
326 _mm512_fnmsub_pbh (__m512bh __A
, __m512bh __B
, __m512bh __C
)
329 __builtin_ia32_fnmsubbf16512_mask (__A
, __B
, __C
, (__mmask32
) -1);
332 extern __inline__ __m512bh
333 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
334 _mm512_mask_fnmsub_pbh (__m512bh __A
, __mmask32 __U
,
335 __m512bh __B
, __m512bh __C
)
338 __builtin_ia32_fnmsubbf16512_mask (__A
, __B
, __C
, __U
);
341 extern __inline__ __m512bh
342 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
343 _mm512_mask3_fnmsub_pbh (__m512bh __A
, __m512bh __B
,
344 __m512bh __C
, __mmask32 __U
)
347 __builtin_ia32_fnmsubbf16512_mask3 (__A
, __B
, __C
, __U
);
350 extern __inline__ __m512bh
351 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
352 _mm512_maskz_fnmsub_pbh (__mmask32 __U
, __m512bh __A
,
353 __m512bh __B
, __m512bh __C
)
356 __builtin_ia32_fnmsubbf16512_maskz (__A
, __B
, __C
, __U
);
359 extern __inline__ __m512bh
360 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
361 _mm512_rsqrt_pbh (__m512bh __A
)
364 __builtin_ia32_rsqrtbf16512_mask (__A
,
365 (__v32bf
) _mm512_setzero_si512 (),
370 extern __inline__ __m512bh
371 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
372 _mm512_mask_rsqrt_pbh (__m512bh __W
, __mmask32 __U
, __m512bh __A
)
375 __builtin_ia32_rsqrtbf16512_mask (__A
, __W
, __U
);
378 extern __inline__ __m512bh
379 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
380 _mm512_maskz_rsqrt_pbh (__mmask32 __U
, __m512bh __A
)
383 __builtin_ia32_rsqrtbf16512_mask (__A
,
384 (__v32bf
) _mm512_setzero_si512 (),
388 extern __inline__ __m512bh
389 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
390 _mm512_sqrt_pbh (__m512bh __A
)
393 __builtin_ia32_sqrtbf16512_mask (__A
,
394 (__v32bf
) _mm512_setzero_si512 (),
398 extern __inline__ __m512bh
399 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
400 _mm512_mask_sqrt_pbh (__m512bh __W
, __mmask32 __U
, __m512bh __A
)
403 __builtin_ia32_sqrtbf16512_mask (__A
, __W
, __U
);
406 extern __inline__ __m512bh
407 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
408 _mm512_maskz_sqrt_pbh (__mmask32 __U
, __m512bh __A
)
411 __builtin_ia32_sqrtbf16512_mask (__A
,
412 (__v32bf
) _mm512_setzero_si512 (),
416 extern __inline__ __m512bh
417 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
418 _mm512_rcp_pbh (__m512bh __A
)
421 __builtin_ia32_rcpbf16512_mask (__A
,
422 (__v32bf
) _mm512_setzero_si512 (),
426 extern __inline__ __m512bh
427 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
428 _mm512_mask_rcp_pbh (__m512bh __W
, __mmask32 __U
, __m512bh __A
)
431 __builtin_ia32_rcpbf16512_mask (__A
, __W
, __U
);
434 extern __inline__ __m512bh
435 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
436 _mm512_maskz_rcp_pbh (__mmask32 __U
, __m512bh __A
)
439 __builtin_ia32_rcpbf16512_mask (__A
,
440 (__v32bf
) _mm512_setzero_si512 (),
444 extern __inline__ __m512bh
445 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
446 _mm512_getexp_pbh (__m512bh __A
)
449 __builtin_ia32_getexpbf16512_mask (__A
,
450 (__v32bf
) _mm512_setzero_si512 (),
454 extern __inline__ __m512bh
455 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
456 _mm512_mask_getexp_pbh (__m512bh __W
, __mmask32 __U
, __m512bh __A
)
458 return (__m512bh
) __builtin_ia32_getexpbf16512_mask (__A
, __W
, __U
);
461 extern __inline__ __m512bh
462 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
463 _mm512_maskz_getexp_pbh (__mmask32 __U
, __m512bh __A
)
466 __builtin_ia32_getexpbf16512_mask (__A
,
467 (__v32bf
) _mm512_setzero_si512 (),
471 /* Intrinsics vrndscalebf16. */
473 extern __inline__ __m512bh
474 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
475 _mm512_roundscale_pbh (__m512bh __A
, int B
)
478 __builtin_ia32_rndscalebf16512_mask (__A
, B
,
479 (__v32bf
) _mm512_setzero_si512 (),
483 extern __inline__ __m512bh
484 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
485 _mm512_mask_roundscale_pbh (__m512bh __W
, __mmask32 __U
, __m512bh __A
, int B
)
488 __builtin_ia32_rndscalebf16512_mask (__A
, B
, __W
, __U
);
491 extern __inline__ __m512bh
492 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
493 _mm512_maskz_roundscale_pbh (__mmask32 __U
, __m512bh __A
, int B
)
496 __builtin_ia32_rndscalebf16512_mask (__A
, B
,
497 (__v32bf
) _mm512_setzero_si512 (),
502 #define _mm512_roundscale_pbh(A, B) \
503 (__builtin_ia32_rndscalebf16512_mask ((A), (B), \
504 (__v32bf) _mm512_setzero_si512 (), \
507 #define _mm512_mask_roundscale_pbh(A, B, C, D) \
508 (__builtin_ia32_rndscalebf16512_mask ((C), (D), (A), (B)))
510 #define _mm512_maskz_roundscale_pbh(A, B, C) \
511 (__builtin_ia32_rndscalebf16512_mask ((B), (C), \
512 (__v32bf) _mm512_setzero_si512 (), \
515 #endif /* __OPTIMIZE__ */
517 /* Intrinsics vreducebf16. */
519 extern __inline__ __m512bh
520 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
521 _mm512_reduce_pbh (__m512bh __A
, int B
)
524 __builtin_ia32_reducebf16512_mask (__A
, B
,
525 (__v32bf
) _mm512_setzero_si512 (),
529 extern __inline__ __m512bh
530 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
531 _mm512_mask_reduce_pbh (__m512bh __W
, __mmask32 __U
,
535 __builtin_ia32_reducebf16512_mask (__A
, B
, __W
, __U
);
538 extern __inline__ __m512bh
539 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
540 _mm512_maskz_reduce_pbh (__mmask32 __U
, __m512bh __A
, int B
)
543 __builtin_ia32_reducebf16512_mask (__A
, B
,
544 (__v32bf
) _mm512_setzero_si512 (),
549 #define _mm512_reduce_pbh(A, B) \
550 (__builtin_ia32_reducebf16512_mask ((A), (B), \
551 (__v32bf) _mm512_setzero_si512 (), \
554 #define _mm512_mask_reduce_pbh(A, B, C, D) \
555 (__builtin_ia32_reducebf16512_mask ((C), (D), (A), (B)))
557 #define _mm512_maskz_reduce_pbh(A, B, C) \
558 (__builtin_ia32_reducebf16512_mask ((B), (C), \
559 (__v32bf) _mm512_setzero_si512 (), \
562 #endif /* __OPTIMIZE__ */
564 /* Intrinsics vgetmantbf16. */
566 extern __inline__ __m512bh
567 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
568 _mm512_getmant_pbh (__m512bh __A
, _MM_MANTISSA_NORM_ENUM __B
,
569 _MM_MANTISSA_SIGN_ENUM __C
)
572 __builtin_ia32_getmantbf16512_mask (__A
, (int) (__C
<< 2) | __B
,
573 (__v32bf
) _mm512_setzero_si512 (),
577 extern __inline__ __m512bh
578 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
579 _mm512_mask_getmant_pbh (__m512bh __W
, __mmask32 __U
, __m512bh __A
,
580 _MM_MANTISSA_NORM_ENUM __B
,
581 _MM_MANTISSA_SIGN_ENUM __C
)
584 __builtin_ia32_getmantbf16512_mask (__A
, (int) (__C
<< 2) | __B
,
588 extern __inline__ __m512bh
589 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
590 _mm512_maskz_getmant_pbh (__mmask32 __U
, __m512bh __A
,
591 _MM_MANTISSA_NORM_ENUM __B
,
592 _MM_MANTISSA_SIGN_ENUM __C
)
595 __builtin_ia32_getmantbf16512_mask (__A
, (int) (__C
<< 2) | __B
,
596 (__v32bf
) _mm512_setzero_si512 (),
601 #define _mm512_getmant_pbh(A, B, C) \
602 (__builtin_ia32_getmantbf16512_mask ((A), (int)(((C)<<2) | (B)), \
603 (__v32bf) _mm512_setzero_si512 (), \
606 #define _mm512_mask_getmant_pbh(A, B, C, D, E) \
607 (__builtin_ia32_getmantbf16512_mask ((C), (int)(((D)<<2) | (E)), (A), (B)))
609 #define _mm512_maskz_getmant_pbh(A, B, C, D) \
610 (__builtin_ia32_getmantbf16512_mask ((B), (int)(((C)<<2) | (D)), \
611 (__v32bf) _mm512_setzero_si512 (), \
614 #endif /* __OPTIMIZE__ */
616 /* Intrinsics vfpclassbf16. */
618 extern __inline __mmask32
619 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
620 _mm512_mask_fpclass_pbh_mask (__mmask32 __U
, __m512bh __A
,
624 __builtin_ia32_fpclassbf16512_mask (__A
, __imm
, __U
);
627 extern __inline __mmask32
628 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
629 _mm512_fpclass_pbh_mask (__m512bh __A
, const int __imm
)
632 __builtin_ia32_fpclassbf16512_mask (__A
, __imm
,
637 #define _mm512_mask_fpclass_pbh_mask(U, X, C) \
638 ((__mmask32) __builtin_ia32_fpclassbf16512_mask ( \
639 (__v32bf) (__m512bh) (X), (int) (C), (__mmask32) (U)))
641 #define _mm512_fpclass_pbh_mask(X, C) \
642 ((__mmask32) __builtin_ia32_fpclassbf16512_mask ( \
643 (__v32bf) (__m512bh) (X), (int) (C), (__mmask32) (-1)))
644 #endif /* __OPIMTIZE__ */
647 /* Intrinsics vcmpbf16. */
649 extern __inline __mmask32
650 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
651 _mm512_mask_cmp_pbh_mask (__mmask32 __U
, __m512bh __A
, __m512bh __B
,
655 __builtin_ia32_cmpbf16512_mask (__A
, __B
, __imm
, __U
);
658 extern __inline __mmask32
659 __attribute__ ((__gnu_inline__
, __always_inline__
, __artificial__
))
660 _mm512_cmp_pbh_mask (__m512bh __A
, __m512bh __B
, const int __imm
)
663 __builtin_ia32_cmpbf16512_mask (__A
, __B
, __imm
,
668 #define _mm512_mask_cmp_pbh_mask(A, B, C, D) \
669 ((__mmask32) __builtin_ia32_cmpbf16512_mask ((B), (C), (D), (A)))
671 #define _mm512_cmp_pbh_mask(A, B, C) \
672 ((__mmask32) __builtin_ia32_cmpbf16512_mask ((A), (B), (C), (-1)))
674 #endif /* __OPIMTIZE__ */
676 #ifdef __DISABLE_AVX10_2_512__
677 #undef __DISABLE_AVX10_2_512__
678 #pragma GCC pop_options
679 #endif /* __DISABLE_AVX10_2_512__ */
681 #endif /* _AVX10_2_512BF16INTRIN_H_INCLUDED */