1 /*===---- avx10_2_512niintrin.h - AVX10.2-512 new instruction intrinsics ---===
3 * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 * See https://llvm.org/LICENSE.txt for license information.
5 * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 *===-----------------------------------------------------------------------===
11 "Never use <avx10_2_512niintrin.h> directly; include <immintrin.h> instead."
16 #ifndef __AVX10_2_512NIINTRIN_H
17 #define __AVX10_2_512NIINTRIN_H
19 #define __DEFAULT_FN_ATTRS \
20 __attribute__((__always_inline__, __nodebug__, __target__("avx10.2-512"), \
21 __min_vector_width__(512)))
24 static __inline__ __m512 __DEFAULT_FN_ATTRS
_mm512_dpph_ps(__m512 __W
,
27 return (__m512
)__builtin_ia32_vdpphps512((__v16sf
)__W
, (__v32hf
)__A
,
31 static __inline__ __m512 __DEFAULT_FN_ATTRS
_mm512_mask_dpph_ps(__m512 __W
,
35 return (__m512
)__builtin_ia32_selectps_512(
36 (__mmask16
)__U
, (__v16sf
)_mm512_dpph_ps(__W
, __A
, __B
), (__v16sf
)__W
);
39 static __inline__ __m512 __DEFAULT_FN_ATTRS
_mm512_maskz_dpph_ps(__mmask16 __U
,
43 return (__m512
)__builtin_ia32_selectps_512(
44 (__mmask16
)__U
, (__v16sf
)_mm512_dpph_ps(__W
, __A
, __B
),
45 (__v16sf
)_mm512_setzero_ps());
49 #define _mm512_mpsadbw_epu8(A, B, imm) \
50 ((__m512i)__builtin_ia32_mpsadbw512((__v64qi)(__m512i)(A), \
51 (__v64qi)(__m512i)(B), (int)(imm)))
53 #define _mm512_mask_mpsadbw_epu8(W, U, A, B, imm) \
54 ((__m512i)__builtin_ia32_selectw_512( \
55 (__mmask32)(U), (__v32hi)_mm512_mpsadbw_epu8((A), (B), (imm)), \
56 (__v32hi)(__m512i)(W)))
58 #define _mm512_maskz_mpsadbw_epu8(U, A, B, imm) \
59 ((__m512i)__builtin_ia32_selectw_512( \
60 (__mmask32)(U), (__v32hi)_mm512_mpsadbw_epu8((A), (B), (imm)), \
61 (__v32hi)_mm512_setzero_si512()))
64 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_dpbssd_epi32(__m512i __W
,
67 return (__m512i
)__builtin_ia32_vpdpbssd512((__v16si
)__W
, (__v16si
)__A
,
71 static __inline__ __m512i __DEFAULT_FN_ATTRS
72 _mm512_mask_dpbssd_epi32(__m512i __W
, __mmask16 __U
, __m512i __A
, __m512i __B
) {
73 return (__m512i
)__builtin_ia32_selectd_512(
74 __U
, (__v16si
)_mm512_dpbssd_epi32(__W
, __A
, __B
), (__v16si
)__W
);
77 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_dpbssd_epi32(
78 __mmask16 __U
, __m512i __W
, __m512i __A
, __m512i __B
) {
79 return (__m512i
)__builtin_ia32_selectd_512(
80 __U
, (__v16si
)_mm512_dpbssd_epi32(__W
, __A
, __B
),
81 (__v16si
)_mm512_setzero_si512());
84 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_dpbssds_epi32(__m512i __W
,
87 return (__m512i
)__builtin_ia32_vpdpbssds512((__v16si
)__W
, (__v16si
)__A
,
91 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_dpbssds_epi32(
92 __m512i __W
, __mmask16 __U
, __m512i __A
, __m512i __B
) {
93 return (__m512i
)__builtin_ia32_selectd_512(
94 __U
, (__v16si
)_mm512_dpbssds_epi32(__W
, __A
, __B
), (__v16si
)__W
);
97 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_dpbssds_epi32(
98 __mmask16 __U
, __m512i __W
, __m512i __A
, __m512i __B
) {
99 return (__m512i
)__builtin_ia32_selectd_512(
100 __U
, (__v16si
)_mm512_dpbssds_epi32(__W
, __A
, __B
),
101 (__v16si
)_mm512_setzero_si512());
104 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_dpbsud_epi32(__m512i __W
,
107 return (__m512i
)__builtin_ia32_vpdpbsud512((__v16si
)__W
, (__v16si
)__A
,
111 static __inline__ __m512i __DEFAULT_FN_ATTRS
112 _mm512_mask_dpbsud_epi32(__m512i __W
, __mmask16 __U
, __m512i __A
, __m512i __B
) {
113 return (__m512i
)__builtin_ia32_selectd_512(
114 __U
, (__v16si
)_mm512_dpbsud_epi32(__W
, __A
, __B
), (__v16si
)__W
);
117 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_dpbsud_epi32(
118 __mmask16 __U
, __m512i __W
, __m512i __A
, __m512i __B
) {
119 return (__m512i
)__builtin_ia32_selectd_512(
120 __U
, (__v16si
)_mm512_dpbsud_epi32(__W
, __A
, __B
),
121 (__v16si
)_mm512_setzero_si512());
124 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_dpbsuds_epi32(__m512i __W
,
127 return (__m512i
)__builtin_ia32_vpdpbsuds512((__v16si
)__W
, (__v16si
)__A
,
131 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_dpbsuds_epi32(
132 __m512i __W
, __mmask16 __U
, __m512i __A
, __m512i __B
) {
133 return (__m512i
)__builtin_ia32_selectd_512(
134 __U
, (__v16si
)_mm512_dpbsuds_epi32(__W
, __A
, __B
), (__v16si
)__W
);
137 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_dpbsuds_epi32(
138 __mmask16 __U
, __m512i __W
, __m512i __A
, __m512i __B
) {
139 return (__m512i
)__builtin_ia32_selectd_512(
140 __U
, (__v16si
)_mm512_dpbsuds_epi32(__W
, __A
, __B
),
141 (__v16si
)_mm512_setzero_si512());
144 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_dpbuud_epi32(__m512i __W
,
147 return (__m512i
)__builtin_ia32_vpdpbuud512((__v16si
)__W
, (__v16si
)__A
,
151 static __inline__ __m512i __DEFAULT_FN_ATTRS
152 _mm512_mask_dpbuud_epi32(__m512i __W
, __mmask16 __U
, __m512i __A
, __m512i __B
) {
153 return (__m512i
)__builtin_ia32_selectd_512(
154 __U
, (__v16si
)_mm512_dpbuud_epi32(__W
, __A
, __B
), (__v16si
)__W
);
157 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_dpbuud_epi32(
158 __mmask16 __U
, __m512i __W
, __m512i __A
, __m512i __B
) {
159 return (__m512i
)__builtin_ia32_selectd_512(
160 __U
, (__v16si
)_mm512_dpbuud_epi32(__W
, __A
, __B
),
161 (__v16si
)_mm512_setzero_si512());
164 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_dpbuuds_epi32(__m512i __W
,
167 return (__m512i
)__builtin_ia32_vpdpbuuds512((__v16si
)__W
, (__v16si
)__A
,
171 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_dpbuuds_epi32(
172 __m512i __W
, __mmask16 __U
, __m512i __A
, __m512i __B
) {
173 return (__m512i
)__builtin_ia32_selectd_512(
174 __U
, (__v16si
)_mm512_dpbuuds_epi32(__W
, __A
, __B
), (__v16si
)__W
);
177 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_dpbuuds_epi32(
178 __mmask16 __U
, __m512i __W
, __m512i __A
, __m512i __B
) {
179 return (__m512i
)__builtin_ia32_selectd_512(
180 __U
, (__v16si
)_mm512_dpbuuds_epi32(__W
, __A
, __B
),
181 (__v16si
)_mm512_setzero_si512());
185 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_dpwsud_epi32(__m512i __A
,
188 return (__m512i
)__builtin_ia32_vpdpwsud512((__v16si
)__A
, (__v16si
)__B
,
192 static __inline__ __m512i __DEFAULT_FN_ATTRS
193 _mm512_mask_dpwsud_epi32(__m512i __A
, __mmask16 __U
, __m512i __B
, __m512i __C
) {
194 return (__m512i
)__builtin_ia32_selectd_512(
195 (__mmask16
)__U
, (__v16si
)_mm512_dpwsud_epi32(__A
, __B
, __C
),
199 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_dpwsud_epi32(
200 __m512i __A
, __mmask16 __U
, __m512i __B
, __m512i __C
) {
201 return (__m512i
)__builtin_ia32_selectd_512(
202 (__mmask16
)__U
, (__v16si
)_mm512_dpwsud_epi32(__A
, __B
, __C
),
203 (__v16si
)_mm512_setzero_si512());
206 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_dpwsuds_epi32(__m512i __A
,
209 return (__m512i
)__builtin_ia32_vpdpwsuds512((__v16si
)__A
, (__v16si
)__B
,
213 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_dpwsuds_epi32(
214 __m512i __A
, __mmask16 __U
, __m512i __B
, __m512i __C
) {
215 return (__m512i
)__builtin_ia32_selectd_512(
216 (__mmask16
)__U
, (__v16si
)_mm512_dpwsuds_epi32(__A
, __B
, __C
),
220 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_dpwsuds_epi32(
221 __m512i __A
, __mmask16 __U
, __m512i __B
, __m512i __C
) {
222 return (__m512i
)__builtin_ia32_selectd_512(
223 (__mmask16
)__U
, (__v16si
)_mm512_dpwsuds_epi32(__A
, __B
, __C
),
224 (__v16si
)_mm512_setzero_si512());
227 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_dpwusd_epi32(__m512i __A
,
230 return (__m512i
)__builtin_ia32_vpdpwusd512((__v16si
)__A
, (__v16si
)__B
,
234 static __inline__ __m512i __DEFAULT_FN_ATTRS
235 _mm512_mask_dpwusd_epi32(__m512i __A
, __mmask16 __U
, __m512i __B
, __m512i __C
) {
236 return (__m512i
)__builtin_ia32_selectd_512(
237 (__mmask16
)__U
, (__v16si
)_mm512_dpwusd_epi32(__A
, __B
, __C
),
241 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_dpwusd_epi32(
242 __m512i __A
, __mmask16 __U
, __m512i __B
, __m512i __C
) {
243 return (__m512i
)__builtin_ia32_selectd_512(
244 (__mmask16
)__U
, (__v16si
)_mm512_dpwusd_epi32(__A
, __B
, __C
),
245 (__v16si
)_mm512_setzero_si512());
248 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_dpwusds_epi32(__m512i __A
,
251 return (__m512i
)__builtin_ia32_vpdpwusds512((__v16si
)__A
, (__v16si
)__B
,
255 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_dpwusds_epi32(
256 __m512i __A
, __mmask16 __U
, __m512i __B
, __m512i __C
) {
257 return (__m512i
)__builtin_ia32_selectd_512(
258 (__mmask16
)__U
, (__v16si
)_mm512_dpwusds_epi32(__A
, __B
, __C
),
262 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_dpwusds_epi32(
263 __m512i __A
, __mmask16 __U
, __m512i __B
, __m512i __C
) {
264 return (__m512i
)__builtin_ia32_selectd_512(
265 (__mmask16
)__U
, (__v16si
)_mm512_dpwusds_epi32(__A
, __B
, __C
),
266 (__v16si
)_mm512_setzero_si512());
269 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_dpwuud_epi32(__m512i __A
,
272 return (__m512i
)__builtin_ia32_vpdpwuud512((__v16si
)__A
, (__v16si
)__B
,
276 static __inline__ __m512i __DEFAULT_FN_ATTRS
277 _mm512_mask_dpwuud_epi32(__m512i __A
, __mmask16 __U
, __m512i __B
, __m512i __C
) {
278 return (__m512i
)__builtin_ia32_selectd_512(
279 (__mmask16
)__U
, (__v16si
)_mm512_dpwuud_epi32(__A
, __B
, __C
),
283 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_dpwuud_epi32(
284 __m512i __A
, __mmask16 __U
, __m512i __B
, __m512i __C
) {
285 return (__m512i
)__builtin_ia32_selectd_512(
286 (__mmask16
)__U
, (__v16si
)_mm512_dpwuud_epi32(__A
, __B
, __C
),
287 (__v16si
)_mm512_setzero_si512());
290 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_dpwuuds_epi32(__m512i __A
,
293 return (__m512i
)__builtin_ia32_vpdpwuuds512((__v16si
)__A
, (__v16si
)__B
,
297 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_mask_dpwuuds_epi32(
298 __m512i __A
, __mmask16 __U
, __m512i __B
, __m512i __C
) {
299 return (__m512i
)__builtin_ia32_selectd_512(
300 (__mmask16
)__U
, (__v16si
)_mm512_dpwuuds_epi32(__A
, __B
, __C
),
304 static __inline__ __m512i __DEFAULT_FN_ATTRS
_mm512_maskz_dpwuuds_epi32(
305 __m512i __A
, __mmask16 __U
, __m512i __B
, __m512i __C
) {
306 return (__m512i
)__builtin_ia32_selectd_512(
307 (__mmask16
)__U
, (__v16si
)_mm512_dpwuuds_epi32(__A
, __B
, __C
),
308 (__v16si
)_mm512_setzero_si512());
311 #undef __DEFAULT_FN_ATTRS
313 #endif /* __SSE2__ */
314 #endif /* __AVX10_2_512NIINTRIN_H */