150
|
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 #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512vnni"), __min_vector_width__(512)))
|
|
19
|
|
20
|
|
21 static __inline__ __m512i __DEFAULT_FN_ATTRS
|
|
22 _mm512_dpbusd_epi32(__m512i __S, __m512i __A, __m512i __B)
|
|
23 {
|
|
24 return (__m512i)__builtin_ia32_vpdpbusd512((__v16si)__S, (__v16si)__A,
|
|
25 (__v16si)__B);
|
|
26 }
|
|
27
|
|
28 static __inline__ __m512i __DEFAULT_FN_ATTRS
|
|
29 _mm512_mask_dpbusd_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B)
|
|
30 {
|
|
31 return (__m512i)__builtin_ia32_selectd_512(__U,
|
|
32 (__v16si)_mm512_dpbusd_epi32(__S, __A, __B),
|
|
33 (__v16si)__S);
|
|
34 }
|
|
35
|
|
36 static __inline__ __m512i __DEFAULT_FN_ATTRS
|
|
37 _mm512_maskz_dpbusd_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B)
|
|
38 {
|
|
39 return (__m512i)__builtin_ia32_selectd_512(__U,
|
|
40 (__v16si)_mm512_dpbusd_epi32(__S, __A, __B),
|
|
41 (__v16si)_mm512_setzero_si512());
|
|
42 }
|
|
43
|
|
44 static __inline__ __m512i __DEFAULT_FN_ATTRS
|
|
45 _mm512_dpbusds_epi32(__m512i __S, __m512i __A, __m512i __B)
|
|
46 {
|
|
47 return (__m512i)__builtin_ia32_vpdpbusds512((__v16si)__S, (__v16si)__A,
|
|
48 (__v16si)__B);
|
|
49 }
|
|
50
|
|
51 static __inline__ __m512i __DEFAULT_FN_ATTRS
|
|
52 _mm512_mask_dpbusds_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B)
|
|
53 {
|
|
54 return (__m512i)__builtin_ia32_selectd_512(__U,
|
|
55 (__v16si)_mm512_dpbusds_epi32(__S, __A, __B),
|
|
56 (__v16si)__S);
|
|
57 }
|
|
58
|
|
59 static __inline__ __m512i __DEFAULT_FN_ATTRS
|
|
60 _mm512_maskz_dpbusds_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B)
|
|
61 {
|
|
62 return (__m512i)__builtin_ia32_selectd_512(__U,
|
|
63 (__v16si)_mm512_dpbusds_epi32(__S, __A, __B),
|
|
64 (__v16si)_mm512_setzero_si512());
|
|
65 }
|
|
66
|
|
67 static __inline__ __m512i __DEFAULT_FN_ATTRS
|
|
68 _mm512_dpwssd_epi32(__m512i __S, __m512i __A, __m512i __B)
|
|
69 {
|
|
70 return (__m512i)__builtin_ia32_vpdpwssd512((__v16si)__S, (__v16si)__A,
|
|
71 (__v16si)__B);
|
|
72 }
|
|
73
|
|
74 static __inline__ __m512i __DEFAULT_FN_ATTRS
|
|
75 _mm512_mask_dpwssd_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B)
|
|
76 {
|
|
77 return (__m512i)__builtin_ia32_selectd_512(__U,
|
|
78 (__v16si)_mm512_dpwssd_epi32(__S, __A, __B),
|
|
79 (__v16si)__S);
|
|
80 }
|
|
81
|
|
82 static __inline__ __m512i __DEFAULT_FN_ATTRS
|
|
83 _mm512_maskz_dpwssd_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B)
|
|
84 {
|
|
85 return (__m512i)__builtin_ia32_selectd_512(__U,
|
|
86 (__v16si)_mm512_dpwssd_epi32(__S, __A, __B),
|
|
87 (__v16si)_mm512_setzero_si512());
|
|
88 }
|
|
89
|
|
90 static __inline__ __m512i __DEFAULT_FN_ATTRS
|
|
91 _mm512_dpwssds_epi32(__m512i __S, __m512i __A, __m512i __B)
|
|
92 {
|
|
93 return (__m512i)__builtin_ia32_vpdpwssds512((__v16si)__S, (__v16si)__A,
|
|
94 (__v16si)__B);
|
|
95 }
|
|
96
|
|
97 static __inline__ __m512i __DEFAULT_FN_ATTRS
|
|
98 _mm512_mask_dpwssds_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B)
|
|
99 {
|
|
100 return (__m512i)__builtin_ia32_selectd_512(__U,
|
|
101 (__v16si)_mm512_dpwssds_epi32(__S, __A, __B),
|
|
102 (__v16si)__S);
|
|
103 }
|
|
104
|
|
105 static __inline__ __m512i __DEFAULT_FN_ATTRS
|
|
106 _mm512_maskz_dpwssds_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B)
|
|
107 {
|
|
108 return (__m512i)__builtin_ia32_selectd_512(__U,
|
|
109 (__v16si)_mm512_dpwssds_epi32(__S, __A, __B),
|
|
110 (__v16si)_mm512_setzero_si512());
|
|
111 }
|
|
112
|
|
113 #undef __DEFAULT_FN_ATTRS
|
|
114
|
|
115 #endif
|