clang 23.0.0git
avx512vnniintrin.h
Go to the documentation of this file.
1/*===------------- avx512vnniintrin.h - VNNI intrinsics ------------------===
2 *
3 *
4 * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5 * See https://llvm.org/LICENSE.txt for license information.
6 * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 *
8 *===-----------------------------------------------------------------------===
9 */
10#ifndef __IMMINTRIN_H
11#error "Never use <avx512vnniintrin.h> directly; include <immintrin.h> instead."
12#endif
13
14#ifndef __AVX512VNNIINTRIN_H
15#define __AVX512VNNIINTRIN_H
16
17/* Define the default attributes for the functions in this file. */
18#if defined(__cplusplus) && (__cplusplus >= 201103L)
19#define __DEFAULT_FN_ATTRS \
20 __attribute__((__always_inline__, __nodebug__, __target__("avx512vnni"), \
21 __min_vector_width__(512))) constexpr
22#else
23#define __DEFAULT_FN_ATTRS \
24 __attribute__((__always_inline__, __nodebug__, __target__("avx512vnni"), \
25 __min_vector_width__(512)))
26#endif
27
28static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpbusd_epi32(__m512i __S,
29 __m512i __A,
30 __m512i __B) {
31 return (__m512i)__builtin_ia32_vpdpbusd512((__v16si)__S, (__v64qu)__A,
32 (__v64qi)__B);
33}
34
35static __inline__ __m512i __DEFAULT_FN_ATTRS
36_mm512_mask_dpbusd_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B) {
37 return (__m512i)__builtin_ia32_selectd_512(__U,
38 (__v16si)_mm512_dpbusd_epi32(__S, __A, __B),
39 (__v16si)__S);
40}
41
43 __mmask16 __U, __m512i __S, __m512i __A, __m512i __B) {
44 return (__m512i)__builtin_ia32_selectd_512(__U,
45 (__v16si)_mm512_dpbusd_epi32(__S, __A, __B),
46 (__v16si)_mm512_setzero_si512());
47}
48
49static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpbusds_epi32(__m512i __S,
50 __m512i __A,
51 __m512i __B) {
52 return (__m512i)__builtin_ia32_vpdpbusds512((__v16si)__S, (__v64qu)__A,
53 (__v64qi)__B);
54}
55
57 __m512i __S, __mmask16 __U, __m512i __A, __m512i __B) {
58 return (__m512i)__builtin_ia32_selectd_512(__U,
59 (__v16si)_mm512_dpbusds_epi32(__S, __A, __B),
60 (__v16si)__S);
61}
62
64 __mmask16 __U, __m512i __S, __m512i __A, __m512i __B) {
65 return (__m512i)__builtin_ia32_selectd_512(__U,
66 (__v16si)_mm512_dpbusds_epi32(__S, __A, __B),
67 (__v16si)_mm512_setzero_si512());
68}
69
70static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpwssd_epi32(__m512i __S,
71 __m512i __A,
72 __m512i __B) {
73 return (__m512i)__builtin_ia32_vpdpwssd512((__v16si)__S, (__v32hi)__A,
74 (__v32hi)__B);
75}
76
77static __inline__ __m512i __DEFAULT_FN_ATTRS
78_mm512_mask_dpwssd_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B) {
79 return (__m512i)__builtin_ia32_selectd_512(__U,
80 (__v16si)_mm512_dpwssd_epi32(__S, __A, __B),
81 (__v16si)__S);
82}
83
85 __mmask16 __U, __m512i __S, __m512i __A, __m512i __B) {
86 return (__m512i)__builtin_ia32_selectd_512(__U,
87 (__v16si)_mm512_dpwssd_epi32(__S, __A, __B),
88 (__v16si)_mm512_setzero_si512());
89}
90
91static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpwssds_epi32(__m512i __S,
92 __m512i __A,
93 __m512i __B) {
94 return (__m512i)__builtin_ia32_vpdpwssds512((__v16si)__S, (__v32hi)__A,
95 (__v32hi)__B);
96}
97
99 __m512i __S, __mmask16 __U, __m512i __A, __m512i __B) {
100 return (__m512i)__builtin_ia32_selectd_512(__U,
101 (__v16si)_mm512_dpwssds_epi32(__S, __A, __B),
102 (__v16si)__S);
103}
104
106 __mmask16 __U, __m512i __S, __m512i __A, __m512i __B) {
107 return (__m512i)__builtin_ia32_selectd_512(__U,
108 (__v16si)_mm512_dpwssds_epi32(__S, __A, __B),
109 (__v16si)_mm512_setzero_si512());
110}
111
112#undef __DEFAULT_FN_ATTRS
113#endif
#define __DEFAULT_FN_ATTRS
unsigned short __mmask16
static __inline __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR _mm512_setzero_si512(void)
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpwssd_epi32(__m512i __S, __m512i __A, __m512i __B)
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpbusds_epi32(__m512i __S, __m512i __A, __m512i __B)
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpwssds_epi32(__m512i __S, __m512i __A, __m512i __B)
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpwssds_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B)
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpbusd_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B)
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_mask_dpbusd_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B)
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpwssd_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B)
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_mask_dpwssd_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B)
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_mask_dpbusds_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B)
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_mask_dpwssds_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B)
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpbusd_epi32(__m512i __S, __m512i __A, __m512i __B)
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpbusds_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B)